소프트맥스·시그모이드 계산기 쉽게 이해하기 — 개념과 원리
신경망은 로짓이라고 부르는 원시 점수를 내놓는데, 이 값은 어떤 실수든 될 수 있습니다. 소프트맥스는 로짓 목록을 모두 양수이고 합이 1인 확률로 바꾸고, 시그모이드는 로짓 하나를 0과 1 사이의 확률로 바꿉니다. 이 계산기는 두 함수를 모두 적용하고 소프트맥스의 온도를 조절할 수 있게 하며, 결과 분포가 얼마나 퍼져 있는지 보여 주는 엔트로피도 계산합니다.
계산 방법
- 소프트맥스: pᵢ = e^((zᵢ − m)/T) ÷ Σⱼ e^((zⱼ − m)/T), m은 가장 큰 로짓, T는 온도입니다.
- 시그모이드: σ(z) = 1 ÷ (1 + e^(−z)), 각 로짓마다 따로 계산합니다.
- 엔트로피 H = −Σ pᵢ log₂ pᵢ (비트)
최댓값 m을 빼도 분자와 분모에서 e^(−m/T)가 약분되어 확률은 그대로이지만, 로짓이 클 때 생기는 수치 넘침을 막아 줍니다.
원리
지수 함수를 씌우면 모든 점수가 양수가 되고 차이는 비율로 바뀝니다. T = 1에서 로짓이 1 차이 나면 확률은 e ≈ 2.718 대 1이 됩니다. 이를 합계로 나누면 합이 1이 됩니다. 온도는 로짓을 미리 나누는 값으로, 1보다 작으면 분포가 가장 큰 클래스 쪽으로 뾰족해지고 1보다 크면 균등 분포 쪽으로 평평해집니다. 시그모이드는 클래스가 두 개인 소프트맥스의 특수한 경우로, (z, 0)에 소프트맥스를 적용하면 첫 클래스의 확률이 정확히 σ(z)입니다. 시그모이드 값들은 각각 독립된 예/아니오 판단이므로 합이 1일 필요가 없습니다.
예제 풀이
- 로짓 2.0, 1.0, 0.1, T = 1입니다. 최댓값 2.0을 빼면 0, −1, −1.9입니다.
- 지수값은 1, 0.36788, 0.14957이고 합은 1.51745입니다.
- 각각을 합으로 나누면 소프트맥스는 0.659001, 0.242433, 0.0985659입니다.
- 시그모이드는 σ(2) = 0.880797, σ(1) = 0.731059, σ(0.1) = 0.524979입니다.
- 엔트로피는 −(0.659 log₂ 0.659 + 0.2424 log₂ 0.2424 + 0.0986 log₂ 0.0986) = 1.2216비트입니다.
결과 해석
클래스가 세 개이면 엔트로피는 0(한 클래스에 확률 전부)에서 log₂ 3 ≈ 1.585비트(모두 같음) 사이입니다. 1.22비트는 첫 번째 클래스를 선호하지만 확신과는 거리가 멀다는 뜻입니다. 온도를 높이면 엔트로피가 커지고, 낮추면 작아집니다.
흔한 실수
- 시그모이드 출력을 더해 1이 되기를 기대하는 경우(서로 배타적인 클래스에는 소프트맥스를 씁니다)
- 보정을 확인하지 않고 소프트맥스 출력을 그대로 실제 확률로 믿는 경우
- T = 0을 넣어 0으로 나누는 경우(T가 아주 작으면 가장 큰 로짓만 고르는 것에 가까워집니다)
자주 묻는 질문
언어 모델에서 온도는 왜 쓰나요?
T를 1보다 크게 하면 더 다양한 문장이, 작게 하면 더 예측 가능한 문장이 생성됩니다.
모든 로짓에 같은 수를 더하면 어떻게 되나요?
아무 변화가 없습니다. 소프트맥스는 로짓 사이의 차이에만 의존합니다.
시그모이드는 언제 쓰나요?
이진 분류나 여러 레이블이 동시에 참일 수 있는 다중 레이블 분류에 씁니다.
출처: I. Goodfellow, Y. Bengio and A. Courville, Deep Learning, MIT Press, 2016, chapter 6 · G. Hinton, O. Vinyals and J. Dean, Distilling the Knowledge in a Neural Network, arXiv:1503.02531, 2015