AI

[머신러닝] 3 Kinds of Machine Learning

EddyLee 2024. 4. 11. 22:09

01_ml basics

 

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

https://kr.mathworks.com/discovery/reinforcement-learning.html

 

 

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

 

지도학습

: 데이터 + 정답값 => 예측값과 정답값을 비교, 훈련 // 주로 분류 문제에서 이용

강화학습

: 상태 + 보상함수(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로 다들 간주함