손실 함수 — Cross Entropy
"다음 수 분류" 문제에서 표준 손실 함수는 Cross Entropy (교차 엔트로피).
📖 Cross Entropy 공식
예측 확률 분포 P_pred = [p₁, p₂, ..., p_n], 정답이 클래스 c (one-hot)면:
Loss = −log(p_c)
"정답 클래스의 예측 확률이 낮을수록 손실이 큼". 직관적:
- 정답에 0.99 확률 → loss ≈ 0.01 (작음)
- 정답에 0.5 확률 → loss ≈ 0.69 (중간)
- 정답에 0.001 확률 → loss ≈ 6.9 (큼)
🎯 예시
보드를 보고 "사람이 (3,3)에 뒀다"가 정답이라고 하자. 신경망의 예측:
- 학습 초기 (균등): p_(3,3) ≈ 0.003 → loss ≈ 5.8 — 크게 틀림
- 학습 중기: p_(3,3) ≈ 0.05 → loss ≈ 3.0
- 학습 후: p_(3,3) ≈ 0.4 → loss ≈ 0.92 — 잘 맞춤
학습이 진행될수록 loss 감소 = 신경망이 사람의 수를 점점 잘 예측.
💡 왜 log를 쓰나
log를 안 쓰고 단순히 (1 - p_c)를 손실로 쓰면? 그래도 0.99 → 0.01, 0.001 → 0.999 변별 가능. 그러나 매우 작은 확률에 대한 페널티가 약함.
log(0.001) = -6.9 vs log(0.05) = -3.0. 매우 잘못된 예측에 큰 그래디언트 → 빨리 수정. 알파고 같은 큰 모델에 필수.
코드로 보자.