Hugging Face テキスト生成デコーディング手法ガイド
テキスト生成デコーディングの概要
自己回帰的な言語生成は、単語シーケンスの確率分布が、条件付きの次単語分布の積であると仮定しています。デコーディング手法の選択、つまりモデルがこの分布からどのように次のトークンを選択するかは、生成されるテキストの流暢さ、一貫性、および創造性に大きな影響を与えます。
Greedy Search
Greedy search は最も単純なデコーディング手法であり、各タイムステップで最も高い確率を持つトークンを選択します:$w_{t} = \text{argmax}{w} P(w \mid w{1:t-1})$。
主な制限事項:
- 繰り返し: Greedy search を使用するモデルは、頻繁に繰り返しのループに陥ります。
- 最適ではないシーケンス: 低い確率の初期トークンの背後に高い確率のシーケンスが隠れている場合、それを見逃してしまう可能性があります。例えば、ステップ $t+1$ で非常に可能性の高い単語が、ステップ $t$ で絶対的な最大確率の候補ではなかった場合、その単語に到達することはできません。
Beam Search
Beam search は、各タイムステップで num_beams 個の最も可能性の高い仮説を保持することで、高確率なシーケンスを見逃すリスクを軽減し、最終的に全体として最も高い確率を持つシーケンスを選択します。
Beam Search を N-gram Penalties で改善する
Beam search の繰り返しの性質に対抗するために、n-gram penalties を適用できます。no_repeat_ngram_size を設定することで、重複する n-gram を作成するトークンの確率は手動で 0 に設定されます。しかし、これは注意して使用する必要があります。例えば、2-gram penalty を設定すると、テキスト内で「New York」というフレーズが一度しか現れないようになります。
オープンエンド生成におけるトレードオフ
予測可能な長さのタスク(翻訳や要約など)には効果的ですが、Beam search はいくつかの理由から、オープンエンドな生成(ストーリーテリングなど)においては最適ではないことが多いです:
- 繰り返しの出力: 繰り返しが発生しやすい傾向があります。
- 予測可能性: 人間の言語は通常、高確率な単語のみの分布に従うわけではありません。Beam search は、しばしば予測可能すぎる、あるいは「退屈な」テキストを生成します。
Sampling Strategies
Sampling は、条件付き確率分布に従って次の単語をランダムに選択するため、生成を非決定論的にします。
基本的な Sampling と Temperature
純粋な Sampling は、支離離滅裂な「gibberish」につながる可能性があります。これを洗練させるために、temperature を使用して softmax 分布を鋭くすることができます。Temperature を下げると、高確率な単語の可能性が高まり、低確率な単語の可能性が減少します。Temperature が 0 に近づくにつれ、Sampling は Greedy decoding と等価になります。
Top-K Sampling
Top-K sampling は、分布を最も可能性の高い次の $K$ 個の単語にフィルタリングし、その間で確率質量を再分配します。これにより、一貫性を損なう原因となる低確率トークンの「long tail」を排除します。
制限事項: Top-K は分布の形状に適応しません。分布が「鋭い」場合、不適切な単語が含まれる可能性があります。分布が「平坦」な場合、妥当な候補を排除してしまう可能性があります。
Top-p (Nucleus) Sampling
Top-p sampling は、その累積確率が閾値 $p$ を超える最小の単語セットを動的に選択します。これにより、次の単語が予測不可能な場合はサンプルプールを拡大し、次の単語が非常に予測可能な場合はサンプルプールを縮小させることができます。
Decoding Methods の要約
| Method | Approach | Primary Strength | Primary Weakness |
|---|---|---|---|
| Greedy Search | 最も高い確率のトークン | 単純、高速 | 繰り返し、最適なパスを見逃す |
| Beam Search | 上位 $N$ 個の仮説 | 全体として高い確率 | 繰り返し、予測可能 |
| Sampling | 分布に基づくランダム選択 | 多様、創造的 | 支離滅裂になる可能性がある |
| Top-K | 上位 $K$ 個のトークン | gibberish を減少させる | 分布に関わらず固定のプールサイズ |
| Top-p | 累積確率 $p$ | 動的かつ流暢 | 繰り返しが発生する可能性がある |
研究によれば、Sampling 方法はオープンエンドなタスクにおいてより人間らしいと感じられることが多い一方で、Beam search はモデルのトレーニング目的が具体的に適応されている場合に、より流暢になる可能性があります。最終的に、デコーディング戦略の選択は、特定のユースケースと、一貫性と創造性の間の望ましいバランスに依存します。