Nexaflow
サービス導入事例ブログ勉強会会社情報
資料請求お問い合わせ

Nexaflow

社会を支える人々と伴に、
未来の希望を創る

サービス

  • プライシング戦略支援
  • Signal Foundry
  • AIトランスフォーメーション

会社情報

  • 会社概要
  • ミッション
  • メンバー

リソース

  • ブログ
  • 導入事例
  • お知らせ
  • 資料ダウンロード

© 2026 Nexaflow Inc. All rights reserved.

利用規約プライバシーポリシー
ホーム/論文解説/【論文解説】Transformer「Attention Is All You Need」――再帰をやめて何を計算しているのか
論文解説

【論文解説】Transformer「Attention Is All You Need」――再帰をやめて何を計算しているのか

12分で読める|2026/07/07|
AI新技術革新データ分析

AI・DX活用について相談する

最適なプランをご提案します。

お問い合わせ資料ダウンロード

よく読まれている記事

  1. 1Claude Cowork完全ガイド
  2. 2Ada徹底解説:ARR成長率108%、ノーコードAIエージェントの先駆者を完全分析
  3. 3Clay(クレイ)とは?評価額31億ドルのGTMオートメーションを完全解説
  4. 4a16z(エーシックスティーンゼット)とは?読み方・投資先・特徴を解説
  5. 5イーロン・マスクが語る2026年AGI実現とユニバーサル高所得の未来

この記事をシェア

B!

「再帰をやめて、全単語を一度に見る」——この一手だけで、翻訳精度と学習速度が同時に上がることがあるのか。あるとすれば、Self-Attentionは具体的に何を計算していて、決定打はどの一点だったのか。本記事はこの問いに答えます。

「それは無理だ」——著名な計算言語学者Hans Uszkoreitは、息子Jakob Uszkoreitの仮説をそう一蹴しました。2017年当時、自然言語処理はRNN(再帰型ニューラルネットワーク)が前提で、「言語は順番に処理するもの」が業界の共通認識でした。

Jakobは仲間7人とともに、その前提に挑む論文「Attention Is All You Need」(NeurIPS 2017でGoogleから発表、arXiv

.03762)を書き上げます。では、再帰の代わりにAttentionは何を計算していたのか。次節から見ていきます。

一次文献を自分の手で確かめる、というスタンス

私はこの記事を、「AIエージェント論文おすすめ11選」で立てた「二次解説より先に一次文献へ戻る」という方針の延長として書いています。あの記事で参照に挙げた11本のうち、最も土台になるのがTransformerだったので、この記事で単独の詳細解説として掘り下げます。

Transformerについては解説記事も動画も無数にありますが、私は理解の合格ラインを、図をどれだけ眺めたかではなくAttentionの一行をNumPyで書けるかに置くべきだと考えています。原論文は15ページで、数式もそれほど多くありません。二次解説を読み込むより、原論文と実装コードを自分の手で写経する方が、結局は速く腑に落ちます。ReActやChain-of-Thoughtを扱った回と同じく、本記事も原論文を図解と実装の両方で読むシリーズの一本です。

そしてこの記事で本当に持ち帰ってほしいのは、著者8人のその後の巨額の評価額エピソードではありません(掴みとしては使いますが、本題ではありません)。持ち帰る価値があるのは、「逐次処理をやめ、任意の2単語を1ステップで結ぶ」という一点の設計判断です。この判断が具体的に何を指すのか、まず言葉を定義します。

前提:Self-Attentionと最大パス長を定義する

後の主張を検証可能にするために、2つの用語を先に定義しておきます。

Self-Attention

Self-Attentionとは、入力系列の各トークンの新しい表現を、全トークンのベクトルの加重平均として作る操作です。重みは次の式で決まります。

Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V
  • Q (Query): 「何を探しているか」を表すベクトル
  • K (Key): 「何を持っているか」を表すベクトル
  • V (Value): 実際に渡す情報を持つベクトル

QとKの内積QK^Tは、各トークンペアの関連度スコアです。これをsoftmaxにかけると、各トークンについて「他の全トークンにどれだけ注目するか」という重みが、合計1.0の形で得られます。この重みでVを加重平均したものが、そのトークンの新しい表現になります。

√d_kで割る理由: Q・Kの次元d_kが大きくなるほど、内積の分散はd_kに比例して大きくなります。スコアの絶対値が大きくなりすぎると、softmaxの出力はほぼ0か1に張り付き、勾配がほとんど流れなくなります(勾配消失)。√d_kで割ってスコアのスケールを元に戻すことで、この問題を緩和しています。原論文はこの理由を脚注で明示しています。

