머신러닝/불확실성

Information Theory (Entropy / Cross-Entropy / KL-Divergence)

망나 2019. 4. 26. 17:34

Machine Learning을 공부하다 보면 Entropy, Cross-Entropy, KL-Divergence 등의 용어들이 자주 사용되는데 이러한 개념들은 모두 정보 이론(Information Theory)에서 온 것입니다. 본 포스팅에서는 정보 이론의 기본부터 위 용어들에 대해서 간단하게 정리하도록 하겠습니다.

 

정보 이론의 핵심은 정보(Information)입니다. 정보라는 뜻은 흔히 우리가 알고 사용하는 의미와 동일하게 내가 알고 있는 지식이나 책이나 인터넷을 통해서 얻을 수 있는 지식을 뜻 합니다. 정보 이론에서는 이러한 정보를 수학적으로 표현하였습니다.

 

여기서 가장 중요한 개념은 잘 일어나지 않는 사건(Unlikely event)은 자주 발생하는 사건보다 정보량이 많다(Informative)하다는 것입니다. 쉽게 말해 정보 이론에서의 정보(Information)는 '놀람의 정도'라고 할 수 있습니다.

 

정보 이론에서 정보를 아래와 같은 수식으로 정의했습니다.

 

\(I(x)=-\log P(x)\)

 

예를 들어 동전을 던져서 앞면이 나오는 사건의 정보량은 \(-\log_{2}0.5=1\), 주사위를 던져서 1이 나오는 사건의 정보량은 \(-\log_{2}1/6\approx2.58\) 입니다. 주사위를 던져서 1이 나오는 사건이 동전을 던져서 앞면이 나오는 사건보다 잘 일어나지 않는 사건이므로 더 높은 정보량을 갖는다는 것을 확인할 수 있습니다.

 

수식에서 로그의 밑이 2인 경우는 정보량의 단위를 섀넌(Shannon) 또는 비트(bit)라고 합니다. 반면에, 밑이 자연상수(exp)라면 내트(nat)라고 하는데 Machine Learning에서는 대개 밑을 자연상수로 사용합니다.

 

 

엔트로피 (Entropy)

확률분포 \(P\)를 갖는 섀넌 엔트로피 \(H(P)\)는 전체 사건의 확률분포의 불확실성의 양을 나타내며 모든 사건 정보량의 기댓값을 뜻합니다. 섀넌 엔트로피는 다음과 같이 수식으로 나타낼 수 있습니다.

 

\(H(P)=H(x)=E_{X\sim P}[I(x)]=-E_{X\sim P}[\log P(x)]\)

 

\(H(X)=-\sum_{k=1}^{K} p(X=k)\log p(X=k)\)

 

동전 던지기와 같은 이진 경우를 생각했을 때, 만약 \(P(X=1)=p\)이면 \(P(X=0)=1-p\)이고 \(X\)의 엔트로피는,

 

\(H(X)=-p\log _{2} p-(1-p)\log _{2}(1-p)\)

 

앞면이 나오는 경우 \(P(X=1)\)과 뒷면이 나오는 경우\(P(X=0)\) 각각 50%의 확률입니다. 따라서 \(P(X=1)=0.5, P(X=0)=0.5\), 이에 따라서 동전 던지기의 정보 엔트로피는:

 

                                                  \(-[p(X=0)\log p(X=0) + p(X=1)\log p(X=1)]\)

                                                  \(=-[0.5\log 0.5 + 0.5\log 0.5]\)

                                                  \(=-[(0.5 \times -1) \times 2]\)

                                                  \(=1\)

 

Binary entropy function

만약 사건의 분포가 결정적(diterministic)이라면 확률분포의 불확실성 정도를 나타내는 엔트로피는 낮아집니다. 예를 들어서 앞뒤 모두 앞면의 모양을 가진 동전을 던지는 경우에는 모든 사건에서 앞면만 나오고 뒷면이 절대로 나올 수 없기 때문에 정보량(Entropy)은 0으로 아무런 정보를 가지지 않습니다.

 

