Entropy

엔트로피는 머신러닝에서 정보량을 나타내는 방법으로 사용된다. 정보의 량이라는게 되게 추상적으로 들리는데, 생각해보면 되게 간단한 개념이다.

ML상에서 굉장히 많이 사용되는 개념인데, 이해하지않고, 아 그냥 쓰면되지 하고 넘어가기에는 너무 찜찜해서 정리하기로 한다.

정보량의 예

다음과 같은 예를 들어보자.

A:커피 내기를 했는데,모자를 쓴 친구가커피를 샀어!

B:커피 내기를 했는데,옷을 입은 친구가커피를 샀어!

Question: 어떤사람이 커피를 샀는가?

A, B 라는 두 문장이 있었을 때 당신은어떤사람이 커피를 샀는지알고싶다면, 두 정보 중에 어떤 것이 더 값어치가 있다고 생각하는가?

단순하게 생각해보면,모자를 쓴 사람 보다 아무옷을 입은 사람이 더 많다. 이말인 즉슨모자를 쓴 사람에 대한 정보로누가 커피를 샀는지특정하기 쉽다는 것이다. 그러므로 우리는,A 정보가 당신에게 더 값어치가 있다. 이 값어치가 바로 정보량이다.

  • 여기서 알수 있는 사실은 더 특정하기 쉬운 정보들이 바로 더 정보로서의 값어치가 높다고 볼 수 있다.
  • 이를 다시 생각해본다면, 정보가 흔할수록 정보량이 적고, 정보가 흔하지 않을 수록 정보량이 크다.
  • 즉, 정보량과 흔한 정도가 반비례 관계라고 생각할 수 있다.

이를 조금더 구체적인 수치로 나타내서 측정할 수 있다면?

정보량의 계산

정보량을 어떻게 정량적으로 나타낼 수 있을까?

위의 예를 조금 변형해서 아래와 같이 바꿔보자.

A:커피 내기를 했는데,빨간 옷을 입은 친구가 커피를 샀어! $P(red)$

B:커피 내기를 했는데,파란 옷을 입은 사람이 커피를 샀어! $P(blue)$

라고 했을 때, 손쉽게 확률로 표현할 수 있다. 다음과 같이 정의해보자.

$P(red) = \frac{people_{red}}{people_{all}}$; 커피 내기를 한 사람들($people_{all}$) 중,빨간 옷($people_{red}$)을 입은 사람을 고를 확률.

$P(blue) = \frac{people_{blue}}{people_{all}}$;커피 내기를 한 사람들($people_{all}$) 중,파란 옷($people_{blue}$)을 입은 사람을 고를 확률.

직접 숫자로 표현해본다면, 전체 커피 내기를 한 사람들의 숫자가 10명이라고 했을 때, 빨간 옷을 입은 사람이 3명, 파란 옷을 입은 사람이 7명이라고 한다면,

$$P(red) = \frac{3}{10}=0.3 \ P(blue) = \frac{7}{10} = 0.7$$

와같이 계산이 될 수 있을 것이다. 그렇다면, 빨간 옷을 입었다는 정보와 파란옷을 입었다는 정보 중 어떤 것이 더 정보로서 가치가 있을까? 직관적으로 생각했을 때, 내가 누가 내기에 걸렸는지를 알기 원한다면 더 사람을 특정하기 쉬운, 즉 빨간 옷을 입은 사람에 대한 정보가 더 가치가 있다. 이를 통해서, 정보량은 그 사건(색)이 발생할 확률에 반비례한다는 사실을 알 수 있다.

이 때,어떤 변수 $x$가 나올 확률 $P(x)$에 대하여 정보량 $I(x)$을아래와 같이 정의 할 수 있다.

$$I\left( x \right) =-\log { P(x) }$$

여기서 $-log(x)$함수는 아래와 같은 그래프를 가지는데, 확률은 0과 1사이의 값을 가지므로, 정확히 반비례하는 관계를 나타내는데 사용할 수 있음을 알 수 있다.

위의 예제를 이 식을 통해서 계산해보면,

$$I(red) =-log \frac{people_{red}}{people_{all}} = -log \frac{3}{10}=1.203...$$

$$I(blue) =-log \frac{people_{blue}}{people_{all}} = -log\frac{7}{10} = 0.356...$$

따라서 1.203 > 0.356 반비례하는 관계를 잘 표현하는것을 수치적으로 볼 수 있다. 어찌 됐든, 이식은 정보량에 대한 개념을 수학적으로 잘 모델링 할 수 있다고 볼 수 있는 것이다.

Entropy의 정의

