본문 바로가기
Python/Machine Learning

Regression 손실 함수와 최적화

by skwkiix 2024. 12. 8.
728x90

Supervised Learning (지도 학습)

| Supervised Learning -> Input(x) 와 대응되는 target(y) 가 있는 경우

  • 데이터셋을 통해 새로운 입력(x) 가 주어졌을 때 y 를 출력하는 모델을 학습시킴
  • 모델의 출력값 y 를 prediction , 정답 y를 Label 이라고 함
  • Y의 형태에 따라 Regression(회귀) - 실수형, Classification(분류)로 나뉨

Conditional Probability Model(조건부 확률 모델)

| True Distribution: 데이터는 실제 분포 P(X,Y)에서 Random sampling 된다고 가정

 >  i.i.d (independent and identically distributed) 가정  :  샘플들이 서로 독립적이고 동일한 분포를 따른다는 의미

 

| Y 는 X 에 의해 결정되는 조건부 확률분포P(Y∣X) 를 따름을 가정

 >  Learning 목표: 실제 분포 P(X,Y)를 정확히 알 수 없으므로, 데이터를 사용해 조건부 확률 분포 P(Y∣X)를 모델링

 

| Hypothesis Function: P(Y|X ) 를 근사하는 역할 

> Hypothesis Function h(x) = y 를 통해, P(Y | X) 를 모델링 -> 추정된  prediction h(x) = y^ 을 구함 

ex ) 로지스틱 회귀, 신경망, SVM 등.

 

| Cost Function (Loss Function) : Cost Function은 모델이 예측한 값과 실제 레이블 간의 차이를 측정

> 차이를 최소화 하는 방향으로 파라미터를 업데이트

> 모델 학습 : Cost function 을 최소화 하는 파라미터를 찾는 과정

> Gradient Descent 같은 알고리즘을 사용하여 파라미터 업데이트


Notation

 

  • 길이의 Vector는 matrix(row vector)로 취급
  • 입력(input) : x = (x0, x1, .... , xn)
  • 정답(label):y
  • parameters: w = (w0, w1, . . . , wn) = W(1,n)
  • Bias(optional) : x0 = 1, w0 = b
  • 모델 오차 :ϵ
  • 데이터 수(sample size/batch size) : m

2. Regression

Linear Regression

| 입력(x)와 정답(y)사이의 선형 상관관계를 가정하는 모델(직선, 평면) - 단순한 직선적인 관계

| y 연속형 변수 (y ∈ (−∞, + ∞)) >   True Distribution 평균이 x 의해 계산되는 정규분포 따름을 가정

 

 

 

y = w0 + w1x1 + w2x2 + . . . + wnxn + ϵ

> W를 찾는 것이 목표!

 

, x 변수들의 비선형 결합일 수 있다.(feature engineering)

  • Linear Model example: y = w0 + w1log(x1) + 2w2 x2
  • Nonlinear Model example: y = w0 + exp(w1x1) + log(w2 + x2)

   (비선형 결합 : 파라미터와 변수 분해가 불가능)

 

데이터에 따라 정답 y의 분포를 다르게 가정 있다.(Generalized Linear Model)

  • Normal distribution(Real:(- ,+ )) - Linear Regression
  • Bernoulli(Binary:{0,1}) - Logistic Regression
  • Categorical(Multiclass:{0,1,2..,n}) - Softmax Regression

Define Cost function(Loss function)

> W를 찾기 위해서 쓰는 함수

J(w) = Mean Squared Error(MSE) : (예측치 - 실제 레이블 : 편차)^2 의 평균

> 편차를 제곱하는 이유는 편차까리 상쇄되는 것을 방지하기 위함.

> W* = argminJ(W) : Cost function 을 minimize 하는 W 값을 찾는 것

 

(1) 가장 쉬운 방법? 선을 여러개 그린다 -> random search, grid search -> 단순하고 느린 방법

(2) 미분을 이용! Gradient Descent 

 

Gradient Descent

> Gradient(미분)의 반대방향으로 Update

 

$$ w_i := w_i - \alpha \frac{\partial J(w)}{\partial w_i} $$

 

왜 기울기의 반대 방향으로 이동?

  • 기울기(Gradient)는 Cost Function J(w가 증가하는 방향을 나타냄.
  • 따라서, 기울기의 반대 방향으로 이동하면 J(w)를 감소시킬 수 있음.

Gradient Descent 업데이트 규칙

$$ \[
\frac{\partial J(w_i)}{\partial w_i} = \frac{\partial}{\partial w_i} \left\{ \frac{1}{m} \sum_{j=1}^m \left( x^{(j)}w^T - y^{(j)} \right)^2 \right\}
\]

\[
= \frac{1}{m} \sum_{j=1}^m \frac{\partial}{\partial w_i} \left( x^{(j)}w^T - y^{(j)} \right)^2
\]

\[
= \frac{1}{m} \sum_{j=1}^m 2 \left( x^{(j)}w^T - y^{(j)} \right) \cdot \frac{\partial}{\partial w_i} \left( x^{(j)}w^T \right)
\]

\[
= \frac{1}{m} \sum_{j=1}^m 2 \left( x^{(j)}w^T - y^{(j)} \right) \cdot x_i^{(j)}
\]

\[
= \frac{2}{m} \sum_{j=1}^m \left( h(x^{(j)}) - y^{(j)} \right) \cdot x_i^{(j)}
\] $$

$$ w_i := w_i - \alpha \cdot \frac{1}{m} \sum_{j=1}^m (h(x^{(j)}) - y^{(j)}) \cdot x_i^{(j)}, \quad i = 0, 1, \ldots, n $$

  • alpha(Learning Rate, 학습률)

Gradient Descent 특징

  1. Convexity:
    Linear Regression의 Cost Function은 Convex 함수이므로 Gradient Descent는 항상 글로벌 최소값에 수렴하는 것이 보장된다.
  2. Generalized Linear Models (GLMs):
    Logistic Regression, Softmax Regression 등 다른 regression 모델에도 적용된다.

Metric

| 학습을 위해 사용되는 cost function 과 달리, 모델의 평가에 사용되는 지표

> validation set, test set 에서 계산됨

> 대표적으로 MSE, RMSE, MAE, R2

 

(참고) RMSE, MAE 등 연속함수를 Cost Function 으로 사용할 수 있지만, Gradient 가 변경될 수 있다.

따라서, 대부분은 MSE 를 사용한다.

> 0일 때를 제외하면 미분 가능