본문 바로가기
딥러닝관련/기초 이론

Cross entropy loss 정리

by 머리올리자 2022. 3. 6.

 

 

한 번쯤 정리할 필요가 있다고 느꼈는데 이제 정리해본다.

 

보통 언급하는 cross entropy loss는 아래의 식들처럼 표현한다.

 

어렵게 생각할 필요 없고

위 식은 한개의 샘플에 대해서

아래의 식은 전체 샘플의(m)의 평균(1/m)을 계산하여

 

식을 만든 것으로 보면될 것이다.

 

log안에 들어가는 값은(y or p) 모델의 output probability,

 

log 앞에 붙는 값(t or y)은 true label로 생각하면 된다.

 

보통 true label은 one-hot으로 해당되는 라벨 인덱스만 1이고 나머지는 0이다.

 

단일 샘플에 대하여 cross entropy loss를 적용해보자

 

ex)

true label = [0, 1, 0]

output probability = [0.1, 0.6, 0.3]

 

정답 라벨이 두 번째에 존재하기 때문에

그 두 번째 위치에 존재하는 output probability를 cross entropy식에 적용한다.

(어차피 나머지 클래스들은 true label이 0이기 때문에 계산 패스)

 

결과 값은 아래와 같이 나올 것이다.

-log0.6 = -(-0.2218) = 0.2218

 

여기서 log는 자연 로그이며 자연 로그 그래프는 아래와 같이 그래프로 표현할 수 있다.

 

demos 그래프 그리기는 역시 좋아...

여기서 우선 x가 1 이하의 y의 값에 집중해보자.

(왜? 보통 분류 모델의 output은 확률값으로 많이 정의하기 떄문에, 확률값이 1을 넘지는 않는다)

 

위에서 우리는 정답 라벨에 해당하는 값에만 집중하기로 하였다.

 

위 예시는 모델의 output probability를 0.6으로 들었다.

 

그런데 만약 0.6에서 조금 더 output probability이 높아진다면?

값은 증가한다(0에 가까워질 것이며)

 

만약 0.6에서 조금 더 output probability이 낮아진다면?

값은 감소한다(0에서 더 멀어진다)

 

그래프만 보면 바로 알 수 있는 내용이다.

 

그런데 추가적으로 값의 변화량을 살펴보자.

 

0.6에서 확률이 조금 더 높아져 0.1이 증가한 0.7이라면???

 

그 변화량은 0.6에서 확률이 조금 더 떨어져 0.1이 감소한 0.5보다 작을 것이다.

 

값의 변화량

0.6 -> 0.7 < 0.6 -> 0.5

 

 

 

이것을 loss function의 관점으로 한번 생각해보자.

 

예측한 output probability의 값이 낮아질 수록 loss를 크게 가지며

예측한 output probability의 값이 높아질 수록 loss를 작게 가진다.

 

라는 것을 유추해낼 수 있다.