다운로드
작성자: admin 작성일시: 2016-06-17 11:22:49 조회수: 6538 다운로드: 449
카테고리: 기초 수학 태그목록:

엔트로피

엔트로피의 정의

$Y=0$ 또는 $Y=1$ 인 두 가지 값을 가지는 확률 분포가 다음과 같이 세 종류가 있다고 하자.

  • 확률 분포 $Y_1$: $P(Y=0)=0.5$, $P(Y=1)=0.5$
  • 확률 분포 $Y_2$: $P(Y=0)=0.8$, $P(Y=1)=0.2$
  • 확률 분포 $Y_3$: $P(Y=0)=1.0$, $P(Y=1)=0.0$

이 확률 값이 베이지안 확률이라면 확률 분포 $Y_1$은 $y$값에 대해 아무것도 모르는 상태, $Y_3$은 $y$값이 0이라고 100% 확신하는 상태, $Y_2$은 $y$값이 0이라고 믿지만 아닐 수도 있다는 것을 아는 상태를 나타내고 있을 것이다. 확률 분포들이 가지는 확신의 정도를 수치로 표현하는 것을 엔트로피(entropy)라고 한다. 확률 변수의 여러가지 값이 나올 확률이 대부분 비슷한 경우에는 엔트로피가 높아진다. 반대로 특정한 값이 나올 확률이 높아지고 나머지 값의 확률은 낮아진다면 엔트로피가 작아진다.

물리학에서는 상태가 분산되어 있는 정도를 엔트로피로 정의한다. 여러가지로 고루 분산되어 있을 수 있으면 엔트로피가 높고 특정한 하나의 상태로 몰려있으면 엔트로피가 낮다. 확률분포의 엔트로피는 물리학의 엔트로피 용어를 빌려온 것이다.

엔트로피는 수학적으로 다음과 같이 정의한다.

확률변수 $Y$가 베르누이나 카테고리 분포와 같은 이산 확률변수이면

$$ H[Y] = -\sum_{k=1}^K P(y_k) \log_2 P(y_k) $$

이 식에서 $K$는 $X$가 가질 수 있는 클래스의 수이고 $P(y)$는 확률질량함수이다.

확률변수 $Y$가 연속 확률변수이면

$$ H[Y] = -\int_{-\infty}^{\infty} p(y) \log_2 p(y) \; dy $$

이 식에서 $p(y)$는 확률밀도함수이다.

로그의 밑(base)이 2로 정의된 것은 정보통신과 관련을 가지는 역사적인 이유때문이다.

위에서 예를 든 $Y_1$, $Y_2$, $Y_3$에 대해 엔트로피는 구하면 다음과 같다.

$$ H[Y_1] = -\dfrac{1}{2} \log_2 \dfrac{1}{2} -\dfrac{1}{2} \log_2 \dfrac{1}{2} = 1 $$$$ H[Y_2] = -\dfrac{8}{10} \log_2 \dfrac{8}{10} -\dfrac{2}{10} \log_2 \dfrac{2}{10} = 0.72 $$$$ H[Y_3] = -1 \log_2 1 -0 \log_2 0 = 0$$
In [1]:
-0.5 * np.log2(0.5) - 0.5 * np.log2(0.5)
Out:
1.0
In [2]:
-0.8 * np.log2(0.8) - 0.2 * np.log2(0.2)
Out:
0.7219280948873623
In [3]:
eps = np.finfo(float).eps
-1 * np.log2(1) - eps * np.log2(eps)
Out:
1.1546319456101628e-14

엔트로피 계산에서 $p(y)=0$인 경우에는 다음과 같은 극한값을 사용한다.

$$ \lim_{p\rightarrow 0} \; p\log_2{p} = 0 $$

이 값은 로피탈의 정리(l'Hôpital's rule)에서 구할 수 있다.

엔트로피의 성질

