엔트로피

5050·2021년 10월 2일
0

딥러닝

목록 보기
6/6

엔트로피란?

엔트로피는 정보를 나타내기 위한 최소 평균 자원량을 의미한다.
'ㄱ', 'ㄴ', 'ㄷ', 'ㄹ'을 컴퓨터에서 사용하는 이진수로 나타낸다고 해보자

4개니까 0, 1, 10, 11로 나타낼 수 있다
사용 빈도수는 'ㄹ', 'ㄷ', 'ㄴ', 'ㄱ'의 순으로 많다고 할 때, 'ㄹ'에 11을 할당한다면 0을 할당했을 때 보다 비효율적이게 된다.

빈도를 확률로 표현하여 사용빈도(확률)을 PiP_i라고 했을 때, 정보량은 확률에 반비례하면서 독립일 때 곱으로 나타나는 확률을 덧셈으로 바꿀 수 있고 확률이 1일 때 정보량을 최소(0)으로 하는 log를 취해 log(Pi)-log(P_i)를 사용하여 나타낸다.

그러면 정보량의 기댓값을 나타낸다면 i=1NPilog(Pi)-\sum\limits_{i=1}^{N}P_ilog(P_i)로 나타낼 수 있다.

이 것이 엔트로피이며 최소 평균 자원량을 의미한다.
최소 평균 자원량이므로 어떻게 할당을 하더라도 이 보다 더 적을 순 없다.
이 엔트로피가 최대가 되는 분포는 균등분포(uniform distribution)이다.

연속 확률 분포에서는 0NPln(P)dP-\int\limits_0^NPln(P)dP 가 된다.
연속 확률 분포에서는 가우시안 분포일 때 최댓값이 된다고 한다.

크로스 엔트로피란?

우리는 앞서 엔트로피를 다뤄봤다.
크로스엔트로피는 먼저 수식으로 본다면
i=1NPilog(Qi)-\sum\limits_{i=1}^{N}P_ilog(Q_i) 가 되는데
이는 실제 확률은 PiP_i 이지만, 우리가 어떤 분포를 모델링하여 정보량을 log(Qi)-log(Q_i)라고 하는 것이다.

이 것을 딥러닝에서 사용하는 것을 생각해봤을 때
실제 확률은 정답 데이터가 되고 QiQ_i는 우리가 만든 모델이 만들어내는 결과값
즉 실제 정답이 PiP_i일 때 우리의 모델이 내는 확률은 QiQ_i라고 내뱉는 것이다.
근데 우리가 앞서 QiQ_iPiP_i와 같을 때(같은 분포일 때) 엔트로피가 된다고 했기 때문에
QiPiQ_i \not= P_i라면 최적이 아니게 되는 것이다.
이는 QiQ_iPiP_i와 같은 분포로 잘 모델링 되었을 때 크로스 엔트로피가 엔트로피가 된다로 볼 수 있다.

KL-Divergence란?

KL-Divergence는 수식을 보면 바로 이해가 가기 때문에 수식부터 보자.
KL-Divergence = i=1NPilog(Qi)+i=1NPilog(Pi)-\sum\limits_{i=1}^{N}P_ilog(Q_i) + \sum\limits_{i=1}^{N}P_ilog(P_i)
수식에서 보면 알 수 있듯이 크로스 엔트로피 - 엔트로피가 된다.
이는 우리가 모델링한 것이 실제 분포를 얼마나 잘 모사했는가를 볼 수 있는 수치다.

그럼 여기서 드는 의문이 왜 KL-Divergence가 아닌 크로스 엔트로피를 loss 함수로 쓰는 것인가 이다.
이는 예시를 들어보면 softmax에서 정답데이터는 [1, 0, 0], [0, 1, 0], [0, 0, 1]이런 식으로
one-hot vector로 표현되는데 정답에 해당되는 인덱스만 살아남아 PiP_i값이 1로 되어 엔트로피가 0이 되어버린다.
그렇기 때문에 결국 크로스 엔트로피가 loss 함수로 되는 것이다.

Mutual Information이란?

이미 필요한 지식은 다 갖췄기 때문에 이번에도 수식으로 보자

i=1Nj=1NP(xi,yj)log(P(xi,yj)/P(xi)P(yj))-\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{N}P(x_i, y_j)log(P(x_i, y_j)/P(x_i)P(y_j))

이 것은 잘 보면은 KL-Divergence 와 동일한 형태이다.
QQP(xi)P(yj)P(x_i)P(y_j)가 된다.
이 것을 잘 생각해본다면 독립일 때 확률은 곱으로 나타내므로 우리가 독립일 것이라고 가정을 해버린 것이다.
즉 얼마나 독립인가를 나타낸다고 볼 수 있다.

profile
하이

0개의 댓글