빔 서치(Beam Search)

Beam search

빔 서치는 매 시점마다 가장 확률이 높은 단어 하나만을 선택하는 그리디 서치(Greedy Search)와 달리, 확률이 높은 상위 개의 후보(빔)를 동시에 유지하면서 문장을 생성하는 방식입니다.

각 단계에서 확률 분포상 개의 후보 단어를 선택한 뒤, 이들로부터 파생되는 가능한 문장들의 누적 확률(즉, 곱셈 또는 로그 합산)을 계산하고, 다시 상위 개만 남기는 과정을 반복합니다.

장점:

  • 그리디 서치에 비해 더 자연스럽고 완성도 높은 문장을 생성할 수 있습니다.
  • 생성되는 문장의 품질이 전반적으로 안정적입니다.

단점:

  • 계산 비용이 높으며, 빔의 크기()가 커질수록 복잡도가 증가합니다
  • “고마워”, “잘 모르겠어” 등 안전하고 일반적인 답변을 자주 생성하는 경향이 있습니다
  • 동일한 입력에 대해 항상 동일한 결과가 나오는 결정론적 특성을 가집니다

B) Top-k 샘플링(Top-k Sampling)

Top-k 샘플링은 모델이 다음 단어를 예측할 때, 전체 단어 확률 분포에서 상위 개의 단어만을 남기고, 이 중 하나를 무작위로 선택하여 문장을 생성하는 방식입니다1. 즉, 확률 분포의 꼬리에 있는 낮은 확률의 단어들은 제외하고, 높은 확률의 후보 중에서 랜덤하게 선택합니다.

장점:

  • 빔 서치에 비해 더욱 다양하고 창의적인 문장이 생성될 수 있습니다. 이는 확률이 약간 낮은 단어에도 선택 기회가 주어지기 때문입니다.
  • 무작위 요소 도입으로 덜 예측 가능하며 자연스러운 느낌을 가지는 결과물을 얻을 수 있습니다.

단점:

  • 때때로 문맥에 맞지 않거나 논리적으로 어색한 단어가 선택될 수 있습니다.
  • 출력 결과의 일관성이 다소 떨어질 수 있습니다.
구분빔 서치 (Beam Search)Top-k 샘플링 (Top-k Sampling)
핵심 아이디어가장 가능성 있는 k개의 문장 후보를 유지하며 최적의 문장을 탐색가장 확률 높은 k개의 단어 중 하나를 무작위로 선택
결과안정적이고 문법적으로 우수하지만, 다소 예측 가능한 문장 생성다양하고 창의적이지만, 때로는 어색하거나 일관성이 부족한 문장 생성
주요 특징결정론적 (입력이 같으면 결과도 같음)확률적 (입력이 같아도 결과가 다를 수 있음)
적합한 상황번역, 요약 등 정확성이 중요한 경우챗봇, 창의적인 글쓰기 등 다양성이 중요한 경우

C) Temperature (온도)

Temperature는 확률 분포의 모양을 조절하여 모델의 확신 수준을 바꾸는 역할을 합니다. 보통 다음 단어 후보들을 결정하기 가장 먼저 적용됩니다.

  • 계산 방식: 모델이 계산한 각 단어의 확률(정확히는 소프트맥스 함수에 들어가기 전의 값인 logit)을 Temperature 값으로 나눈 뒤, 이를 다시 확률 분포로 정규화합니다.

  • 영향:

    • Temperature > 1 (예: 1.5): 확률 분포가 평평해집니다 (Softer). 확률이 높은 단어와 낮은 단어 간의 격차가 줄어들어, 확률이 낮은 단어도 선택될 가능성이 커집니다.
      • 효과: 창의성 및 무작위성 증가. 예측 불가능하고 다양한 결과가 나옵니다.
    • Temperature < 1 (예: 0.5): 확률 분포가 뾰족해집니다 (Sharper). 모델이 원래 높게 예측했던 단어의 확률은 더욱 높아지고, 나머지는 거의 0에 가까워집니다.
      • 효과: 안정성 및 결정성 증가. 모델이 가장 확신하는 단어를 선택할 확률이 매우 높아져, 일관되고 예측 가능한 결과가 나옵니다.
    • Temperature = 1: 원래 모델이 계산한 확률 분포를 그대로 사용합니다.