확률변수가 결정론적이면 확률분포에서 특정한 하나의 값이 나올 확률이 1이다. 이 때 엔트로피는 0이 되고 이 값은 엔트로피가 가질 수 있는 최솟값이다.

반대로 엔트로피의 최대값은 이산 확률변수의 클래스의 갯수에 따라 달라진다. 만약 이산 확률변수가 가질 수 있는 클래스가 $2^K$개이고 이산 확률변수가 가질 수 있는 엔트로피의 최대값은 각 클래스가 모두 같은 확률을 가지는 때이다. 이 때 엔트로피의 값은

$$ H = -\frac{2^K}{2^K}\log_2\dfrac{1}{2^K} = K $$

이다.

엔트로피와 정보량

엔트로피는 확률변수가 담을 수 있는 정보의 량을 의미한다고 볼 수도 있다. 확률변수가 담을 수 있는 정보량(information)이란 확률변수의 표본값을 관측해서 얻을 수 있는 추가적인 정보의 종류를 말한다.

엔트로피가 0이면 확률변수는 결정론적이므로 확률 변수의 표본값은 항상 같다. 따라서 확률 변수의 표본값을 관측한다고 해도 우리가 얻을 수 있는 추가 정보는 없다.

반대로 엔트로피가 크다면 확률변수의 표본값이 가질 수 있는 경우의 수가 증가하므로 표본값을 실제로 관측하기 전까지는 아는 것이 거의 없다. 반대로 말하면 확률변수의 표본값이 우리에게 가져다 줄 수 있는 정보의 양이 많다.

엔트로피와 무손실 인코딩

엔트로피는 원래 통신 분야에서 데이터가 가지고 있는 정보량을 계산하기 위해 고안되었다. 예를 4개의 알파벳 A, B, C, D 로 씌여진 문서가 있다고 하자. 이 문서를 0과 1로 이루어진 이진수로 변환할 때 일반적인 경우라면 다음과 같이 인코딩을 할 것이다.

  • A = "00"
  • B = "01"
  • C = "10"
  • D = "11"

이렇게 인코딩을 하면 1,000 글자로 이루어진 문서는 이진수 2,000개가 된다.

만약 문서에서 각 알파벳이 나올 확률이 동일하지 않고 다음과 같다고 가정하자.

$$ \Big\{ \dfrac{1}{2}, \dfrac{1}{4}, \dfrac{1}{8}, \dfrac{1}{8} \Big\} $$

이 때는 다음과 같이 가변길이 인코딩(variable length encoding)을 하면 인코딩된 이진수의 수를 줄일 수 있다.

  • A = "0"
  • B = "10"
  • C = "110"
  • D = "111"

인코딩된 이진수의 숫자는 다음 계산에서 약 1,750개가 됨을 알 수 있다.

$$ \left(1000 \times \dfrac{1}{2}\right) \cdot 1 + \left(1000 \times \dfrac{1}{4}\right) \cdot 2 + \left(1000 \times \dfrac{1}{8}\right) \cdot 3 + \left(1000 \times \dfrac{1}{8}\right) \cdot 3 = 1750 $$

1.75는 알파벳 한 글자를 인코딩하는데 필요한 평균 비트(bit)수이며 확률변수의 엔트로피 값과 같다.

$$ H = -\dfrac{1}{2}\log_2\dfrac{1}{2} -\dfrac{1}{4}\log_2\dfrac{1}{4} -\dfrac{2}{8}\log_2\dfrac{1}{8} = 1.75 $$
In [4]:
-1 / 2 * np.log2(1 / 2) - 1 / 4 * np.log2(1 / 4) - 2 / 8 * np.log2(1 / 8)
Out:
1.75

연습 문제 18.4.1

A, B, C, D, E, F, G, H의 8글자로 이루어진 문서가 있고 각각의 글자가 나올 확률이 다음과 같다고 가정하자.

