[LLM] Temperature와 Top-p — 답변이 매번 달라지는 이유
같은 질문에 매번 다른 답이 오는 이유를 샘플링 파라미터로 설명합니다. Temperature와 Top-p가 각각 무엇을 바꾸는지, 그리고 최신 모델에서 이 손잡이가 사라지고 있는 이유를 정리합니다.
같은 질문을 두 번 했는데 답이 다르게 온 적이 있을 겁니다. 버그가 아니라 설계입니다.
왜 그런지, 그리고 그걸 조절하는 두 손잡이가 무엇인지 정리합니다.
모델은 다음 단어를 “고르지” 않습니다
먼저 이 오해를 풀어야 합니다.
LLM 은 다음에 올 단어 하나를 결정하지 않습니다. 모든 후보에 확률을 매긴 목록을 내놓습니다.
| 후보 | 확률 |
|---|---|
| 1위 | 0.63 |
| 2위 | 0.23 |
| 3위 | 0.09 |
| 4위 | 0.05 |
여기서 실제로 하나를 뽑는 일은 모델이 아니라 그 뒤에 붙은 규칙이 합니다. 이 규칙을 샘플링이라고 부르고, Temperature 와 Top-p 가 그 규칙의 손잡이입니다.
토큰 편에서 본 것처럼 이 과정이 토큰 하나마다 반복됩니다.
Temperature — 분포의 모양을 바꿉니다
모델이 내놓는 raw 점수를 확률로 바꿀 때 쓰는 식에 온도 $T$ 가 들어갑니다.
\[p_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}\]식이 어려워 보이지만 하는 일은 단순합니다. $T$ 로 나눈다 는 것뿐입니다.
- $T$ 가 작으면 나눈 값이 커져서, 원래 컸던 후보가 훨씬 더 커집니다 → 분포가 뾰족해집니다
- $T$ 가 크면 차이가 눌려서 → 분포가 평평해집니다
뾰족하면 늘 1위가 뽑히고, 평평하면 2·3위도 자주 뽑힙니다. 그래서 답이 달라집니다.
로짓
[3.0, 2.0, 1.0, 0.5] 에 직접 계산한 값입니다
같은 후보 4개에 온도만 바꿔 실제로 계산하면 이렇게 나옵니다.
| 후보 | T = 0.5 | T = 1.0 | T = 1.5 |
|---|---|---|---|
| 1위 | 0.8618 | 0.6308 | 0.5087 |
| 2위 | 0.1166 | 0.2321 | 0.2612 |
| 3위 | 0.0158 | 0.0854 | 0.1341 |
| 4위 | 0.0058 | 0.0518 | 0.0961 |
$T=0.5$ 에서는 1위가 86%를 가져가 사실상 매번 같은 답이 나옵니다. $T=1.5$ 에서는 51%로 내려가고, 2위가 26%까지 올라옵니다.
Top-p — 후보 목록을 자릅니다
Top-p 는 다르게 접근합니다. 확률을 높은 순으로 더해 나가다가 누적이 $p$ 에 닿으면 거기서 끊고, 나머지는 후보에서 뺍니다.
top_p = 0.9 면 “확률 합이 90%가 될 때까지의 후보만 남긴다”는 뜻입니다.
위 표에 적용해 보면 재미있는 일이 생깁니다.
| 남는 후보 수 | |
|---|---|
| T = 0.5 | 2개 |
| T = 1.0 | 3개 |
| T = 1.5 | 3개 |
같은 0.9 인데 남는 개수가 다릅니다. 온도가 분포 모양을 바꾸면, 같은 누적 기준이 다른 자리에서 끊기기 때문입니다. 두 손잡이는 독립적이지 않고 맞물려 움직입니다.
이 방식은 The Curious Case of Neural Text Degeneration에서 제안됐습니다. 논문은 이걸 핵 샘플링(nucleus sampling) 이라고 부릅니다.
확률 분포의 동적인 핵(nucleus) 에서 뽑음으로써, 다양성을 허용하면서도 신뢰도가 낮은 꼬리를 효과적으로 잘라낸다.
“동적”이라는 말이 핵심입니다. 고정된 개수를 남기는 게 아니라 분포 모양에 따라 남는 개수가 달라집니다.
왜 굳이 무작위성을 넣나
여기서 자연스러운 질문이 나옵니다. 확률이 가장 높은 걸 매번 고르면 제일 정확하지 않을까요.
같은 논문이 그렇지 않다는 걸 보였습니다.
가능도(likelihood)를 디코딩 목표로 삼으면 밋밋하고 이상하게 반복적인 글이 나온다.
그리고 이런 관찰을 덧붙입니다 — 똑같은 모델에서 생성해도 디코딩 전략만으로 결과 품질이 극적으로 달라진다.
가장 확률 높은 단어만 계속 이으면 같은 구절을 맴도는 글이 나옵니다. 무작위성은 품질을 해치는 잡음이 아니라, 사람이 쓴 것 같은 글이 나오게 하는 장치입니다.
그런데 이 손잡이가 사라지고 있습니다
여기가 2026년에 이 글을 쓰면서 가장 중요하다고 본 부분입니다.
최신 모델들은 이 파라미터를 아예 받지 않습니다. Anthropic 의 마이그레이션 문서는 이렇게 적고 있습니다.
temperature,top_p,top_k를 기본값이 아닌 값으로 설정하면 Claude Opus 4.7 이후 모델(Claude Opus 5 포함)에서 400 오류를 반환한다.
대체 수단으로 문서가 지목하는 것은 프롬프트 입니다 — “프롬프팅이 모델 동작을 유도하는 권장 방식”이라고 적혀 있습니다.
이유를 문서가 자세히 설명하진 않지만, 방향은 읽힙니다. 추론하는 모델에서는 “얼마나 무작위로 뽑을지”보다 “얼마나 깊이 생각할지” 가 더 유용한 손잡이가 됐고, 그쪽이 별도 파라미터로 갈라져 나갔습니다.
모든 모델이 그런 건 아닙니다. 아직 이 파라미터를 받는 모델이 훨씬 많고, 오픈 웨이트 모델을 직접 돌린다면 여전히 직접 다뤄야 합니다. 쓰는 모델의 문서를 확인하는 게 먼저입니다.
실무에서
이 파라미터를 쓸 수 있는 환경이라면 대략 이런 기준입니다.
| 하려는 일 | 방향 |
|---|---|
| 코드 생성, 데이터 추출, 분류 | 낮은 T |
| 요약, 번역 | 낮은~중간 T |
| 브레인스토밍, 카피 초안 | 높은 T |
| 매번 같은 답이 필요 | 낮은 T — 다만 아래 단서 참고 |
둘을 동시에 크게 흔들지 않는 편이 낫습니다. 위에서 봤듯 서로 맞물려 있어서, 둘 다 바꾸면 무엇 때문에 달라졌는지 알기 어려워집니다. 하나를 고정하고 하나만 움직이는 쪽이 낫습니다.
낮은 T 가 “항상 같은 답”은 아닙니다
마지막으로 흔한 오해 하나입니다.
$T$ 를 0 에 가깝게 낮춰도 완전히 똑같은 답이 보장되지는 않습니다. 분포가 아주 뾰족해져서 1위가 뽑힐 확률이 매우 높아질 뿐입니다. 여기에 부동소수점 연산 순서, 배치 구성, 서버 쪽 구현 차이 같은 것들이 겹칩니다.
재현이 꼭 필요하면 파라미터가 아니라 결과를 저장해두는 쪽으로 설계하는 편이 안전합니다.
정리
LLM 은 다음 단어를 고르는 게 아니라 후보마다 확률을 매기고, 그중 하나를 뽑는 규칙이 따로 있습니다.
Temperature 는 분포의 모양을 바꿉니다. 낮으면 뾰족해져 늘 같은 답이, 높으면 평평해져 다양한 답이 나옵니다. Top-p 는 후보 목록을 자릅니다. 누적 확률이 기준에 닿을 때까지만 남깁니다.
둘은 맞물려 있습니다. 같은 top_p = 0.9 라도 온도에 따라 남는 후보 수가 달라집니다.
무작위성은 결함이 아닙니다. 가장 확률 높은 것만 고르면 오히려 밋밋하고 반복적인 글이 나온다는 게 원논문의 발견입니다.
다만 최신 모델에서는 이 손잡이가 닫히고 있습니다. 쓰는 모델이 무엇을 받는지부터 확인하는 것이 지금으로서는 가장 실용적인 조언입니다.
참고
- The Curious Case of Neural Text Degeneration — Holtzman, Buys, Du, Forbes, Choi, 2019-04-22, ICLR 2020 (2026-08-18 arXiv 원문 확인). 핵 샘플링(top-p)의 원논문이고, 인용문 둘 다 초록에서 옮겼습니다
- Claude 모델 마이그레이션 가이드 — Anthropic 공식 문서 (2026-08-18 확인). 샘플링 파라미터가 400 오류를 반환한다는 서술과 프롬프트 권장은 여기서 가져왔습니다
- 토큰이란 무엇인가 — 글자 수와 다른 이유 — 이 과정이 토큰마다 반복되는 이유
- 환각은 왜 생기고 왜 사라지지 않나 — 확률로 다음 단어를 뽑는 구조가 만드는 다른 문제