エンコーダー・デコーダー(NLP)

Encoder-Decoder

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

エンコーダー・デコーダー(Encoder-Decoder)とは、入力データを中間表現にエンコード(符号化)し、その中間表現からタスクに応じた出力をデコード(復号化)する2段階構造のモデルアーキテクチャです。自然言語処理では、Seq2Seqモデルの基本構造として広く使われています。

エンコーダーの役割

エンコーダーは入力系列を処理し、その意味を圧縮した表現(潜在表現、隠れ状態)を生成します。RNNベースのエンコーダーでは最後の隠れ状態が、Transformerベースのエンコーダーでは各位置の出力が中間表現として使われます。

デコーダーの役割

デコーダーはエンコーダーの出力を受け取り、目標となる出力系列を1要素ずつ自己回帰的に生成します。各ステップで前のステップの出力とエンコーダーの表現を参照して次の要素を予測します。

代表的なモデル

RNNベースではLSTM/GRU Seq2Seqが古典的です。Transformerベースでは、T5やBARTがエンコーダー・デコーダー構造を採用しています。BERTはエンコーダーのみ、GPTはデコーダーのみを使用するモデルで、タスクの性質に応じて適切な構造が選択されます。