주제: 1-5 손실함수 확장 (KL Divergence와 Cross-Entropy)

분류: foundations

타입: concept

난이도: 입문

선수지식: 있음 - 확률 분포, Cross-Entropy, 로그우도

문제 설정

분류 문제에서 자주 쓰는 Cross-Entropy는 더 일반적인 개념인 KL Divergence와 직접 연결됩니다.

직관 비유

학습의 목표는 모델 분포 Q를 실제 분포 P에 최대한 가깝게 만드는 것입니다.

1. Cross-Entropy

H(P,Q)=sum(P(x)*logQ(x))

기호 의미

왜 필요한가

모델이 정답 클래스 확률을 높이도록 학습할 수 있습니다.

주의점

Q(x)가 0에 가까우면 로그 항이 크게 발산할 수 있어 수치 안정화가 필요합니다.

2. KL Divergence

DKL(P||Q)=sum(P(x)*log(P(x)/Q(x)))

기호 의미

왜 필요한가

모델 분포가 실제 데이터 분포와 얼마나 다른지 정량적으로 측정합니다.

주의점

KL Divergence는 대칭이 아닙니다. 즉 D_KL(P||Q) != D_KL(Q||P)입니다.

3. Cross-Entropy와 KL Divergence 관계

KL Divergence를 전개하면 다음이 됩니다.

DKL(P||Q)=H(P,Q)H(P)

학습에서 H(P)는 상수이므로, Cross-Entropy 최소화는 KL Divergence 최소화와 동일합니다.

4. 분류 문제에서의 단순화

정답 분포 P가 one-hot이면 Cross-Entropy는 다음 형태로 단순화됩니다.

L=logQ(y)

즉 모델이 정답 클래스 확률을 크게 만들도록 학습합니다.

코드-수식 연결

수식 PyTorch 코드 설명
Cross-Entropynn.CrossEntropyLoss()분류 손실
D_KL(P||Q)nn.KLDivLoss()분포 차이 계산
softmax(x)torch.softmax(x, dim=-1)확률 분포 생성

자주 하는 오해 5개

체크리스트 (스스로 설명 가능해야 하는 질문)