본문으로 건너뛰기
255 / NUMERICAL COMPUTING LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 선형대수·미적분·연산 그래프 기초
단원 목록 (600) · Overflow·Underflow와 Log-Sum-Exp
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

정규화 전 지수의 실패와 안정적인 로그 확률 계산을 비교합니다.

Three logits are offset, offset−gap, offset−2gap divided by temperature. Subtract the maximum before exponentiating. Invalid naive values are absent, not replaced by zero. Very small nonmaximal shifted exponentials can still underflow; the denominator always includes exp(0)=1. The bars show probabilities, not raw exponential sizes.

-0.082.080.692-0.027
가로 클래스 · 파랑 안정 softmax · 주황 유한할 때만 표시하는 단순 softmax
classscaled logitshifted exponentialstable probabilitynaive probability
01,00010.665—
19990.3680.245—
29980.1350.09—

stable log-sum-exp = 1,000.408

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

큰 지수

확률이 유한해도 exp(1000)은 binary64에서 넘칩니다.

Infinity/Infinity is not a probability

실험에서 확인하기 →
이 단원 목차

답은 유한해도 계산식은 넘칠 수 있다

세 class의 logit을 (c,c-g,c-2g)로 두고 양의 온도 T로 나눈 뒤 확률을 계산합니다. c=1000, g=T=1이면 정상적인 확률분포가 존재합니다. 그러나 exp(1000)을 직접 만들면 binary64 범위를 넘습니다. 무한대끼리 나눈다고 원하는 확률이 복원되지는 않습니다.

c=-1000 부근에서는 반대 문제가 생깁니다. 단순 지수 세 개가 모두 0으로 반올림되어 정규화가 0/0이 됩니다. 확률 모형이 정의되지 않은 것이 아니라 사용한 표현식의 산술이 실패한 것입니다.

지수 계산 전에 기준을 옮긴다

온도로 나눈 logit을 z, 그 최댓값을 m이라고 하면 공통 인자를 약분할 수 있습니다.

log⁡∑iezi=m+log⁡∑iezi−m,pi=ezi−m∑jezj−m.\log\sum_i e^{z_i}=m+\log\sum_i e^{z_i-m},\qquad p_i=\frac{e^{z_i-m}}{\sum_j e^{z_j-m}}.

Shift된 지수의 인자는 모두 0 이하이고 적어도 하나는 exp(0)=1입니다. 따라서 분모가 0이 되지 않습니다. 거대한 partition function 자체를 만들지 않고 그 로그를 계산하는 것이 핵심입니다.

모든 underflow가 사라지는 것은 아닙니다. 최댓값보다 아주 작은 항의 shifted 지수는 여전히 0으로 반올림될 수 있습니다. 실험은 이 경우를 그대로 표시합니다. 단순 계산이 실패했을 때는 확률을 임의의 0으로 채우지 않고 정의되지 않은 수치로 구별합니다.

세 class를 손으로 계산하기

간격과 온도가 1이면 shifted 지수는 (1,e^-1,e^-2)이고 합은 약 1.503215입니다. 확률은 약 (0.665241,0.244728,0.090031)입니다. 공통 이동이 0, 1000, -1000이어도 이 확률은 같습니다.

하지만 log-sum-exp는 c+log(1+e^-1+e^-2)로 바뀝니다. 공통 이동 불변성은 정규화한 확률의 성질이며 log partition 자체의 성질은 아닙니다. 구현을 비교할 때 표시한 값이 확률인지 로그 정규화 상수인지 먼저 확인하세요.

온도와 공통 이동은 다르다

작은 온도는 상대 간격을 키워 분포를 집중시킵니다. 공통 이동과 달리 확률을 바꿉니다. 반대로 간격이 0이면 모든 양의 온도에서 확률이 각각 1/3입니다. Classifier의 안정성을 점검할 좋은 불변식입니다.

관측 class k의 cross-entropy는 LSE(z)-z_k로 계산할 수 있습니다. 먼저 작은 확률을 만들고 log를 취하면 이미 0으로 반올림된 정보를 되찾을 수 없습니다. 안정화는 잘못된 값이 나온 뒤 덧붙이는 처리가 아니라 정보를 잃기 전에 식을 다시 쓰는 작업입니다.

직접 풀기: 확률과 정규화 상수

세 logit을 모두 1000으로 설정하세요. 확률은 각각 1/3이고 log-sum-exp는 1000+log(3)입니다. 모든 logit에 10을 더하면 확률은 같고 log-sum-exp는 10 증가합니다. 온도 2에서 원래 logit에 10을 더하면 증가량은 5입니다. 온도로 나누는 순서를 식으로 설명하세요.

더 읽기: SciPy logsumexp 문서.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 최댓값을 빼면 softmax 확률이 바뀌나요?
2. Shift가 모든 작은 확률의 underflow도 없애나요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.