2020년 6월 14일 일요일

정보이론의 엔트로피 개념과 머신러닝

안녕하세요. Dr. Limnice 입니다.

지난 포스팅 후에 개인적인 일들로 인해 한동안 포스팅을 하지 못했습니다.

오늘은 정보이론 (Information Theory) 에서의 엔트로피 (Entropy) 개념과 머신러닝과의 연관성에 대해 이야기를 해 보고자 합니다.

정보이론은 통신에서 신호에 존재하는 정보의 양을 정량화 하는 응용수학의 한 갈래입니다. 통신에서 어떤 메시지가 가지는 평균적인 정보량을 예측해서 통신 데이터의 양 및 저장을 효율적으로 하기 위해 활용되고 있습니다.

정보량을 수학적으로 모델링 하기 위해서 다음과 같은 사항들이 고려됩니다.

  • 확률적으로 발생하기 힘든 사건일수록 정보량이 많다.
  • 정보량은 사건의 발생 확률에 따라 단조 (Monotonic) 함수여야 한다.
  • 서로 관련없는 (Unrelated/Independent) 사건들의 경우, 사건들이 동시에 발생하였을 때 정보량은 각 사건이 가지는 정보량의 합이어야 한다.

여기서, 마지막 내용을 좀더 살펴보면, 서로 관련없는 두 사건 x y 가 동시에 발생할 확률 p(x,y) = p(x)p(y) 이며, 각 사건의 정보량을 h(x), h(y) 라고 하면 두 사건이 동시에 발생할 때 정보량 h(x,y) = h(x)+h(y) 이라는 이야기 입니다.

수학에 익숙하신 분들은 이정도 시점에서 어느정도 예상하실 수 있겠습니다만, 위의 사항들을 모두 만족하는 함수는 바로 로그함수입니다. 따라서 정보이론에서는 정보량을 다음과 같이 표현합니다.

일반적인 정보이론에서는 로그함수의 밑을 2로 하고 (보통 컴퓨터에서 데이터를 이진법으로 표현하므로) 이때 정보량의 단위를 섀년(Shannon) 또는 비트(Bit)라고 합니다. 그리고 머신러닝에서는 주로 밑을 자연상수 (e) 로 하고 이때 정보량의 단위를 내트(Nat)라고 부릅니다.

정보이론에서 엔트로피는 모든 사건에 대한 정보량의 기대값을 나타내며 섀넌 엔트로피(Shannon entropy)라고도 불립니다. 전체 사건의 확률분포의 불확실성을 정량화 한다고 생각하시면 되겠으며 다음과 같이 표현될 수 있습니다.

예를들면, 어떤 무작위 변수 x 8개의 상태 {a, b, c, d, e, f, g, h}를 가질 수 있으며, 각 상태를 가질 확률은 동일(1/8)하다고 가정하면, 이때의 엔트로피는 다음과 같습니다.

하지만 각 상태를 가질 확률이 (1/2, 1/4, 1/8, 1/16, 1/64, 1/64, 1/64, 1/64) 라고 할 때 엔트로피는 다음과 같습니다.

예에서 알 수 있듯이, 확률분포가 균등해질수록 확률분포의 불확실성을 나타내는 엔트로피가 증가함을 알 수 있습니다. 아래 그림을 보시면 보다 직관적으로 이해하실 수 있습니다.


 또한 변수의 연속성을 고려하여 엔트로피를 적분항으로 표현할 수 있습니다 (이 경우는 밑이 e 인 경우).

그럼 이제 엔트로피의 개념이 머신러닝에 어떻게 쓰이는지 알아보도록 하겠습니다.

우선, 우리가 미지의 확률분포 p(x) q(x) 라는 확률분포로 모델링(학습)을 한다고 해 봅시다. 이때 엔트로피의 개념을 이용하여 q(x) p(x) 를 정확히 모델링 하기 위해 어느정도의 정보량이 더 필요한지 다음과 같이 정량적으로 계산할 수 있습니다.

이때 KL을 상대 엔트로피 (Relative entropy) 또는 쿨백-라이블러 발산 (Kullback-Leibler divergence) 이라고 합니다. 수학적으로 KL 0보다 같거나 큰 값을 가지며, 두 확률함수가 서로 같을 때 0이 됩니다 (자세한 수학적 증명은 참고문헌 1.6.1 참고). 따라서 KL을 이용하여 두 확률분포의 유사성을 정량적으로 표현할 수 있습니다.

우리가 미지의 확률분포 p(x) 로부터 발생한 n 개의 데이터를 가지고 있다고 하면, 우리는 이로부터 파라미터 θ 를 가지는 확률변수 q(x|θ) θ 값을 변화시키면서 p(x) 를 추정해 갈 수 있게 됩니다. 따라서 위의 KL 식에서 다음 식을 도출할 수 있습니다.

, 우리의 목표는 θ를 변화시켜 KL 값을 최소화하는 방법으로 미지의 확률분포 p(x)를 추정하는 것이 됩니다. 첫 항만을 보면, 앞에 ‘–‘ 가 붙어 있으므로 이것은 통계에서 두 확률분포 pqlikelihood function 을 최대화 하는 것으로도 해석 가능합니다.

또한,


을 보게되면, 첫번째 항은 딥러닝에서 손실함수(loss function) 으로 자주 사용되는 크로스 엔트로피와 동일하다는 것을 알 수 있습니다. 딥러닝 모델을 학습할 때 크로스 엔트로피를 최소화하는 방향으로 파라메터(가중치)들을 업데이트 합니다. 위 식에서 p(x)를 우리가 가지고 있는 데이터의 분포, q(x)를 모델이 추정한 데이터의 분포라고 본다면, 크로스 엔트로피를 최소화한다는 것은 KL를 최소화하는 것과 그 의미가 완전히 같습니다.

읽어주셔서 감사합니다.

Dr. Limnice


참고문헌: CM Bishop, Pattern Recognition and Machine Learning, Springer, 2006.


댓글 없음:

댓글 쓰기