이전 까지 해서 엔트로피가 무엇이고,
이에 대한 이해를 위해 이야기를 나누어봤다.
이제는 본격적으로 이번 주제의 목표이기도 한
교차 엔트로피에 대한 이야기를 해보자.
이전 포스트로 부터
엔트로피란, 정보량이기도 하지만
컴퓨터의 근본을 이루고 있는 단위인 비트이기도 하고
원문이 있고 이를 예와 아니요를 통해 원문을 알아내야 할때
이 원문을 하나 씩 보낸다고 했을 때의
원문 속의 하나를 얻어내기 위해 필요한 질문의 갯수
즉, 비트의 갯수 이기도 하다.
이에 랠프 하틀리는 이 값을 구할 수 있는 방정식을 제시 했고,
아래와 같은 방정식으로
이 비트의 갯수를 H로 했을때 이에 대한 값을 구할 수 있다.
하지만, 이는 어떤 사건에 대해 나올 수 있는 확률이
모두 동일 할 때 성립하는 방정식으로
이 때 최대의 엔트로피를 얻어낼 수 있다.
예컨데, 동전 던지기를 할 경우
앞면, 뒷면의 각각 50%일 경우에 성립 한다.
그렇기 때문에 어떤 사건에 대해 나올 수 있는 확률들이
상이한 현실 세계에서 이를 이용하기에는 무리가 있다.
이에 대해 클로드 섀넌은
정보의 불확실성에 대해 포인트를 잡고
해당 사건에 대한 평균 불확실성(엔트로피)를 구하는 방정식을
아래와 같이 제시 했다.
여기 까지가 이전 포스팅에서 다루었던 내용이다.
그렇다면 교차 엔트로피란 무엇일까?
사실 꽤 나 간단한 개념이다.
교차 엔트로피는 메세지의 길이에 대한 엔트로피를 의미 한다.
교차 엔트로피에 대한 이해
이전 엔트로피에서 사용한 예를 조금 바꿔서
산출 값을 간단하게 하기 위해 눈의 수가 6개가 아닌
눈의 수가 8개인 주사위를 던진다고 가정하고,
확률들도 정수 값들이 나오게끔 최대한 수정하겠다.
엘리스는 자신이 던진 주사위의 결과를 보내려한다.
정보 하나 당, 평균 몇 만큼의 비트를 보내야할까?
경우의 수가 8개 되니, 아래와 같이 꽉찬 3비트가 될 것이다.
1(000), 2(001), 3(010), 4(011),
5(100), 6(101), 7(110), 8(111)
이에 대해 교차 엔트로피를 구하면 아래와 같다.
이 3비트라는 값이 교차 엔트로피이다.
즉, 엔트로피가 실제 확률에 의한 실제 엔트로피 값이라면
교차 엔트로피는 메시지 길이에 따라 예측된 엔트로피 값이다.
이제 밥이 실제 받게 되는 엔트로피의 값을 계산해보자.
이 경우의 엔트로피 값은
본래 -를 곱하기 때문에 -를 제외한다면 약 2.3비트로
엘리스는 3비트를 보내지만,
실제로 밥은 2.3비트(엔트로피)를 받게 될 것이다.
0.7만큼 손실이 일어난 것이다.
손실을 줄일 수 있는 방법이 있을까?
엔트로피는 줄일 수 없지만,
교차 엔트로피의 값을 조정할 수는 있다.
예측이야 언제든 변경할 수 있으니깐 말이다.
예컨데 조금 바꿔서 1~4일 경우에는 3비트를
5~8일 경우에는 4비트라고 가정해보자.
그 경우 아래와 같다.
1(000), 2(001), 3(010), 4(011)
5(1000), 6(1010), 7(1100), 8(1110)
이 경우의 교차 엔트로피의 값은
밥의 엔트로피는 약 2.3비트이기 때문에
약 1비트 만큼이 손실이 나게 된다.
이전 비트의 손실이 0.7인것에 비해 좀 더 손실이 증가한 것이다.
조절이 적절하지 못했다는 뜻이다.
정확히 말하면 낮은 빈도로 나오는 데이터 쪽에
비트 수가 많게 조절 했다.
즉, 손실이 늘어난 것은 비트 수를 늘린 4~8 눈의 숫자는
1~4에 비해 확률이 매우 낮기 때문이다.
따라서 그 만큼 손실 값이 늘어난 것은 어찌 보면 당연한 것이다.
이번에는 나올 확률이 반대로 높은 1과 2를 1비트로 줄여보자.
가장 높은 확률을 2비트나 줄였기 때문에
온도차가 확연하게 드러날 것 이다.
1(0), 2(1), 3(010), 4(011)
5(1000), 6(1010), 7(1100), 8(1110)
이 경우 교차 엔트로피의 값은 아래와 같다.
약 0.3비트의 차이만을 보이고 있다.
값의 변화를 보면 알 수 있듯이
대상의 실제 확률이 높은 것의 비트 수를 낮추면
불확실성이 낮아지기 때문에 교차 엔트로피의 값이 줄어들고
대상의 실제 확률이 낮은 것의 비트 수를 높이면
불확실성이 높아지기 때문에 교차 엔트로피의 값이 늘어나는 것을 확인할 수 있다.
물론 위의 예는 올바른 계산법이 아니다.
왜냐하면 수학적으로 엔트로피 값은
교차 엔트로피의 보다 클 수 없다고 하기 때문이다.
위의 예는 교차 엔트로피의 조절에 대해 설명하기 위해
과격하게 값들을 변화시킨 조금 억지에 가까운 예이기 때문이다.
조금 과격한 방식으로 설명했지만,
이것이 바로 교차 엔트로피(Cross Entropy)이고,
교차 엔트로피의 역할이다.
위의 주사위가 나올 확률 p가 실제 확률 분포이고
메시지 길이에 따른 예측된 확률 q가 예측된 확률 분포일 때,
이를 수식으로 나타낸다면 아래와 같이 정의 내릴 수 있다.
엔트로피와 교차 엔트로피에 대한 이해
지금 까지 엔트로피와 교차 엔트로피에 대한 이야기를 했다.
그렇다면, 더 나아가 둘 간에는 어떤 차이점이 있을까?
재미있게도 조건에 따라 같을 수 있다.
|
엔트로피 방정식
|
|
교차 엔트로피 방정식 |
상단은 엔트로피 방정식을 나타내며이고,
하단은 교차 엔트로피 방정식을 나타낸다.
단순히 보기만 해도, 로그 안쪽의 p가 q로 바뀐 것 말고는 없어 보인다.
위에서 이야기 했듯이,
p는 실제 확률 분포이고 q는 예측된 확률 분포이다.
여기에 힌트가 있다.
즉, 실제 확률 분포가 예측된 확률 분포가 같다면
엔트로피 값과 교차 엔트로피의 값이 같을 수 있다는 이야기가 된다.
반대로 확률 분포가 일치하지 않는다면,
교차 엔트로피의 값이 엔트로피의 값보다 더 크게 된다.
따라서 예측된 결과 값인 교차 엔트로피의 값을
조절해서 엔트로피의 값에 최대한 가까이 갈 수 있다면
최적의 값을 얻어낼 수 있다.
교차 엔트로피 값과 엔트로피의 값이 차이
즉, 위에 예를 본다면 교차 엔트로피 3비트와
실제 엔트로피 2.3비트의 차이인 0.7을
일반적으로 Kullback-Leibler Divergence 라고 부르며
줄여서 KL Divergence라고 한다고 한다.
결국 엔트로피의 값과 KL Divergence의 값의 합이
위와 같이 교차 엔트로피가 되는 것으로 결론을 지을 수 있다.
마치며
지금까지 해서 엔트로피와
교차 엔트로피에 관해 모든 설명을 끝 마쳤다.
왜 뉴런 네트워크에서 손실 함수로써
교차 엔트로피를 사용하고 있는지에 대해
약간 부족하지만 어느 정도 직감을 가질 수 있을 것이라 기대해 본다.
다음에는 이 직감을 완성시키기 위해
왜 뉴런 네트워크에서 교차 엔트로피를 사용하는지에 대해 명확히 해보자.