$$ \Big\{ \dfrac{1}{2}, \dfrac{1}{4}, \dfrac{1}{8}, \dfrac{1}{16}, \dfrac{1}{64}, \dfrac{1}{64}, \dfrac{1}{64}, \dfrac{1}{64} \Big\} $$

이 문서를 위한 가변 길이 인코딩 방식을 서술하고 한 글자를 인코딩하는데 필요한 평균 비트수를 계산하라.

엔트로피의 추정

확률 변수 모형, 즉 이론적인 확률 밀도(질량) 함수가 아닌 실제 데이터가 주어진 경우에는 확률질량함수를 추정하여 엔트로피를 계산한다.

예를 들어 데이터가 모두 80개가 있고 그 중 Y = 0 인 데이터가 40개, Y = 1인 데이터가 40개 있는 경우는 엔트로피가 1이다.

$$ P(y=0) = \dfrac{40}{80} = \dfrac{1}{2} $$$$ P(y=1) = \dfrac{40}{80} = \dfrac{1}{2} $$$$ H[Y] = -\dfrac{1}{2}\log_2\left(\dfrac{1}{2}\right) -\dfrac{1}{2}\log_2\left(\dfrac{1}{2}\right) = \dfrac{1}{2} + \dfrac{1}{2} = 1 $$
In [5]:
- 1 / 2 * np.log2(1 / 2) - 1 / 2 * np.log2(1 / 2)
Out:
1.0

만약 데이터가 모두 60개가 있고 그 중 Y= 0 인 데이터가 20개, Y = 1인 데이터가 40개 있는 경우는 엔트로피가 약 0.92이다.

$$ P(y=0) = \dfrac{20}{60} = \dfrac{1}{3} $$$$ P(y=1) = \dfrac{40}{60} = \dfrac{2}{3} $$$$ H[Y] = -\dfrac{1}{3}\log_2\left(\dfrac{1}{3}\right) -\dfrac{2}{3}\log_2\left(\dfrac{2}{3}\right) = 0.92 $$
In [6]:
-1 / 3 * np.log2(1 / 3) - 2 / 3 * np.log2(2 / 3)
Out:
0.9182958340544896

만약 데이터가 모두 40개가 있고 그 중 Y= 0 인 데이터가 30개, Y = 1인 데이터가 10개 있는 경우는 엔트로피가 약 0.81이다.

$$ P(y=0) = \dfrac{30}{40} = \dfrac{3}{4} $$$$ P(y=1) = \dfrac{10}{40} = \dfrac{1}{4} $$$$ H[Y] = -\dfrac{3}{4}\log_2\left(\dfrac{3}{4}\right) -\dfrac{1}{4}\log_2\left(\dfrac{1}{4}\right) = 0.81 $$
In [7]:
-3 / 4 * np.log2(3 / 4) - 1 / 4 * np.log2(1 / 4)
Out:
0.8112781244591328

만약 데이터가 모두 20개가 있고 그 중 Y= 0 인 데이터가 20개, Y = 1인 데이터가 0개 있는 경우는 엔트로피가 0이다.

$$ P(y=0) = \dfrac{20}{20} = 1 $$$$ P(y=1) = \dfrac{0}{20} = 0 $$$$ H[Y] = -1\log_2\left(1\right) - 0\log_2\left(0\right) = 0 $$

지니불순도

엔트로피와 유사한 개념으로 지니불순도(Gini impurity)라는 것이 있다. 지니불순도는 엔트로피처럼 확률 분포가 어느쪽에 치우쳐있는가를 재는 척도지만 로그를 사용하지 않으므로 계산량이 더 적어 엔트로피 대용으로 많이 사용된다.

$$ G[Y] = \sum_{k=1}^K P(y_k) (1 - P(y_k)) $$
In [8]:
P0 = np.linspace(0.001, 1 - 0.001, 1000)
P1 = 1 - P0
H = - P0 * np.log2(P0) - P1 * np.log2(P1)
G = 2 * (P0 * (1 - P0) + P1 * (1 - P1))

