Generation Strategies — 그리디·빔·샘플링

Generation Strategies

디코딩 전략은 '모델이 다음 생성 토큰을 어떻게 고르는지'를 정하는 규칙이에요. 선택에 따라 생성 텍스트의 품질·반복·창의성이 크게 달라져요.

기본 방법

  • 그리디 서치(Greedy Search): 매 스텝 가장 확률 높은 토큰 선택. 기본값이고 짧은 출력에 적합하지만, 길어지면 반복이 생겨요.
  • 빔 서치(Beam Search): 여러 후보(빔)를 유지하며 전체 확률이 높은 시퀀스 선택. num_beams>1. 이미지 캡션·음성 인식 같은 입력-기반 과업에 적합.
  • 멀티노미얼 샘플링(Sampling): do_sample=True로 확률 분포에서 무작위 선택 — 창의적·다양한 출력.
  • 대비적 서치(Contrastive Search): 이전 토큰과 유사하면 패널티를 줘 긴 생성의 반복을 줄여요.
  • DoLa: 최종 vs 초기 레이어의 로짓 차이를 대조해 사실성 개선·환각 감소.
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")
outputs = model.generate(**inputs, do_sample=True, num_beams=1)

언제 무엇을

  • 사실성이 중요한 생성: 그리디(짧을 때) 또는 빔.
  • 창의성·다양성: 샘플링(top-p/top-k 병용).
  • 긴 텍스트 반복 완화: 대비적 서치, DoLa, repetition penalty.

더 알아보기