핵심 기법 · 5
Softmax 과 교차 엔트로피
분류기는 원점수 — logit — 를 낸다. Softmax 는 이를 합이 1 인 확률 분포로 바꾸고, 교차 엔트로피는 그 분포가 정답에서 얼마나 먼지를 잰다. 둘이 함께 거의 모든 분류기가 학습되는 방식이다. 아래 모든 것은 이 페이지에서, 양 언어로 돈다.
Softmax: 점수를 확률로
softmax 는 각 점수를 지수화한 뒤 총합으로 나눈다. 그래서 출력은 모두
양수이고 합이 1 이다 — 가장 큰 logit 이 가장 큰 확률을 갖되, 모든 클래스가 얼마간의
확률을 유지한다.
교차 엔트로피: 정답까지의 거리
원-핫 라벨에 대해 교차 엔트로피는 모델이 정답 클래스에 준 확률의
−log(p) 일 뿐이다. 모델이 이미 정답을 선호하면 작고, 아니면 크다 — 그것이
바로 학습이 밀어 내리는 신호다.
직접: 분포로 만들기
이 블록은 자기 "확률"의 합을 보고하는데, 진짜 분포라면 그 값이 1 이어야 한다. 지금은
원점수(logit)를 그냥 더하고 있다. softmax 로 확률로 바꿔라.
분포, 그려보기
다섯 원점수가 다섯 확률이 되어 띠로 그려진다 — 밝을수록 확률이 크고, 다섯의 합은 1 이다. 분류기 출력이 늘 취하는 모양이다.
기억할 것
- logit 은 원점수;
softmax가 합이 1 인 분포로 바꾼다. - 원-핫 라벨의 교차 엔트로피는 정답 클래스의
−log(p)— 모델이 확신하고 맞을 때 작다. - softmax 와 교차 엔트로피가 함께 거의 모든 분류기를 학습시킨다.
- borch 에서는
logits.softmax(dim); 학습 땐 logit 을 교차 엔트로피에 바로 넣는 게 수치적으로 안정적이다.
위 블록이 에러를 내면, 그것도 알아둘 값이다. 이 페이지의 모든 예제는
테스트가 도는 그 라이브러리를 상대로 돈다 — 스크린샷이 아니다. 되돌리려면 Reset 을
누른다.