temperature와 top-p: 모델의 무작위성을 다루는 법

LLM이 확률 분포에서 토큰을 고르는 샘플링 방식을 설명합니다. temperature, top-p, top-k의 차이와 작업별로 어떤 값을 써야 하는지 실무 기준으로 정리합니다.

이 글의 목차

API 문서를 보면 temperature, top_p, top_k 같은 파라미터가 나옵니다. 대충 "창의성 조절"이라고만 알고 기본값을 쓰는 경우가 많지만, 이 값들은 결과의 안정성과 품질에 직접 영향을 줍니다. 특히 분류나 데이터 추출처럼 일관성이 중요한 작업에서는 잘못된 설정이 곧바로 오류로 이어집니다.

LLM의 동작 원리에서 모델이 매 단계마다 모든 토큰에 대한 확률 분포를 만든다고 설명했습니다. 이 파라미터들은 그 분포에서 실제로 하나를 고르는 방법을 결정합니다. 모델의 지능이 아니라 선택 규칙을 바꾸는 것입니다.

이 글에서는 각 파라미터가 분포를 어떻게 바꾸는지, 어떤 조합이 언제 적절한지, 그리고 흔히 저지르는 실수를 정리합니다.

로짓에서 확률로

모델의 마지막 층이 내놓는 것은 확률이 아니라 로짓(logit) 이라는 점수입니다. 어휘 사전의 토큰 개수만큼 실수 값이 나오며, 음수도 있고 크기 제한도 없습니다.

이 점수를 확률로 바꾸는 함수가 소프트맥스(softmax) 입니다. 각 점수를 지수 함수에 넣고 전체 합으로 나누면, 모두 양수이고 합이 1인 분포가 만들어집니다. 점수 차이가 클수록 확률 차이는 더 크게 벌어집니다. 지수 함수의 성질 때문입니다.

temperature는 소프트맥스를 적용하기 전에 로짓을 나누는 값입니다. 이 한 번의 나눗셈이 분포의 모양을 바꿉니다.

temperature — 분포를 평평하게 또는 뾰족하게

로짓을 temperature로 나눈 뒤 소프트맥스를 적용하면 결과는 이렇게 달라집니다.

  • temperature < 1 — 로짓을 1보다 작은 수로 나누므로 값의 차이가 벌어집니다. 분포가 뾰족해져 1위 토큰의 확률이 더 커집니다. 출력이 안정적이고 예측 가능해집니다.
  • temperature = 1 — 모델이 계산한 분포를 그대로 씁니다.
  • temperature > 1 — 차이가 줄어들어 분포가 평평해집니다. 낮은 확률의 토큰도 뽑힐 기회가 생겨 다양한 표현이 나오지만, 어색하거나 틀린 내용이 섞일 위험이 커집니다.

예를 들어 다음 토큰 후보의 확률이 이랬다고 해 보겠습니다.

토큰 기본(T=1) T=0.5 T=1.5
좋 0.60 0.83 0.45
춥 0.25 0.14 0.28
흐리 0.10 0.02 0.16
그 외 0.05 0.01 0.11

(설명을 위한 예시 값입니다.) 낮은 temperature에서는 "좋"이 거의 확정되고, 높은 temperature에서는 다른 후보들이 뽑힐 여지가 커집니다.

temperature = 0은 특별한 경우입니다. 수학적으로는 0으로 나눌 수 없으므로, 실제 구현에서는 "가장 확률이 높은 토큰을 그냥 고르는" 동작으로 처리합니다. 이를 그리디 디코딩(greedy decoding) 이라고 합니다.

주의

temperature를 0으로 설정해도 출력이 완전히 같다고 보장되지는 않습니다. 부동소수점 연산 순서, 배치 구성, 인프라 차이 때문에 미세한 차이가 생기고, 1위와 2위 확률이 거의 같을 때 결과가 갈릴 수 있습니다. 재현성이 필요하다면 출력 검증 단계를 따로 두세요.

top-k와 top-p — 후보를 잘라냅니다

temperature가 분포의 모양을 바꾼다면, top_k와 top_p는 후보 목록 자체를 줄입니다.

top-k는 확률이 높은 순으로 k개만 남기고 나머지를 버립니다. top_k=40이면 상위 40개 중에서만 뽑습니다. 단순하지만 문제가 있습니다. 분포가 뾰족할 때는 40개가 지나치게 많고(엉뚱한 후보까지 포함), 평평할 때는 너무 적을(좋은 후보를 잘라냄) 수 있습니다. k가 문맥에 적응하지 못합니다.

top-p(뉴클리어스 샘플링)는 이 문제를 해결합니다. 개수 대신 누적 확률을 기준으로 자릅니다. top_p=0.9면 확률 높은 순으로 더해 가다가 합이 0.9를 넘는 순간까지의 토큰만 후보로 삼습니다.

분포가 뾰족하면 한두 개만으로 0.9에 도달하므로 후보가 적게 남고, 평평하면 수십 개가 포함됩니다. 문맥에 따라 후보 수가 자동으로 조절되는 것이 top-p의 장점이며, 오늘날 기본으로 쓰이는 이유입니다.

