Models & AlgorithmsEN

ChatGPT는 왜 같은 질문에 매번 다른 답을 할까 -- 온도 하나로 재현하는 실험

같은 질문에 매번 다른 답이 나오는 이유를 로컬 모델과 GPT-4o-mini에서 직접 실험해 숫자로 확인합니다. 온도는 다양성을 만들지 않고 증폭할 뿐입니다.

ChatGPT는 왜 같은 질문에 매번 다른 답을 할까 -- 온도 하나로 재현하는 실험

ChatGPT는 왜 같은 질문에 매번 다른 답을 할까 -- 온도 하나로 재현하는 실험

같은 질문에 매번 다른 답이 나오는 이유를 로컬 모델과 GPT-4o-mini에서 직접 실험해 숫자로 확인합니다. 온도는 다양성을 만들지 않고 증폭할 뿐입니다.

같은 질문을 두 번 물었는데 답이 다릅니다. 어제는 표로 정리해 주더니 오늘은 문단으로 씁니다. 버그가 아닙니다. 설계입니다. 이 글에서는 그 설계의 핵심인 sampling temperature를 로컬 오픈 모델(Gemma 2 2B)에 직접 걸어 보고, "답이 얼마나 달라지는가"를 숫자로 확인합니다.

이 글은 "How AI Actually Works" 시리즈의 1편입니다. 시리즈의 원칙은 하나입니다. 여러분이 실제로 겪는 이상한 현상을 하나 골라, 직접 실험한 숫자로 답합니다.

1. 모델은 답을 "고르지" 않고 "뽑습니다"

ChatGPT 같은 언어 모델이 실제로 하는 일은 단 하나입니다. 지금까지의 글을 보고 다음 토큰(단어 조각)의 확률 분포를 계산하는 것. "하늘이 파란 이유는" 다음에 "빛의"가 나올 확률 62%, "대기"가 21%, "산란"이 9%... 같은 목록을 만들고, 그중 하나를 주사위를 굴려 뽑습니다.

이 주사위를 얼마나 과감하게 굴릴지 조절하는 손잡이가 temperature입니다.

  • 온도 0: 주사위를 치우고 항상 확률 1등 토큰만 고릅니다. 같은 질문 → 항상 같은 답.
  • 온도 1: 계산된 확률 그대로 뽑습니다. 62% 확률 토큰은 100번 중 62번쯤 뽑힙니다.
  • 온도 1 초과: 확률 차이를 일부러 눌러서 하위 후보에게도 기회를 줍니다. 창의적이 되지만 이상해질 위험도 커집니다.

여기까지는 어느 교과서에나 나오는 설명입니다. 이제 실제로 얼마나 달라지는지 직접 재보겠습니다.

2. 실험 설계

항목설정
모델google/gemma-2-2b-it (bf16, A100 1장)
온도0 (greedy), 0.3, 0.7, 1.0, 1.3
프롬프트사실형("호주의 수도는?"), 설명형("하늘이 왜 파란지 한 문장으로"), 창작형("바닷가 단편소설의 첫 문장을 써라")
반복사실형 200회, 설명형·창작형 30회 (시드 42 고정)
샘플링 필터top-p/top-k 해제 -- 온도의 효과만 보기 위해서입니다. 실서비스는 이 필터들을 병용하므로 체감 다양성은 이보다 낮을 수 있습니다
주 지표응답 간 평균 pairwise 임베딩 유사도 (BGE-M3 코사인) -- 낮을수록 다양함
보조 지표서로 다른 답의 개수, 최빈 답의 비율

프롬프트를 세 종류로 나눈 이유가 이 글의 핵심입니다. "답이 하나인 질문"과 "답이 여럿인 질문"에서 온도가 다르게 작동한다는 것을 보여주기 위해서입니다.

3. 결과: 온도는 손잡이가 아니라 증폭기다

!온도별 응답 간 평균 유사도

온도사실형 (n=200)설명형 (n=30)창작형 (n=30)
0.31.000 (전부 동일)0.928 (18가지)0.683 (30가지)
0.71.000 (전부 동일)0.907 (28가지)0.665 (30가지)
1.01.000 (전부 동일)0.911 (30가지)0.628 (30가지)
1.30.979 (8가지)0.889 (30가지)0.569 (30가지)

