손실 함수(Loss function)란?

머신러닝 혹은 딥러닝 모델의 출력값과 수집된 데이터 레이블링값의 오차를 의미.

주로 사용하는 손실 함수로는 Regression task에서는 Mean Squre Error와 Classification task에서는 Cross Entropy Error가 있다.

$MSE = \frac{1}{N}\sum_{i=1}^{N}(y_i-\hat{y}_i)^2$

$CE=-\sum^c_iy_i*log(f_\theta(x_i))$

이때, CE는 왜 모델을 통해 나온 확률 값을 로그 함수에 넣어주는 것일까?

그냥 정답과 예측값 간의 차이를 전달해주면 되는데 왜 굳이 복잡하게 log를 통과시키는 것일까?

머신러닝에서 cost는 우리가 학습시킨 프로그램이 얼마나 정확한지를 나타내는 지표. cost값이 작을 수록 모델 파라미터 분포가 ground truth 분포를 잘 모사하고 있다고 볼 수 있다. 즉, 우리는 이 cost를 최소화하는 것을 모델 training의 목표로 삼고 있다. cost의 최솟값을 찾아갈 때는 미분이란 개념을 사용하는데, 미분으로 기울기를 구한 후 이 기울기가 작아지는 방향으로 모델 파라미터 값들을 조절하는 것이다(gradient descent).

분류 task에서 확률값을 추출하기 위해 마지막 레이어에서 사용하는 활성화 함수는 sigmoid와 같은 비선형 함수들이다. 비선형함수들은 지수(exponential)의 성질을 이용한 것이기 때문에 smooth한 convex형태가 아닌 구부러진 convex형태의 그래프를 만들어낸다(<그림>의 오른쪽).

Untitled

<그림>

이 경우, 구부러진 그래프에서는 gradient descent를 사용 했을 때 local minimum에 빠질 가능성이 크다. 따라서 이러한 구불구불한 특성을 제거시키기 위해 지수함수와 반대되는 성질을 가지는 log함수를 사용해 비용 함수 그래프를 <그림>의 왼쪽과 비슷해지도록 최대한 펴주는 것이다

Reference