4월 15일 쯤 부터 공부하고 있던 강의
AI가 계속 발전하면서, 개발에도 잘 활용하고 있지만,
내부구조가 어떻게 돌아가게 되는지, 학부때는 배우지 않았던 개념들,
이 강의(CS229)는 Andrew Ng 교수님의 2018버전이 유명하지만,
조금 더 업데이트된 2022년 Tengyu Ma, Christopher Ré 교수님 버전을 듣게 되었다.
모든 강의 자료와 영상은 공개된 해당 링크들을 통해서 학습하고 있다.
강의자료: https://cs229.stanford.edu/syllabus-spring2022.html
강의 영상: https://youtube.com/playlist?list=PLoROMvodv4rNyWOpJg_Yh4NSqI4Z4vOYy&si=Wyde6SsfMflwc1Lk
1강 슬라이드: https://cs229.stanford.edu/lectures-spring2022/lecture1.pdf
머신러닝의 종류
데이터에 정답 label이 있는가?
없다면 데이터 안에서 어떤 구조를 찾는가?
혹은 모델이 직접 행동하면서 데이터를 모으는가?
이런 기준에 따라 머신러닝 문제는 크게
supervised learning, unsupervised learning, reinforcement learning으로 나뉜다.
1. Supervised Learning: 입력 x에서 정답 y를 예측하기

예를 들어 주택 가격 예측 문제를 생각해보자. 데이터셋에는 여러 개의 샘플이 있고, 각 샘플은 다음처럼 입력과 정답으로 구성된다.
(x⁽¹⁾, y⁽¹⁾), ..., (x⁽ⁿ⁾, y⁽ⁿ⁾)
여기서 x는 입력 feature이고, y는 예측하고 싶은 label 또는 output이다.
주택 가격 예측에서는 x가 집의 크기이고, y가 집의 가격이다.
즉 모델의 목표는 다음과 같은 함수를 찾는 것이다.
x → y
예를 들자면
집의 크기(x)로 → 집의 가격(y)을 예측하는 함수를 찾는 것이다.
이때 중요한 점은 supervised learning에서는 이미 정답 y가 주어져 있다는 것이다.
Feature가 많아진다는 것

x = living size
y = price
처음엔 집의 크기만으로 가격을 예측할 수 있지만,
실제 문제에서는 단순히 크기 하나만으로 결정되지 않는다.
lot size, 층 수, condition, zip code, 등등
x = [x₁, x₂, x₃, ..., x_d]
x₁ = living size
x₂ = lot size
x₃ = number of floors
x₄ = condition
x₅ = zip code ...
입력 x는 하나의 숫자가 아니라 여러 feature를 가진 벡터가 된다.
이때 x ∈ R^d라고 표현한다.
즉 x는 d차원 실수 벡터라는 뜻이다.
Regression vs Classification
Supervised learning은 다시 regression과 classification으로 나뉜다.

Regression
Regression은 예측해야 하는 값 y가 연속적인 값일 때 사용한다.
예를 들어 주택 가격 예측에서는 가격이 1억, 1.5억, 2.3억처럼 연속적인 숫자로 표현된다.
x = 집의 feature
y = 가격
Classification
Classification은 예측해야 하는 y가 이산적인 label일 때 사용한다.
예를 들어 집의 크기와 lot size를 보고 이 주거 형태가 house인지 townhouse인지 예측한다고 해보자.
(size, lot size) → house or townhouse?
y는 연속적인 숫자가 아니라 정해진 class 중 하나다.
y ∈ {house, townhouse}
y/n, 1,0 -1,1 등으로 표기하곤 한다.
Computer Vision, NLP
Computer Vision에서는 image classification, object localization, object detection 같은 문제가 supervised learning으로 다뤄질 수 있다.
Image classification
이미지 → 고양이 / 강아지 / 자동차 / 사람 ...
Object detection
이미지 안에서 객체가 무엇인지뿐 아니라, 어디에 있는지!
bounding box 그리거나 하는 그런것들,,
NLP
Machine Translation 같은 번역,,
2. Unsupervised Learning: label 없이 구조 찾기
Supervised learning과 달리 unsupervised learning에서는 데이터셋에 label이 없다.

즉 데이터가 다음처럼 주어진다.
x⁽¹⁾, x⁽²⁾, ..., x⁽ⁿ⁾
답 y가 없다.
그래서 목표도 조금 다르다.
정답을 맞히는 것이 아니라, 데이터 안에 숨어 있는 흥미로운 구조를 찾는 것이 목표다.
대표적인 예시는 clustering이다.
예를 들어 유전자 데이터를 보고 비슷한 패턴을 가진 gene끼리 묶거나, 문서 데이터를 보고 비슷한 주제를 가진 글끼리 묶을 수 있다.
Supervised learning에서는 이미 house와 townhouse label이 표시되어 있다.
반면 unsupervised learning에서는 label 없이 점들만 있고, 알고리즘이 그 안에서 비슷한 그룹을 찾아야 한다.
Latent Semantic Analysis와 Word Embedding
NLP 쪽 예시로는 Latent Semantic Analysis, Word Embedding, LLM 등이 언급되었다.
Latent Semantic Analysis: 문서와 단어 사이의 관계를 보고 의미 구조를 찾는 방식
예를 들어 여러 문서가 있고, 각 문서에 어떤 단어가 얼마나 자주 등장하는지를 행렬처럼 표현!
Word Embedding
단어를 벡터로 표현하면, 의미가 비슷한 단어들은 비슷한 위치에 놓이고,
또 단어 사이의 관계가 벡터의 방향으로 표현될 수 있다.
깊게 다루진 않았지만, 유사한 단어 끼리 묶고, 유사한 관계는 비슷한 방향에 놓이도록 하는 방식인 듯 하다.

Reinforcement Learning: 직접 행동하며 배우기
Supervised learning과 unsupervised learning은 기본적으로 주어진 데이터셋에서 학습한다.
Reinforcement learning은 데이터로 상호적으로 수집, 시도-실패 데이터로 학습 알고리즘에 통합하고 다음 전략을 수립한다.
행동 → 결과 관찰 → 피드백 → 전략 개선
이때 중요한 차이는 데이터가 고정되어 있지 않다는 것이다.
알고리즘이 어떤 행동을 하느냐에 따라 새롭게 수집되는 데이터가 달라진다.
예를 들어 원자력 발전소 제어 문제를 생각하면, 알고리즘이 매일 새로운 전략을 바꾸라고 지시하는 방식은 위험하고 비효율적일 수 있다.
현실에서는 일정 기간 동안 전략을 적용하고, 그 결과를 관찰한 뒤, 더 나은 전략을 찾는 방식이 필요할 것이다.
정리
Machine Learning
├── Supervised Learning
│ └── label y 있음
│ └── regression / classification
├── Unsupervised Learning
│ └── label y 없음
│ └── clustering / LSA
└── Reinforcement Learning
└── 환경과 상호작용
└── 행동 → 피드백 → 전략 개선
4강까지 듣는 중인데, 수학 개념을 중심으로 전개하고 풀어가는 과정이 많아서 중간중간 수학강의도 듣고 있다.