예제를 바꿔보자. 우리는 이제 빨주노초 바지를 입고있는 10명이서 가위바위보를 했다는 사실을 알았다고 하자. 그리고 빨4명 주3명 노2명 초1명 라는 사실을 알고 있다고 하자. 자 그러면 이 정보를 누군가에게 전달하고자 할 때, 어떻게 할 수있을까? 인간의 언어로는...1번사원은 빨간색, 2번사원은 주황색, 3번사원은 또 빨간색 ....

오마이갓 너무 길어진다. 우리는 컴퓨터를 사용할 수 있으므로, 이 정보를 이진화해서 보내보면 더 효율적으로 보낼 수 있지 않을까? 즉, 빨: 00 주: 01 노: 10 초: 11 로 정하고, 1번 사람부터 10번 사람까지 000100... 로 인코딩해서 보내는 방식이 있을 것이다. 이렇게 할 경우는 총 2바이트 * 10명 해서 총 20바이트면 이 바지 색에 대한 정보를 동료에게 전할 수 있을 것이다.

하지만, 여기서 더 줄일수는 없는 걸까? 사전 확률을 알고 있을 때, 어떻게 하면 이 정보들을 최소한의 비트를 사용해서 이 정보를 전송할 수 있을까? 이 때, 섀넌이라는 아저씨가 이 방식으로 인코딩할 비트수를 정하면 제일 효율적이다! 라고 증명한 방식이 바로 Entropy다.Entropy형태로 인코딩을 하는 것보다 효율적인 방식은 있을 수 없다!

섀넌은 특정 확률분포 $P(X)$를 따르는 확률 변수$X$가 있을 때, 확률 변수 $X$의 사건 $x$를 $p(x)I(x)$의 길이로 인코딩 하는 것이 기대값을 최소로 만들 수 있음을 보였다. (고한다) 이 때의 확률 변수 $X$의 기대값을엔트로피라고한다.

이 경우에는 그렇게 인코딩해야 최적의 길이(가장 짧은 길이의 바이트로)로 정보를 전달할 수 있다는 것이고, 그 길이가엔트로피다.

여기서 기대값 $\mathbb{E}[X]$ 란, 위키피디아의 힘을 빌어서

확률론에서, 확률 변수의 기댓값(期待값, 영어: expected value)은 각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값이다. 이것은 어떤 확률적 사건에 대한 평균의 의미로 생각할 수 있다.

$$\mathbb{E}[X] =\sum_i x_iP(x_i)$$

로 나타낼 수 있다. 기대값에 대한 식은위키피디아에 가면 계산하는 방식을 찾아볼 수 있다.

즉, 각 사건의 벌어졌을 때의 이득($x_i$)은? 바로 정보량($I\left( x \right)$)이다. 그럼 바로 정의가 나와버리지.

어떤 확률 변수 $X$가 특정 확률 분포 $P(X)$를 따를 때,엔트로피$H(P)$는

$$ H(P)=H(x) =\mathbb{E}_{X \sim P}[I(x)] =\mathbb{E}_{X\sim P}[-logP(x)]=-\sum_xP(x)logP(x) $$

자 어려운 용어들이 많이 나왔는데, 위의 예에서 일일히 대입해보자면,

확률 변수 $X$ = 바지의 색(빨R,주O,노Y,초G)

확률 분포$P(X)$는 아래와 같다.

$$P(x) = \begin{cases} 0.4 & \quad \text{if } x \text{ is } R\\ 0.3 & \quad \text{if } x \text{ is } O\\ 0.2 & \quad \text{if } x \text{ is } Y\\ 0.1 & \quad \text{if } x \text{ is } G \end{cases}$$

조금더 설명하면, 여기서 어떤 사건이 발생할 확률은 $P(R)$와 같이 나타날 것이고, 빨간색의 옷에 해당하는 값, 즉 정보량은 $I(R)=-log(P(R))$가 될 것이다.

따라서, 우리의 엔트로피는 아래와 같다.

$$H(x) = -(P(R)logP(R)+ P(O)logP(O)+ P(Y)logP(Y)+ P(G)logP(G))$$

중요한점은 어떤 확률 분포가 있을 때, $H(P)$ 보다낮은 기대값을 가질 수 없다는 점이다!즉 머신러닝 관점에서 확률 분포 $P$를 알고 있다고 했을 때, $H(P)$ 는global minimum이다.

참고로 이 엔트로피는 재밌는 성질을 가지는데, 바로, 확률 분포가 균등할 때 최대값을 가진다는 것이다. 반대로, 확률 분포가 균등하지 않는다면 최소값을 가지게 된다.

확률분포가 균등할 경우 특정 확률 변수중에서 뭐가 나타날지 결정하기 어렵다. 즉불확실성이 높다. 반면에 특정 사건들이 높은 확률로 등장할 수 있다면 그 사건들로 결정될 확률이 높다. 즉결정적이므로 불확실성이 낮다. 이러한 특징 때문에 엔트로피는 불확실성에 대한 측정이 가능하다.