最大パス長

最大パス長とは、系列内の任意の2トークンが、計算グラフ上で何ステップ離れているかを表す量です。

RNNでは、100トークン離れた単語同士の依存関係を学習するには、情報が100ステップかけて順に伝わる必要があります(最大パス長O(n))。Self-Attentionでは、QK^Tの一行がどのトークン同士も直接結ぶため、距離に関わらず1ステップで参照できます(最大パス長O(1))。

この2つの定義があれば、「なぜTransformerは革新的だったのか」という主張を、後段で検証可能な形で扱えます。

全体像:Encoder-Decoderの6層×2構造

個別の機構に入る前に、全体の設計を1枚で押さえておきます。

Transformerアーキテクチャの全体像

Transformerは、**Encoder(入力を理解する)とDecoder(出力を生成する)**の2つのスタックから構成されます。

Encoder(6層): 各層はSelf-Attention層とFeed Forward層からなり、層の後にLayer Normalizationが入ります。

Decoder(6層): 各層はMasked Self-Attention層(未来の情報を見せない)、Encoder-Decoder Attention層、Feed Forward層からなります。

6層×2という積み上げの中で、実際に計算しているのは、ほぼSelf-Attentionと行列の掛け算だけです。次の節で、その中身を手で書いてみます。

Self-Attentionを手で書く

理論を追うより、20行程度のNumPyコードを自分の手で動かした方が、Self-Attentionの中身は速く掴めます。

Step 1: 入力の準備

import numpy as np

# 3つの単語、各4次元の埋め込みベクトル(簡略化)
# "猫" "が" "座った" に相当
np.random.seed(42)
X = np.random.randn(3, 4)  # (seq_len=3, d_model=4)

print("入力行列 X:")
print(X.round(2))

Step 2: Q, K, V の計算

d_k = 4  # Key/Queryの次元数

# 重み行列(学習で獲得されるパラメータ)
W_Q = np.random.randn(4, d_k)
W_K = np.random.randn(4, d_k)
W_V = np.random.randn(4, d_k)

# Q, K, V を計算
Q = X @ W_Q  # Query: 各単語が「何を探しているか」
K = X @ W_K  # Key:   各単語が「何を持っているか」
V = X @ W_V  # Value: 実際に渡す情報

print("Q (Query):", Q.shape)  # (3, 4)
print("K (Key):",   K.shape)  # (3, 4)
print("V (Value):", V.shape)  # (3, 4)

Step 3: Attention Scoreの計算

def softmax(x):
    exp_x = np.exp(x - np.max(x, axis=-1, keepdims=True))
    return exp_x / np.sum(exp_x, axis=-1, keepdims=True)

# Scaled Dot-Product Attention
scores = Q @ K.T / np.sqrt(d_k)  # (3, 3)
attention_weights = softmax(scores)
output = attention_weights @ V     # (3, 4)

print("\nAttention重み(各単語が他の単語にどれだけ注目しているか):")
print(attention_weights.round(3))
print("\n出力(文脈を考慮した新しい表現):")
print(output.round(2))

実行結果の読み方

Attention重み:
[[0.74  0.15  0.11]    ← "猫"は自分自身に74%注目
 [0.22  0.53  0.25]    ← "が"は自分自身に53%注目
 [0.31  0.08  0.61]]   ← "座った"は自分自身に61%注目

各行の合計は必ず1.0になります(softmaxの性質)。前節で定義した通り、この重みでVを加重平均したものが、各単語の「文脈を考慮した新しい表現」です。

ここで数値そのものの意味を深追いする必要はありません。W_Q・W_K・W_Vは学習前のランダムな行列なので、「猫」が自分自身に74%注目するという数字は、日本語の文法や意味を学習した結果ではなく、np.random.seed(42)という乱数列がたまたま生んだ配分にすぎません。実務で意味のある重みが立ち上がるのは、大量データで学習し終えた後の話です。ここで確認すべきは値そのものではなく、各行の合計が必ず1.0になるというsoftmaxの性質と、Vの加重平均という操作の骨格だけで十分です。

Multi-Head Attention:なぜ複数のAttentionが要るのか

1つのAttentionは、QKVを1組の重み行列で計算するため、1種類の関係性しか学習できません。文法的な関係(主語-動詞)と意味的な関係(猫-座る)を同時に学ばせたければ、異なる重み行列の組を複数並列させ、それぞれに別の関係性を学習させる必要があります。これがMulti-Head Attentionです。論文では8つのHeadを使い、各Headの出力を結合しています。

