エンコーダー / デコーダー えんこーだー / でこーだー
EncoderDecoderTransformerseq2seq自然言語処理アーキテクチャ
エンコーダー / デコーダーについて教えて
簡単に言うとこんな感じ!
エンコーダーは「日本語を読んで意味を把握する翻訳者の頭の中」、デコーダーは「その理解をもとに英語を書き出す手」のイメージだよ。入力を理解する部分と、出力を生成する部分が分かれてるんだ!
エンコーダー / デコーダーとは
エンコーダー(Encoder) は入力シーケンスを受け取り、文脈を含んだ内部表現(コンテキストベクトル) に変換する役割を持ちます。デコーダー(Decoder) はそのコンテキストベクトルを受け取り、目的の出力シーケンスを逐次生成します。
Transformerでは、エンコーダーは自己アテンション(Self-Attention) を用いて入力全体を相互参照し、デコーダーは自己アテンション + クロスアテンション を用いてエンコーダーの出力を参照しながら生成を行います。翻訳・要約・質問応答など「入力と出力の言語/形式が異なるタスク」に特に強い構造です。
3種類のTransformerアーキテクチャ
| 種類 | 構成 | 特徴 | 代表モデル |
|---|---|---|---|
| Encoder-only | エンコーダーのみ | 文の分類・理解が得意 | BERT、RoBERTa |
| Decoder-only | デコーダーのみ | テキスト生成が得意 | GPT系、LLaMA、Claude |
| Encoder-Decoder | 両方 | 翻訳・要約が得意 | T5、mT5、MarianMT |
歴史と背景
- 2014年:seq2seq(LSTM + Encoder-Decoder)がGoogle翻訳の精度を大幅向上
- 2017年:「Attention Is All You Need」でTransformerベースのEncoder-Decoderが登場
- 2018年:BERTがEncoder-onlyで成功し、文理解タスクのデファクトに
- 2020年:T5がEncoder-Decoderで多目的タスクを統一的に扱うアプローチを提案
- 現在:LLMの主流はDecoder-only(GPT、LLaMA、Claude等)
エンコーダーとデコーダーの処理の違い
【エンコーダー(例:BERTの文分類)】
入力: 「この映画は最高だった」
↓ トークン化・埋め込み
↓ 自己アテンション(全トークン相互参照)
出力: 各トークンの文脈ベクトル → 分類ヘッドで「ポジティブ」と判定
【デコーダー(例:GPTの文生成)】
入力: 「今日のランチは」
↓ 因果マスク付き自己アテンション(過去のみ参照)
↓ 次のトークンを確率で予測
出力: 「カレー」→「カレーにしよう」→ ... と逐次生成
関連用語
- マルチヘッドアテンション — エンコーダー・デコーダー両方の中核機構
- クロスアテンション — デコーダーがエンコーダー出力を参照する仕組み
- フィードフォワード層 — アテンション後に続くTransformerの基本層
- 事前学習 — エンコーダー・デコーダーモデルの学習方法
- トークン — エンコーダー・デコーダーが処理する基本単位