About

Transformerとは?Self-Attentionで並列に読む仕組み

RNNの逐次処理の限界をどう越えたか

Transformerはモデルではなく設計方式だ。2017年のGoogleの論文「Attention Is All You Need」で出てきた。Encoderだけを使えばBERT、Decoderだけを使えばGPT・Claude・GeminiのようなLLMになる。

それ以前のRNN・LSTMは文を前から1単語ずつ読む必要があり、並列に回しにくく、文が長いと前の方の情報がぼやけた。TransformerはSelf-Attentionで文の中のすべての位置を一度に見る。トークンごとにQuery・Key・Valueのベクトルを作り、ほかのトークンをどれだけ参考にするか(attention score)を計算する。順番の情報はPositional Encodingで別に足す。

3種類の名前を混ぜない

「LLMとディープラーニングは何が違う?」から始まって、「BERTはディープラーニングの下位概念?」「ClaudeもGPT系?」まで質問が続いたことがある。詰まるところは毎回同じだった。構造の名前(Transformer、Encoder、Decoder)、モデルの名前(BERT、GPT、Claude)、道具の名前(Hugging Face transformers、Claude Code)が1つの文に混ざって出てくる。3つを分けたら全部ほどけた。

Rails開発者にはこのたとえがいちばん早く通じた。

MVCパターン       ↔  Transformerの構造            (概念、設計方式)
Rails / Django    ↔  Hugging Face transformers   (その概念を使いやすくしたコード)

Transformer is a design. Models pick parts of it.Transformer (2017)Attention Is All You NeedEncoder-onlyBERTunderstand: classify, searchDecoder-onlyGPT, Claude, Gemini, Llamagenerate: chat, writeEncoder-Decoderoriginal paper, T5convert: translateEncoder sees both sides of a blank. Decoder only sees what came before.HF transformers is a Python library, not the architecture.

EncoderとDecoderの違いは「後ろを見られるか」だ。Encoderは「私は[?]だ」のように空欄の前後を全部見て当てる。Decoderは「私は学生」までだけを見て次のトークンを当てる。後ろはcausal maskで隠す。

BERT(Encoder) GPT系LLM(Decoder)
学習 穴埋め 次トークン予測
得意なこと 分類・検索・埋め込み 生成・対話・推論
規模 base 1.1億・large 3.4億パラメータ 数十億以上

紛らわしい名前も一緒に整理しておくと楽だ。GPTはOpenAIのモデルのブランドなので、「Decoder-only」と同じ意味ではない。Claude・GeminiはAnthropic・Googleがそれぞれ作ったDecoderベースのLLMで、GPT系ではない。Claude Code・ChatGPTはモデルではなく、モデルを使う道具・アプリだ。

LLMは別の軸だ

「Transformerの中にLLMとBERTがある」とまとめると軸が混ざる。Encoder-only・Decoder-onlyは構造の軸で、LLM(大規模言語モデル)は規模・用途の軸だ。今のLLMがほぼすべてDecoder-onlyなので、同じ言葉のように使われているだけだ。

同じ構造なのになぜ性能が違うのか

骨組みが似ているのは確かだ。差は構造の外で生まれる。規模(パラメータ・層数)、学習データ、その後の追加学習(RLHFなど)、tokenizerがすべて違い、その結果である重みはまったく別物になる。Shopifyと個人ブログがどちらもMVCだからといって似たアプリではないのと同じだ。重みが何を持っているかは構造は回路図、重みはつまみの位置に続けて書いた。

モデル名と構造が混ざってチーム内の話がかみ合わないなら、negabaroに気軽に相談してもらって構わない。

キーコンセプト

1

入力テキストをトークンに分割 → 各トークンを埋め込みベクトルに変換

2

Positional Encodingを追加 — トークンの位置情報をベクトルに加算

3

各トークンからQuery(Q)、Key(K)、Value(V)ベクトルを生成

4

Attention Scoreを計算: softmax(QK^T / √d) × V — 各トークンが他のトークンにどれだけ注目するかを決定

5

Multi-Head Attention: 複数のattentionを並列実行 → 多様な関係パターンを捕捉

6

Feed-Forward Network + Layer Normalization + Residual Connectionで最終出力を生成

メリット

  • ✓ 完全な並列処理が可能 → GPU活用を最大化
  • ✓ 長いシーケンスでも情報損失なし(Self-Attention)
  • ✓ 多様なタスクに汎用的に適用
  • ✓ スケーリング則(モデルが大きいほど性能向上)

デメリット

  • ✗ O(n²)メモリ — シーケンス長の二乗に比例するメモリ使用
  • ✗ 大規模学習に膨大なGPU/TPUが必要
  • ✗ 位置情報を別途エンコードする必要がある
  • ✗ 学習データの偏りをそのまま反映

ユースケース

GPTシリーズ(GPT-4、GPT-4o) Claude(Anthropic) BERT / RoBERTa(文章理解) T5 / BART(翻訳、要約) Vision Transformer(ViT)
← ニューラルネットワークとは?層と重みと逆伝播で学ぶ仕組み 事前学習(Pre-training)とは?LLMが汎用知識を身につける段階 →