이번 포스팅에서는 entropy에 대해 알아보겠습니다.
(출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음)
엔트로피(Entropy)
entropy는 정보이론에서 불확실성의 척도로 사용합니다.
(저는 사실 entropy는 열역학할 때만 쓰는 개념인 줄 알았습니다.)
확률변수 $x$의 entropy는 아래와 같이 정의합니다.
Entropy
$$H(x) = -\sum_{i=1}^n P(x_i)\log P(x_i)$$
entropy가 높다는 것은 정보가 많고 확률이 낮다는 것을 의미합니다.
entropy는 하나의 분포를 대상으로 하는 반면,
cross entropy는 두 분포를 대상으로 합니다.
Cross Entropy
$$H_{p,q}(x) = -\sum_{i=1}^n P(x_i)\log Q(x_i)$$
cross entropy는 실제 분포인 $q(x)$를 모르는 상태에서
예측 모델링을 통해 구한 분포 $p(x)$를 통해
두 확률 분포의 차이를 구하기 위해 사용됩니다.
말만 들어서는 잘 이해가 안될 수 있으니 간단한 예제를 통해 알아봅시다.
엔트로피 예제 (동전 & 주사위 던지기)
Entropy
동전과 주사위를 던지는 상황을 가정해봅시다.
동전을 던졌을 때 나올 수 있는 경우의 수는 앞/뒤 두가지이기 때문에
각각의 확률이 1/2인 이산확률분포를 가집니다.
주사위를 던지는 경우 마찬가지로 각각의 확률이 1/6인 이산확률분포를 가집니다.
먼저, 각 상황에 대한 entropy에 대해 알아보겠습니다.
동전을 던지는 상황에 대하여 entropy는
$$H_{coin}(x) = -\left(\frac{1}{2}\log\frac{1}{2}+\frac{1}{2}\log\frac{1}{2}\right)=0.3010$$
주사위를 던지는 상황에 대하여 entropy는
$$H_{dice}(x) = -\left(\frac{1}{6}\log\frac{1}{6}+\frac{1}{6}\log\frac{1}{6}+\frac{1}{6}\log\frac{1}{6}+\frac{1}{6}\log\frac{1}{6}+\frac{1}{6}\log\frac{1}{6}+\frac{1}{6}\log\frac{1}{6}\right)=0.7782$$
동전의 entropy는 약 0.3010, 주사위의 entropy는 약 0.7782로
주사위의 불확실성이 더 크다는 것을 알 수 있습니다.
직관적으로도 앞/뒤가 나오는 동전과 1~6까지 숫자가 나오는 주사위 중
어느 것이 entropy가 높을 지 짐작할 수 있습니다.
Cross entropy
주머니에서 10개의 색깔 공을 꺼내는 상황을 생각해봅시다.
주머니에는 빨간 공이 4개, 파란공이 3개, 초록공이 3개 들어있습니다.
그렇다면 이 데이터의 실제 분포는 각각의 확률이 4/10, 3/10, 3/10인
이산확률분포입니다.
한편, 모형 학습 결과 예측된 분포가 2/10, 4/10, 4/10이라면 어떨까요?
먼저 위에서 계산한 entropy 먼저 알아보면
$$H(x) = -\left(0.4\log0.4+0.3\log0.3+0.3\log0.3\right)=0.4729$$
cross entropy를 계산해보면
$$H_{p,q}(x) = -\left(0.4\log0.2+0.3\log0.4+0.3\log0.4\right)=0.5184$$
cross entropy는 실제 entropy보다 항상 큰 값을 가지기 때문에
최소화하는 쪽으로 하는 것이 실제 분포를 잘 예측할 수 있는 방향입니다.
Kullback-Leibler Divergence
그리고 위 두 entropy를 응용한 개념인
Kullback-Leibler Divergence에 대해 소개하겠습니다.
줄여서 KL Divergence라 주로 부릅니다.
식으로 나타내면 아래와 같습니다.
$$D_{KL}(P\parallel Q)=-\sum_{i=1}^n P(x_i)\log Q(x_i)+\sum_{i=1}^n P(x_i)\log P(x_i)$$
그런데 가만보니 식이 (cross entropy) - (entropy)의 꼴입니다.
cross entropy는 항상 entropy보다 큰 값을 가진다고 했죠?
즉, KL Divergence의 값을 0에 가깝도록 하는 것이 모델을 잘 예측하는 방향입니다.
특히 cross entropy와 KL Divergence는
머신러닝에서 자주 사용되는 손실함수라고 하네요!
여기까지 손실 함수 중 하나인 엔트로피에 대하여 알아보았습니다.
'잡학사전 > 머신러닝' 카테고리의 다른 글
[머신러닝] 얀센의 부등식(Jansen's inequality) (0) | 2022.05.25 |
---|---|
[머신러닝] 컨벡스 함수(convex function) (0) | 2022.05.24 |
[머신러닝] 손실함수(loss function) (1) - L1, L2 손실함수 (0) | 2022.04.13 |
[머신러닝] 그리드 서치(grid search) (0) | 2022.04.12 |
[머신러닝] 파이프라인(Pipeline) (0) | 2022.04.11 |