본문 바로가기
Machine-Learning/Basic

[ML] 손실함수(Loss function)

by AteN 2021. 9. 5.

손실 함수

손실 함수는 딥러닝 모델의 출력 값과 사용자가 원하는 정답의 오차를 계산해주는 함수이다.

회귀 모델과 분류 모델을 학습하기 위한 최적화 문제의 손실 함수를 어떤 기준으로 정의해야 하며 어떤 의미로 해석해야 할까 ?

 

손실 함수가 최적해가 관측 데이터를 잘 설명할 수 있는 함수의 파라미터 값이 되도록 하며 어떤 기준으로 정의 해야 할까 모델이 오차 최소화(error minimization)되도록 정의하거나 모델이 추정하는 관측 데이터의 확률이 최대화되도록 최대우도 추정 (maximim likelihood estimation)방식의로 정의하는 방법이다. 오차 최소화 관점은 모델의 오차는 모델의 예측과 관측 데이터의 타깃의 차이를 말한다. 손실함수의 목표가 모델의 오차를 최소화하는 것이므로 직관적으로 이애하기 쉽다. 따라서 손실 함수를 정의할 때 어떤 방식으로 오차의 크기를 측정할지만 정의하면 된다 

 최대우도추정 관점은 우도(likelihood)는 모델이 추정하는 관측 데이터의 확률을 말한다. 손실 함수의 목표는 관측 데이터의 확률이 최대화되는 확률 분포 함수를 모델이 표현하도록 만드는 것이다. 이 방식은 확률 모델인 경우에만 적용할 수 있으며 최대우도추정(MLE)방식이라고 한다. 대대분의 신경망 모델은 확률 모델을 가정하므로 최대우도추정 방시긍로 손실 함수를 유도할 수 있다.

 

 두 방식이 손실 함수를 정의하는 관점은 다르지만, 손실 함수를 유도해  보면 동일한 최적화를 갖는 함수가 된다는 것을 확인 할 수 있다. 결국 오차를 최소하는 관점과 관측 데이터의 확률을 최대화하는 관점은 같은 대상을 다르게 해석하는 것이라고 볼 수 있다. 이제 각 관점에 따라 신경망의 학습을 위한 손실 함수를 유도해 보자 

손실 함수와 평균 제곱 오차 

우리가 가지고 있는 모델을 통해 알 수 없는 함수\(f^*\)를 근사 계산을 해야 한다. 가장 간단한 방법은 해당 모델에 수집한 데이터로 입력을 넣었을 때 원하는 출력이 나오는지 확인하는 것이다. 그러고 나면 당연하게도 모델은 원하는 출력이 아닌 다른 값을 변환할 것이다. 이때 모델에서 반환한 출력은 원래의 출력값 y를 모방한 출력이므로 \(\hat{y}\) 라고 표현한다 

$$ D = \left\{ (x_i, y_i)\right\}_{i=1}^N $$

$$\hat{y_i}=f(x_i) $$

원하는 출력값과 모델이 반환한 출력값을 비교해서 차이가 적을 수록 좋은 모델이라고 판단할 수 있다. 

$$ loss = \sum_{i=1}^{N}\left\| y_i - \hat{y_i} \right\| $$

$$ = \sum_{i=1}^{N}\left\| y_i - f(x_i) \right\| $$

다음과 같은 수식에서 모든 데이터의 입력에 대한 모방 출력  \(\hat{y}\)와 살제 정답 \(y\) 사이 간 차이의 크기를 더한 것을 손실(loss) 값이라고 부른다. 따라서 손실 값이 작을수록 해당 모델은 근사계산하고자 하는 \(f^*\)를 잘 근사계산하고 있다고 판단할 수 있다 

앞에서 모델 함수는 가중치 파라미터에 의해 동작이 정의된다고 하였다.

이 모델의 W와 b를 가중치 파라미터로 갖고 있을 것이다. 모델의 가중치 파라미터 집합을 이제 \(\theta\)라고 표현하겠다. 보통 신경망의 광장이 많은 파라미터들도 \(\theta\)라고 표현하고 있다 

$$ \theta = \left\{W, b \right\} $$

그러면 모델 함수는 가중치 파라미터 \(\theta\)에 의해 정의되므로 \(f_{\theta}\) 라고 표현되고, 이제 손실 값을 최소화 하는 모델을 찾으면 된다. 

방법으로 여러가지가 있겠지만 가장 간단한 방법은 모델 가중치 파라미터의 값을 랜덤하게 바꿔보는 것이다. 그럼 모델의 동작이 바뀌면서 입력에 대한 출력 \(\hat{y}\)이 바뀌면서 손실 값도 바뀌게 된다. 이전보다 손실 값이 더 줄었다면 더 좋은 가중치 파라미터를 찾았다고 할 수 있다. 

모델의 가중치 파라미터가 바뀌면 손실값이 바뀌기 때문에 가중치 파라미터를 함수 입력으로 주고 손실 값을 출력으로 변환하도록 만들어 볼 수 있다. 이것이 손실 함수 (loss function)이 된다. 

$$ L {(\theta)}=\sum_{i=1}^{N}\left\| y_i - f_{\theta}(x_i) \right\|  $$

$$ \text{where} \theta = \left\{W, b \right\} $$

 

이제 손실 함수의 출력값(손실 값)을 최소로 만드는 모델의 가중치 파라미터  \(\theta\) (함수 입력 값)을 찾기만 하면된다. 

 

 

 

댓글