엔트로피와 크로스 엔트로피

Taek goo Kim·2020년 5월 29일
3

처음 머신러닝/딥러닝을 스터디 했을 때, 정보이론과 Entropy에 대한 이해가 낮아 진도를 나가는데 어려움이 있었습니다. 사실, 어려움이라기 보다는 "일단 나중에 이해하자"라고 덮어두고 활용에만 촛점을 맞춘것이었지요. 이를 테면, 어떤 경우에 Entropy (사실 cross entropy)가 적용되는 지 등에 대한 정도만 익혔다고 볼수 있습니다.

지금도 깊이 있게 이해하는 것은 아니지만, 개인적인 기록 차원에서 정보이론에서의 Entropy 그리고 Cross Entropy를 간략히 정리하고자 합니다.

정보이론에서의 Entropy

우선 정보이론이 말하는 핵심 아이디어는 Shannon이 창안하였는데, 이를 압축하여 표현하면,

새롭고 불확실한 정보 또는 드물게 발생하는 사건 일수록 정보량이 많다

입니다.

우리가 다른 나라로 여행을 가거나 정착을 한다고 가정해보면, 낯선 곳에서 배워야할 것과 습득해야할 정보가 더 많다고 생각할 수 있습니다.

이 정보의 양을 측정하고자 하는 것이 Shannon의 Entropy입니다.

섀넌 Entropy의 특징

불확실할 수록 더 많은 정보가 있다는 점에서 착안하여 측정하는 방법도 고안되었습니다. 이를 수학적으로 표현하는데 다음과 같은 고려사항이 있습니다.
P(x)P(x)xx가 발현될 확률. I(x)I(x)xx의 정보량이라고 하면,

  • 불확실성이 클수록 정보량이 크다: P(x1)>P(x2)=>I(x1)<I(x2)P(x_1) > P(x_2) => I(x_1) < I(x_2).
  • 두 개의 별건의 정보량은 각 정보량의 합과 같다: I(x1,x2)=I(x1)+I(x2)I(x_1, x_2) = I(x_1) + I(x_2). 여기서 두 개의 독립적인 사건 x1x_1, x2x_2의 발생 확률은 P(x1)P(x2)P(x_1) * P(x_2)인데, 정보량은 합산이기 때문에 이를 만족시키는 것은 loglog를 씌우는 것입니다. 즉, I(x)=log1P(x)I(x) = log \frac{1}{P(x)} 이 됩니다.
  • 정보량은 bit로 표현된다: I(x)=log21P(x)I(x) = log_{2} \frac{1}{P(x)}.

여기서, Entropy는 각 사건의 발생확률과 각 사건의 정보량의 합산이 되기 때문에 아래의 공식이 되게 됩니다.

H(X)=i=1klog21PiPiH(X) = \sum\limits_{i=1}^{k} log_{2} \frac{1}{P_i} * P_i

위 공식에 이상적인 주사위를 고려하여 Entropy를 계산해보면, 2.585의 Entropy를 가지며, 이는 주사위를 정보화하여 표현하기 위해서는 3bit가 필요함을 의미합니다.

만약 주사위 모양이 불균형하여 각 면마다 발생확률이 달라지게 되면, Entropy는 2.585보다 작은 값을 가지게 될 것입니다.(모든 사건이 균등한 발생확률을 가질 경우 가장 높은 Entropy를 갖게됩니다.)

머신러닝에서의 Cross Entropy

Entropy에 대해서 둘러보았으니, 머신러닝의 Cross Entropy에 대해서 정리해봅니다.

머신러닝 특히, 딥러닝에서는 분류문제에 대한 Cost Function으로 Cross Entropy를 사용하게 됩니다. 분류의 대상이 참/거짓 처럼 2개인 경우 binary cross entropy를 사용하고, 이미지넷과 같이 수많은 종류의 대상을 분류하는 경우에는 multi cross entropy를 사용합니다.

왜 Cross Entropy라고 부를까

H(P,Q)=i=1klog21QiPiH(P, Q) = \sum\limits_{i=1}^{k} log_{2} \frac{1}{Q_i} * P_i

위 공식이 Cross Entropy입니다.

섀년 Entropy와 형태는 거의 동일하지만, 정보량 부분에 QiQ_i (예측확률)가 사용되고, 확률 부분에 PiP_i (실제확률)로 사용되는 것이 유일한 차이점입니다. Cross Entropy라고 부르는 이유는, 아마도 두 QiQ_iPiP_i가 곱이 이루어 지기 때문에 Cross라는 이름이 붙은게 아닐까 싶습니다.

왜 분류문제의 Cost Function으로 사용될까

그 이유는 간단하게 말해서, Entropy와 Cross Entropy의 차이로부터 알 수 있는 것같습니다. 두 개의 수식이 동일해지는 점을 생각해보면, QiQ_iPiP_i가 같아질 때 Cross Entropy가 Entropy와 같아지게 될 것임을 알 수 있습니다.

이러한 이유 때문에 머신러닝(특히 딥러닝)에서 분류 문제에 적용(Cost Function으로)하는 것으로 생각합니다. QiQ_i는 머신이 만들어낸 불확실한 예측값이고 PiP_i는 실제값으로 각 클래스의 분포 확률로 생각할 수 있을 것입니다.

결국은 머신이 예측한 클래스와 실제 클래스를 비교하여 그 차이를 Entropy로 표현한 것으로 이해하면 좋을 것 같습니다.

아래에 Cross Entropy의 특징을 간략하게 정리해보았습니다.

  1. 예측값과 실제값이 완전히 다른 경우, Cross Entropy의 값은 무한대가 됩니다.
  2. 예측값과 실제값이 완전히 일치하면, Cross Entropy는 Entropy와 동일해집니다.
  3. 머신러닝에서 학습이 잘 진행되면, Cross Entropy는 Entropy와 근접해지는 값을 갖게 됩니다.

즉, Cross Entropy와 Entropy의 차이가 학습의 정도를 나타나게 되고, 이 결과를 가지고 역전파 알고리즘을 통해 각 뉴런의 파라미터를 조정의 정도가 결정되게 되는 것입니다.

위 그림처럼 네트워크 말단의 값은 Softmax로 각 클래스의 확률값으로 변환되고, 실제값과 Cross Entropy 계산을 통한 차이를 가지고 역전파를 통해 학습하게 됩니다.

정리하려고 해봤는데, 막상 마음처럼 깔끔하게는 정리는 잘 안되었네요.

이번 글은 이 정도로 마무리하고 Entropy에 대한 Insight가 한층 성숙해지면, 다시 작성해보아야 겠습니다.

profile
Unknowns vastly exceeds knowns

0개의 댓글