plt.plot(P0, H, "-", label="엔트로피")
plt.plot(P0, G, "--", label="지니불순도")
plt.legend()
plt.xlabel("P(0)")
plt.show()

결합 엔트로피

두 이산확률변수 $X$, $Y$에 대해 결합 엔트로피(joint entropy)는 다음처럼 정의한다.

$$ H[X, Y] = - \sum_{i=1}^{K_x} \sum_{j=1}^{K_y} \,P(x_i, y_j) \log_2 P(x_i, y_j) $$

연속확률변수의 경우에는 다음처럼 정의한다.

$$ H[X, Y] = - \int_{x} \int_{y} \,p(x, y) \log_2 p(x, y) \; dxdy $$

조건부 엔트로피

조건부 엔트로피는 상관관계가 있는 두 확률변수 $X$, $Y$가 있고 $X$의 값을 안다면 $Y$의 확률변수가 가질 수 있는 정보의 양을 뜻한다. 수학적으로는 다음과 같이 정의한다.

$$ H[Y \mid X] = - \sum_{i=1}^{K_x} \sum_{j=1}^{K_y} \,P(x_i, y_j) \log_2 P(y_j \mid x_i) $$

연속확률변수의 경우에는 다음처럼 정의한다.

$$ H[Y \mid X] = - \int_{x} \int_{y} \,p(x, y) \log_2 p(y \mid x) \; dxdy $$

조건부 엔트로피는 조건부 확률 분포의 정의를 사용하여 다음과 같이 고칠 수 있다.

$$ H[Y \mid X] = - \sum_{i=1}^{K_x} \,P(x_i)\,H[Y \mid X=x_i] $$

연속확률변수의 경우에는 다음과 같다.

$$ H[Y \mid X] = - \int_{x} \,p(x) \,H[Y \mid X=x] \; dx $$

다음처럼 증명한다.

$$ \begin{eqnarray} H[Y \mid X] &=& - \sum_{i=1}^{K_x} \sum_{j=1}^{K_y} \,P(x_i, y_j) \log_2 P(y_j \mid x_i) \\ &=& - \sum_{i=1}^{K_x} \sum_{j=1}^{K_y} P(y_j \mid x_i) p(x_i) \log_2 P(y_j \mid x_i) \\ &=& - \sum_{i=1}^{K_x} P(x_i) \sum_{j=1}^{K_y} P(y_j \mid x_i) \log_2 P(y_j \mid x_i) \\ &=& - \sum_{i=1}^{K_x} P(x_i) H[Y \mid X=x_i] \\ \end{eqnarray} $$

또는

$$ \begin{eqnarray} H[Y \mid X] &=& - \int_{x} \int_{y} \,p(x, y) \log_2 p(y \mid x) \; dxdy \\ &=& - \int_{x} \int_{y} p(y \mid x_i) p(x) \log_2 p(y \mid x) \; dxdy \\ &=& - \int_{x} p(x) \left( \int_{y} p(y \mid x) \log_2 p(y \mid x)\; dy \right) \; dx \\ &=& - \int_{x} p(x) \; H[Y \mid X=x] \; dx \\ \end{eqnarray} $$

조건부 엔트로피의 개념을 스팸 메일 분류 문제를 통해 알아보자. 스팸 메일 분류 모형을 만들기 위한 메일 데이터가 80개가 있다 이 중 40개가 정상 메일($Y=0$), 40개가 스팸 메일($Y=1$)이다.

스팸 메일 여부를 특정 키워드가 존재하는지($X=1$) 혹은 존재하지 않는지($X=0$)의 여부로 알아보고자 한다. 키워드 후보로는 $X_1$, $X_2$, $X_3$ 세가지가 있다.

예를 들어 $X_1$, $Y$ 값의 관계가 다음과 같다고 하자.

