Deep learning

2. Loss Function

PIYA 2021. 12. 17.

이번엔 Loss(Error) Function에 대해서 공부해보겠다

 

우리말로는 손실함수라 불린다

 

우리 알고리즘 결과값 \( \hat{y} \)이 실제값 y와 얼마나 차이가 나는지를 계산하는데 쓰인다

 

즉 이 값이 작을수록 모델이 더 실제값에 가깝게 예측한다는 뜻으로 해석할 수 있다

 

로스함수니까 아래와 같이 표기해보자

(y hat 표기의 번거로움으로 a로 쓰기도 한다)

 

$$ \mathcal{L} ( \hat{y}, y) = \mathcal{L} ( a, y)$$

 

 

 

손실함수를 계산하는 목적은 정말 예측값과 실제값의 차이를 구하기 위해서이므로,

 

스퀘어루트 \( \sqrt{ (\hat{y} - y})^2 \) 따위를 계산해서 써도 괜찮아 보이지만

 

딥러닝에서는 이 손실함수를 계산할 때 조금 특별한 식을 쓴다

 

$$ \mathcal{L} ( \hat{y}, y) = -(y\log{ \hat{y} } + (1-y) ( \log{(1-\hat{y})} ) $$

 

 

 

이런 복잡해보이는 식을 쓰는 이유는, 후에 파라미터를 학습할 때 Gradient Descent 기법을 사용하는데

 

이 손실함수로 만들어지는 Cost function을 Convex 타입으로 만들어 Global Optimum을 구하기 쉽게 하기 위해서다

 

 

 

Convex function의 예.딥러닝에서는 다차원을 다루므로 이런 형태에 가까울 것이다

 

 

 

 


 

 

 

 

 

위에서 소개한 이 손실함수를 하나씩 뜯어서 이해해보자

 

$$ \mathcal{L} ( \hat{y}, y) = -(y\log{ \hat{y} } + (1-y) ( \log{(1-\hat{y})} ) $$

 

 

\(\hat{y}\)은 0에서 1사이의 실수값이고 확률을 나타낸다고 했다.

\(\hat{y}=y=1\)일 경우 모든 예측값이 실제값과 일치한 것이고,

이때 예측값과 실제값의 차를 나타내는 로스함수는 0이 나와야 한다는 걸 이해하고 아래를 보자

 

 

 

위 함수를 잘 분석해보면, 

\( y = 1 \)일 때 \( \mathcal{L} ( \hat{y}, y) = - y\log{ \hat{y} } \) 가 되어
\( \hat{y}=1 \)일 때 \( \mathcal{L} ( \hat{y}, y) = 0 \)으로 가장 작고,
\( \hat{y}=0 \)이면 \( \mathcal{L} ( \hat{y}, y) = \infty \)으로 계산되어 손실함수값이 무한대로 커지는 것을 알 수 있다

 

 

 

반대로 \(y=0\)일때도 계산해보면,

손실함수는 \( \mathcal{L}( \hat{y}, y) = - \log{ (1-\hat{y}) } \) 가 되어,

\( \hat{y}=0 \) 일 때 최소값 \( \mathcal{L} ( \hat{y}, y) = 0 \),

\( \hat{y}=1 \) 일 때 최대값 \( \mathcal{L} ( \hat{y}, y) = \infty \)로 발산하는것을 확인할 수 있다

 

 

참고로 여기서 쓰이는 log는 자연로그인 것 같다

(딥러닝에서는 그냥 다 자연로그 쓰는 것 같다)

 

'Deep learning' 카테고리의 다른 글

6. L-p Norm, 노름  (0) 2021.12.21
5. Chain Rule  (0) 2021.12.19
4. 경사하강법, Gradient Descent  (0) 2021.12.18
3. Cost Function  (0) 2021.12.17
1. deep learning intro: 용어 정리  (0) 2021.12.17

댓글