탐욕적 디코딩(Greedy decoding)은 자기회귀 언어 모델에서 사용되는 기본적인 디코딩 전략으로, Transformer (architecture) 아키텍처를 기반으로 한 모델들도 포함한다. 각 생성 단계에서 모델은 다음 토큰에 대한 어휘 전체의 확률 분포를 계산하며, 탐욕적 디코딩은 가장 높은 확률을 가진 토큰을 선택한다. 이 과정은 종료 토큰이 생성되거나 사전 정의된 최대 길이에 도달할 때까지 반복된다. 항상 가장 가능성 높은 토큰을 선택하기 때문에 탐욕적 디코딩은 결정론적이다: 동일한 입력과 모델 가중치가 주어지면 매번 동일한 출력을 생성한다. 계산 효율적이고 구현이 쉬워 자연어 처리 작업에서 일반적인 기준선으로 사용된다. 그러나 미래 토큰에 대한 선택의 영향을 고려하지 않기 때문에 반복적이거나 최적이 아닌 텍스트를 자주 생성한다. 초기 단계에서 약간 덜 가능성 있는 토큰이 훨씬 더 일관된 연속을 가능하게 할 수 있기 때문이다. 탐욕적 디코딩은 top-k 샘플링 및 top-p 샘플링과 같은 무작위성을 도입하는 확률적 방법, 그리고 여러 후보 시퀀스를 유지하여 더 전역적으로 최적의 출력을 찾는 빔 서치와 대조된다.
탐욕적 디코딩의 작동 방식
자기회귀 모델에서 토큰 시퀀스 \(x_1, x_2, \ldots, x_T\)의 확률은 조건부 확률의 곱으로 분해된다: \(P(x_1, \ldots, x_T) = \prod_{t=1}^T P(x_t | x_1, \ldots, x_{t-1})\). 탐욕적 디코딩은 각 시간 단계 \(t\)에서 \(P(x_t | x_1, \ldots, x_{t-1})\)를 최대화하는 토큰 \(x_t\)를 선택하여 가장 가능성 높은 시퀀스를 근사한다. 이는 전역 최적화가 아닌 지역 최적화이다. 알고리즘은 간단하다: 프롬프트나 시작 토큰으로 시작하여 모델에 입력하고, 다음 토큰에 대한 확률 분포를 얻은 다음, argmax를 선택하고 입력에 추가한 후 반복한다. 이 과정은 각 단계에서 "argmax 디코딩" 또는 "최대 우도 디코딩"이라고도 불린다.
장점과 단점
탐욕적 디코딩의 주요 장점은 단순성과 속도이다. 추가 매개변수나 검색 구조가 필요 없어 대화형 챗봇이나 코드 완성과 같이 지연 시간이 중요한 실시간 응용 프로그램에 적합하다. 또한 결정론적 출력을 생성하므로 디버깅이나 재현성에 유리할 수 있다. 그러나 탐욕적 디코딩에는 상당한 단점이 있다. 백트래킹을 하지 않기 때문에 반복적인 구문을 생성하는 루프에 빠질 수 있다(예: "사랑해 사랑해 사랑해"). 또한 항상 가장 흔한 단어를 선택하므로 지루하거나 일반적인 텍스트를 생성하는 경향이 있으며, 이는 가장 유익하거나 창의적이지 않을 수 있다. 연구에 따르면 탐욕적 디코딩은 특히 스토리텔링이나 대화와 같은 개방형 생성 작업에서 빔 서치나 샘플링 방법보다 낮은 품질의 출력을 생성하는 경우가 많다.
빔 서치와의 비교
빔 서치는 각 단계에서 \(k\)개의 부분 가설(빔) 집합을 유지하는 더 정교한 디코딩 전략이다. 각 시간 단계에서 모든 가능한 다음 토큰을 고려하여 모든 빔을 확장한 다음, 누적 로그 확률이 가장 높은 \(k\)개의 시퀀스를 유지한다. 이를 통해 모델이 여러 경로를 탐색하고 탐욕적 디코딩이 빠지는 지역 최적점을 피할 수 있다. 빔 서치는 일반적으로 탐욕적 디코딩보다 더 일관되고 점수가 높은 시퀀스를 생성하지만, 단계당 \(k\)배 더 많은 후보를 평가해야 하므로 계산 비용이 더 높다. 실제로 중간 크기의 빔(예: 4 또는 8)을 사용하는 빔 서치는 출력 길이가 제한되고 전역적 일관성이 중요한 기계 번역과 같은 작업에 자주 사용된다. 탐욕적 디코딩은 \(k=1\)인 빔 서치로 볼 수 있다. 그러나 빔 서치도 반복과 다양성 부족 문제를 겪을 수 있으며, 이 때문에 창의적 생성을 위해서는 샘플링 기반 방법이 선호된다.
사용 사례와 구현
탐욕적 디코딩은 속도가 출력 품질보다 중요한 생산 시스템에서 널리 사용되며, 일부 대규모 언어 모델 추론 파이프라인에서도 그렇다. 예를 들어 사용자가 간단한 사실적 질문을 할 때 탐욕적 디코딩으로 올바른 답변을 제공할 수 있다. 또한 연구 논문에서 더 고급 방법과 비교하기 위한 기준선으로 사용된다. 구현은 대부분의 딥러닝 프레임워크에서 간단하다: 모델에서 로짓을 얻은 후 어휘 차원에 argmax를 적용하면 된다. Hugging Face의 Transformers와 같은 많은 라이브러리는 do_sample=False 매개변수를 제공하여 탐욕적 디코딩을 실행한다. 이러한 한계에도 불구하고 탐욕적 디코딩은 인공지능 분야의 기초 기술로 남아 있으며 텍스트 생성에 대해 배우는 학생들에게 가장 먼저 가르치는 방법이다.
한계와 대안
탐욕적 디코딩의 주요 한계는 초기 실수에서 회복할 수 없다는 점이다. 예를 들어 "The cat sat on the..."이라는 문장에서 모델이 "mat"을 높은 확률로, "floor"를 약간 낮은 확률로 예측하면 탐욕적 디코딩은 "mat"을 선택한다. 이후 문맥이 "floor"와 더 자연스러웠다면 모델은 되돌아갈 수 없다. 이것이 온도 조절, top-k, 또는 핵(top-p) 샘플링과 같은 대안이 무작위성을 도입하고 다양성을 높이기 위해 사용되는 이유이다. 이러한 방법은 argmax를 취하는 대신 확률 분포에서 샘플링하여 덜 가능성 있는 토큰도 선택할 수 있게 한다. 또 다른 대안으로는 대조 검색(contrastive search)이 있으며, 이는 모델의 신뢰도와 생성 텍스트의 다양성 사이의 균형을 맞춘다. 실제로 디코딩 전략의 선택은 작업에 따라 달라진다: 사실적 생성에는 탐욕적 디코딩이나 빔 서치가 선호되고, 창의적 작성에는 샘플링 방법이 더 적합하다.
참고 문헌
- 탐욕적 디코딩은 Daniel Jurafsky와 James H. Martin의 "Speech and Language Processing"과 같은 자연어 처리 표준 교과서에 설명되어 있다.
- 탐욕적 디코딩의 한계는 Sutskever et al. (2014) 및 Bahdanau et al. (2015)의 신경 기계 번역 논문에서 논의된다.
- 디코딩 전략의 포괄적 비교는 Holtzman et al. (2019)의 "The Curious Case of Neural Text Degeneration" 논문을 참조하라. 이 논문은 탐욕적 디코딩과 빔 서치의 문제점을 강조하고 핵 샘플링을 제안한다.
---
참고: 이 문서는 현대 신경 언어 모델에서 사용되는 탐욕적 디코딩 개념에 초점을 맞춘다. 이는 더 넓은 최적화 기법 클래스인 일반적인 탐욕 알고리즘과 혼동해서는 안 된다.