$Y = 0$ $Y = 1$
$X_1 = 0$ 30 10 40
$X_1 = 1$ 10 30 40
40 40 80

이 때 조건부 엔트로피는 다음과 같이 계산된다.

$$ \begin{eqnarray} H[Y \mid X_1 ] &=& p(X_1=0)\,H[Y \mid X_1=0] + p(X_1=1)\,H[Y \mid X_1=1] \\ &=& \dfrac{40}{80} \cdot 0.81 + \dfrac{40}{80} \cdot 0.81 = 0.81 \end{eqnarray} $$

$X_2$, $Y$ 값의 관계는 다음과 같다.

$Y = 0$ $Y = 1$
$X_2 = 0$ 20 40 60
$X_2 = 1$ 20 0 20
40 40 80

조건부 엔트로피의 값은 다음과 같다.

$$ \begin{eqnarray} H[Y \mid X_2 ] &=& p(X_2=0)\,H[Y \mid X_2=0] + p(X_2=1)\,H[Y \mid X_2=1] \\ &=& \dfrac{60}{80} \cdot 0.92 + \dfrac{20}{80} \cdot 0 = 0.69 \end{eqnarray} $$

만약 $X_3$, $Y$ 값이 다음과 같다면

$Y = 0$ $Y = 1$
$X_3 = 0$ 0 40 40
$X_3 = 1$ 40 0 40
40 40 80

조건부 엔트로피의 값은 0이 된다.

$$ \begin{eqnarray} H[Y \mid X_3 ] &=& p(X_3=0)\,H[Y \mid X_3=0] + p(X_2=1)\,H[Y \mid X_3=1] = 0 \end{eqnarray} $$

위의 정의와 예제에서 조건부 엔트로피는 $X$의 값에 의해 만들어지는 새로운 $Y$ 확률분포의 가중평균임을 알 수 있다.

크로스 엔트로피

두 확률분포 $p(y)$, $q(y)$의 크로스 엔트로피(cross entropy) $H[p,q]$은 다음과 같의 정의한다. 크로스 엔트로피의 경우에는 같은 확률변수에 대한 두 개의 추정 확률분포를 비교하는데 주로 쓰이기 때문에 표기를 할 땔 결합 엔트로피처럼 확률변수를 인수로 사용하지 않고 확률분포를 인수로 사용한다는 점에 주의하라.

$$ H[P,Q] = -\sum_{k=1}^K P(y_k) \log_2 Q(y_k) $$

또는

$$ H[p,q] = -\int_{y} p(y) \log_2 q(y) \,dy $$

크로스 엔트로피는 확률분포의 차이를 정량화한 값이지만 기준이 되는 분포가 $p$로 고정되어 있다. 즉 $p$와 $q$가 바뀌면 값이 달라진다.

$$ H[p,q] \neq H[q,p] $$

크로스 엔트로피는 분류 모형의 성능을 측정하는데 사용된다. $Y$가 0 또는 1이라는 값만 가지는 이진 분류 문제를 예로 들어보자.

  • $P_Y$는 $X$가 정해졌을 때 실제 $Y$이 가지는 분포를 뜻한다. $X$가 정해지면 $Y$는 확실히 0이거나 확실히 1이다. 즉 $P_Y$는 $(0,1)$ 또는 $(1,0)$이 된다.

  • 하지만 예측값 $\hat{Y}$의 분포 $Q_{\hat{Y}}$는 모수가 $\mu$인 베르누이 분포이다. 즉 $Q_{\hat{Y}}$는 $(1-\mu, \mu)$이다.

특정한 $X$에 대해 $P$와 $Q$의 크로스 엔트로피는

$$ H[P,Q] = \begin{cases} & -\log_2 (1-\mu) & \text{Y=0 일 때} \\ & -\log_2 \mu & \text{Y=1 일 때} \\ \end{cases} $$