def multi_head_attention(X, num_heads=2, d_model=4):
    d_k = d_model // num_heads  # 各ヘッドの次元
    heads = []

    for h in range(num_heads):
        W_Q = np.random.randn(d_model, d_k)
        W_K = np.random.randn(d_model, d_k)
        W_V = np.random.randn(d_model, d_k)

        Q = X @ W_Q
        K = X @ W_K
        V = X @ W_V

        scores = Q @ K.T / np.sqrt(d_k)
        weights = softmax(scores)
        heads.append(weights @ V)

    # 全ヘッドを結合
    return np.concatenate(heads, axis=-1)  # (3, 4)

result = multi_head_attention(X)
print("Multi-Head出力:", result.shape)  # (3, 4)

Positional Encoding:なぜ位置情報を後から足す必要があるのか

Self-Attentionの計算式には、トークンの並び順という情報がどこにも入っていません。全トークンの加重平均を取る操作は、入力の順序を入れ替えても同じ結果を返します。しかし言語では語順が意味を変えるため、順序情報をどこかで与える必要があります。

Transformerは、埋め込みベクトルに位置ごとの信号を足し込むことでこれを解決します。

PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

三角関数を選んだ理由は、sin/cosの加法定理により、ある位置のPEを別の位置のPEの線形変換として表せる点にあります。これによって、学習時に見た文長より長い系列でも位置関係を扱いやすく、かつ学習パラメータを追加する必要がありません。

なぜ効いたか:決定打は最大パス長O(1)の一点

従来のRNN/LSTM vs Transformer比較

RNNとCNNには、それぞれ異なる制約がありました。RNN/LSTMは1単語ずつ処理するため、GPUの並列性能を活かせません。CNNは並列処理できますが、遠くの単語同士を関連づけるには畳み込み層を何層も重ねる必要があります。

計算量の比較

アーキテクチャ1層あたりの計算量逐次処理数最大パス長
RNNO(n × d²)O(n)O(n)
CNNO(k × n × d²)O(1)O(log n)
TransformerO(n² × d)O(1)O(1)

前節で定義した最大パス長で見ると、差は歴然です。RNNで100単語離れた依存関係を学ぶには100ステップかかりますが、Self-AttentionはQK^Tの一行で1ステップで直接参照します。並列処理・スケーラビリティなど他の利点もありますが、私はこの最大パス長O(1)こそが決定打だったと見ています。他の利点は、この1点から派生的に生まれたものだと考えられるからです。

実験結果:どれくらい性能が出たのか

機械翻訳タスク

ベンチマーク従来SOTATransformer改善
WMT 2014 英独翻訳25.8 BLEU28.4 BLEU+2.6
WMT 2014 英仏翻訳40.4 BLEU41.0 BLEU+0.6

BLEUは機械翻訳の精度を測る指標で、数値が高いほど翻訳が優れていることを示します。

学習効率

指標内容
学習時間3.5日(8 GPU)
パラメータ数65M(base)/ 213M(big)
学習コスト従来手法の1/4以下(論文記載)

SOTAを更新しながら学習コストを下げた、という組み合わせが、当時の評価を押し上げた理由です。

Ablation Study:何が効いているのか

論文は各コンポーネントを個別に外して効果を検証しています。

変更BLEU変化考察
Head数 1(16→1)-0.9Multi-Headは重要
Head数 32(16→32)-0.3多すぎても効果は限定的
d_k を小さく(64→16)-1.3Key次元の削減は性能に直結
d_model拡大(512→1024)+0.3モデルサイズ拡大は有効
Positional Encoding除去-1.0位置情報は不可欠

Positional Encodingを外すと-1.0という数値は、前節の「なぜ位置情報が必要か」という機構の説明を裏づけています。

影響と現在:O(n²)という代償をどう克服してきたか

この論文は2026年3月時点で6万回以上引用されており、現在の主要LLMはほぼ全てTransformerを基盤にしています。Transformerの機構は、その後のモデルにほぼそのまま受け継がれました。BERTはEncoder部分のみ、GPTはDecoder部分のみ、T5はEncoder-Decoder両方を使う——BERT/GPT/T5は、いずれもTransformerの部分利用または全体利用の派生形です。

系統代表モデル使う部分
Encoder系BERT、RoBERTa、ALBERTEncoderのみ
Decoder系GPT、GPT-2、GPT-3、GPT-4Decoderのみ
Encoder-Decoder系T5、BART両方

現行の主要LLM(Claude、GPT-4o、Gemini、Llama 3など)も各社からTransformerベースと公表されています。ただしGPT-4oのパラメータ規模「推定1.8T」のように、非公開の数値はあくまで推定値である点には注意が必要です。

