エンコーダー・デコーダーとは
エンコーダー・デコーダー(Encoder-Decoder)とは、入力データを中間表現にエンコード(符号化)し、その中間表現からタスクに応じた出力をデコード(復号化)する2段階構造のモデルアーキテクチャです。自然言語処理では、Seq2Seqモデルの基本構造として広く使われています。
| ひとことで言うと | 入力を意味表現に変換する部分と、そこから出力を作る部分の2段構え。 |
|---|---|
| どこで使う | 翻訳、要約、質問応答、対話生成。 |
| 注意点 | アテンションと組み合わせないと、長い入力で性能が出ない。 |
エンコーダーの役割
エンコーダーは入力系列を処理し、その意味を圧縮した表現(潜在表現、隠れ状態)を生成します。RNNベースのエンコーダーでは最後の隠れ状態が、Transformerベースのエンコーダーでは各位置の出力が中間表現として使われます。
1入力テキスト元の文章
▶
2エンコーダー意味を読み取る
▶
3中間表現言語によらない形
▶
4デコーダー目的の形に組み立て
▶
5出力テキスト訳文・要約文
デコーダーの役割
デコーダーはエンコーダーの出力を受け取り、目標となる出力系列を1要素ずつ自己回帰的に生成します。各ステップで前のステップの出力とエンコーダーの表現を参照して次の要素を予測します。
代表的なモデル
RNNベースではLSTM/GRU Seq2Seqが古典的です。Transformerベースでは、T5やBARTがエンコーダー・デコーダー構造を採用しています。BERTはエンコーダーのみ、GPTはデコーダーのみを使用するモデルで、タスクの性質に応じて適切な構造が選択されます。