추론
룰렛, 그리고 온도
04. 답이 나오는 순간
ChatGPT 한테 "오늘은 비가 올 것 같아" 의 영어 번역을 두 번 물어보세요. 첫 번째는 "It looks like it's going to rain today." 두 번째는 "Looks like rain today." 같은 질문에 다른 답. 거짓말도 아니고 실수도 아닌데 — 왜 다를까요?
답하자면 이래요. ChatGPT 는 답을 만들 때 룰렛을 돌리고 있어요.
답을 고르는 순간 안쪽
지난 화에서 학습이 끝난 모델 안에는 수천억 개의 숫자(파라미터) 가 패턴을 몸에 새기고 있다고 했죠. 이제 우리가 질문을 보내면 — 그 안에서 무슨 일이 일어날까요?
모델이 가장 먼저 하는 일은 "다음에 올 토큰 후보들의 확률" 을 계산하는 거예요. 한 토큰을 딱 정해서 내놓는 게 아니라, 가능한 후보들에 점수를 매겨요.
예를 들어 "오늘 날씨가" 라는 입력을 받으면, ChatGPT 안에서는 이런 게 만들어져요.
[ "오늘 날씨가" 다음에 올 후보 토큰 ]
38% ████████████████████ 좋다
19% ██████████ 흐리다
17% █████████ 맑다
11% ██████ 덥다
9% █████ 춥다
0.1% ▏ 더럽다
...
이 막대그래프 같은 것이 모델이 학습한 결과예요. "오늘 날씨가" 다음에 "좋다" 가 나올 확률이 가장 높고, "더럽다" 는 거의 안 나와요.
룰렛 한 번 돌리기
그럼 모델은 이 후보들 중 어떻게 하나를 고를까요? 룰렛처럼 뽑아요.
면적이 넓은 칸이 더 자주 뽑히는 룰렛 판을 상상해보세요. "좋다" 칸이 가장 넓고, "흐리다" 칸이 그 다음, "더럽다" 칸은 거의 점만큼 좁아요. 이 룰렛을 한 번 돌려서 하나를 뽑아요. 매번 같은 룰렛을 돌리니까 보통은 "좋다" 가 뽑히지만 — 가끔은 "흐리다" 가, 아주 가끔은 "춥다" 가 뽑히기도 해요. 그래서 같은 질문에 다른 답이 나오는 거예요.
온도라는 다이얼
이 룰렛에는 다이얼이 하나 달려 있어요. 온도(temperature, 답을 얼마나 다양하게 뽑을지 조절하는 값) 라고 불러요.
- 온도 = 0: 룰렛이 회전을 안 해요. 항상 1등(가장 확률 높은 후보) 만 뽑혀요. 같은 질문에 매번 같은 답.
- 온도 = 0.7 (보통): 룰렛이 적당히 돌아요. 1등이 자주 뽑히지만 가끔 다양한 답도 나와요.
- 온도 = 1.5 (높음): 룰렛이 마구 돌아요. 1등도 4등도 비슷한 빈도로 뽑혀요. 창의적인 답도 나오지만, 어색하거나 헛소리에 가까운 답도 나와요.
[온도에 따른 룰렛 폭 — 1등 후보의 비중]
온도 0 ████████████████████ 매번 1등만 (단조롭고 따분)
온도 0.7 ██████████ 1등 자주, 가끔 다양 (자연스러움)
온도 1.5 ████ 1등도 4등도 비슷 (창의적, 가끔 헛소리)
↑ 룰렛이 평평해질수록 답이 다양해지고
동시에 헛소리 위험이 커져요
여기 깜짝 놀랄 만한 한 가지. 온도를 0 으로 만들어서 매번 같은 답을 뽑게 하면, 그 답이 "확신에 찬 정답" 같은 느낌일 거라 기대하잖아요. 그런데 실제로 해보면 — 답이 단조롭고 따분해져요. 같은 표현을 반복하고, 글이 살아 있지 않아요. 적당히 룰렛을 돌리는 쪽이 오히려 자연스럽고 사람 같은 글이 나와요. 너무 정답만 뽑으면 글이 죽는 거예요. 어쩐지 사람과 닮았어요.
한 토큰 만들고, 다시 룰렛, 또 다시 룰렛
이 룰렛 돌리기를 한 번만 하는 게 아니에요. 1화에서 본 그림 기억나시죠. 첫 토큰 한 번 룰렛, 그 토큰을 입력에 추가, 두 번째 토큰 한 번 룰렛, 또 추가, 세 번째 룰렛, ... 답이 끝날 때까지 반복.
그러니까 한 번의 답변에는 룰렛이 수십에서 수백 번 돌아가는 셈이에요. 매번 다른 결과가 나올 가능성이 누적돼요. 같은 질문에 정말 똑같은 답이 두 번 나오는 게 오히려 어려운 일이에요. 영화 100편을 처음부터 끝까지 정확히 같은 장면 순서로 두 번 보는 일을 상상해보세요. 그 정도로 어려워요.
그래서 "답을 미리 알지 못해요"
1화에서 한 말을 한 번 더 새겨봐요. ChatGPT 는 자기가 어떤 답을 할지 미리 알고 있지 않아요. 룰렛이 한 번 돌아가야 다음 토큰이 정해지고, 그 토큰을 자기 입력으로 다시 받아야 그 다음 토큰의 확률이 계산돼요. 그러니까 답을 만드는 과정 자체가 — 모델 자신에게도 — 한 발 한 발 새로 펼쳐지는 길이에요. 멋있게 마무리하려는 의도도, 결론을 미리 정해두는 큰 그림도 없어요. 그저 다음 발자국만 찍을 뿐.
비유에는 한계가 있어요
"룰렛" 비유는 어떤 토큰이 어떻게 뽑히는지를 설명하기에 좋지만, 정확히 말하면 모델 안쪽에서는 단순히 무작위 뽑기만 하는 게 아니라 여러 정교한 후처리가 들어가요. 예를 들어 너무 낮은 확률의 후보를 아예 빼버리거나(top-k), 누적 확률 일정 이하만 남기거나(top-p) 같은 안전 장치가 함께 돌아요. 일단 지금은 "확률 따라 룰렛 한 번" 이라는 큰 그림만 가져가시면 충분해요.
더 깊이 들어가려면: 모델이 토큰 하나를 뽑을 때 내부에서 어떤 두 단계 — Prefill 과 Decode — 를 거치는지는
transformer-inference부록에서 자세히 다뤄요.
한 줄 요약
ChatGPT 는 답을 만들 때 다음 토큰 후보들의 확률을 계산하고, 그 확률에 따라 룰렛을 돌려서 하나를 뽑는 일을 토큰마다 반복하는 거예요. 그래서 같은 질문에 답이 매번 조금씩 달라요.
다음 화
이렇게 한 토큰씩 답을 만들다 보면, AI 가 한 번에 처리할 수 있는 글의 양에는 한계가 있겠죠. 너무 긴 대화를 하면 AI 가 앞부분을 잊어버리는 것 같은 그 느낌 — 진짜로 잊어버리는 걸까요?