top-p가 후보를 자르는 방식확률이 높은 토큰부터 누적해 더하다가 지정한 임계값에 도달하면 나머지 토큰을 후보에서 제외합니다.0.480.270.150.060.030.01나머지top_p = 0.9 — 여기까지만 후보확률 높은 순으로 정렬한 다음 토큰 후보
그림 1. 누적 확률이 임계값에 도달할 때까지의 토큰만 남깁니다. 예시 값입니다.

top-k와 top-p를 함께 지원하는 API도 있습니다. 동시에 적용하면 두 조건을 모두 통과한 토큰만 남습니다.

실무 기준값

작업 성격에 따라 정하면 됩니다. 아래는 출발점으로 삼을 만한 기준이며, 실제 값은 직접 비교해 조정해야 합니다.

작업 temperature 이유
분류·라벨링 0 ~ 0.2 같은 입력에 같은 라벨이 나와야 함
데이터 추출·파싱 0 ~ 0.2 형식이 어긋나면 후처리가 깨짐
코드 생성 0 ~ 0.3 문법 오류 위험을 낮춤
사실 기반 질의응답 0.2 ~ 0.5 안정성 우선, 약간의 자연스러움
일반 대화·요약 0.5 ~ 0.8 읽기 좋은 문장과 일관성의 균형
아이디어 발상·카피 0.8 ~ 1.1 다양성 우선

팁

temperature와 top-p를 동시에 크게 건드리지 마세요. 둘 다 무작위성에 관여하므로 함께 조절하면 원인을 파악하기 어렵습니다. 보통은 top-p를 기본값에 두고 temperature만 조절하거나, 그 반대로 합니다. 제공사에 따라 둘 중 하나만 쓰기를 권장하기도 합니다.

반복을 억제하는 값들

낮은 temperature에서는 같은 표현이 반복되는 현상이 나타날 수 있습니다. 이를 다루는 파라미터가 따로 있습니다. 이름과 지원 여부는 제공사마다 다르므로 문서를 확인해야 합니다.

  • 빈도 페널티(frequency penalty) — 이미 많이 나온 토큰일수록 확률을 낮춥니다. 많이 나올수록 페널티가 커집니다.
  • 존재 페널티(presence penalty) — 한 번이라도 나온 토큰에 일정한 페널티를 줍니다. 새로운 주제로 넘어가도록 유도합니다.

둘 다 과하게 쓰면 부작용이 있습니다. 필요한 용어까지 회피하게 되어 문장이 어색해지거나, 일관되게 써야 할 고유명사를 다른 표현으로 바꿔 버릴 수 있습니다. 작은 값부터 조금씩 올리는 편이 안전합니다.

무작위성이 해결해 주지 않는 것

파라미터 조절은 만능이 아닙니다. 다음은 temperature로 해결되지 않습니다.

환각은 temperature를 0으로 해도 사라지지 않습니다. 무작위성을 없애면 "가장 그럴듯한" 답을 고를 뿐, 그 답이 사실인지는 별개입니다. 오히려 확신에 찬 오답이 일관되게 나올 수 있습니다. 근본적인 대응은 환각에서 다룹니다.

형식 오류는 구조화 출력으로 다뤄야 합니다. JSON이 깨진다면 temperature를 낮추는 것보다 스키마를 강제하는 기능을 쓰는 편이 확실합니다.

품질 부족은 프롬프트 문제인 경우가 많습니다. 원하는 결과가 안 나올 때 파라미터부터 만지는 경우가 많지만, 대개는 지시가 모호한 것이 원인입니다. 프롬프트 설계를 먼저 점검하세요.

흔한 오해

"temperature가 높으면 창의적이다." 정확히는 덜 예측 가능해집니다. 참신한 표현이 나올 확률도, 문맥에 맞지 않는 말이 나올 확률도 함께 올라갑니다. 창의성과 무작위성은 같은 것이 아닙니다.

"temperature가 0이면 항상 같은 답이 나온다." 앞서 설명한 이유로 보장되지 않습니다. "훨씬 일관적"이 정확한 표현입니다.

"top_p=1이면 아무 제한이 없다." 맞지만, 그 상태에서도 temperature는 여전히 적용됩니다. 두 파라미터는 독립적으로 작동합니다.

정리

  • 모델은 로짓을 소프트맥스로 확률 분포로 바꾸며, 샘플링 파라미터는 그 분포에서 고르는 방법을 결정합니다.
  • temperature는 분포의 모양을 바꿉니다. 낮으면 뾰족해져 안정적이고, 높으면 평평해져 다양해집니다.
  • top_k는 개수로, top_p는 누적 확률로 후보를 자릅니다. top-p가 문맥에 따라 자동 조절되어 더 널리 쓰입니다.
  • 분류·추출·코드에는 낮은 값, 발상·카피에는 높은 값이 적합합니다.
  • temperature와 top-p를 동시에 크게 조절하면 원인 파악이 어려워집니다.
  • 환각, 형식 오류, 품질 부족은 샘플링 파라미터로 해결되지 않습니다.

참고 자료

  • #temperature
  • #샘플링
  • #LLM