[ Essay - Technology, Essay - Intuition ] Chat GTP시대의 도래와 생각하는 방식에 대해

이미지
올해도 드디어 끝이 보이는 듯 싶다. 최근에 회사의 망년회를 끝내고 이래저래 회식이 늘어나는 듯 하다. 지금 시점에서는 개인적인 스케쥴도 마무리 되었기 때문에 이제는 여유롭게 연말을 즐기며 올해를 마무리 하려고 한다. 비교적 최근에 이사한 곳 근처의 스타벅스가 대학 병원 안에 있고 근처에 공원이 있어서 그런지 개를 대리고 산책하는 노인이나  아이를 동반한 가족이 눈에 띄게 보인다. 꽤나 좋은 곳으로 이사한듯 하다. 개인적으로는 올해 드디어 미루고 미루었던 이직을 하였고  그 이후에 비약적인 성장을 이루었으니  분명 안좋은 일도 있었지만 만족할 수 있는 해를 보내지 않았나 싶다. 내가 도달하려고 하는 곳으로 가려면 아직 갈길이 멀지만  궤도에 오른 것만으로도 큰 성과라면 큰 성과 일 것 이다. 어쨋든 이직하고 많은 일들을 맡게 되었는데 그 과정에서 나는 의도적으로 Chat GTP를 활용하고자 하였고 몇 가지 직감을 얻게 되었는데  이 중 한 가지를 글로 작성하려고 한다. 따라서 올해의 마무리 글은 Chat GTP에 대한 이야기로 마무리 하려고 한다. 서론 불과 약 10년전 IT업계는 원하던 원치 않던간에  한번의 큰 패러다임의 변화를 맞이해야만 했다 바로 아이폰의 등장에 따른 스마트폰의 시대의 도래와  이에 따른 IT업계의 패러다임 변화가 그것이다. 내 기억으로는 아주 격변의 시대였던 걸로 기억하는데 왜냐하면 게임은 물론이고 웹과 백신을 비롯한 모든 솔루션의 변화가 이루어졌다. 이 뿐만 아니라 가볍고 한손의 들어오는 이 디바이스는  그 당시에는 조금 비싸다는 인식이 있었지만  감추려고 해도 감출 수 없는 뛰어난 유용성으로 회의론을 금세 종식시켰고 이에 대한 결과로 어린아이 부터 노인 까지 작은 컴퓨터를 가지게 되었고 이는 당연하게도 IT업계의 전체적인 호황을 가져다주었다.  그리고 질서는 다시 한번 재정렬되었다. 이러한 패러다임의 변화의 증거로 언어 또한 변하게 되었는데...

[ Math, Computer Science, Machine Learning, NN ]교차 엔트로피(Cross Entropy)에 대해 : 기본 개념, 교차 엔트로피에 대한 이해



이전 까지 해서 엔트로피가 무엇이고,
이에 대한 이해를 위해 이야기를 나누어봤다.

이제는 본격적으로 이번 주제의 목표이기도 한 
교차 엔트로피에 대한 이야기를 해보자.

교차 엔트로피에 대해


이전 포스트로 부터
엔트로피란, 정보량이기도 하지만
컴퓨터의 근본을 이루고 있는 단위인 비트이기도 하고
원문이 있고 이를 예와 아니요를 통해 원문을 알아내야 할때
이 원문을 하나 씩 보낸다고 했을 때의 
원문 속의 하나를 얻어내기 위해 필요한 질문의 갯수 
즉,  비트의 갯수 이기도 하다.

이에 랠프 하틀리는 이 값을 구할 수 있는 방정식을 제시 했고,
아래와 같은 방정식으로
이 비트의 갯수를 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의 값의 합이 

위와 같이 교차 엔트로피가 되는 것으로 결론을 지을 수 있다.

마치며


지금까지 해서 엔트로피와 
교차 엔트로피에 관해 모든 설명을 끝 마쳤다.

왜 뉴런 네트워크에서 손실 함수로써 
교차 엔트로피를 사용하고 있는지에 대해 
약간 부족하지만 어느 정도 직감을 가질 수 있을 것이라 기대해 본다.

다음에는 이 직감을 완성시키기 위해 
왜 뉴런 네트워크에서 교차 엔트로피를 사용하는지에 대해 명확히 해보자.


이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )