2026-04-29·実装·⏱ 約 4 分
Transformer の数学 ─ Attention は何を計算しているのか
Transformer の核 Self-Attention を、行列積と softmax だけで読み解く。Q・K・V の意味から multi-head までを段階的に説明します。
Transformer は今や LLM ・ Vision ・ 音声で標準アーキテクチャ。中核の Self-Attention を数式と実装で読み解きます。
全体像 ─ 1 つの式に集約
Q(query)・K(key)・V(value)は同じ入力 X から を掛けて作る。
ステップ 1 ─ Q ・ K ・ V を作る
💡 Q ・ K ・ V の意味
Q = 『質問』、K = 『鍵』、V = 『答え』。各トークンが質問を持ち、他のトークンの鍵と照合して、関連する答えを取り出す。
ステップ 2 ─ 類似度行列 QK^⊤
は トークン同士の類似度行列(n × n)。要素 は『 番目のトークンが 番目をどれだけ気にすべきか』。
で割るのは、次元が大きいと内積が大きくなりすぎて softmax が飽和するのを防ぐため。
ステップ 3 ─ softmax で重みに
各行が 1 に正規化された attention 重み。 トークン がトークン に注目する割合。
ステップ 4 ─ V の加重平均
重み × value で 文脈に応じたトークン表現 が得られる。これが attention の出力。
PyTorch で実装
Self-Attention の最小実装
import torch
import torch.nn as nn
import torch.nn.functional as F
class SelfAttention(nn.Module):
def __init__(self, d_model, d_k):
super().__init__()
self.W_q = nn.Linear(d_model, d_k)
self.W_k = nn.Linear(d_model, d_k)
self.W_v = nn.Linear(d_model, d_k)
self.scale = d_k ** 0.5
def forward(self, x):
Q, K, V = self.W_q(x), self.W_k(x), self.W_v(x)
S = (Q @ K.transpose(-2, -1)) / self.scale
A = F.softmax(S, dim=-1)
return A @ V
# テスト
attn = SelfAttention(d_model=64, d_k=64)
x = torch.randn(2, 10, 64) # batch=2, seq=10, dim=64
z = attn(x)
print(z.shape) # torch.Size([2, 10, 64])Multi-Head Attention
1 つの attention だけだと観点が単一。h 個の attention を並列実行 → 結合 することで、複数視点を同時に獲得します。
- 各 head は独立した を持つ
- head ごとに
- GPT-3 や BERT は 12〜96 head
なぜ Transformer が強いか
- 並列計算: RNN と違い時系列を一気に処理
- 長距離依存: どの位置のトークンとも 1 step で関係付け
- 柔軟性: 言語 ・ 画像 ・ 音声で同じアーキテクチャ
次のステップ
- [線形代数を AI 視点で](/blog/linear-algebra-for-ai)
- [E 資格 教科書](/certs/e-shikaku/textbook) ─ Transformer 関連の問題
- [scikit-learn 入門](/blog/sklearn-introduction)
- [AIエンジニア・ロードマップ](/roadmap)
Related Articles
関連記事
- 2026-04-30実装OpenAI API 実装入門 ─ Chat / Embeddings / Function CallingOpenAI API を使ったプロダクション開発の基礎。Chat Completion・Embedding・Function Calling・ストリーミング・コスト管理まで実装パターンを網羅。
- 2026-04-30実装Vercel で AI アプリをデプロイする ─ Next.js + AI SDK 入門Vercel にデプロイする最短ルート。Next.js の AI SDK + AI Gateway で OpenAI/Claude を統合し、ストリーミングチャット UI を 1 時間で公開する手順。
- 2026-04-30実装Streamlit で 1 時間で ML デモアプリ ─ 転職に効くポートフォリオPython だけで動くインタラクティブな ML デモを Streamlit で作る方法。データ可視化・ファイルアップロード・モデル予測 UI までの最小実装。