【エンコーダー・デコーダー】

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

最終更新:
💡 入力の表現を作る係と、出力を生成する係

ニューラルネットワークで、入力を数値の中間表現に変えるエンコーダーと、その表現を使って出力を作るデコーダーを組み合わせる構造。機械翻訳や要約など、入力から別の系列を生成する用途に使われる。

📌 このページのポイント
エンコーダー・デコーダー:翻訳の例 入力文 猫が座っている 出力文 A cat is sitting. エンコーダー 入力を表現に変換 デコーダー 出力を生成 中間表現の列 参照する 一つの圧縮データにするとは限らない
Transformer型の説明用の図です。中間表現は数値のベクトルの列。デコーダーは、生成済みのトークンも使って次のトークンを出します。出力が正しいことを保証する図ではありません。
ひよこ ひよこ
エンコーダー・デコーダーってどういう仕組み?
ペンギン先生 ペンギン先生
翻訳なら、エンコーダーが入力文から数値の表現を作り、デコーダーがそれを参照して別の言語の文を生成するよ。「入力を処理する係」と「出力を作る係」に分けた構造なんだ。
ひよこ ひよこ
一つの意味の塊に圧縮するの?
ペンギン先生 ペンギン先生
必ずしもそうではないよ。たとえば原型のTransformerでは、入力の各位置に対応するベクトルの列を作る。文字列を小さく圧縮したファイルや、人が読める意味の説明そのものではないんだ。
ひよこ ひよこ
デコーダーは、どこを見て書くの?
ペンギン先生 ペンギン先生
Transformerの例では、注意機構でエンコーダー側の表現を参照する。同時に、すでに出力したトークンも使い、次のトークンを順に生成するんだ。どこを参照するかも学習の結果で決まるよ。
ひよこ ひよこ
Transformerなら、必ず両方ある?
ペンギン先生 ペンギン先生
2017年の原論文には両方があるけれど、Transformerを使うモデルがすべて同じ構造とは限らないよ。エンコーダー中心の分類モデルや、別のエンコーダーを置かずに生成するデコーダー型もあるんだ。
ひよこ ひよこ
翻訳なら、両方あるほうが必ずいい?
ペンギン先生 ペンギン先生
構造の名前だけでは決められないよ。T5はこの構造で翻訳や要約などを扱う一例。一方、デコーダー型でも入力文の続きとして訳文を生成できる。精度や計算量はモデル規模、学習、入力と出力の長さなどの条件をそろえて比べる必要があるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「エンコーダー・デコーダー」って出てきたら「入力の表現を作る部分と、それを使って出力する部分の組み合わせ」と思えばだいたいOK!
📖 おまけ:英語の意味
「Encoder-Decoder」 = 符号化器・復号化器
💬 ここではニューラルネットの構造を指すよ。encodeは表現へ変換すること、decodeはその表現を使って出力を得ること。必ず元の入力を復元するという意味ではないんだ。

参考資料

← 用語集にもどる