*각 칸: 응답 간 평균 pairwise 코사인 유사도 (괄호는 서로 다른 답의 개수). 온도 0은 정의상 전부 동일이라 표에서 뺐습니다.*

여기서 읽어야 할 것이 세 가지입니다.

첫째, 온도는 없는 다양성을 만들지 못합니다. "호주의 수도는?"은 온도 1.0까지 200번 중 200번 전부 "Canberra"입니다. 1.3에서야 처음 갈라지는데, 그마저 200번 중 대부분이 같은 답입니다(유사도 0.979). 모델의 확률 분포가 한 토큰에 쏠려 있으면 주사위를 아무리 세게 굴려도 같은 답이 나옵니다. 다양성은 분포에 이미 있고, 온도는 그것을 얼마나 드러낼지만 정합니다. (처음에 30회로 돌렸을 때는 1.0에서 1건의 이탈이 보였는데, 200회로 올리자 사라졌습니다 -- n=30으로는 확률 3% 이하의 사건을 노이즈와 구분할 수 없습니다.)

둘째, 답이 문장이 되는 순간 낮은 온도에서도 갈라집니다. 설명형은 온도 0.3에서 이미 30번 중 18가지 문장이 나옵니다. 이유는 누적 효과입니다. 이번에는 직접 측정했습니다. greedy 답(27토큰)을 기준으로 각 위치에서 1등 토큰이 뽑힐 확률을 재보면 온도 0.3에서 평균 93.3%입니다 -- 높아 보이지만 27번 연속으로 전부 뽑힐 확률은 10.8%로 떨어집니다. 온도 1.0에서는 평균 80.1%, 전체 일치 확률 0.08%. "매번 답이 다르다"는 체감의 진짜 원인은 온도가 아니라 답의 길이인 셈입니다.

셋째, 위 차트에서 주황 선과 초록 선 사이의 간격이 이 글의 핵심입니다. 설명형은 문장이 30가지로 갈라져도 유사도가 0.89~0.93에 머뭅니다 -- 읽어보면 전부 레일리 산란 이야기고, 표현만 다릅니다. 반면 창작형은 0.57~0.68까지 내려갑니다 -- 내용 자체가 다른 이야기들입니다. 즉 "매번 다른 답"의 대부분은 다른 문장일 뿐 다른 사실이 아니며, 그 차이가 임베딩 유사도 숫자로 그대로 드러납니다. 사실 자체가 갈리는 것은 별개의 문제인 환각이고, 이 시리즈에서 곧 다룹니다.

정직하게 하나 적어 두겠습니다. 설명형의 0.7→1.0 구간에서 유사도가 미세하게 올라갑니다(0.907→0.911). n=30의 표집 오차 범위 안이라 경향 해석에는 영향이 없습니다.

4. 같은 실험을 ChatGPT 계열에서 -- GPT-4o-mini 실측

"그건 2B짜리 로컬 모델 얘기 아니냐"는 반문이 나올 법합니다. 그래서 같은 실험을 OpenAI API(gpt-4o-mini)에서 반복했습니다. 사실형·설명형 두 프롬프트, 온도 5구간, 각 30회입니다.

온도사실형: 유사도 (서로 다른 답)설명형: 유사도 (서로 다른 답)
0.01.000 (1가지)0.979 (4가지)
0.31.000 (1가지)0.941 (16가지)
0.71.000 (1가지)0.927 (29가지)
1.00.990 (2가지, 29/30 동일)0.931 (29가지)
1.30.981 (2가지)0.921 (30가지)

패턴이 Gemma와 같습니다. 사실형은 온도 0.7까지 30번 전부 같은 답이고, 설명형은 온도 0.3에서 이미 16가지로 갈라지지만 유사도는 0.94에 머뭅니다. 역시 같은 내용을 다르게 표현했을 뿐입니다. 앞의 결과가 작은 모델의 유별난 특성이 아니라 자기회귀 샘플링의 일반적인 성질이라는 뜻입니다.

