06. 결론 — 치트시트 한 장 · 결정표 · 함정 체크리스트
목차
이 마지막 장은 책 전체의 결론을 한곳에 모은다. 두고두고 펴 볼 치트시트 한 장 카드, softmax-CE와 sigmoid-BCE 중 무엇을 쓸지 고르는 결정표, 구현할 때 빠지기 쉬운 함정 체크리스트가 여기 다 있다. 앞 장들은 각자 "한 줄 정리 + 다음 장으로 잇기"로만 닫았다. 종합 결론과 결정표, 체크리스트는 이 장에만 둔다.
6.1 한 문장 요약
cross-entropy는 모델 예측 분포 의 놀람을 진짜 분포 로 평균한 값이다(01장). 라벨이 one-hot(정답 한 칸만 1)이면 합에서 정답 항만 남아 "정답에 준 확률의 음로그" 가 된다(02장).
softmax나 sigmoid가 로짓(logit, 모델이 내놓은 점수)을 확률로 바꾼다. 그 위에서 CE를 미분하면 약분이 일어나 gradient가 (예측−정답)로 깔끔해진다(03장). 이 깔끔함이 학습을 빠르고 안정적으로 이끈다.
실전에서는 로짓을 손실에 바로 넣어 NaN을 막고(log-sum-exp), label smoothing(라벨을 조금 무르게 풀기)으로 과확신을 누른다(04장). 그리고 "CE 최소화 = KL 최소화 = 최대우도추정"은 표현만 다른 같은 말이다(01장).
6.2 치트시트 한 장 카드
cross-entropy 핵심식 카드 — 이 한 장이면 거의 다 된다.
정의 (01장)
는 와 무관한 상수 → min CE = min KL = MLE. one-hot이면 → CE 하한 0.
분류 손실 (02장)
. 둘 다 "정답에 준 확률의 음로그", 같은 골격. easy, 작으면 hard.
softmax / sigmoid (02장)
softmax: 양수·합1·순서보존·평행이동불변. sigmoid = 2-클래스 softmax.
gradient (03장)
약분 덕에 깔끔. 틀릴수록 큰 신호. MSE는 로 포화(크게 틀린 곳에서 gradient 소멸, CE 대비 최대 405×).
수치안정 (04장)
로짓을 손실에 직접 넣어라 → overflow· 동시 차단(항등식, 무근사).
label smoothing (04장)
보통 . 과확신↓·보정↑, 단 teacher 증류엔 해로움.
친척들 (04장)
주 예제 한 줄 (05장): , 정답=클래스2 → , → grad → 한 스텝 → (줄어듦).
이 카드 한 장이 책 전체의 뼈대다. 윗줄(정의)은 왜 CE인지를, 가운뎃줄(분류 손실·gradient)은 어떻게 손실과 신호가 나오는지를, 아랫줄(수치안정·smoothing)은 코드로 옮길 때 무엇을 조심하는지를 담는다. 막히면 여기로 돌아오면 된다.
6.3 결정표 — 언제 무엇을 쓰나
손실을 고르는 일은 대부분 한 가지 질문으로 갈린다. "정답이 정확히 하나인가?" 그 답이 표의 첫 갈래를 정한다.
| 상황 | 변환 | 손실 | 핵심 식 | 출력층 |
|---|---|---|---|---|
| 다중클래스, 정답 하나 (개/고양이/새) | softmax | categorical CE | 로짓 개, 합=1 | |
| 이진 분류 (양성/음성) | sigmoid | BCE | 로짓 1개 | |
| 다중라벨, 여러 개 동시 참 (속성들) | 채널별 sigmoid | 채널별 BCE 합/평균 | 로짓 개, 독립 | |
| soft target / 지식증류 | softmax | KL divergence | 로짓 → log-softmax | |
| 클래스 불균형 | softmax/sigmoid | weighted CE | () | + 클래스 가중 |
| easy 샘플 과다 | softmax/sigmoid | Focal (CE 확장, 이 책 범위 밖) | + 샘플 변조 | |
| 언어모델 평가 | — | perplexity (지표) | (손실 아님) |
결정표 읽는 법. 가장 먼저 묻는다. "정답이 정확히 하나인가?" 예라면 softmax-CE다. 아니라면(여러 라벨이 동시에 참일 수 있다면) 클래스별 sigmoid-BCE를 쓴다. 이진 분류는 sigmoid-BCE이고, 이것은 2-클래스 softmax의 특수한 경우다.
그 위에 불균형이나 과확신 같은 문제가 더 있으면 weighted CE, label smoothing, Focal을 덧댄다. 골격을 바꾸는 게 아니라 위에 한 겹 얹는 식이다. 어느 경우든 바탕은 언제나 "정답에 준 확률의 음로그"다.
위 그림은 결정표를 그대로 흐름도로 옮긴 것이다. 첫 질문에서 갈라져 손실을 고르고, 마지막에 add-on을 얹는 순서가 한눈에 들어온다.
6.4 함정 체크리스트 (구현·리뷰 시)
루프를 직접 구현하거나 리뷰할 때 빠지기 쉬운 함정을 한곳에 모았다. 출처 장은 괄호로 적었다.
입력·이중 적용
- [ ] 손실에는 raw 로짓을 넣는다.
CrossEntropyLoss·BCEWithLogitsLoss는 내부에서 softmax나 sigmoid를 한다. 모델 끝에 softmax를 또 넣으면 이중 적용이 되어 분포가 평평해지고 학습이 둔해진다. (02장 §2.6, 04장 §4.5) - [ ] 확률을 로짓 자리에 넣지 않는다. 확률을 로짓 입력 손실에 넣으면 내부 log-softmax가 의미를 잃는다. 손실이 거의 0이 되고 gradient가 죽는다. 확률만 있으면
BCELoss·NLLLoss로 짝을 맞춘다. (04장 §4.5)
라벨·축
- [ ] 라벨 형식을 확인한다. PyTorch
CrossEntropyLoss는 정수 인덱스(N,)(long) 또는 soft 확률(N,C)(float)를 받는다. 정수 자리에 one-hot을 넣지 않는다. (02장 §2.5, 04장 §4.5) - [ ] 클래스 축은 dim=1. 입력은
(N, C, ...)형태여야 한다.(N, ..., C)라면permute·reshape(-1, C)로 맞춘다. (04장 §4.5) - [ ] reduction을 의도적으로 고른다.
'mean'(기본)과'sum'은 손실 스케일과 학습률이 달라진다. 마스킹할 때는 유효 토큰 수로 직접 나눠 일관성을 지킨다. (04장 §4.5)
수치 안정
- [ ] NaN 주의. CE를 직접 짜면 에서
-inf가 나오고, 한 스텝 만에 전체 파라미터가 NaN으로 오염된다. 가능하면 로짓-융합 경로(log-sum-exp)를 쓰고, 차선으로 확률을 로 클리핑한다. (04장 §4.1) - [ ] 로짓이 폭주하면
clip_grad_norm_이나 safe softmax(최댓값 빼기)를 쓴다. AMP(혼합 정밀도)에서는exp·log연산을 FP32로 유지하길 권한다. (04장 §4.1, 03장 §3.6) - [ ] NaN 디버깅 순서: 입력 로짓 → loss 자리(이중·확률) → 타깃 범위 → LR·clip → 클리핑. (04장 §4.5)
손실 선택·하이퍼파라미터
- [ ] multi-label에 softmax 금지. 여러 라벨이 동시에 참인데 softmax를 쓰면 합=1을 강제해 "둘 다 참"을 표현하지 못한다. 클래스별 sigmoid-BCE를 쓴다. (02장 §2.4)
- [ ] 분류에 MSE 지양(기본값). MSE는 크게 틀린 곳에서 gradient가 소멸한다(CE 대비 최대 405×). 표준 설정에서는 softmax-CE가 더 안전하고 빠르다. (03장 §3.4)
- [ ] label smoothing 권장. 이 너무 크면 정답 신호가 묽어진다. teacher 증류용 모델에는 쓰지 않는다(유사도 정보가 사라진다). 분해 검산은 (모든 클래스 음로그의 평균)을 정확히 넣어야 맞는다. (04장 §4.2)
- [ ] CE·KL은 거리가 아니다. 로 비대칭이다. "분포를 가깝게 한다"는 비유일 뿐이다. (01장 §1.8)
6.5 한 걸음 더 (이 책 범위 밖, 안내만)
이 책은 cross-entropy 자체를 완전 정복하는 데 집중했다. 자연스럽게 이어지는 다음 주제 셋을 안내로만 남긴다.
- Focal Loss — CE에 변조항 를 곱해 easy 샘플을 죽이고 hard 샘플에 집중하는 확장이다(04장 §4.3에서 다리만 놓았다). 객체 탐지의 anchor 불균형이 본 무대다.
- 지식증류(distillation) — teacher의 soft 로짓을 KL로 student에 옮기는 기법이다. 04장 §4.4의 KL이 출발점이다.
- calibration / 온도 스케일링 — 예측 확률을 실제 정확도에 맞추는 작업이다. label smoothing(04장 §4.2)과 온도가 관련 도구다.
맺음. cross-entropy는 한 줄로 "정답에 얼마나 놀랐는가"다. 그 한 줄 뒤에 정보이론의 놀람·entropy·KL, MLE와의 동치, softmax의 약분이 만드는 gradient, 그리고 수치안정·smoothing이라는 실전이 층층이 놓여 있다. 막히는 날에는 §6.2 치트시트 한 장으로 돌아오면 된다. 책의 출발점으로 되돌아가려면 README에서 읽는 순서를 다시 짚어 보라.