Decoder (Transformer) — デコーダ
デコーダ(英: Decoder)とは、機械学習や深層学習において、エンコードされた表現(例えば、コンテキストベクトルやエンコーダから得られた隠れ状態のシーケンス)を出力データシーケンス(例えば、テキストや画像)に変換することを主なタスクとするニューラルネットワークのコンポーネントである。デコーダは、通常、自己回帰的な方法で、出力を段階的に生成する。
より広い意味では、情報理論においてデコーダとは、エンコードされたデータを元の、または理解可能な形式に戻すあらゆるデバイスやアルゴリズムを指す。
コンセプトと目的
エンコーダが入力データの理解と圧縮を担当するのに対し、デコーダは出力データの生成と展開を担当する。デコーダは、コンパクトで情報量の多い表現を受け取り、それを別の言語の文、画像のテキスト記述、あるいは一連の音符など、目的の形式に逐次的に変換する。
ほとんどのデコーダの重要な特徴は、その自己回帰的な性質である。シーケンスの次の要素(例えば、単語やピクセル)を生成するために、エンコードされた表現と、それまでに生成されたすべての要素の両方を使用する。
様々なアーキテクチャにおけるデコーダ
オートエンコーダにおけるデコーダ
オートエンコーダアーキテクチャでは、デコーダはエンコーダと逆のタスクを実行する:
- エンコーдаは入力データを隠れ表現に圧縮する。
- デコーダはこの隠れ表現を受け取り、そこから元のデータを復元(再構築)しようと試みる。
このようなネットワークを訓練することで、デコーダを単独で使用して、その入力に潜在空間からのベクトルを与えることによって新しいデータを生成することが可能になる。
回帰型ニューラルネットワーク(RNN/LSTM)におけるデコーダ
RNNやLSTMに基づく古典的なsequence-to-sequence(seq2seq)モデルでは、デコーダは回帰型ネットワークであり、出力シーケンスをトークンごとに生成する。
- 動作原理: デコーдаは、エンコーダの最終的な隠れ状態(コンテキストベクトル)で初期化される。各ステップで、以前に生成されたトークンと自身の前の隠れ状態を入力として受け取り、次のトークンを生成して状態を更新する。このプロセスは、特別なシーケンス終了トークン(`<EOS>`)が生成されるまで続く。
トランスフォーマーアーキテクチャにおけるデコーダ
トランスフォーマーアーキテクチャに基づくデコーダも自己回帰的に動作するが、その内部構造は異なる。これは、同一の層を個積み重ねたスタックで構成されており、各層には3つの主要なサブレイヤーがある:
- マスク付きマルチヘッド自己アテンション (Masked Multi-Head Self-Attention): このメカニズムはエンコーダと同様に機能するが、一つ重要な違いがある。それはマスキングである。マスクにより、各ポジションがシーケンス内の後続のポジションに「注意を向ける」ことができなくなる。これにより、位置の予測が、位置までの既知の出力にのみ依存することが保証され、自己回帰的な特性が維持される。
- マルチヘッドクロスアテンション (Multi-Head Cross-Attention): これはデコーダとエンコーダを結びつける重要なメカニズムである。ここでは、クエリ(Query)は前のデコーダ層から、キー(Key)とバリュー(Value)はエンコーダの出力表現から供給される。これにより、デコーダは生成の各ステップで、入力シーケンスの最も関連性の高い部分に焦点を当てることができる。
- フィードフォワードネットワーク (Feed-Forward Network): エンコーдаで使用されるものと同様である。
デコーダベースのモデルの種類
エンコーダ・デコーдаモデル
これは、エンコーダとデコーダがペアで動作する古典的なアーキテクチャである。
- 動作原理: エンコーダが入力データの表現を作成し、デコーダがその表現を使用して出力データを生成する。
- 例: 初期のトランスフォーマー、T5、BART。
デコーдаのみのモデル (Decoder-Only)
これらのモデルは、生成AIの分野で主流となっており、トランスフォーマーのデコーダスタックのみを使用する。
- 動作原理: このようなモデルでは、エンコーダが存在しないため、エンコーダへのクロスアテンションは存在しない。モデルは純粋に自己回帰的なモードで動作し、同じシーケンス内のすべての先行トークンに基づいて次のトークンを予測する。入力プロンプトと既に生成されたテキストは一緒に処理される。
- 応用: 与えられたテキストを継続するタスク(テキスト生成、対話システム、チャットボット)に最適である。
- 例: GPTシリーズ、LLaMA、Claude。
エンコーダとの関連
エンコーダとデコーダの相互作用は、変換タスクにおける基本的な原則である。
- エンコーダは、入力シーケンスに関する情報をベクトルの集合に圧縮する。
- デコーダは、このベクトルの集合を使用して、新しいシーケンスを逐次的に生成する。
クロスアテンションにより、デコーダは各ステップでエンコーダを「参照」し、現時点で元のテキストのどの部分に焦点を当てるべきかを判断できる。例えば、文を翻訳する際に、デコーダがドイツ語の単語を生成しているとき、入力された対応する英語の単語を「見る」ことができる。
関連項目
- GPT
参考文献
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.