Day to_day

Cross Entropy 개념 / KL divergence 정리 (추가) 본문

Deep Learning

Cross Entropy 개념 / KL divergence 정리 (추가)

m_inglet 2024. 1. 2. 09:17
728x90
반응형

 

포스팅 개요

그동안 크로스 엔트로피에 대해서 자주 들었지만 내가 설명하려면 정확하게 말이 잘 안 나왔었다.

 

이번 기회에 정확하게 정리하고 정보이론에서 정보란 무엇이며, 엔트로피는 어떻게 변화하게 되는지에 대한 설명과 딥러닝에서 loss function으로 쓰이는 Cross Entropy는 어떤 특성이 있는지에 대해서 정리하려고 한다.

 

 + 포스팅 추가

KL divergence를 추가로 정리하려고 하는데 cross entropy와 묶어서 설명하는 게 좋을 것 같아서 다시 수정해서 작성하였다.

 

 

들어가기 전에

크로스 엔트로피를 들어가기 앞서 3가지 개념에 대해서 배경 지식이 있어야 한다.

  1. 정보 (Information)
  2. 기댓값 (Expectation Value)
  3. 엔트로피 (Entropy)

 

1. 정보 (Information)

일단 정보이론에서 쓰이는 ‘정보’라는 것은 단순히 data라고 생각하기 쉽다.

그러나 한 단어로 정리하면 ‘놀람의 정도’라고 표현할 수 있겠다.

무슨 갑자기 놀람?이라는 단어가 나왔나 싶겠지만 풀어서 설명하면 이해가 될 것이다.

 

정보는 내가 처음 안 사실에 대해서 가치가 높다고 말할 수 있다. 예컨대 ‘원숭이는 바나나를 먹는대’ 말고 ‘코끼리가 바나나를 먹는대’라는 말이 더 놀라울 것이다. 정보는 누구나 알고 있는 정보라면 가치가 낮고, 의외성을 가진 정보가 가치가 높다고 할 수 있다.

 

또 다른 예시로 어떤 복권에 당첨될 확률이 0.0001%라고 하자.

내가 그 복권을 사고 낙첨이 될 확률은 굉장히 높을 것이다. 그러면 우리는 실제로 낙첨되었을 때 ‘아.. 그럴 줄 알았어’라고 판단하고 그 결과는 그리 놀랍지 않다. 그러나 내가 당첨이 되었을 땐 ‘오..! 이게 당첨되다니!’하며 굉장히 놀라게 될 것이다.

 

이렇듯 확률과 놀람의 정도는 반비례하게 된다.

그리고 이 놀람의 정도를 정보이론에서 아래와 같이 정의한다.

p(x)는 확률을 의미

 