특정 확률변수가 어떤 확률 분포를 따를 때, 그것의 정보량의 총량을 나타내 줄 수 있으면서 동시에 불확실성에 대한 측정이 가능한 것이다. 그런데, 이 특징은 (내가 생각하기에) 정보이론적인 관점인거 같고 머신러닝에서는 중요하지 않다.

정리

정보가 발생할 수 있는 어떤 사건들의 확률 변수를 $X$라고 하고, 이 확률 변수에 따른 확률 분포를 $P(X)$라고 하자.

정보량

정보량은 어떤 정보가 가지는 가치를 정량화한 값이다.

확률 변수 $X$의 특정 사건 $x$의 정보량 $I\left( x \right)$ 는 아래와같이 계산될 수 있다.

$$I\left( x \right) = -\log { P(x) }$$

이 정보량은 아래와 같은 특징을 가진다.

  • 정보가 흔할수록 정보량이 적고, 정보가 적을수록 정보량이 크다.
  • 덜 자주 발생하는 사건은 더 높은 정보량을 가진다.

Entropy

엔트로피는 정보를 표현하는데 필요한 (평균) 최소 자원량(0 or 1의 개수)을 의미한다.

엔트로피는 모든 사건 정보량의 기대값으로 계산된다.

따라서 다음의 식으로 계산이 가능하다.

$$ H(P)=H(x) =\mathbb{E}_{X \sim P}[I(x)] =\mathbb{E}_{X\sim P}[-logP(x)]=-\sum_xP(x)logP(x) $$

이 엔트로피는 다음과 같은 특징을 가진다.

  • 엔트로피는 사건의 분포가 결정되기 쉬운 확률분포를 따를 경우 엔트로피는 낮다.
  • 엔트로피는 사건의 분포가 균등한 확률분포를 따를 경우 엔트로피가 높다.
  • 만약 이 엔트로피가 연속일 경우, 확률이 가우시안 분포를 따를때 앤트로피가 가장 높다.
  • 중요한점은 어떤 확률 분포가 있을 때, $H(P)$ 보다낮은 기대값을 가질 수 없다는 점이다!즉 머신러닝 관점에서 확률 분포 $P$를 알고 있다고 했을 때, $H(P)$ 는global minimum이다.

feat. 엔트로피는 불확실성의 양을 나타낼 수 있다.

Cross Entropy

의미와 정의

자, 이제 조금더 어려운 문제를 풀어보자. 일반적으로 실제 확률 분포 $P$는 알기 쉽지 않다. 당장 오늘 커피를 먹고싶다가도 먹기싫다가도 갑자기 내기를 하고 있는 우리들은 미리 이 확률 분포를 미리 아는 것은 쉽지 않을 것이다. 하물며, 머신러닝에서 매우 복잡한 문제를 모델링하는 것은 더더덛더ㅓ욱 이 확률분포 $P$를 알기 쉽지 않을 것이다.

그래서, 대충 우리가 아무렇게나 추정을 해보자. 그럼 내가 생각한 확률 분포를 $Q(x)$라고 했을 때,

$$Q(x) = \begin{cases} 0.25 & \quad \text{if } x \text{ is } R\\ 0.25 & \quad \text{if } x \text{ is } O\\ 0.25 & \quad \text{if } x \text{ is } Y\\ 0.25 & \quad \text{if } x \text{ is } G \end{cases}$$

라고 생각해본다. 정확한 정보량은 $-\log { P(x) }$이겠지만, 나는 $Q(x)$라고 잘 못 예측했다. 하지만 이런 방식으로 예측했기 때문에 이 확률분포에 대한 정보량은 어쨌든$-\log { Q(x) }$일 것이다.

다시말해, 실제확률분포가 $P(x)$일 때, $Q(x)$라고 잘못 예측한다면 정보량이 $-\log { Q(x) }$라고 측정되었을 것이므로 잘못 예측한 엔트로피는 실제 확률과 우리가 추정한 값(정보량)의 곱의 합으로 나타나게 된다.

실제 엔트로피는 $E(P)$로, 우리가 실제확률분포가 $P(x)$일 때, $Q(x)$라고 잘못 예측한 엔트로피를 $CE(P, Q)$로 나타낼 때,

$$E[P] =-\sum_xP(x)logP(x)$$

$$CE(P, Q) =-\sum_xP(x)logQ(x) $$

로 계산되게 된다.

Binary Cross Entropy

어 내가 보던 Binary Cross Entropy랑은 조금 다른데요?

CE에서 두 분포가 확률 변수를 단 두개만 가진다고 하자. 예를들면 동전의 앞면과 뒷면.

앞면이 나올 확률이 $P(x)$ 라고 한다면 뒷면이 나올 확률은 $1-P(x)$가 된다.

