Greedy Decoding(グリーディーデコーディング)
LLMが各ステップで最も確率の高いトークンを常に選択するデコーディング手法。出力が決定論的で再現性があるが、局所最適に陥りやすく繰り返しや不自然な文章が生成されるリスクがある。
Greedy Decodingとは
Greedy Decodingとは、言語モデルのテキスト生成において、各タイムステップで語彙全体の確率分布から最も高い確率を持つトークンを常に選択するデコーディング手法である。最も単純かつ計算コストの低いデコーディング戦略であり、argmax操作のみで実装できる。
Greedy Decodingの動作原理
各タイムステップtにおいて、モデルは語彙V中の全トークンに対するlogitを出力する。Greedy Decodingではsoftmax後の確率分布からargmaxを取る。すなわち y_t = argmax P(w | y_1, ..., y_{t-1}, x) である。この操作をEOSトークンまたは最大長に達するまで繰り返す。
入力: 「日本で最も高い山は」
Step 1: P(富士山)=0.85, P(エベレスト)=0.05, ... → 「富士山」を選択
Step 2: P(で)=0.70, P(です)=0.25, ... → 「で」を選択
Step 3: P(す)=0.90, P(ある)=0.08, ... → 「す」を選択
出力: 「富士山です」
Greedy Decodingの利点
| 利点 | 説明 |
|---|---|
| 決定論性 | 同一入力に対して常に同一出力を返す |
| 計算効率 | argmaxのみ、追加のサンプリング処理不要 |
| 実装容易性 | 最もシンプルなデコーディングアルゴリズム |
| 再現性 | シード値に依存しない完全な再現性 |
Greedy Decodingの限界
Greedy Decodingには「局所最適の罠」という根本的な問題がある。各ステップで最適なトークンを選んでも、文章全体として最適なシーケンスにはならない場合がある。
代表的な症状は以下の3つである。(1) 繰り返し(degeneration): 同一フレーズが無限に繰り返される現象。「この商品は良い。この商品は良い。この商品は…」のようなループが発生する。(2) 多様性の欠如: 常に同じ応答しか生成できないため、対話システムでは不自然さが際立つ。(3) ありきたりな表現への偏向: 「です」「ます」「思います」など、汎用的だが情報量の少ない表現が選ばれやすい。
Beam Searchとの比較
Greedy Decodingの局所最適問題を緩和する手法としてBeam Searchがある。Beam Searchは各ステップで上位B個(ビーム幅)の候補シーケンスを保持し、最終的に最高スコアのシーケンスを出力する。Greedy DecodingはBeam Search B=1の特殊ケースと見なせる。
ただしBeam Searchもサンプリングベースの手法(Top-p、Top-k)と比較すると多様性に劣り、現在のLLM APIではBeam Searchよりもサンプリングが主流となっている。
現在の実用的位置づけ
2026年現在、Greedy Decoding(Temperature=0)は以下の用途で依然として有用である。(1) 構造化出力(JSON/XML)の生成: 形式の正確性が最優先。(2) 数学・コード生成: 正解が一意の場合。(3) 評価・ベンチマーク: 再現性が必要な比較実験。(4) 分類タスク: 最大確率ラベルの選択。
FAQ
Q1: Greedy DecodingとBeam Searchのどちらが速い?
Greedy Decodingの方が高速である。Beam Searchはビーム幅B倍のメモリと計算が必要であり、B=4の場合、理論上4倍の計算コストがかかる。
Q2: ChatGPTはGreedy Decodingを使っている?
デフォルトではサンプリングベース(Temperature=1.0, Top-p=1.0)である。Temperature=0を指定した場合にGreedy Decodingに切り替わる。APIのデフォルト設定はサンプリングモードである。
Q3: Greedy Decodingで生成された文章はなぜ退屈に見える?
Greedy Decodingは統計的に最も「無難な」トークンを選び続けるため、人間が書く文章に比べて予測可能性が高く、意外性や創造性に欠ける。人間の文章は時に低確率の表現を選ぶことで豊かさを生むが、Greedy Decodingにはその機能がない。