놀람의 정도는 확률과 반비례하기 때문에 다음과 같이 표현되고 log(p(x)에 마이너스가 붙는 것으로 정리할 수 있을 것이다!

 

 

2. 기댓값 (Expectation Value)

확률 변수 X의 기댓값은 각각의 가능한 결괏값 x가 발생할 확률 P(x)에 x를 곱해서 더한 값이다.

그것을 식으로 표현하면 다음과 같다.

 

3. 엔트로피 (Entropy)

엔트로피는 섀넌이 정의한 바로는 ‘정보를 표현하는데 필요한 최소 자원량’이라고 한다. 이때 자원을 bits로 표현할 수 있고, 어떠한 정보의 길이가 짧을수록 자원량을 줄이는 것이라고 말할 수 있을 것이다.

그렇다면 정보를 표현할 때 어떤 정보를 짧게 표현하고 어떤 정보는 길게 표현해야하는 걸까? 최소한으로 자원을 줄이기 위해서는 확률적으로 계산이 들어가야 한다. 만약 단어를 인코딩한다고 했을 때, 자주 나올 확률이 있는 단어는 짧게, 잘 나오지 않을 확률을 갖는 단어는 길게 표현하는 것이 자원을 최소화시키는 방법일 것이다. 그래서 발생할 확률이 높을수록 엔트로피는 작아지는 것이고 그래프로 그리면 다음과 같다.

이 그래프는 -log(P(x))로 표현할 수 있고, 확률이 들어가기 때문에 P(x)가 삽입되는 것이다. 그런데 어떤 확률적 사건에 대한 평균은 항상 기댓값으로 표현되기 때문에 최종적으로 -ΣP(x)log(P(x)로 정리할 수 있다.

추가적으로 연속확률변수(continuous) 일 땐 -∫P(x) lnP(x)로 표현한다.

 

즉 정보를 표현하는데 필요한 자원량의 최소 기댓값을 다시 식으로 정리하면 다음과 같다.

 

그러면 이제 Cross Entropy는 무엇이고 어떻게 달라질까?

 

 

크로스 엔트로피 (Cross Entropy)

딥러닝에서의 예시를 보겠다.

마지막 layer에서 예측 확률을 다음과 같이 예측했을 때 실제 원-핫 인코딩으로 레이블 된 값과 비교했을 때 예측과 다른 큰 차이를 보인다. 이 경우 cross entropy가 높고, 이 cross entropy를 loss function으로 쓴다면 모델이 계속 학습하면서 예측 확률이 점점 더 정확해질수록 loss 값이 더 작아질 것이다.

 

이때 예측 확률을 Q라고 하고 실제 레이블을 P라고 할 때 다음과 같이 식을 쓸 수 있다.

정답 레이블(P)은 원-핫 벡터이기 때문에, 실질적으로 1에만 해당하는 인덱스만 계산된다.

일반적인 엔트로피 식과 비교할 때 2개의 값이 input으로 들어가기 때문에 cross entropy라고 부른다.

크로스 엔트로피는 한마디로 틀릴 수 있는 정보(예측 확률)를 가지고 구한 최적의 엔트로피 값이다.

 

최소의 자원량의 관점에서 다시 살펴보면 실제로 일어나는 사건은 p(x)의 확률분포를 따르는데 모델이 예측한 확률분포는 q(x)라고 할 때 cross entropy 계산을 위와 같이 하는 것이다. 그래서  --ΣP(x) log(P(x)는 실제 사건이 일어날 때의 최소의 자원량이지만 log(p(x))를 log(q(x))로 대체했을 때 q(x)가 실제 분포인 p(x)와 비슷하다면 cross entropy 값도 낮을 것이다. 

 

 

크로스 엔트로피가 쓰이는 이유는 무엇인가?

 

분류 모델에서 MSE(Mean Square Error)와 비교했을 때 예측을 틀렸을 경우 log함수의 특성상 더 손실함수의 크기가 커진다. 그러므로 loss의 기울기가 더 커져 효율적으로 loss를 최소화할 수 있다. 

 

 

KL divergence 

쿨백-라이블러 발산(Kullback–Leibler divergence, KLD)

 

KL divergence는 위의 cross entropy까지 모두 이해했다면 쉽게 정리할 수 있다.위키 백과에 따르면  KL divergence는  확률분포의 차이를 계산하는 데에 사용하는 함수로 어떤 이상적인 분포에 대해, 그 분포를 근사하는 다른 분포를 사용해 샘플링을 한다면 발생할 수 있는 정보 엔트로피 차이를 계산한다고 한다. 

한마디로 말해서 ‘두 확률분포의 다름의 정도’라고 할 수 있다.

KL divergence는 cross entropy에서 entropy를 뺀 식이라고 생각하면 된다.

 

머신러닝에서는 주로 아직 확인되지 않은 모델을 특정한 확률 분포로 근사 시키는데 KL-divergence를 쓴다. 실제 데이터를 최대한 잘 설명하려는 확률 분포를 구하려면 KL-divergence를 낮게 만들어야 할 것이다.

 

 

 

Reference

https://www.youtube.com/watch?v=vAaReyHMfY8

728x90
반응형
BIG
Comments