次のトークンが選ばれるプロセスについては、Transformerモデルのデコーダが確率分布を計算し、それに基づいて適切なトークンを選択する方法を示します。このプロセスは、生成したいテキストが自然でかつ一貫性のある内容になるよう設計されています。このプロセスを理解するためには、特に以下のステップに注意する必要があります。
1. Transformerデコーダによる確率分布の生成
まず、デコーダの次のトークン生成プロセスは、エンコーダが生成したコンテキスト(つまり入力シーケンスの情報)と、これまでに生成したターゲットシーケンスの情報を使って行われます。
- 入力:
- すでに生成されたターゲットシーケンス(これまでの出力トークン)。
- エンコーダの出力(エンコーダからのコンテキスト情報)。
デコーダはこれらを使い、次のトークンの確率分布を生成します。この出力は、語彙全体に対する確率のベクトルです。このベクトルは、ソフトマックス関数を用いて確率に変換されます。
- ロジット(Logits):各トークンに対する生のスコアであり、デコーダの最終的な出力です。
- ソフトマックス変換:語彙全体のトークンに対してそれぞれのスコアが確率に変換されます。この確率は、次のトークンとして選択される可能性の度合いを示します。
\[
P(y_t | y_{<t}, X) = \text{softmax}(f(y_{<t}, X))
\]
ここで、\( P(y_t | y_{<t}, X) \) は次のトークン \( y_t \) の確率を示し、\( y_{<t} \) はこれまでのターゲットシーケンス、\( X \) はエンコーダの出力(ソースシーケンスのコンテキスト)です。
2. デコーディング手法に基づくトークンの選択
次に、生成された確率分布に基づいてどのトークンを選ぶかが決まります。この際に用いられるのが、さまざまなデコーディング手法です。それぞれの手法によってトークンが選ばれる方法は異なります。
a. グリーディーデコーディング
グリーディーデコーディングでは、次のトークンとして最も確率が高いトークンを選択します。この方法はシンプルで直感的ですが、必ずしも全体の最適なシーケンスを保証するものではありません。
- 確率分布の取得:全語彙に対する確率が得られます。
- 最大確率の選択:確率が最大のトークンを選び、それを次のトークンとして出力します。
b. ビームサーチ
ビームサーチは、複数の候補シーケンスを同時に探索し、最終的に最も高い確率を持つシーケンスを選ぶ方法です。
- ビーム幅の設定:最初にビーム幅(保持する候補シーケンスの数)を設定します。
- 候補シーケンスの展開:各ビームに対して次のトークンの確率分布を取得し、その中から上位のトークンを選びます。
- ビームの更新:次のステップでは、新たに選ばれたトークンを追加して展開し、ビーム幅分のシーケンスを追跡し続けます。
この手法により、単一のトークン選択では見逃されてしまう良好なシーケンスを確保できる可能性が増します。
c. トップKサンプリング(Top-K Sampling)
トップKサンプリングでは、次のトークンを選ぶ際に確率が高い上位K個のトークンからランダムに選びます。
- 確率分布の取得。
- K個のトークンを選択:確率が高い上位K個のトークンを選びます。
- サンプリング:上位K個のトークンの中から、確率に基づいてランダムに1つのトークンを選択します。
この手法により、一定の多様性を持たせたテキスト生成が可能です。
d. トップPサンプリング(Top-P Sampling、Nucleus Sampling)
トップPサンプリング(Nucleus Sampling)では、累積確率が指定した閾値 \( P \)(例えば 0.9)を超えるまでトークンを選び、その中から次のトークンをランダムに選択します。
- 確率分布の取得。
- 確率のソートと累積確率の計算:確率分布を降順にソートし、累積確率を計算します。
- 閾値Pの設定:累積確率が \( P \) 以上になるトークンを選択します。
- サンプリング:選択されたトークンセットから次のトークンをランダムに選択します。
この手法は、確率分布における重要なトークンのみを考慮しつつ、多様性を持たせることが可能です。
e. 温度スケーリング(Temperature Scaling)
温度スケーリングを使用する場合、次のトークンを選ぶ際の確率分布の「平坦さ」を制御します。温度 \( T \) が高ければ多様性が増し、低ければ確実性が増します。
- 確率分布の取得。
- 温度の適用:確率分布を温度 \( T \) で調整します。高温では確率分布が平坦になり、ランダムな選択が増えます。
\[
P(y_t) = \text{softmax}\left(\frac{\text{logits}}{T}\right)
\]
- トークンの選択:調整された確率に基づいてトークンを選びます。
3. トークンの生成とシーケンスの更新
選ばれたトークンは現在のシーケンスに追加されます。このシーケンスは、次のトークンを生成する際のデコーダの入力として使用され、これを繰り返すことで最終的な出力シーケンスが生成されます。
- 出力シーケンスの更新:各ステップごとに選ばれたトークンを追加していきます。
- 終了条件:終了トークン(\<eos>)が生成されるか、最大長に達するまで生成が続けられます。
まとめ
Transformerモデルで次のトークンが選ばれるプロセスは、以下のように進行します。
- デコーダによる次のトークンの確率分布の生成。
- デコーディング手法に基づくトークンの選択:
- グリーディーデコーディング:最大確率のトークンを選択。
- ビームサーチ:複数の候補を探索し、最適なシーケンスを選択。
- トップKサンプリング:上位K個からランダムに選択。
- トップPサンプリング:累積確率が閾値 \( P \) を超えるセットからランダムに選択。
- 温度スケーリング:温度によって確率分布を平坦化しランダム性を調整。
- 選ばれたトークンをシーケンスに追加し、次のトークン生成を繰り返す。
どのデコーディング手法を採用するかによって、モデルが生成する出力の一貫性、精度、多様性が異なるため、タスクに応じて適切な手法を選択することが重要です。