Transformerアーキテクチャ

エンコーダー / デコーダー えんこーだー / でこーだー

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の文生成)】
入力: 「今日のランチは」
  ↓ 因果マスク付き自己アテンション(過去のみ参照)
  ↓ 次のトークンを確率で予測
出力: 「カレー」→「カレーにしよう」→ ... と逐次生成

関連用語