주제: 1-5 손실함수 확장 (KL Divergence와 Cross-Entropy)
문제 설정
분류 문제에서 자주 쓰는 Cross-Entropy는 더 일반적인 개념인 KL Divergence와 직접 연결됩니다.
- 왜 Cross-Entropy를 분류 문제에 사용하는가?
- 확률 분포 간 차이는 어떻게 측정하는가?
직관 비유
- P: 실제 데이터 분포(정답)
- Q: 모델이 예측한 분포
- KL Divergence: 두 분포가 얼마나 다른지 측정
학습의 목표는 모델 분포 Q를 실제 분포 P에 최대한 가깝게 만드는 것입니다.
1. Cross-Entropy
기호 의미
- P(x): 실제 분포
- Q(x): 모델 예측 분포
왜 필요한가
모델이 정답 클래스 확률을 높이도록 학습할 수 있습니다.
주의점
Q(x)가 0에 가까우면 로그 항이 크게 발산할 수 있어 수치 안정화가 필요합니다.
2. KL Divergence
기호 의미
- P: 실제 분포
- Q: 모델 분포
왜 필요한가
모델 분포가 실제 데이터 분포와 얼마나 다른지 정량적으로 측정합니다.
주의점
KL Divergence는 대칭이 아닙니다. 즉 D_KL(P||Q) != D_KL(Q||P)입니다.
3. Cross-Entropy와 KL Divergence 관계
KL Divergence를 전개하면 다음이 됩니다.
H(P): 실제 분포 entropyH(P,Q): cross-entropy
학습에서 H(P)는 상수이므로, Cross-Entropy 최소화는 KL Divergence 최소화와 동일합니다.
4. 분류 문제에서의 단순화
정답 분포 P가 one-hot이면 Cross-Entropy는 다음 형태로 단순화됩니다.
즉 모델이 정답 클래스 확률을 크게 만들도록 학습합니다.
코드-수식 연결
| 수식 | PyTorch 코드 | 설명 |
|---|---|---|
| Cross-Entropy | nn.CrossEntropyLoss() | 분류 손실 |
| D_KL(P||Q) | nn.KLDivLoss() | 분포 차이 계산 |
| softmax(x) | torch.softmax(x, dim=-1) | 확률 분포 생성 |
자주 하는 오해 5개
- Cross-Entropy와 KL Divergence가 완전히 다른 개념이라고 생각한다
- KL Divergence가 대칭이라고 생각한다
- Entropy와 Cross-Entropy를 같은 것으로 생각한다
- KL Divergence를 거리(metric)로 생각한다
- Cross-Entropy를 분류에서만 사용할 수 있다고 생각한다
체크리스트 (스스로 설명 가능해야 하는 질문)
- KL Divergence는 무엇을 측정하는가?
- Cross-Entropy와 KL Divergence 관계는 무엇인가?
- 왜 Cross-Entropy 최소화가 KL 최소화와 같은가?
- one-hot 분포에서 왜
-log Q(y)로 단순화되는가? - KL Divergence가 대칭이 아닌 이유는 무엇인가?