Ch.5 확률과 AI의 판단
Temperature — 창의성 조절 다이얼
같은 질문에 AI가 매번 다른 답을 한다?
ChatGPT에 같은 질문을 두 번 하면 다른 답이 나옵니다. 그런데 코딩 질문에는 거의 같은 답이 나오죠. 이 차이는 어디서 올까요?
AI의 '확정적' vs '창의적' 응답을 어떻게 조절할까?
Temperature — 확률 분포의 날카로움을 조절하는 하이퍼파라미터입니다.
핵심 개념
Temperature
확률 분포 날카로움을 조절하는 하이퍼파라미터
핵심 내용
Temperature는 확률 분포의 '날카로움'을 조절합니다
Softmax 전에 logits를 Temperature(T)로 나눕니다
T↓ = 날카로움(확정적), T↑ = 평평함(창의적)
T가 0에 가까우면 가장 큰 값만 1에 가까워지고(greedy), T가 클수록 모든 선택지가 비슷한 확률을 갖게 됩니다.
Temperature를 바꿔가며 확률 분포 변화를 관찰합시다
import numpy as np
def softmax(logits, temperature=1.0):
"""Temperature가 적용된 Softmax"""
scaled = logits / temperature
exp_vals = np.exp(scaled - np.max(scaled))
return exp_vals / np.sum(exp_vals)
words = ["좋다", "나쁘다", "덥다", "춥다", "흐리다"]
logits = np.array([3.2, 1.8, 1.5, 1.0, 0.5])
print("=== Temperature에 따른 확률 분포 변화 ===\n")
for temp in [0.1, 0.5, 1.0, 2.0]:
probs = softmax(logits, temperature=temp)
print(f"Temperature = {temp}")
for word, prob in zip(words, probs):
bar = "█" * int(prob * 40)
print(f" {word:4s}: {prob:.4f} {bar}")
print()극단적인 Temperature 차이를 비교합시다
Temperature를 0.1부터 2.0까지 바꿔가며 확률 분포가 어떻게 변하는지 관찰합니다
# Temperature 효과 시뮬레이터
import math
import random
def softmax_with_temp(logits, temperature):
scaled = [x / temperature for x in logits]
max_val = max(scaled)
exps = [math.exp(x - max_val) for x in scaled]
total = sum(exps)
return [e / total for e in exps]
def sample_word(words, probs):
r = random.random()
cumsum = 0
for w, p in zip(words, probs):
cumsum += p
if r <= cumsum:
return w
return words[-1]
logits = [4.0, 2.0, 1.5, 0.5]
words = ["좋다", "괜찮다", "그렇다", "싫다"]
for temp in [0.1, 0.5, 1.0, 2.0]:
probs = softmax_with_temp(logits, temp)
picks = [sample_word(words, probs) for _ in range(10)]
print(f"\nT={temp:.1f}:")
for w, p in zip(words, probs):
bar = "#" * int(p * 25)
print(f" {w}: {p:.3f} {bar}")
print(f" 샘플 10개: {picks}")Temperature를 0에 가깝게 낮추면 확률 분포는 어떻게 변하나요?
ChatGPT에서 temperature=0으로 설정하면 같은 질문에 항상 동일한 답변이 나온다.
Temperature를 높이면 확률 분포는 어떻게 변하나요?
ChatGPT API에서 코드 생성(정확성 중시)에 적합한 temperature 값은?
다음 빈칸을 채우세요. softmax(logits / ___) # T가 0에 가까울수록 분포가 날카로워짐
softmax(logits / ___)
Temperature 마스터!
핵심 용어
Temperature
확률 분포 날카로움을 조절하는 하이퍼파라미터
**T=0.1**
거의 확정적 (코딩, 수학 문제)
**T=0.5**
약간 다양 (일반 대화)
**T=1.0**
기본값 (적당한 다양성)
**T=2.0**
매우 창의적 (브레인스토밍, 시 쓰기)
정리 노트
Temperature — 창의성 조절 다이얼 핵심 정리
Temperature 원리
- 공식
- softmax(xᵢ / T) — logits를 T로 나눈 후 Softmax 적용
- T↓ (0에 가까움)
- 분포가 날카로움 — 가장 높은 확률 토큰만 선택 (greedy)
- T↑ (큰 값)
- 분포가 평평해짐 — 모든 토큰이 비슷한 확률 (random)
실전 가이드
- T=0 (greedy)
- 코딩, 수학 — 항상 동일한 답 (확정적)
- T=0.5~1.0
- 일반 대화 — 적당한 다양성 (기본값)
- T=1.5~2.0
- 브레인스토밍, 시 쓰기 — 매우 창의적 (랜덤)
ChatGPT API에서 temperature 파라미터로 직접 조절 가능! 목적에 맞는 T 값을 선택하세요.
시각 자료
핵심 정리
- 1Temperature = 확률 분포의 날카로움 조절 다이얼
- 2T↓ → 확정적(greedy), T↑ → 창의적(random)
- 3ChatGPT API에서 temperature 파라미터로 직접 조절 가능
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작