D) Top-k

“후보군의 크기를 고정”하는 방식입니다.

  • 계산 방식 (예시: k=3):
    1. 1단계: 확률 분포 계산: 모델이 다음 단어에 대한 확률 분포를 계산합니다. (Temperature가 적용되었다면, 변형된 분포를 사용합니다.)
      • 예: (사과: 0.6, 바나나: 0.2, 오렌지: 0.1, 포도: 0.05, 레몬: 0.05)
    2. 2단계: 상위 k개 선택: 확률이 가장 높은 k개의 단어만 후보로 남깁니다.
      • k=3 이므로, (사과, 바나나, 오렌지)를 선택합니다.
    3. 3단계: 확률 재정규화: 선택된 k개의 단어만으로 새로운 확률 분포를 만듭니다. 원래 확률의 비율은 유지됩니다.
      • 원래 확률 합: 0.6 + 0.2 + 0.1 = 0.9
      • 재정규화된 확률:
        • P(사과) = 0.6 / 0.9 ≈ 0.67
        • P(바나나) = 0.2 / 0.9 ≈ 0.22
        • P(오렌지) = 0.1 / 0.9 ≈ 0.11
    4. 4단계: 샘플링: 재정규화된 확률 분포 (사과: 0.67, 바나나: 0.22, 오렌지: 0.11)에 따라 최종 단어 하나를 무작위로 뽑습니다. 사과가 뽑힐 확률이 가장 높지만, 바나나나 오렌지도 뽑힐 수 있습니다.
  • 영향: 후보 단어의 개수를 k개로 제한하여, 문맥에서 완전히 벗어나는 엉뚱한 단어(예: 포도, 레몬)가 선택될 가능성을 원천 차단합니다.

E) Top-p

“후보군의 확률 총합을 고정”하는 방식입니다. Top-k보다 더 유연하고 지능적인 대안으로 평가받습니다.

  • 계산 방식 (예시: p=0.85):

    1. 1단계: 확률 분포 계산 및 정렬: 모델이 계산한 확률 분포를 내림차순으로 정렬합니다.

      • 사과(0.6), 바나나(0.2), 오렌지(0.1), 포도(0.05), 레몬(0.05)
    2. 2단계: 누적 확률 계산 및 후보 선택 (Nucleus 형성): 확률을 순서대로 더해가며, 그 합이 p값을 처음으로 넘어설 때까지의 단어들을 후보로 선택합니다.

      • P(사과) = 0.6 (아직 0.85보다 작음)

      • P(사과) + P(바나나) = 0.6 + 0.2 = 0.8 (아직 0.85보다 작음)

      • P(사과) + P(바나나) + P(오렌지) = 0.8 + 0.1 = 0.9 (0.85를 넘었음!)

      • 따라서 후보군(Nucleus)은 (사과, 바나나, 오렌지)가 됩니다.

    3. 3단계 & 4단계: 이후 과정은 Top-k와 동일합니다. 선택된 후보군 내에서 확률을 재정규화하고 그 분포에 따라 샘플링합니다.

  • 영향 및 Top-k와의 차이점:

    • 유연성: Top-p는 후보군의 크기가 가변적입니다. 모델이 다음 단어를 매우 확신하는 상황(예: 한 단어의 확률이 0.9)에서는 후보군이 1개가 될 수 있고, 여러 단어를 두고 고민하는 상황에서는 후보군이 많아질 수 있습니다.

    • 합리성: 고정된 k개만 보는 것이 아니라, 확률적 중요도를 기반으로 후보를 정하기 때문에 더 합리적일 수 있습니다.