C.W.K.
Stream
Lesson 04 of 05 · published

로그 공간 컴퓨팅: 과소평가된 AI 스킬

~8 min · log-likelihood, stability, logsumexp

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

로그 공간에서 살기

로그-확률 합치기 시작하면 가끔 로그-확률을 결합 해야 함 — 예: 확률 합의 로그. Naive 한 () 는 가 매우 음수일 때 underflow. Fix: log-sum-exp.

Max 빼기가 지수를 sane 범위에 유지. 끝에 다시 더해 정답 회복. scipy.special.logsumexptorch.logsumexp 가 처리.

왜 Softmax 가 사실 log-Softmax 변장

Softmax: . Naive 구현 = 매우 음수일 때 underflow. 모던 프레임워크가 먼저 빼 — log-sum-exp 와 같은 트릭.

log(softmax(x)) 필요하면 절대 np.log(softmax(x)) 로 계산 X. log_softmax(x) 직접 — 수치적으로 안정. PyTorch, NumPy/SciPy 가 제공.

"지수 합의 로그" 필요할 때마다 라이브러리 logsumexp 써. Naive 버전은 이론에선 맞고 float32 에선 틀림.

Code

logsumexp 가 이름값 함·python
import numpy as np
from scipy.special import logsumexp

# 수치적으로 위험: 매우 음수 로그-prob
log_probs = np.array([-1000., -1001., -1002.])

# Naive: log(sum(exp(...)))
naive = np.log(np.sum(np.exp(log_probs)))   # -inf — underflow

# 안정: logsumexp
stable = logsumexp(log_probs)
print(stable)                                # ~-999.59 — 정답

External links

Exercise

logsumexp 직접 구현: 로그-확률 배열, max 빼기, exp, 합, log, max 다시 더하기. [-1000, -1001, -1002] 에서 scipy.special.logsumexp 와 비교.
Hint
`` m = log_probs.max() stable = m + np.log(np.sum(np.exp(log_probs - m))) ``

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.