본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 15. 13:18

LLM의 출력 방식

요약

LLM의 생 로짓(Raw logit)이 다양한 파라미터를 거쳐 최종 샘플링 확률로 변환되는 과정을 설명합니다. repetition_penalty, temperature, top-k, top-p 등의 메커니즘이 확률 분포에 미치는 영향을 다룹니다.

핵심 포인트

  • 생 로짓은 모델 출력 헤드가 내보내는 변환되지 않은 스코어임
  • repetition_penalty는 이미 등장한 토큰의 로짓을 조절해 반복을 억제함
  • temperature는 로짓을 스케일링하여 확률 분포의 날카로움을 조절함
  • top-k와 top-p는 후보 토큰 집합을 제한하여 샘플링 품질을 관리함

1. 서론

생 로짓 (Raw logit)으로부터 파라미터를 고려하여 최종 출력을 선택하는 확률을 계산하는 방법을 정리했습니다.

2. 학습한 내용

  • 생 로짓 (Raw logits)으로부터 어떤 처리를 거쳐 최종적인 샘플링 확률이 되는지

2.1 정의

생 로짓 (Raw logit, 생 스코어)에 대하여

**생 로짓 (Raw logit)**은 모델의 출력 헤드(Output head)가 각 어휘 토큰(Vocabulary token)에 대해 내보내는 "변환되지 않은 스코어"

직관적으로는 "다음에 나올 후보 토큰 각각에 대한 점수의 집합"이며, 아직 temperature나 repetition_penalty 등으로 변환되기 전의 값을 가리킨다.

생 로짓이 어디서 오는가

모델은 최종 은닉 상태(Final hidden state, "직전까지의 문맥 정보를 응축한 벡터")를 출력하고, 이를 모델 내부의 어휘 토큰 벡터와 내적(Inner product)함으로써 직전 토큰으로부터 다음에 올 법한 어휘를 연관시킨다. 그것을 스코어로 내보내는 것이 바로 생 로짓 (Raw logits)이다.

간단한 예

어휘 후보: ["the", "cat", "sat", "."]

생 로짓 (Raw logit): (x_{\text{the}}=2.5,; x_{\text{cat}}=1.8,; x_{\text{sat}}=0.2,; x_{.}=-0.5)

이것들이 먼저 (\hat{x}_i)로 변환되고 (temperature나 rep_penalty의 영향을 받음), 그 후 top-k/top-p/softmax에 의해 확률화되어 최종적으로 샘플링된다.

어떤 토큰 i의 생 로짓 (모델 헤드 출력)

temperature

(다음 장의 일반식에서 간략화하기 위해 이번 정의에서는 T라고 둠)

로짓을 스케일링(Scaling)하여 확률 분포를 날카롭게 만들거나 평평하게 만든다.

repetition_penalty 파라미터

(다음 장의 일반식에서 간략화하기 위해 이번 정의에서는 θ라고 둠)

이미 나온 토큰의 로짓을 감쇄(Decay) 또는 증폭(Amplify)하여 "반복"을 억제한다.

기생성 토큰의 집합

・repetition_penalty

・top_p (nucleus sampling)

확률이 높은 순으로 나열하여, 누적 확률이 p에 도달할 때까지의 토큰만 남긴다.

・top_k

로짓이 높은 상위 k개의 토큰만 남겨서 샘플링한다.

2.2 처리 흐름 (일반식)

전체상

생 로짓 x_i → ①rep_penalty → ②temperature → ③ top_k → ④ top_p → ⑤ softmax + sample

①rep_penalty

이미 나온 토큰(i∈g)에 대해서만 부호를 다르게 취급한다. 양수의 로짓은 θ로 나누고, 음수의 로짓은 θ를 곱하여 둘 다 값을 작게(즉, 확률을 낮게) 만든다. 아직 나오지 않은 토큰(i∉g)은 그대로 둔다.

(음수의 로짓을 θ(>1)로 나누면 절대값이 작아져(예: −10÷1.1=−9.1), 확률이 올라가 버리기 때문에, 곱셈으로 처리하여 절대값을 더욱 크게 만든다(예: −10×1.1=−11)).

②temperature

1단계의 출력을 모든 토큰에 일괄적으로 T로 나눈다.

③top_k

나온 토큰들의

로짓 값이 큰 순서대로 k번째 토큰의 로짓을 취득

로짓을 임계값(Threshold)으로 사용

임계값보다 로짓이 큰 후보라면 그대로 통과시키고, 임계값보다 낮으면 로짓의 값을 −∞로 만들어 절대 선택되지 않는 선택지로 만든다.

④top_p

상위 k개를 더욱 압축

구체적으로는 확률의 누계가 p가 될 때까지의 후보를 선택한다.

먼저 소프트맥스 (Softmax)를 적용하여, top_k로 압축된 토큰들의 로짓을 합계가 1인 확률 분포로 만든다 (이때 −∞로 처리된 후보는 확률이 0이 된다). 단, 이 확률는 "어떤 후보를 남길 것인가"를 결정하기 위한 일시적인 것이며, top_p의 출력 자체는 어디까지나 로짓이다.

다음과 같은 확률 분포가 완성됨 (이미지)

그것들을 누적하면 1이 됨 (k 이후는 값이 0)

여기서 top_p가 0.6이라면 아래의 3개 후보만 남기고, 벗어난 후보는 로짓을 −∞로 만든다 (확률을 0으로 만드는 것은 다음 단계인 ⑤의 softmax이다).

확률로부터 판단하여 로짓을 변환

⑤ softmax + sample

④에서 남은 로짓(벗어난 후보는 −∞)에 다시 한번 softmax를 적용한다. −∞는

④의 예시라면, 합계가 0.6이었던 확률이 여기서 합계 1.0으로 교정된다.

④의 softmax는 "후보를 남길 것인가"를 결정하기 위한 것이고, ⑤의 softmax는 "최종적인 확률 분포를 만들기" 위한 것이다. 역할이 다르기 때문에 softmax가 두 번 등장한다.

마지막으로 이 확률 분포로부터 단 1개의 토큰만을 샘플링 (sampling)한다. 확률이 높을수록 선택될 가능성이 높지만, 반드시 최댓값이 선택되는 것은 아니다 (이 점이 greedy = argmax 방식과의 차이점이다).

위의 예로 들면

$P(u)$의 경우

$P(u) = 0.3$일 때

$P(u) = 0.6$일 때

여기서 seed를 고정하면 생성되는 $u$가 동일한 난수열 (random number sequence)이 된다. 즉, 각 토큰을 생성할 때 나오는 난수의 순서가 동일해진다.

선택된 토큰이 다음 1개 토큰의 출력이 되며, 다시 raw logit 계산 단계로 돌아가 루프 (loop)를 반복한다.

참고

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0