본문 바로가기 메뉴 바로가기

알기 쉬운 산업수학

알기 쉬운 산업수학

Entropy, Cross-entropy, KL Divergence

|김민중
# 정보이론(information theory) 관점의 cross-entropy Sigmoid 활성함수(activation)를 이용한 이진분류(binary classification)의 cost 함수를 MSE(mean squared error)로 정의하면 작은 gradient(각 parameter들의 편미분계수)값으로 인해서 학습이 제대로 이루어지지 않는다(느린 update). 그래서 학습속도의 최적화를 위해 이진분류의 cost 함수로 cross-entropy를 사용한다고 했었다. 이번 포스트에서는 cross-entropy 함수 사용을 정보이론 관점에서 살펴보자. ### 정보(Information) 정보이론(information theory)에서 정보(information)는 특정한 관찰에 의해 얼마만큼의 정보를 획득했는지 수치로 정량화한 값이다. 모델 학습에 있어서 얼마나 영향력 있는지, 정보의 파급력 또는 놀람의 정도(surprising degree)로 해석할 수 있다. 즉, 정보량은 자주 발생하는 관찰이나 사건에 대해서는 작은 값을 갖고 자주 발생하지 않는 관찰이나 사건에 대해서는 큰 값을 갖는다. 예를 들어서, 공정 데이터기반 불량 검출 문제에서는 정상 생산품의 데이터가 불량 생산품의 데이터에 비해 훨씬 많다. 상대적으로 발생할 확률이 적은 불량 생산품의 관찰이 우리에게 더 많은 정보를 제공할 수 있다. 마찬가지로 유전자 정보 기반 특정 질병 예측 문제에서 상대적으로 얻기 어려운 비정상군의 유전자 데이터는 모델 학습에 있어서 더 중요하고 의미있는 데이터들이다. ~~정상 데이터의 수가 많다고 빅데이터(big data)는 아니다.~~ **정보이론에서는 자주 일어나지 않는 사건의 정보량은 자주 발생하는 사건보다 정보량이 많다고 간주한다. 이 정보량을 확률에 대한 함수로 정의할 것이다.** 앞에서 설명한 관찰이나 사건 \\(A\\)의 정보량 \\(h(A)\\)를 다음과 같이 정의한다. $$ h(A):=-\log P(A). $$ 여기서 \\(P(A)\\)는 사건 \\(A\\)의 확률을 의미하고 로그함수(logarithm)의 밑(base)은 1보다 큰 적당한 수를 사용한다. 일반적으로 미분연산을 간단히 하기 위해서 자연상수 \\(e\\)를 사용하고 \\(h\\)의 기본 단위가 비트(bit)인 경우에는 밑을 2로 둔다. 이 포스트에서는 밑을 \\(e\\)로 사용할 것이다. 확률 \\(P(A)\\)의 범위가 \\(0\leq P(A) \leq 1\\)이므로 \\(h(A)\\)는 \\((0,\infty]\\) 값을 갖는다. ![정보량 로그 함수 그래프](/file/c988b24f47514f59a2642455e608deeb.png) \\(P(A)=0.99\\)인 일어날 확률이 높은 사건 \\(A\\)가 있다. \\(A\\)를 통해서 얻을 수 있는 정보량 또는 사건 \\(A\\)로 인해 놀람의 정도는 다음과 같다(이하 정보량). $$ h(A)=-\log P(A) = -\log 0.99 = 0.01. $$ 반면 \\(P(B)=0.01\\)으로 일어날 확률이 낮은 사건 \\(B\\)의 정보량은 $$ h(B)=-\log P(B) = -\log 0.01 = 4.61 $$ 으로 \\(h(A)\\) 보다 훨씬 큰 값을 갖는다. ### 엔트로피(Entropy) 이산확률변수(discrete random variable)의 평균 정보량, 평균적인 놀람의 정도, 불확실성 정도를 나타내는 entropy를 정의하자. 확률공간 \\(\Omega\\)와 이산확률변수 \\(X=\{x\_1,\ldots,x\_N\}\\), \\(x\_i \in R\\), \\(1\leq i \leq N\\)이 주어져있다고 하자. 여기서 확률변수 \\(X=\{x\_1,\ldots,x\_N\}\\) 표기법은 확률론에서 주로 사용하는 방법으로 엄밀히 말해서 \\(X(\Omega)=\{x\_1,\ldots,x\_N\}\\)을 의미한다. 그리고 $$ (X=x\_i):=\{\omega \in \Omega : X(\omega)=x\_i\} $$ 으로 표기한다. 이산확률변수 \\(X\\)의 평균 정보량 \\(H[X]\\)는 다음과 같이 정의한다. $$ H[X]:= -\sum^N\_{i=1} p_i \log p\_i. $$ 여기서 \\(p\_i :=P(X=x\_i)\\)이다. 즉, 평균 정보량 \\(H[X]\\)는 \\(X\\)분포에서 \\(h\\)의 기댓값인 \\(E[-\log P(X)]\\)을 의미한다. 다음 \\(X = \{ 0,1\}\\)인 확률 공간에서 확률값이 다른 3가지 예를 살펴볼 것이다. \\(X = \{ 0,1\}\\)이므로 평균 정보량 \\(H[X]\\)는 다음과 같이 쓸 수 있다. $$ H[X] = -\big [ P(X=0) \log P(X=0) + P(X=1) \log P(X=1) \big] $$ - 첫 번째 경우 $$ P(X=0)=0.5 $$ $$ P(X=1)=0.5 $$ $$ H[X] =-(0.5 \log 0.5 + 0.5 \log 0.5) = 0.69. $$ - 두 번째 경우 $$ P(X=0)=0.8 $$ $$ P(X=1)=0.2 $$ $$ H[X] =-(0.8 \log 0.8 + 0.2 \log 0.2) = 0.50. $$ - 세 번째 경우 $$ P(X=0)=1 $$ $$ P(X=1)=0 $$ $$ H[X] =-(1 \log 1 + 0 \log 0) = 0. $$ 여기서 \\(0 \log 0:= 0\\)으로 정의한다. 위 경우를 보면 첫 번째 경우인 \\(P(X=0)=0.5, \, P(X=1)=0.5\\) 일 때 평균 정보량이 가장 많았고 세 번째 경우인 \\(P(X=0)=1, \, P(X=1)=0\\) 일 때 평균 정보량이 0으로 가장 적었다(불확실성이 없다고 할 수 있다). 일반적인 \\(X=\{x\_1,\ldots,x\_N\}\\) 경우로 돌아와서 평균 정보량 \\(H[X]\\)가 최대가 되는 \\(p\_i\\) 조합을 찾아보자. \\(p\_i\\)들이 확률변수 \\(X\\)가 가지는 확률 값들이기 때문에 다음 조건을 만족한다. $$ \sum^N\_{i=1} p\_i =1 $$ 위 조건을 만족시키는 \\(p_i\\)들 중에서 \\(H[X]\\)가 최대값을 갖는 조합은 라그랑쥬 승수법으로 얻을 수 있다. $$ p_i = \frac{1}{N}, \, 1\leq i \leq N $$ 결론적으로 이산확률변수 \\(X\\)가 균일분포(uniform distribution)일 때 평균 정보량 \\(H[X]\\)이 최대값을 갖는다. *연속확률변수일 때는 정규분포(normal distribution)일 때 평균 정보량이 최대값을 갖는다(이 내용은 여기에서 생략한다.)* 위 예에서 첫 번째 경우인 \\(P(X=0)=0.5, \, P(X=1)=0.5\\)일 때의 평균 정보량인 0.69가 최댓값이다. ### KL Divergence 두 확률분포의 다른 정도를 측정하는 KL Divergence에 대해 알아보자. Relative entropy 라고도 하며 정식 명칭은 [Kullback–Leibler divergence](https://en.wikipedia.org/wiki/Kullback–Leibler_divergence)이다. 확률공간 \\(\Omega\\)와 이산확률변수 \\(X=\{x\_1,\ldots,x\_N\}\\) 그리고 확률 \\(P\\), \\(Q\\)가 주어졌다고 하자. 즉, 확률변수 \\(X\\)의 두 확률 \\(P\\), \\(Q\\)에 의한 두 확률 분포가 주어졌다고 생각하면 된다. 확률 \\(P\\), \\(Q\\)에 의한 확률 분포를 다음과 같이 나타내자. \\(1\leq i \leq N\\)에 대해서 $$ p:=(p\_i), \quad p\_i:= P(X=x\_i) $$ $$ q:=(q\_i), \quad q\_i:= Q(X=x\_i). $$ 위의 \\(X = \{ 0,1\}\\) 예를 다시 한번 살펴보자. 첫 번째 경우는 $$ p=(0.5, 0.5) $$ ![Distribution over P = (0.5,0.5)](/file/a895a4d221be4f2381cd01bf195ebc08.png) 이었고 두 번째는 경우는 $$ q=(0.8, 0.2) $$ ![Distribution over Q = (0.8,0.2)](/file/c51b38ad909640748b9ba36cb3198ecc.png) 으로 두 분포가 확연히 다르다. 두 분포가 다른 정도를 정량적으로 측정하는 KL Divergence의 정의는 다음과 같다. $$ KL(p \| q ):= -\sum^N\_{i=1}p\_i \log q\_i - \bigg ( - \sum^N\_{i=1}p\_i \log p\_i \bigg)= -\sum^N\_{i=1}p\_i \log \left (\frac{q\_i}{p\_i} \right ). $$ KL Divergence의 성질은 다음과 같다. - \\(KL(p \| q ) \neq KL(q \| p )\\) (non-symmetric). - \\(KL(p \| q )=0\\) if and only if \\(p=q\\). - \\(KL(p \| q ) \geq 0 \\). 마지막 성질을 살펴보면 \\(\sum^N\_{i=1} p\_i=1\\), \\(p\_i \geq 0\\) 이고 \\(-\log\\)함수가 볼록함수(convex)이기 때문에 Jensen's inequality에 의해서 $$ 0=-\log\left( \sum^N\_{i=1} p_i \cdot \frac{q\_i}{p\_i} \right) \leq -\sum^N\_{i=1} p\_i \log \left ( \frac{q\_i}{p\_i} \right)=KL(p \| q ) $$ 을 만족한다. ### Cross-entropy 주어진 확률변수 \\(X\\)에 대해서 확률분포 \\(p\\)를 찾는 문제를 생각해보자. 확률분포 \\(p\\)의 정확한 형태를 모르기 때문에 \\(p\\)를 예측한 근사 분포 \\(q\\)를 생각할 것이다. 정확한 확률분포를 얻기 위해 \\(q\\)의 parameter들을 update하면서 \\(q\\)를 \\(p\\)에 근사할 것이다. 즉, 두 분포의 차이를 측정하는 \\(KL(p\|q)\\)가 최소가 되는 \\(q\\)를 찾는 문제가 된다. 하지만 여기서 \\(KL(p\|q)\\)의 정의를 다시 살펴보면 $$ KL(p \| q )= -\sum^N\_{i=1}p\_i \log q\_i - \bigg ( - \sum^N\_{i=1}p\_i \log p\_i \bigg) $$ 두 번째항 \\(\left( - \sum^N\_{i=1}p\_i \log p\_i \right)\\)는 근사분포 \\(q\\)에 무관한 항이므로 KL Divergence를 최소화 하는 것은 결국 첫 번째 항 cross-entropy를 최소화하는 \\(q\\)를 찾아야 한다. $$ \text{Cross-entropy}= -\sum^N\_{i=1}p\_i \log q\_i $$ 여기서 \\(p=(p\_i)\\)는 실제 확률분포를 의미하고 \\(q=(q\_i)\\)는 \\(p\\)를 근사한 분포다.