머신러닝을 공부하다 보면,
엔트로피 (Entropy) 라는 개념이 등장한다.
이 엔트로피는 물리학 또는 통계물리 쪽에서의 엔트로피와는 좀 다른 느낌이다.
위키백과에도 그냥 엔트로피라고 검색하면, 우리가 원하는 머신러닝에서의 그 엔트로피가 나오지 않을 것이다.
머신러닝에서 말하는 엔트로피는 정보이론에서 나온 것으로, 아래의 링크에서 그 정의를 확인할 수 있다.
아무튼, 정보이론에서 얘기하는 이 엔트로피가 무엇인지, 직관적으로 이해하기에
처음에 너무 힘들었던 기억이 난다. 심지어 아직도 좀 헷갈리는 부분이 있기는 하다.
좀 많이 느슨하게 얘기하면 엔트로피란, 통계학에서의 분산과 비슷한 개념을 가진다고 보면 된다.
즉 자료의 분산이 클수록 엔트로피가 크다고 볼수가 있고, 그 자료 하나하나는 정보량이 많다.
예를들어, 자료의 분산이 작을때는, 극단적으로 0이라고 할때는 자료가 모두 하나의 값을 가지므로, 자료 하나 하나가 그렇게 중요하지 않다. 즉, 자료 하나만 가지고도 다른 자료들을 100% 유추가능하다. 하지만, 분산이 크다면, 자료 하나하나가 중요하다. 왜냐하면 자료 하나만 가지고는 다른 자료들을 추측하기 어렵기때문이다. 즉, 자료 하나하나가 더 귀해지는 느낌이다.
즉, 엔트로피는 확률변수 하나에 대해서 정의될수 있으며, 그 확률변수 하나가 평균적으로 가지는 정보량 정도로 해석할수 있겠다. 자세한 사항은 Claude Shannon의 1948년 paper인 "A Mathematical Theory of Communication" 을 참고하도록 하자.
일단, 이산형 랜덤변수에 대해서 엔트로피를 정의해보면(연속형으로 확장 가능하다.), 랜덤변수 X가 가질수 있는 값이
만약 X가 0또는 1의 값만 가질 수 있다면, 엔트로피 H(X)는 P(X=1)의 값에 따라 다음 그림과 같이 표현된다.

즉, P(X=1)=0.5가 될 때, 엔트로피가 가장 커지며, 이는 확률변수 X의 분산이 가장 커질 때와 일치한다.
그럼, Cross Entropy란 무엇일까? 사실, 이 Cross entropy가 머신러닝에서 가장 많이 언급될 것이다.
Cross entropy 는 아래와 같이 정의된다. 아래의 p와 q는 각각 확률분포를 의미한다.
여기서
(support란 확률밀도함수 f(x)에서 확률 밀도 값이 0보다 큰 x 들의 집합을 말한다.)
이를 해석해보면, H(p,q)가 크다는 것은, p의 분포에서 나온 샘플들이 -log(q)를 크게한다는 뜻으로, log(q)를 작게 한다는 뜻이 된다. 즉, p의 분포에서 나온 샘플들이 평균적으로 q의 확률분포와 일치하지 않게 나옴을 의미한다.
(이를 다르게 해석하는 방법은, q라는 code scheme이 있다고 할 때, 이 q는 p와 다르므로 p를 인코딩하기에는 sub optimal 하므로, p를 p로 인코딩하는데 필요한 비트수보다 더 많은 비트수가 필요하다. 즉 더 비효율적인 것이다.)
그리고 이 H(p,q)는 H(p)보다 크거나 같다는 사실이 알려져있다. (Jensen 부등식으로 증명가능.) 그렇다면, H(p,q)가 가질수 있는 최소값은 H(p)라는 말이 되며, H(p,q)가 H(p)라는 말은 p가 평균적으로 가지는 q의 확률질량(또는 밀도)값은 p가 평균적으로 가지는 p의 확률질량(또는 밀도)값과 일치함을 말한다. 그런데 이렇게 되기 위해서는 q와 p의 분포가 완전히 같아야만 한다.(꼭 그런가...? 필요조건 아닌가?, 이에 대한 설명은 정보이론을 좀더 깊숙히 들어가면 있을듯 하다..)
그럼 마지막으로 Kulback-Leibler Divergence를 설명하면,
로 표현가능하고, 0 이상의 값을 가진다.(아까 설명했듯, H(p,q)값이 H(p) 보다 크기 때문에 그렇다. H(p)는 사실상 H(p,p)로 생각해도 무방하다.)
이 쿨벡다이버전스는 두 분포 p와 q가 일치할때, 0의값을 가지며, p와 q가 멀어질수록 값이 커진다.
주의할점은, 교환법칙이 성립하지 않는다는 점이다.
즉, 위 수식을 좀 엄밀히 말하면, 분포 q가 p에 얼마나 가까운지를 나타내는 지표이다. 즉, p가 기준인거고(즉 알려진 분포) q가 비교대상인 거다.(이는 H(p,q)-H(p) 를 해석하자면, p를 p로 인코딩하는데 비교하여 p를 q로 인코딩했을때, 더 필요한 비트수로 생각할 수 있으므로, q가 p에 가까울수록 이 비트수는 줄어들 것이기 때문이다.)
따라서 보통 p를 정해놓고 q를 p에 가깝게하는식으로 최적화가 진행될 것 같다.
그리고 이렇게 되면 H(p)는 보통 최적화 과정과 무관한 정해진 상수텀이 되며, 따라서 KL Divergence를 최소화 하는 작업은 cross entropy를 최소화 하는 작업과 일치하게 된다. (따라서 cross entropy는 머신러닝의 손실함수(loss function)으로써 많이 사용된다.)
'데이터 사이언스 > 머신러닝 & AI' 카테고리의 다른 글
회귀문제에서 Random Forest, SVM, XGBoost 튜닝하는법 (in python) (1) | 2022.10.08 |
---|---|
크로스엔트로피와 최대가능도추정량(MLE)간의 관계 (0) | 2022.08.17 |
딥러닝과 머신러닝, 그리고 모수적 방법과 비모수적 방법이란 ? (0) | 2022.08.15 |
딥러닝 시계열 모형 Neural prophet (in Python) (0) | 2022.08.15 |
비선형 모델 및 머신러닝에 대하여 (feat. 튜닝) (0) | 2022.08.05 |