반대로 사건의 분포가 균등적(uniform) 일 수록 정보량(Entropy)은 높아집니다. 위의 그래프에서 \(x\) 축은 동전의 앞면이 나올 확률이고 \(y\) 축은 엔트로피입니다. 따라서 사건의 분포가 균등할 때, 즉 앞면이 나올 확률이 50% 일 때 엔트로피가 1로 가장 높은 것을 확인할 수 있습니다.

 

 

KL-Divergence

Kullback-Leibler divergence, KLD)은 두 확률 분포의 차이를 계산할 때 사용하는 함수 입니다. KLD가 0이면 두 확률 분포는 완전히 동일하다고 할 수 있습니다. 머신러닝에서 모델이 추정한 데이터의 분포 \(Q(x)\)와 실제 데이터의 분포 \(P(x)\)간의 차이를 KLD를 이용하여 구할 수 있습니다.

 

\(D_{KL}(P||Q)=\sum _{x\in X}P(x)\log (\frac{P(x)}{Q(x)})\)

 

KLD는 비대칭(not symmetric)으로 \(P\)와 \(Q\)의 위치가 바뀌면 그 값도 달라지기 때문에 거리 측정 함수로는 사용할 수 없습니다.

 

만약 아래와 같은 확률 분포를 가진 \(P\)와 \(Q\)가 있다면,

 

Kullback-Leibler divergence, Wikipedia 

\(D_{KL}(P||Q)=\sum _{x\in X}P(x)\ln (\frac{P(x)}{Q(x)})\)

                  \(=0.36\ln (\frac{0.36}{0.333})+0.48\ln (\frac{0.48}{0.333})+0.16\ln (\frac{0.16}{0.333})\)

                  \(=0.0852996\)

 

\(D_{KL}(Q||P)=\sum _{x\in X}Q(x)\ln (\frac{Q(x)}{P(x)})\)

                  \(=0.333\ln (\frac{0.333}{0.36})+0.333\ln (\frac{0.333}{0.48})+0.333\ln (\frac{0.333}{0.16})\)

                  \(=0.097455\)

 

 

Cross-Entropy

크로스 엔트로피는 두 개의 확률분포 \(p\)와 \(q\)에 대해 하나의 사건 \(X\)가 갖는 정보량입니다. 서로 다른 두 확률분포에 대해 같은 사건이 가지는 정보량을 계산한 것 입니다.

 

\(H(p,q)=E_{p}[-\log q]\)

 

Kullback-Leibler divergence를 이용해서 크로스 엔트로피를 정의하면 다음과 같습니다.

 

\(H(p,q)=H(p)+D_{KL}(p||q)\)

 

Deep Learning 모델의 입력값으로 쓰이는 관측치는 이산변수(discrete variable)이기 때문에 크로스 엔트로피를 다시 다음과 같이 정의할 수 있습니다.

 

\(H(P,Q)=-\sum _{x\in X}p(x)\log q(x)\)

 

Deep Learning 모델을 학습시킬 때, 우리는 크로스 엔트로피를 최소화하는 방향으로 파라미터들을 업데이트 합니다. 위의 식에서 보면 \(H(p)\)는 \(p\)의 엔트로피, 즉 우리가 가지고 있는 데이터의 분포이며 학습과정에서 바뀌지 않습니다. 따라서 \(q\)에 대해서 크로스 엔트로피를 최소화한다는 것은 KLD를 최소화 하는 것과 같은 의미이고, 그럼으로 \(p\)를 근사하는 \(q\)의 확률분포가 최대한 \(p\)와 같아질 수 있도록 모델의 파라미터를 조정하게 되는 것 입니다.

 

 

References

 

Cross-Entropy 란 무엇인가 (information theory)

정보 이론: Information Theory

정보이론 기초

Binary entropy function - Wikipedia

Kullback-Leibler divergence - Wikipedia

'머신러닝 > 불확실성' 카테고리의 다른 글

Adversarial Attacks and Defenses  (0) 2020.03.23
불확실성 (Uncertainty)  (0) 2019.04.03
베이즈 정리(Bayes theorem)  (0) 2019.03.10