01 · 출발 상황

한 번의 선택 뒤에는 새로운 확률 분포가 생긴다

‘오늘 도서관은’이라는 입력 다음에 모델이 낼 수 있는 조각을 교육용 수치로 만들어 봅시다. ‘열려’ 0.50, ‘조용’ 0.30, ‘문을’ 0.20이라고 두면 첫 단계에는 세 후보가 있습니다. ‘열려’를 고른 뒤에는 ‘있다’, ‘있어요’, ‘있는’처럼 새로운 후보 분포가 계산됩니다. 생성 후보 트리는 각 단계의 다음 토큰 후보와 조건부 확률을 가지로 펼친 생각그림입니다.

이 수치는 개념 설명을 위해 미리 준비한 예시이며 실제 서비스 측정값과 구분합니다. 실제 확률을 보려면 해당 모델과 API가 제공하는 로그확률 기능, 정확한 모델 버전과 설정이 필요합니다. 화면에 표시된 완성 문장만 보고 내부 후보 확률을 거꾸로 추정할 수는 없습니다. 후보 트리는 실제 로그를 시각화하거나 교육용 분포를 명시해 사용할 때 정확합니다.

생각그림 1 · 한 번의 선택 뒤에는 새로운 확률 분포가 생긴다
오늘 도서관은
다음 토큰 조건부 확률
열려 0.50
조용 0.30
문을 0.20
한 단계의 확률은 현재까지 선택된 앞 토큰 전체를 조건으로 계산됩니다.
02 · 기호 읽기

노드는 접두부, 선은 다음 토큰과 조건부 확률이다

트리의 노드에는 지금까지 만들어진 토큰열, 즉 접두부를 적습니다. 뿌리 ‘오늘 도서관은’에서 ‘열려’라는 선을 따라가면 새 노드는 ‘오늘 도서관은 열려’가 됩니다. 선 옆 0.50은 앞 접두부가 주어졌을 때 바로 다음 토큰이 ‘열려’일 조건부 확률입니다. 다음 단계의 0.70은 ‘열려’까지 선택된 새 접두부를 조건으로 다시 계산한 값입니다.

서로 다른 깊이의 선 확률을 그대로 비교하면 안 됩니다. 한 경로의 결합확률은 지나온 조건부 확률을 곱해 구합니다. 길이가 긴 경로는 곱하는 항이 많아 값이 작아지므로, 빔 탐색 등에서는 길이 보정 규칙을 따로 둘 수 있습니다. 그림에는 토큰 경계와 종료 토큰을 표시해 어느 시점에 문장이 끝나는지 알려 줍니다.

생각그림 2 · 노드는 접두부, 선은 다음 토큰과 조건부 확률이다
오늘 도서관은×열려 · 0.50×있다 · 0.70=0.35
경로 확률 0.35는 0.50×0.70로 계산한 준비된 예시입니다.
03 · 분포 읽기

확률의 합과 토큰 경계를 먼저 확인한다

한 단계에서 모든 어휘 토큰의 확률 합은 1입니다. 그림에 상위 세 후보만 표시했다면 나머지 후보의 합도 따로 적어야 합니다. 상위 후보 0.50·0.30·0.10만 그려 놓고 합이 0.90인데 ‘전체 후보’라고 쓰면 0.10이 사라진 셈입니다. ‘표시하지 않은 후보 0.10’ 같은 칸을 두면 도표의 범위를 정확히 읽을 수 있습니다.

토큰은 언제나 완성된 단어와 같지 않습니다. ‘도서관’, 조사, 공백이나 문장부호가 모델의 토큰화 방식에 따라 여러 조각으로 나뉠 수 있습니다. 화면에서는 읽기 편하도록 문자열을 보여 주되, 실제 로그를 다룰 때는 토큰 ID와 디코딩된 문자열을 함께 기록합니다. 서로 다른 모델의 토큰 경계와 확률을 그대로 일대일 비교하는 일도 피해야 합니다.

생각그림 3 · 확률의 합과 토큰 경계를 먼저 확인한다
열려
0.50
조용
0.30
그 밖
0.20
표시한 범주의 합이 1인지 확인하고, 생략한 후보의 질량을 숨기지 않습니다.
04 · 선택 방식

최댓값·상위 k개·누적 확률은 후보를 다르게 남긴다

