エンコーダー・デコーダー

Encoder-Decoder

エンコーダー・デコーダーとは

エンコーダー・デコーダー(Encoder-Decoder)は、入力データを中間表現に変換するエンコーダーと、その中間表現から出力データを生成するデコーダーの2つのコンポーネントで構成されるニューラルネットワークのアーキテクチャパターンです。Sequence-to-Sequence(Seq2Seq)タスクの基本構造として、機械翻訳や要約生成などで広く使用されています。

表:エンコーダー・デコーダーの要点まとめ
ひとことで言うと入力を一度「意味の塊」に圧縮し、そこから出力を組み立てる2段構えの構造。
どこで使う機械翻訳、要約、音声認識、画像キャプション生成。
注意点圧縮しきれない長い入力では情報が落ちる。アテンション機構で補うのが定番。

エンコーダーの役割

エンコーダーは入力系列を読み取り、固定長または可変長の内部表現(文脈ベクトル)に圧縮します。RNNベースのエンコーダーでは最後の隠れ状態が文脈ベクトルとなり、Transformerベースのエンコーダーでは各位置の表現が出力されます。エンコーダーは入力全体の意味を捉え、デコーダーが利用可能な形に情報を符号化する役割を担います。

図:翻訳を例にした処理の流れ
1入力文「私は学生です」
▶
2エンコーダー意味をベクトルに圧縮
▶
3中間表現言語によらない意味の塊
▶
4デコーダー意味から文を組み立て
▶
5出力文「I am a student」

デコーダーの役割

デコーダーはエンコーダーの出力を受け取り、目的の出力系列を1要素ずつ自己回帰的に生成します。Transformerのデコーダーでは、マスク付き自己注意機構(未来のトークンを参照しない)とクロスアテンション(エンコーダーの出力を参照)を組み合わせて出力を生成します。

エンコーダー・デコーダーの応用

このアーキテクチャは機械翻訳(T5、BART)、音声認識(Whisper)、画像キャプション生成など、入力と出力の形式が異なるタスクに広く応用されています。BERTはエンコーダーのみ、GPTはデコーダーのみを使用しており、タスクの性質に応じてエンコーダーとデコーダーの組み合わせ方が選択されます。