반면, 앞면이 나올 것으로 예측한 확률 $Q(x)$라고 한다면 뒷면이 나올 것이라고 예측한 확률은 $1-Q(x)$가 된다.

이걸 정리해보자면

$$CE(P, Q) =-\sum_xP(x)logQ(x) $$

$$BCE(P, Q) = -(P(x)logQ(x)+(1-P(x))log(1-Q(x)))$$ 

 

 

KL-divergence

의미와 정의

자꾸 KLKL 거리는데 KL 머길래?... 라고 했을때 되게 심플하다. 일단 divergence는 차이라는 의미로 해석하면 되는데, 주로 두 분포의 차이를 계산할 때 주로 사용된다.

아까 위에서 설명했드시, 실제 확률분포 $P$를 알고 있을 때, 엔트로피 $E(P)$는 이보다 더 좋아질 수 없는global minimum이다. 일반적으로 머신러닝에서 찾고 싶은 것은 바로 우리가만든 모델의 분포 $Q(x)$를 실제 분포 $P(x)$에 근사하게 만드는 것이다. 따라서,

$$\begin{aligned}E(P) &= -\sum_xP(x)logP(x) \\ CE(P,Q) &= -\sum_xP(x)logQ(x) \end{aligned}$$

일 때, 내가 생각한 확률분포와 실제 확률분포와의 차이를 나타내기 위해서 간단하게 $ CE(P,Q)  - E(P)$를 구해주면 된다. 그리고 이를 KL-divergence라고 부르며, $KL(P \parallel Q)$ 로 표기한다.

$$\begin{aligned} KL(P \parallel Q) & = CE(P,Q)  - E(P) \\ & = -\sum_xP(x)logQ(x)  -(- \sum_xP(x)logP(x)) \\ & = \sum_xP(x)logP(x) - \sum_xP(x)logQ(x) \\ & = \sum_xP(x)(logP(x)-logQ(x)) \\ & = \sum_xP(x)log\frac{P(x)}{Q(x)} \end{aligned}$$

정리한 식에서 만약 Q(x)가 P(x)의 분포를 알아냈을 때, 즉, Q(x)와 P(x)가 완전히 같아졌을 때, log 안쪽 식이 1이 되면서 $KL(P \parallel Q)$ 값이 0이 되고, 이것이 바로 최소가 된다.

사족

그런데 잘 생각해보면, binary classification에서 KL-divergence를 쓰지 않고 CE에 대해서만 최적화 해주는 것을 볼 수 있다. 그건 왜그러할까?

사실 쉬운 문젠데, 우리가 최적화하고 싶은 값은 바로 $Q(x)$이다. 즉 $Q$입장에서 보면 $P$는 상수다. 따라서 $CE$에 대해서만 최적화해주면 되기때문에 $CE$를 쓰는것이다

참고로, KL-divergence는차이일 수는 있지만,거리는 아니다. 왜냐하면 A에서부터 B까지 의 거리를 잰다고했을 때, A부터 B까지의 거리는 B부터 A까지와의 거리와 같아야하는데, KLD는 그렇지 않다. 딱봐도...

$$KL(P \parallel Q)=  \sum_xP(x)log\frac{P(x)}{Q(x)} \neq \sum_xQ(x)log\frac{Q(x)}{P(x)} = KL(Q \parallel P)$$

KL과 유사한데, 대칭성이 있어 거리로 사용할 수 있는 Divergence가 있는데, 그게 바로 JSD이다. 이건 추후 포스팅에서 다루겠다.

Reference

#4.0. 정보량을 나타내는 엔트로피 (Entropy)

엔트로피(Entropy)와 크로스 엔트로피(Cross-Entropy)의 쉬운 개념 설명

정보 엔트로피

정보이론 기초

왜 크로스 엔트로피를 쓸까?

Wolfram|Alpha: Making the world's knowledge computable

가장 쉬운 KL Divergence 완전정복!

[딥 러닝] 4강. 정보이론 기초, Cross-entropy와 KL-divergence

notion은 tistory와 연동이 안된다 ㅠㅠ

망했다. 연동이 제대로안되네. 수정하기도 함들고

https://www.notion.so/Cross-Entropy-5f028e1291744e50b8b91644105807be

실제 수정이나, 변경사항은 여기에 남기도록 하겠습니다.

 

수정 내역

  • (2021-03-30) KLD 수식 전개 과정에서 P(x) Q(x)를 바꿔쓴 것 수정
  • (2021-04-03) BCE 섹션추가
  • (2024-03-17) KLD 수식 전개 과정에서 CE-E를 E-CE로 풀이한 것을 수정

 

'ML > 기초 이론' 카테고리의 다른 글

Batch Normalization을 제대로 이해해보자  (0) 2021.03.13

+ Recent posts