Loss 만들기 2
서론
놀랍게도 거의 다 끝나간다. 이제 해봤자 할 Loss가 KL-다이버전스 정도밖에 없기 때문이다.
사실 Loss로 자주 쓰이지는 않는게 교차 엔트로피하고 사실상 같기 때문이다.
그냥 KL 다이버전스가 무엇인지에 대해 짚고 넘어가는 공부 시간 정도라고 생각하자.
또, 그 전에 softmax에 대해서도 알아보자.
Softmax
예컨데 0에서 9까지 아홉가지의 출력값이 있다고 하자. 열심히 계산을 한 신경망은 0에서 9까지의 텐서에 각각의 값을 내놓을 것이다.
얘들 중에서 어떤게 답이라고 할 수 있을까? 이들 중 가장 큰 값을 고르는게 가장 단순할 것이다.
(설명이 좀 이상한데, 10개의 ‘바구니’에 각각 0.1, 0.1, 0.9999, 0.4, 0.2 하는 식으로 담겨 있을 때 세번째 바구니를 고르는게 좋을 것이라는 뜻이다.)
하지만 max함수는 미분하기가 조금 거시기하니까 대신 조금 ‘부드러운’ 맥스를 쓰는데, 이를 소프트맥스라고 부른다.
특징으로는 ‘확률 값’을 만들어준다는 것인데, 이말인즉슨 다 더해서 1이 된다는 뜻이다.
n번째 ‘바구니’에 들어가는 값을 x_n
이라고 한다면, e의 x_n
승들의 총합이 분모가, e의 x_n
승이 분자가 된다.
다 더해서 나눴으니까 총합은 1이 되리라는게 자명하다.
KL-다이버전스
KL-다이버전스도 교차엔트로피와 비슷한 역할을 한다.
사실 매우 밀접한 관계가 있는데- 일단 KL다이버전스의 공식은 다음과 같다.
D(P | Q) = E(log(P(x) / Q(x))) = E(log(P(x)) - log(Q(x))) |
여기서 D_KL(P||Q)
는 P와 Q의 KL 다이버전스를 뜻한다. E는 기댓값이고.
지면상 생략했지만 E의 x는 P(x)의 확률 분포를 따른다. (x~P(x))
공식에서 눈치챌 수 있겠지만 D(P | Q)와 D(Q | P)는 다르다. |
그리고 또… 어디서 비슷한 부분을 본 것 같지 않은가?
P와 Q사이의 교차 엔트로피가 (x~P(x)일 때) -E(log(Q(x)))였지 않는가.
P와 Q사이의 교차 엔트로피를 H(P, Q), P의 엔트로피를 H(P)라고 할 때 다음 공식이 성립한다.
D(P | Q) = H(P, Q) - H(P) |
P의 엔트로피가 -E(log(P(x)))라는 사실도 다시 한번 짚어보자.
다음 시간
…사실 이 정도면 할건 다 한거다. Loss가 중요하긴 한데 자주 쓰는게 많지 않아서…
다음엔- 솔직히 뭘 할지 잘 모르겠다.