탐욕 선택은 매 단계 가장 높은 확률의 토큰 하나를 고릅니다. 결과를 재현하기 쉽지만 첫 선택이 전체 문장에 가장 좋은지는 보장하지 않습니다. 상위 k 선택은 확률이 높은 k개만 남겨 다시 정규화해 추출합니다. 누적 확률 방식인 top-p는 높은 순으로 더해 합이 문턱 p 이상이 되는 가장 작은 후보 집합을 사용합니다.

top-k는 후보 개수가 고정되고 top-p는 분포 모양에 따라 개수가 달라집니다. 한 후보가 0.92를 차지하면 p=0.90에서 그 후보 하나만 남을 수 있고, 확률이 넓게 퍼지면 여러 후보가 필요합니다. 온도는 선택 전에 점수 분포를 평평하거나 뾰족하게 바꾸는 값입니다. 온도·k·p·난수 시드를 함께 기록해야 같은 생성 설정을 비교할 수 있습니다.

생각그림 4 · 최댓값·상위 k개·누적 확률은 후보를 다르게 남긴다
최댓값가장 높은 후보 1개
상위 k정해진 개수 보존
누적 p확률 합이 문턱을 넘을 때까지 보존
선택 방식은 확률을 만드는 모델 계산과, 그 분포에서 실제 토큰을 고르는 규칙을 나눠 봅니다.
05 · 경로 비교

각 단계의 조건이 달라지므로 선 확률을 곱한다

첫 경로가 ‘열려’ 0.50 뒤 ‘있다’ 0.70이라면 결합확률은 0.35입니다. 둘째 경로가 ‘조용’ 0.30 뒤 ‘하다’ 0.80이라면 결합확률은 0.24입니다. 둘째 단계의 0.80이 첫 경로의 0.70보다 높아도 전체 경로는 첫째가 더 큽니다. 각 숫자가 어떤 접두부를 조건으로 하는지 표시해야 계산을 바르게 할 수 있습니다.

실제 문장 생성에서는 후보가 많고 길이도 달라 전체 트리를 펼치기 어렵습니다. 빔 탐색은 일정한 수의 높은 점수 접두부만 유지하는 휴리스틱입니다. 빔 폭이 넓으면 더 많은 경로를 비교하지만 계산과 메모리가 늘고, 열린 문장 생성에서 높은 확률 경로가 항상 자연스러운 글을 보장하지도 않습니다. 후보 트리는 선택 규칙의 결과를 설명하는 범위에서 사용합니다.

생각그림 5 · 각 단계의 조건이 달라지므로 선 확률을 곱한다
경로1단계2단계결합확률
열려→있다0.500.700.350
조용→하다0.300.800.240
문을→연다0.200.600.120
결합확률은 서로 다른 접두부에서 나온 조건부 확률을 경로별로 곱한 값입니다.
06 · LLM 요청문

실제 로그와 교육용 숫자를 구분하도록 요청한다

일반 채팅 화면에 ‘다음 토큰 확률을 알려 달라’고 물으면 모델이 설명용 숫자를 만들어 낼 수 있습니다. 그 값은 실제 디코딩 로그가 아닐 수 있습니다. 실제 로그가 필요하면 로그확률을 제공하는 인터페이스에서 모델 ID, 입력, 온도, 후보 수와 반환 시각을 저장해야 합니다. 로그 기능이 없다면 숫자 없이 후보 관계만 설명하거나 교육용 수치라고 분명히 표시합니다.

아래 요청문은 준비된 자료를 정확한 후보 트리로 바꾸기 위한 문안입니다. 확률 합 검사, 접두부별 조건, 경로 곱, 생략한 질량, 실제 측정 여부를 출력에 포함합니다. 원자료에 없는 후보나 확률을 추정해서 채우지 못하도록 제한합니다.

생각그림 6 · 실제 로그와 교육용 숫자를 구분하도록 요청한다
복사 가능한 요청문
다음 토큰 로그를 생성 후보 트리로 정리해 줘.
자료 성격: [실제 API 로그 / 교육용 수치]
모델과 설정: [모델 ID, 온도, top-k, top-p, 시드]
각 단계 입력: 현재까지의 정확한 접두부
각 선: 후보 토큰 문자열·토큰 ID·조건부 확률
검사 1: 단계별 표시 확률과 생략 확률의 합이 1인지 확인
검사 2: 경로 확률은 지나온 조건부 확률의 곱으로 계산
검사 3: 종료 토큰과 토큰 경계를 표시
출력: 노드 표, 선 표, 2단계 후보 트리, 경로 확률 표
자료에 없는 확률은 만들지 말고 ‘미제공’으로 표시해 줘.
확률 출처와 생성 설정을 먼저 고정하면 설명용 숫자를 실제 측정값으로 오해하는 일을 줄일 수 있습니다.
07 · 준비된 결과

