Temperature — 창의성 조절 다이얼
Temperature가 낮으면 확정적(greedy), 높으면 창의적(random). 확률 분포의 날카로움을 조절한다.
ChatGPT에 같은 질문을 두 번 하면 다른 답이 나온다. 그런데 코딩 질문에는 거의 같은 답이 나온다. 이 차이는 Temperature — 확률 분포의 날카로움을 조절하는 하이퍼파라미터에서 온다.
Temperature는 확률 분포의 '날카로움'을 조절합니다
| 용어 | 설명 |
|---|---|
| Temperature | 확률 분포 날카로움을 조절하는 하이퍼파라미터 |
Softmax 전에 logits를 Temperature(T)로 나눕니다
T↓ = 날카로움(확정적), T↑ = 평평함(창의적)
softmax(xᵢ / T) = eˣⁱ/ᵀ / Σⱼ eˣʲ/ᵀ T가 0에 가까우면 가장 큰 값만 1에 가까워지고(greedy), T가 클수록 모든 선택지가 비슷한 확률을 갖게 됩니다.
| Temperature 가이드 | 설명 |
|---|---|
| T=0.1 | 거의 확정적 (코딩, 수학 문제) |
| T=0.5 | 약간 다양 (일반 대화) |
| T=1.0 | 기본값 (적당한 다양성) |
| T=2.0 | 매우 창의적 (브레인스토밍, 시 쓰기) |
Temperature를 바꿔가며 확률 분포 변화를 관찰합시다
logits를 T로 나눈 뒤 Softmax를 적용한다. T=0.1은 '좋다'에 거의 100%, T=2.0은 모든 토큰이 비슷한 확률을 가진다.
극단적인 Temperature 차이를 비교합시다
| 비교 | T=0.1 (확정적) | T=2.0 (창의적) |
|---|---|---|
| "좋다" 확률 | 100.00% | 30.25% |
| "나쁘다" 확률 | 0.00% | 18.43% |
| 결과 | 항상 같은 답 (greedy) | 매번 다른 답 (random) |
| 적합한 용도 | 코딩, 수학 문제 | 창작, 브레인스토밍 |
Temperature를 0.1부터 2.0까지 바꿔가며 확률 분포가 어떻게 변하는지 관찰합니다
Temperature별로 확률 분포를 계산하고 10번 샘플링하여 T가 낮을수록 같은 단어가 반복됨을 확인한다.
| 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 값을 선택하세요.
Temperature를 0에 가깝게 낮추면 확률 분포는 어떻게 변하나요?
ChatGPT에서 temperature=0으로 설정하면 같은 질문에 항상 동일한 답변이 나온다.
Temperature를 높이면 확률 분포는 어떻게 변하나요?
ChatGPT API에서 코드 생성(정확성 중시)에 적합한 temperature 값은?