가 된다.

  • $Y=0$일 때 $\mu$가 커질수록, 즉 예측이 틀릴수록 $-\log_2 (1-\mu)$의 값도 커진다.
  • $Y=1$일 때 $\mu$가 작아질수록 즉, 예측이 틀릴수록 $-\log_2 \mu$의 값도 커진다.

따라서 위 값은 예측의 틀린정도를 나타내는 오차 함수의 역할을 할 수 있다.

모든 데이터에 대해 이 값을 평균을 구하면 다음 식으로 표현할 수 있다.

$$ \begin{eqnarray} H[P,Q] &=& -\dfrac{1}{N} \sum_{i=1}^N \left( y_i \log_2 \mu_i + (1 - y_i) \log_2 (1 - \mu_i) \right) \\ \end{eqnarray} $$

같은 방법으로 이진 분류가 아닌 다중 분류에서도 크로스 엔트로피를 오차 함수로 사용할 수 있다.

쿨백-라이블러 발산

쿨백-라이블러 발산(Kullback-Leibler divergence)은 두 확률분포 $p(y)$, $q(y)$의 차이를 정량화하는 방법의 하나이다. 다음과 같이 정의한다.

$$ \begin{eqnarray} KL(P || Q) &=& H[P,Q] - H[P] &=& \sum_{i=1}^{K} P(y_i) \log_2 \left(\dfrac{P(y_i)}{Q(y_i)}\right) \end{eqnarray} $$

또는

$$ \begin{eqnarray} KL(p || q) &=& H[p, q] - H[p] &=& \int p(y) \log_2 \left(\dfrac{p(y)}{q(y)}\right) dy \end{eqnarray} $$

쿨백-라이블러 발산은 크로스 엔트로피에서 기준이 되는 분포의 엔트로피 값을 뺀 값이므로 상대 엔트로피(relative entropy)라고도 한다. 그 값은 항상 양수이며 두 확률분포 $p(x)$, $q(x)$가 완전히 같을 경우에만 0이 된다.

질문/덧글

사용자에 의해 삭제되었습니다. poio*** 2017년 3월 7일 3:08 오후

사용자에 의해 삭제되었습니다.

이산 확률 변수의 가능한 값이 모두 같은 확률을 가졌을때의 엔트로피의 해석 tch2*** 2017년 3월 15일 3:46 오전

엔트로피는 이산 확률 변수가 가질 수 있는 '확률 변수가 동일한 값의 가짓수'와 같다.
라고 하셨습니다.

그런데 이산 확률 변수가 가질 수 있는 값의 종류가 네가지(1, 2, 3, 4) 이고,
모두 같은 확률(25%)을 가졌다고 한다면, 엔트로피는 2가 나옵니다.

이 경우 '확률 변수가 동일한 값의 가짓수'가 2가 되는건가요?

만약 2가 아니라면, 혹시 (0, 1)과 같이 두가지 상태를 갖는 대상의 갯수를 염두하고 말씀하신 건가요?

답변: 이산 확률 변수의 가능한 값이 모두 같은 확률을 가졌을때의 엔트로피의 해석 관리자 2017년 3월 15일 10:03 오전

엔트로피는 이산 확률 변수가 가질 수 있는 '확률 변수가 동일한 값의 가짓수'와 같다. 라고 한 적이 없습니다.
잘못 이해하신 것 같습니다.

오타제보드립니다. lumm*** 2018년 12월 31일 5:59 오후

양질의 설명자료 감사히 잘 보고있습니다.
보는데 지장은 없지만 보답의 차원에서 제보드립니다^^

<크로스 엔트로피>섹션에서 "두 확률분포 p(y) , p(y) 의"라고 되어있는데, p(y), q(y)를 오타로 남기신것같습니다.

답변: 오타제보드립니다. 관리자 2019년 1월 2일 1:22 오후

수정하였습니다. 지적 감사드립니다.