참조 :
https://www.youtube.com/watch?v=7GBXCD-B6fo
https://www.youtube.com/watch?v=Jt5BS71uVfI
https://theeluwin.postype.com/post/6080524
https://velog.io/@vanang7/%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BC%EC%99%80-%ED%81%AC%EB%A1%9C%EC%8A%A4-%EC%97%94%ED%8A%B8%EB%A1%9C%ED%94%BC
머신러닝/딥러닝에서 분류문제를 풀 때 크로스엔트로피를 써서 손실을 구한다.
틀릴 수 있는 정보를 갖고 구한 엔트로피. 즉 불확실성 정도의 양이라고 할 수 있는데, 이 틀릴 수 있는 정보는 바로 머신러닝모델의 아웃풋이 있다. 모델의 아웃풋은 예측값이기에 틀릴 수 있다.
Cross Entropy is optimal entropy When ifro is from estimated probability

간단한 딥러닝 분류문제이다. 최종단에 softmax레이어가있고, 이것을 활용해 예측값을 구할 수 있다.
이것을 정답과 비교할 땐 정답값을 원-핫 인코딩으로 비교하는 형태이다. 이 과정에서 softmax값과 one-hot인코딩된 실제 값을 사용한다.
소프트맥스 값을 Q라고 하고, 실제 라벨을 P라고 했을 때
Q : Estimated Probability , P : True Probability

H(P,Q)가 크로스 엔트로피 공식이고, H(X)가 엔트로피 공식이다.
각각 클래스마다 어떤 확률로 존재하는지를 나타낸다 -> 여기서 $p_i$는 (어떠한 정보의) 확률이다.
$ log_2{1\over{q_i}}$ 는 정보의 양을 나타낸다
왜 크로스엔트로피에서 정보의 양에 $log_2$ $1\over{q_i}$ 을 사용하는걸까?
첫번쨰로 우리는 딥러닝 모델을 학습시킬때 이 예측값이 정답과 얼마나 근사한지 알고싶다.
그를 위해 실제 확률값을 사용해야한다. 단 정보의 양은 모델을 통해 온 정보의 양(예측값의 확률)을 사용해야해서 위의 log 안에 q 가 들어간것이다.
실제 정답의 확률을 사용함으로써 이 엔트로피값이 과연 실제 정답값과 얼마나 근사한지를 알 수 있게되는것이다.
틀릴 수 있는 정보를 갖고 구한 엔트로피값이다 라고 한마디로 정리할 수 있다.
KL Divergence
단순히 어떠한 모델을 설명할때, 차이가 크다-작다 보다 정확한 수치로 얼마만큼 차이난다! 라고 나타냄으로써 어떤 모델이 더 정답과 비슷하게 유추하는지 나타낼 수 있도록 하기위하여 KL Divergence를 사용한다.
이는 수치값으로 분포도를 나타낸다.

$Q_A$가 실제 정답과 상당히 비슷한 분포를 갖고있다고 할 수 있다.
KL Divergence는 실제 정답값의 분포도에서 상대적으로 얼마만큼 다른지에 대해 수치적으로 나타내는 값이다.
상대엔트로피값과 같다.

1. 항상 0과 같거나, 0보다 크다.
2. 비대칭적이다.

그렇다면 왜? 크로스엔트로피를 cost func으로 쓰고, minimize함으로써 최적화를 하는데, 왜 KL Divergence를 쓰지 않는가?
실제로, 크로스엔트로피를 쓰거나, KL Divergence를 쓰거나 같은 현상을 일으킨다.

결국 KL-Divergence 를 사용해도, Entropy(P)가 상수이므로 뒷부분이 무시되고, 크로스엔트로피를 쓰는것과 같은 효과를 발휘하는것.
'Machine Learning' 카테고리의 다른 글
| 데이터 불균형 처리 (0) | 2025.08.26 |
|---|---|
| SVM 서포트벡터머신 (Support Vector Machine) (0) | 2021.06.10 |