01_ml basics
머신러닝(기게학습) => 지도학습, 비지도학습, 강화학습이 존재한다.

각각의 훈련 과정은 다음과 같다.

지도학습
: 데이터 + 정답값 => 예측값과 정답값을 비교, 훈련 // 주로 분류 문제에서 이용
강화학습
: 상태 + 보상함수(reward function) => 현재 상태에 보상을 더해주고(잘하고 있으면 + 못하고 있으면 -), 결과를 확인.
: 현재의 점수를 매기는데, 현재만 보는게 아니라 미래가 어떻게 될지 예측하는 것. 바로 판단하지 못함.
: 주로 예측, 의사결정에서 이용
ex. 알파고, 자율주행차
비지도학습
: 그냥 데이터 => 출력 결과를 보고, 비슷한 것들끼리 특성을 맞춰서 군집화를 킴 // 주로 군집화 하는 과정에서 이용
ex. 생성형AI - (이미지에 구멍을 여러개 뚫고) "구멍뚫린 부분을 채워줘!"
지도학습 (Supervised Learning)
- Linear Regression = Least Squares Regression # Least Squares = error을 계산하는 수식
: Continuous value prediction
- Logistic Regression = Sigmoid Regression = Maximum Cross Entropy Regression
# 확률값 = logistic 함수 / 여기선 CrossEntropy로 오차가 잘 나온다
# Q. Cross Entropy는 오차함수, 왜 Maximize?
# A. 여기서 Cross Entropy는 likelihood를 의미. likelihood = log(1/Cross Entropy).
# 따라서 likelihood가 maximum = cross entropy는 minimum.
: Discrete binary classification (0 아니면 1)
- Softmax Regression = Multinomial Logistic Regression
: Discrete multiclass classification (여러 개의 클래스 중 하나를 선택)
- Suppeort Vector Machine (SVM)
- Decision Tree
- Random Forest
비지도학습 (Unsupervised Learning)
- K-Means Clustering (K-평균 군집화)
강화학습 (Reinforcement Learning)
- Temporal Difference
- SARSA
- Monte-Carlo
- Q-Learning
Linear Regression (선형 회귀)
modeling : X -> Y
|X|가 1이면 simple, 2 이상이면 multiple
|Y|가 1이면 univariate, 2 이상이면 multivariate
* 1개의 데이터로 어떤 1개의 값을 예측 : univariate simple linear regression
* 1개의 데이터로 2개 이상의 값을 예측 : multivariate simple linear regression
* 2개 이상의 데이터로 1개의 값을 예측 : univariate multiple linear regression
* 2개 이상의 데이터로 2개 이상의 값을 예측 : multivariate multiple linear regression
용어 잘 알아놓을 것 ! ! !
=> 근데 이거 X, Y, W 행렬 크기를 잘 이해를 못하겠다.... 내일 다시 보자
예측값과 실제값의 차이 = Loss = Error = Cost.
이것이 얼마인지 따지기 위한 방법이 바로 Derivative = 도함수 = Gradient = 변화율 = 기울기 = 경사.
Loss function = Cost function = Error function in linear regression : MSE (Mean Square Error)

괄호 안은 (예측값 - 정답값)으로 보면 된다.
딱 보면 알 수 있듯이, 총 데이터 샘플은 m개가 있는 것이며, 각 데이터 샘플마다 나오는 예측값들을 그 데이터 샘플의 정답값으로 뺴주면 됨. 그리고 제곱하니까 대~충 오목한 그래프가 나올 것임을 알 수 있다. (이차함수)
따라서 우리는 이것을 최소화 => 즉, 0이 되게 하는 것이 목표이다-! (0의 의미 = 예측값과 정답값이 똑같다)
그래서 이를 바탕으로, 이제 가중치를 update해야한다!
W(t+1) = W(t) - a * (MSE 식의 gradient)
여기서 a는 learning rate = step size라고 한다.
그리고 MSE 식의 gradient는 다음과 같이 표기한다.

그러니까 MSE에서 쎄타(가중치)로 미분해준 것임.
=> 이게 back propagation할 때 일어나는 일들이다.
Batch Gradient Descent vs Stochastic Gradient Descent
이제 우리는 실제 사용성에서 생각할 줄 알아야 한다.
데이터 샘플 = 데이터 포인트는 실제로 엄~청 많을 것이다.
예를 들자면, 무수히 많은 X들에 대한 정보를 가지고 있는 엑셀 파일이 엄청 많은 상태라고 생각을 하면 편하다.
이제 우리는 엑셀파일들에 대해서 Gradient를 구해야 하는데, 여러 가지 접근 방법이 있다.
1. 한 개의 엑셀 파일들마다 Gradient를 계산하고 - Weight를 수정할 것이냐? => "Stochastic Gradient Descent(SGD)"
2. N개의 엑셀 파일들을 다 돌리고, 그떄마다 Gradient 계산하고 Weight를 수정할 것이냐? => "Mini-batch Gradient Descent"
3. 모든 엑셀 파일을 다 돌리고, Gradient를 한번에 계산할 것이냐? => "Batch Gradient Descent"
true SGD : 1개 샘플마다 계산하고 가중치 수정.
최근엔 SGD를 그냥 mini-batch로 다들 간주함
'AI' 카테고리의 다른 글
| [딥러닝] Numpy Basic Concepts (0) | 2024.04.16 |
|---|---|
| [딥러닝] 기초 - Learning Curves 이해하기 (0) | 2024.04.13 |
| [딥러닝] Feature Scaling (0) | 2024.04.11 |
| [딥러닝] Linear Regression (선형 회귀) (2) | 2024.03.16 |
| [딥러닝] Machine Learning Basics (1) | 2024.03.15 |