エンコーダー・デコーダーEncoder-Decoder
読む側と書く側を分けた二部構成
- エンコーダー・デコーダーは読む側と書く側を分けた構造です。前半が入力をまとめて抱え、後半がそのまとめを見て新しい文を作ります。
- エンコーダーは文全体を前後の区別なく一度に見ます。デコーダーは前から一断片ずつつなぎ書きします。
- 二つをつなぐのは原文ではなく、意味だけを残した数値の束です。文字そのものは渡っていきません。
- 翻訳や要約のように入力と出力の形が違う仕事に向いた構造です。
- 最近のモデルはエンコーダーだけ使ったりデコーダーだけ使ったりもします。することに合わせて必要な側だけ残したのです。
目次
1たとえで理解する
引っ越しの日に部屋をまるごとトラックへ押し込む人はいません。クローゼットの服も本棚の本もいったん箱に丁寧に詰め、箱の側面に何が入っているか書いておきます。この瞬間、物がどの引き出しの何段目にあったかは消えて、何がどれだけあるかだけが残ります。
新しい家に着いたら箱を一つずつ開けて、その家に合わせてまた置いていきます。部屋の広さも窓の位置も違うので、以前の配置をそのまま移すことはできません。箱の中身を見て、この家に似合う場所に新しく置くのです。
荷物を詰める側がエンコーダー、新しい家で解く側がデコーダーです。そしてその間を渡っていく箱が要約された意味です。
2くわしく
詰める側は文をまるごと見渡します
エンコーダーは入ってきた文を最初から最後まで一度に見ます。三番目の単語を処理しながら十番目の単語を参照しても何の問題もありません。もうすべて入ってきている文だからです。
この自由さが大事な理由があります。「はしを取って」のはしが箸なのか橋なのかは、後に続く言葉を見なければ分かりません。エンコーダーは後ろまで見られるので、こうした曖昧さを先に整理しておけます。
見渡し終えると、文は断片ごとに一つずつ数値の束に変わります。この数値の束には、その断片が文の中でどんな役割を果たしたかが一緒に入ります。荷物を箱に詰めるとき物だけ入れるのではなく、側面に中身を書いておくのと同じです。
書く側は一断片ずつつなげます
デコーダーは事情が違います。まだ作っていない後ろの部分を前もって見ることはできないからです。今まで自分が書いた断片とエンコーダーが渡してくれた箱、この二つだけを見て次の一断片を選びます。選んだ断片を後ろにつなげ、また最初から読み、また次の断片を選びます。
だからデコーダーには後ろを見えなくする覆いがかかっています。学習するとき正解の文をまるごと入れてしまうと次の断片をカンニングしてしまうので、まだ来ていない場所はわざと隠しておくのです。
出力が終わったという合図も自分で作ります。もうつなげるものがないと判断すると、「ここまで」に当たる断片を出して止まります。
箱をずっとめくり返せるようにした仕掛け
初期の構造には物足りない点がありました。どれだけ長い文でも箱一つに全部押し込まなければならなかったのです。荷物の多い家を箱一個で運ぼうとすると、前のほうに詰めた物が押しつぶされてしまいます。文が長くなるほど前の部分を忘れる現象はこうして起きました。
解決策は箱を一つにまとめないことでした。エンコーダーが断片ごとに作った数値の束をそのまま残しておき、デコーダーが一断片を書くたびにその中から今必要なものだけを選んでめくり返すようにしたのです。この仕掛けがアテンションです。
「昨日友達がくれた本を今日読みました」を訳すなら、時制を書くときは「昨日」が入った箱を、目的語を書くときは「本」が入った箱を見ます。必要な箱だけを開けて見るわけなので、文が長くなっても前の部分がぼやけません。
最近は片方だけ使うこともあります
することによって必要な側が変わります。文の意味をつかむ仕事にはデコーダーが要りません。分類や検索のように答えが短く決まる仕事はエンコーダーだけあるモデルで十分です。
反対に会話や文章作りのようにずっとつなぎ書きする仕事にはデコーダーだけあるモデルが使われます。入力として受け取った質問もすでに書いてある文として扱い、その後ろを続ければいいからです。最近の対話型モデルの大半がこちらです。
両方そろえた構造は、入力と出力がはっきり違う仕事に残っています。翻訳や要約のように入ってくる文と出ていく文の言語や長さが大きく違うときです。
3もう少し正確に
エンコーダーは入力断片を文脈が反映された数値の束に変える部分で、デコーダーはその数値の束と今までの出力を一緒に受け取って次の断片の確率を出す部分です。デコーダーの中で自分の出力を見る通路とエンコーダー側を見る通路は別々にあり、後ろを隠す処理をマスキングと呼びます。
たとえがずれる点もあります。引っ越しの箱は物を入れたり出したりしてもそのままですが、エンコーダーが作った数値の束には原文が残っていません。戻して原文をそのまま復元することはできません。また箱は詰め終わってからトラックが出発しますが、デコーダーは断片を一つ作るたびにエンコーダー側を新しく見直します。一度受け取って終わりの関係ではありません。
エンコーダー・デコーダーは特定のモデルの名前ではなく、部品を配置する方式です。循環型ニューラルネットワークでも、トランスフォーマーでも同じ配置を作れます。
4やってみる
5よくある誤解
エンコーダーが文を圧縮ファイルのように保存すると思われがちですが、実際には原文を元に戻せない形で意味だけを残すため、解凍のような復元はできません。
デコーダーがエンコーダーの結果を一度しか受け取らないと見なされがちですが、実際には断片を一つ作るたびにエンコーダー側をまた参照します。
すべての言語モデルがエンコーダーとデコーダーを両方持っていると思われがちですが、実際には最近の対話型モデルの多くがデコーダーだけでできています。
7ひとこと要約
つまりエンコーダー・デコーダーは入力を意味だけ残して抱える側と、その意味を見て新しい文を一断片ずつ書いていく側を分けた構造です。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02