덤으로 표의 굵은 칸을 보세요. 온도 0인데 설명형이 4가지로 갈라졌습니다. 6절에서 "온도 0도 완전한 재현을 보장하지 않는다"고 적었는데, 그 서버 측 비결정성이 여기서 실제 데이터로 확인된 겁니다.

5. 그래서 ChatGPT는 왜 매번 다른가

ChatGPT의 기본 온도는 0이 아닙니다 (API 기본값 1.0, 웹 서비스의 내부값은 비공개지만 0이 아닌 것은 출력에서 확인됩니다). 왜 0으로 두지 않을까요?

  • 온도 0의 답은 안전하지만 뻔합니다. 요약·번역·창작 품질이 눈에 띄게 단조로워집니다.
  • 온도 0에서는 같은 오류가 매번 똑같이 반복됩니다. 무작위성은 오류에서 벗어날 기회이기도 합니다.
  • 같은 질문에 늘 같은 답만 내놓는 챗봇은 사용자에게 "기계 같다"는 인상을 줍니다.

즉 여러분이 겪는 "매번 다른 답"은 품질을 위해 일부러 열어 둔 무작위성입니다.

6. 실무에서 쓰는 법

  • 재현이 필요한 작업 (데이터 추출, 분류, 채점): API를 쓴다면 temperature 0 또는 0.2 이하. 웹 ChatGPT는 온도 조절이 없으므로, 같은 답이 필요한 작업엔 형식을 강하게 지정하는 것이 차선입니다.
  • 아이디어·초안·문체 변주: 온도를 올리거나(API), 같은 질문을 여러 번 던져 가장 좋은 답을 고르는 것이 정당한 전략입니다. 여기서는 무작위성 자체가 기능입니다.
  • 주의: 온도 0이어도 완전한 재현이 보장되지는 않습니다(서버 측 비결정성). "거의 같다"이지 "항상 같다"가 아닙니다.

7. 이 실험이 말해 주지 않는 것

  • 웹 ChatGPT 그 자체는 아닙니다. 주 실험은 Gemma 2 2B로, 검증은 GPT-4o-mini API로 했습니다. 웹 ChatGPT의 내부 온도·필터 설정은 공개돼 있지 않아 체감 수치는 다를 수 있습니다.
  • 임베딩 유사도는 의미가 같은지를 근사할 뿐입니다. BGE-M3가 "같은 내용"인지를 완벽하게 판정하지는 못합니다. 그래서 원문 샘플을 함께 실었습니다.
  • 영어 프롬프트 3종입니다. 한국어, 긴 프롬프트, 코드에서는 분포 모양이 다를 수 있습니다.

8. 정리

  1. 모델은 답을 고르는 게 아니라 확률 분포에서 뽑습니다. 온도는 그 주사위를 얼마나 과감하게 굴릴지의 문제입니다.
  2. 온도는 증폭기입니다. 답이 하나로 쏠린 질문은 온도를 올려도 갈라지지 않고, 답이 여럿인 질문은 온도를 내려도 갈라집니다.
  3. 같은 패턴이 GPT-4o-mini에서도 그대로 재현됩니다. 심지어 온도 0에서도 답이 4가지로 갈라졌습니다 -- 완벽한 재현은 애초에 보장되지 않는 셈입니다.
  4. "매번 다른 답"은 버그가 아니라 품질을 위한 설계입니다. 재현이 필요하면 온도를 내리거나 형식을 고정하세요.

*이 글에서는 질문 하나만 다뤘습니다. 샘플링부터 환각, 컨텍스트, AI 탐지까지 전체 그림이 궁금하다면 영상 강의에서 이어집니다: 코드 없이 이해하는 ChatGPT 원리 →*

참고 자료

  • Holtzman et al., The Curious Case of Neural Text Degeneration (ICLR 2020) -- 샘플링 전략과 텍스트 품질
  • 실험 코드·시드·원시 결과: 이 글 하단에서 노트북을 내려받을 수 있습니다 (시드 42, 그대로 재현됩니다)

더 많은 콘텐츠를 받아보세요

SNS에서 새로운 글과 튜토리얼 소식을 가장 먼저 받아보세요

이메일로 받아보기

관련 포스트