一方で、Transformerには最初から代償がありました。Self-Attentionの計算量はO(n²)——系列長が2倍になれば計算量は4倍になります。オリジナル論文のコンテキスト長も512トークンでした。2018年以降の進化は、ほぼ全てこの「O(n²)という代償」と「固定長という制約」をどう克服するかの物語として読めます。

まず代償そのもの、計算コストを削ったのがFlash Attentionです。GPUメモリの読み書き(I/O)がボトルネックだった部分を、タイル分割によって高速メモリ(SRAM)上で完結させることで解消しました。

バージョン改善点高速化
Flash AttentionI/Oを考慮したタイル分割2-4倍
Flash Attention 2並列性向上、非正方行列対応さらに2倍
Flash Attention 3FP8対応、H100最適化さらに1.5倍

現在はPyTorch 2.0以降に標準搭載され、多くのLLMの訓練・推論で使われています。

次に、計算量ではなくパラメータとコストを切り離したのがMixture of Experts(MoE)です。全パラメータを毎回使うのではなく、入力に応じて一部の「専門家」ネットワークだけを活性化します。

モデル総パラメータ活性化パラメータ効果
Mixtral 8x7B46.7B12.9B70Bモデル相当の性能とされる
GPT-4(推定)1.8T約220Bコスト効率の大幅向上
DeepSeek-V3671B37Bオープンソース最高性能クラスとされる

さらに、固定長という制約そのものに向き合ったのがコンテキスト長の拡張です。RoPE(相対位置エンコーディング)は学習時より長い系列への外挿を可能にし、Ring Attentionは複数GPUに系列を分割することで長さの壁を動かしました。

手法コンテキスト長主なモデル
オリジナル(2017)512トークンTransformer
RoPE(2021)4K→128K拡張可能Llama、Qwen
Ring Attention100万トークン+Gemini 1.5 Pro
Infini-Attention無限長(理論上)Google Research

最後に、最も根本的な迂回路がState Space Model(SSM)との融合です。Mambaに代表されるSSMは、O(n)の計算量でTransformerに匹敵する性能を実現するとされ、2025年以降はJambaやZamba 2のようにTransformerとSSMを組み合わせたハイブリッドモデルが増えています。

モデルアーキテクチャ特徴
Mamba純粋SSMO(n)で高速推論
JambaTransformer + Mamba両方の利点を活用
Zamba 2Hybrid7Bで13B相当の性能とされる

ここで実務的な判断材料を一つ加えておきます。長コンテキストが必須な用途では、コンテキスト長という数値そのものより、O(n²)のスケーリングが効いてくる推論コストの方が先にボトルネックになりやすい——これは前節の計算量比較表からも導ける帰結です。Mambaやハイブリッドモデルへの乗り換えを検討する優先順位は、扱う系列長の平均値ではなく、推論コストの実測値を先に見るべきだというのが私の考えです。

なお、Transformerの機構そのものの上に「何を引き出すか」は別の話です。Chain-of-Thoughtは、この土台の上でLLMに段階的な推論をさせる技法を扱っています。本記事は機構止まりですが、関心のある方はそちらも参照してください。

著者8人のその後

論文の8人の著者は、全員がGoogleを退社しています。その後の展開を一覧にしました(評価額・調達額は各社の報道時点の数値で、非公開企業の評価額は変動するため目安として見てください)。

著者退社年創業・参加先評価額/調達額
Illia Polosukhin2017NEAR Protocol5億ドル調達
Aidan N. Gomez2019Cohere評価額55億ドルと報じられる
Jakob Uszkoreit2021Inceptive1.2億ドル調達
Noam Shazeer2021Character.AI→Google復帰25億ドルで買収と報じられる
Niki Parmar2021Essential AI→AnthropicClaude開発に携わると報じられる
Łukasz Kaiser2021OpenAIGPT-4、o1、o3の開発に関与と報じられる
Ashish Vaswani2023Essential AI6,500万ドル調達
Llion Jones2023Sakana AI日本発AIスタートアップ

この表の中で、地の文で拾っておきたいのは2つです。

20歳のインターンがCEOに: Aidan N. Gomezは論文執筆当時、Google Brainのインターンで20歳でした。現在はCohereのCEOとして、評価額55億ドルと報じられる企業を率いています。

父親の懐疑の回収: 冒頭のHans Uszkoreitの懐疑は、息子Jakobの確信によって覆されました。Jakobは現在、AIでRNA医薬品を設計するInceptiveを経営しています。「再帰なしで翻訳」という一蹴された仮説は、9年後には確信済みの前提になっています。

FAQ

Q1. なぜ「Attention Is All You Need」というタイトルなのか?