top-p 후보 집합은 분포에 따라 크기가 바뀐다

교육용 분포 A가 0.60·0.25·0.10·0.05라면 p=0.80에서 앞의 두 후보 합 0.85가 문턱을 넘으므로 두 개를 남깁니다. 분포 B가 0.35·0.25·0.20·0.12·0.08이라면 p=0.80을 넘기 위해 앞의 세 후보 합 0.80이 필요합니다. 같은 p를 사용해도 보존 후보 수가 달라집니다.

후보 집합을 정한 뒤에는 남은 확률을 다시 정규화하여 추출합니다. 분포 A의 첫 후보는 0.60/0.85, 둘째는 0.25/0.85가 됩니다. 원래 확률과 재정규화 확률을 한 열에 섞지 않습니다. 그림에는 문턱, 누적합, 포함된 마지막 후보를 표시하면 선택 경계를 확인하기 쉽습니다.

생각그림 7 · top-p 후보 집합은 분포에 따라 크기가 바뀐다
분포 A · p=0.80

0.60 + 0.25 = 0.85 → 후보 2개

분포 B · p=0.80

0.35 + 0.25 + 0.20 = 0.80 → 후보 3개

Σ ≥ p
top-p는 확률 누적합이 문턱에 처음 도달하는 최소 후보 집합을 만듭니다.
08 · 오류 수정

합이 맞지 않는 확률과 한 단계 점수를 먼저 고친다

잘못된 후보 트리는 서로 다른 단계의 확률을 한 열에 놓고 곧바로 더하거나, 상위 후보만 보여 주면서 합이 1이라고 씁니다. 또 ‘안전한 문장’처럼 의미 평가 결과를 토큰 확률과 같은 숫자로 표시하기도 합니다. 모델 확률, 외부 평가 점수, 규칙 통과 여부는 출처와 척도가 다르므로 별도 칸에 둬야 합니다.

수정할 때는 각 노드에 정확한 접두부를 적고 그 노드에서 나가는 선의 확률 합을 확인합니다. 생략한 후보는 ‘그 밖’으로 묶어 질량을 남깁니다. 경로 점수는 곱셈식과 로그합 가운데 무엇을 사용했는지 밝힙니다. 안전성이나 사실성 검사는 토큰 확률과 분리된 평가 노드로 연결합니다.

생각그림 8 · 합이 맞지 않는 확률과 한 단계 점수를 먼저 고친다
수정 전

0.50 + 0.70 = 1.20
“가장 안전한 경로”

서로 다른 단계와 평가 척도가 섞였습니다.

수정 후

0.50 × 0.70 = 0.35
사실성 검사: 별도 통과

조건부 확률과 외부 검사를 나눕니다.

확률 계산과 의미 평가를 분리하면 후보 선택의 근거를 다시 확인할 수 있습니다.
09 · 직접 실습

준비된 분포에서 선택 방식별 후보를 비교한다

아래 실습은 실제 모델을 호출하지 않고 고정된 교육용 분포를 사용합니다. 후보 확률은 ‘열려’ 0.44, ‘조용’ 0.26, ‘문을’ 0.18, ‘휴관’ 0.08, ‘그 밖’ 0.04입니다. 선택 방식을 바꾸면 남는 후보와 재정규화 확률이 어떻게 달라지는지 계산합니다. 난수 추출 결과 대신 후보 집합 자체를 비교하므로 시드에 따른 우연을 섞지 않습니다.

최댓값은 ‘열려’ 하나를 남깁니다. top-k=3은 앞의 세 후보를 남기고 합 0.88로 나누어 재정규화합니다. top-p=0.80은 0.44+0.26+0.18=0.88에서 문턱을 넘으므로 같은 세 후보가 남습니다. p=0.60이면 앞의 두 후보 합 0.70에서 멈춥니다. 선택 규칙이 같아도 입력 분포가 바뀌면 결과 집합도 바뀝니다.

생각그림 9 · 준비된 분포에서 선택 방식별 후보를 비교한다
선택 방식을 고른 뒤 계산하세요.
해설: 실제 추출 없이 고정 분포에서 남는 후보와 재정규화 값을 계산합니다.
후보 집합을 비교하면 top-k와 top-p가 같은 결과를 만들 때와 달라질 때를 확인할 수 있습니다.