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

언어 모델은 확률 sampler

~8 min · language-models, sampling, temperature

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

LLM 이 실제 계산하는 것

언어 모델이 토큰 만들 때마다 "뭐 말할지 결정" 안 함. 이거:

  1. 전체 vocabulary (50K+ 토큰) 에 대한 확률 분포 계산.
  2. 선택적으로 temperature, top-k, top-p 조정 적용.
  3. 결과 분포에서 토큰 하나 sample.
  4. sampled 토큰을 컨텍스트에 추가. 반복.

끝. 추론 루프 전체. 모던 LLM 의 모든 fancy 한 거 (chain-of-thought, agentic 행동, 도구 사용) = 광대한 학습된 분포 위에서 이 루프 돌아가며 emerging.

Sampling 조절

  • temperature : softmax 전 logit 나누기. → argmax (결정론). → 모델 자연 분포. → 평평, 더 random. → sharp, 더 자신.
  • top-k: top k 최고-확률 토큰만 유지, 나머지 0, 재정규화.
  • top-p (nucleus): 누적 확률 ≥ p 인 가장 작은 토큰 집합 유지, 나머지 0, 재정규화.

왜 다른 temperature 에 다른 나

같은 모델, 같은 프롬프트 — 근데 의 나는 지루하고 예측 가능, 의 나는 대화적, 의 나는 delight 한 말 하거나 완전 길 잃을 수. 모델 underlying 분포 안 변함; 변하는 건 sampler 가 tail 에서 얼마나 공격적으로 픽.

모든 LLM 토큰 = sample. 톤, 창의성, "성격" = 모델 자체만큼 sampling 파라미터의 속성.

트랙 보상

세상은 확률; AI 가 그 사실 위에 지어짐. 너 sample, 언어 모델 sample, 결정 sample. Bayes 가 새 sample 들어올 때 믿음 갱신 법. 여기서부터 "softmax" "sampling" "temperature" 보면 underlying 확률 머신 보임.

Code

작동 중인 temperature·python
import numpy as np

# 5 토큰 vocab logits
logits = np.array([2.5, 1.0, 0.5, -0.5, -1.5])

def sample_with_temperature(logits, T):
    scaled = logits / T
    probs = np.exp(scaled - scaled.max())
    probs = probs / probs.sum()
    return np.random.choice(len(probs), p=probs)

np.random.seed(0)
for T in [0.1, 1.0, 2.0]:
    picks = [sample_with_temperature(logits, T) for _ in range(20)]
    print(f"T={T}: {picks}")
# 낮은 T: 거의 늘 0. 높은 T: vocab 가로질러 분산.

External links

Exercise

위 코드. T=0.1, 1.0, 2.0 에서 1000 샘플 히스토그램. 주목: 낮은 T = top 토큰 집중; 높은 T = vocab 분산.
Hint
T 따라 히스토그램 모양 극적으로 변함. 이 시각화가 temperature 가 뭐 하는지 체화하는 가장 효율적인 방법.

Progress

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

댓글 0

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

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