ビートルズの「All You Need Is Love」(1967年)のパロディです。RNNやCNNが必須とされていた領域で「Attentionだけで十分」という主張を、タイトル一つに込めています。

Q2. なぜTransformerは長い文脈が苦手なのか?

Attentionの計算量がO(n²)(nは系列長)のため、系列が長くなると計算コストが2乗で増えます。1,000トークンなら100万回、10,000トークンなら1億回のスコア計算が必要になる計算です。この制約を緩和するため、Flash Attention、Ring Attention、Infini-Attentionなどの改良が研究されています。

Q3. TransformerとMambaの違いは?

Transformerは Self-Attentionベースで計算量O(n²)ですが、任意の2トークンを直接結べる(最大パス長O(1))という強みがあります。MambaはState Space Model(SSM)ベースで計算量O(n)と効率的ですが、長距離依存の扱い方はTransformerと異なります。2025年以降はJamba、Zamba 2のように両者を組み合わせたハイブリッドモデルも増えており、どちらか一方に絞らない設計も増えています。

Q4. 商用利用は可能か?

論文自体はApache 2.0ライセンスです。Transformerアーキテクチャを使ったモデル(GPT、Claude等)は各社のライセンスに従います。基本的に、APIを通じた商用利用は可能です。

Q5. Transformerを学ぶのに最適なリソースは?

  1. 入門: Jay Alammarの「The Illustrated Transformer」——図解で直感的に理解できます
  2. 実装: Harvard NLPの「The Annotated Transformer」——PyTorchによる完全実装
  3. 原典: arXiv
    .03762
    ——15ページで読み切れます
  4. 応用: Andrej KarpathyのnanoGPT——ゼロからGPTを構築する実践チュートリアル

原典に当たるのが一番早い、というのが本記事全体を通じての私の立場です。

9年後の再整理:変わったもの、変わっていないもの

最後に、ここまでの内容を新しい軸で並べ替えます。

9年で変わったもの(克服対象): オリジナルTransformerのO(n²)という計算量と、512トークンという固定長。この2つを克服するために、Flash Attention、MoE、RoPE、Ring Attention、SSMとのハイブリッドが積み上がってきました。

9年で変わっていないもの(核): softmax(QK^T/√d_k)Vという一行、そして最大パス長O(1)という設計判断そのものです。周辺の効率化はすべて、この一行を「どう安く回すか」の工夫であって、この一行を置き換える提案ではありません。

私が本記事で持ち帰ってほしいのは、著者8人の評価額の合計ではなく、この一行です。理解の確認方法は、この記事のNumPyコードを写経して、自分の環境でattention_weightsが本当にsoftmaxの性質(各行の合計が1.0)を満たすか確かめることだと思っています。

判断が必要な方に渡せる材料はこうです。長コンテキストが必須で、かつ推論コストがボトルネックになっている用途なら、Mambaやハイブリッドモデルを検証する価値があります。そうでなければ、Transformer一択で当面困らない、というのが現時点の状況です。どちらを選ぶかは、扱う系列長と許容できる推論コスト次第だと思います。


参考リソース

  • arXiv論文
  • Google AI Blog
  • The Illustrated Transformer
  • Attention Is All You Need (動画解説)
  • Harvard NLP: The Annotated Transformer

本記事はネクサフローのAI研究シリーズの一部です。

この記事の著者

中村 知良

中村 知良

代表取締役

早稲田大学卒業後、ソフトバンク株式会社にてAI活用やCEO直下案件のプロジェクトマネージャーに従事。その後、不動産スタートアップPit in株式会社の創業、他スタートアップでの業務改善・データ活用を経験後、2023年10月、株式会社ネクサフローを創業し代表取締役CEO就任。

この記事をシェア

XFacebookはてなLinkedIn

次に読む

あわせて読みたい

【論文解説】Self-Evolving AI Agents:自己進化型エージェントの設計原則

【論文解説】Self-Evolving AI Agents:自己進化型エージェントの設計原則

2026/07/07
【論文解説】A-MEM: エージェントに長期記憶を持たせる設計

【論文解説】A-MEM: エージェントに長期記憶を持たせる設計

2026/04/15
【論文解説】Chain-of-Thought: 正答率ではなく「検証可能性」を上げるプロンプト技法

【論文解説】Chain-of-Thought: 正答率ではなく「検証可能性」を上げるプロンプト技法

2026/07/07

まずは無料相談・資料請求

AIやDXの導入について、具体的な進め方や費用対効果など、まずはお気軽にご相談ください。貴社の状況に合わせた最適なプランをご提案します。

お問い合わせ

お気軽にご相談ください