앞 편에서 LLM은 매 스텝 vocabulary 전체에 대한 확률 분포에서 다음 토큰을 무작위로 고른다고 했다. LLM을 다루는 큰 부분이 바로 이 무작위성을 이해하고 통제하는 것이다. 이번 편은 LLM API가 제공하는 여러 옵션 — 토큰 선택 방식을 조절하는 샘플링 전략 — 을 정리한다.

 

1. 확률 분포 — confident vs uncertain

LLM이 completion에 더하는 모든 토큰은 가중 무작위 선택(weighted random choice)이다. 오픈소스 모델은 각 스텝의 토큰 확률을 직접 보여준다. "the sky is"라는 프롬프트라면 blue 50%, bright 25%, 나머지는 10% 이하로 급격히 줄어드는 분포가 나온다.

그림 1. 왼쪽에 큰 spike = 모델이  확신 (confident), 평평한 분포 =  불확실 (uncertain). 이 곡선을 조절하는 것이 튜닝의 핵심.

 

 

 

 

2. Greedy Decoding — 무작위성 제거

가장 단순한 방법은 무작위 선택을 아예 안 하고 항상 확률이 가장 높은 토큰만 고르는 것 — greedy decoding이다. 장점은 결정론적(deterministic)이라는 것 — 같은 프롬프트엔 항상 같은 응답이 나온다. 단점은 결과가 뻔하고 일반적·딱딱하게 들릴 수 있고, 때때로 같은 문구를 무한 반복하는 루프에 빠져도 빠져나올 장치가 없다는 것이다. 그래도 코드 자동완성처럼 예측 가능한 출력이 필요하거나, 디버깅용 임시 설정으로는 유용하다.

그림 2. Greedy decoding — 항상 최고 확률 토큰을 고른다. 결정론적이지만 뻔하고 반복 루프에 빠질 수 있다.

 

 

 

 

3. Temperature — 분포의 모양 조절

보통은 무작위성을 없애기보다 조절하고 싶다. 가장 널리 쓰는 파라미터가 temperature(온도)다 — 확률 분포의 모양을 바꾸는 다이얼로 생각하면 된다.

  • 1(기본) — 원래 분포 그대로.
  • 낮추면 — 분포가 더 뾰족해져 가장 확률 높은 토큰만 뽑힐 기회를 갖는다. 순서는 안 바뀌고 확률만 달라진다. 0으로 낮추면 최고 확률 토큰만 100% = greedy decoding.
  • 조금 올리면(1.1~1.3) — 분포가 평평해져 덜 유력한 토큰에도 기회가 생기고, 더 다양하고 창의적인 텍스트가 나온다.
  • 너무 올리면 — 거의 균등 분포가 되어 말이 안 되는 토큰도 비슷한 확률로 뽑힌다.

그림 3. Temperature — 낮추면 분포가 뾰족(보수적), 올리면 평평(다양·창의적)해진다. 0이면 greedy.

 

 

 

4. Top-K 샘플링

temperature를 어떻게 두든 분포에는 오른쪽으로 뻗는 긴 꼬리(long tail) — 말도 안 되는 토큰들이 작은 확률로 남는다. 이를 통제하려는 첫 기법이 top-k 샘플링이다. LLM이 확률 상위 k개 토큰에서만 고르도록 제한한다. 예: temperature 1.1을 쓰되, 다음 토큰은 상위 5개 중에서만 선택.

그림 4. Top-K — 확률 상위 k개(예: 5개)로 후보를 제한해 긴 꼬리의 무의미한 토큰을 배제한다.

 

 

 

 

5. Top-P 샘플링 (Nucleus)

비슷하지만 다른 방식이 top-p 샘플링이다. 누적 확률(cumulative probability)이 어떤 threshold를 넘을 때까지의 토큰들만 후보로 삼는다. 예를 들어 top-p 85%라면, 분포 왼쪽부터 확률을 더해 가다 합이 85%를 넘는 지점까지의 토큰들로 후보를 한정한다.

그림 5. Top-P — 누적 확률이 threshold(예: 85%)에 도달할 때까지의 토큰만 후보로 삼는다.

 

 

 

6. Top-K vs Top-P

둘의 차이는 후보 pool이 고정이냐 가변이냐다. top-k는 분포 모양과 무관하게 항상 같은 개수에서 고른다. top-p는 분포에 반응한다 — 모델이 확신할 때(소수 토큰이 매우 높은 확률)는 후보를 소수로 좁히고, 불확실할 때(평평한 분포)는 더 넓은 pool에서 고르게 한다. 그래서 top-p가 더 동적(dynamic)·반응적이다.

그림 6. Top-K는 고정 개수, Top-P는 분포에 따라 후보 수가 달라진다(확신→좁게, 불확실→넓게).

 

 

 

 

7. 토큰별 전략 — 반복 페널티 · 로짓 편향

분포 전체의 모양이 아니라 개별 단어의 확률을 겨냥하는 기법도 있다.

반복 페널티(repetition penalty) 이미 completion에 등장한 단어의 확률을 낮춘다. LLM이 같은 단어·구를 반복하는 부자연스러움을 줄여, 더 자연스럽고 다양한 텍스트를 만든다.

그림 7. 반복 페널티 — 이미 등장한 토큰의 확률을 깎아 반복을 줄이고 텍스트를 자연스럽게 만든다.

 

로짓 편향(logit bias) 특정 토큰의 확률을 영구적으로 올리거나 내린다. 욕설을 안 내게 하려면 해당 단어를 낮추고, 분류기(classifier)처럼 몇 개 category 중 하나만 출력해야 한다면 그 category 토큰들의 확률을 높여 항상 그 안에서 고르게 할 수 있다.

그림 8. 로짓 편향 — 특정 토큰의 확률을 위/아래로 영구 조정(욕설 억제, 분류 category 강제 등).

 

 

 

8. 실전 조합과 사용법

여러 기법을 함께 쓴 API 호출 예시다 — temperature 0.8, top-p 0.9, repetition penalty 1.2. 이 조합은 토큰 선택을 조금 보수적으로 하고, 분포의 먼 꼬리를 피하며, 반복 토큰을 가볍게 억제하는 범용적으로 무난한 설정이다.

그림 9. 실전 조합 예 — temperature 0.8, top-p 0.9, repetition penalty 1.2 (범용적으로 합리적).
그림 10. 용도별 가이드 — 코드·사실 답변은 낮은 temperature·top-p, 창작 도메인은 높게.

 

권장 순서. 먼저 용도에 맞는 temperature와 top-p를 잡는다 — 코드·사실 질의는 낮게, 창작은 높게. 그다음 관찰된 문제에 맞춰 반복 페널티·로짓 편향 등을 추가한다. 정답은 하나가 아니며, 프로젝트에 맞게 반복 실험으로 설정을 조율하는 것이 핵심이다.

 

다음 글에서는 여러 LLM 중 내 RAG에 맞는 모델을 고르는 기준(크기·context window·지연·벤치마크·LLM-as-a-judge)을 다룬다.

'AI > RAG' 카테고리의 다른 글

Prompt Engineering : augmented prompt 구성  (0) 2026.07.03
어떤 LLM을 고를까  (0) 2026.07.03
Transformer Architecture  (0) 2026.07.03
Reranking  (0) 2026.07.03
Cross Encoder & ColBERT  (0) 2026.07.02

+ Recent posts