∇ Σ ∂ ∫ λ θ
技術解説

AI を支える
数学

線形代数から Transformer まで:完全な数学的フレームワーク

ベクトル空間 確率論 微積分と最適化 ニューラルネットワークの数学 誤差逆伝播法 アテンション機構 Transformer アーキテクチャ 学習ダイナミクス

はじめに

現代の AI、とりわけ大規模言語モデル、画像生成モデル、分類システムは、驚くほどコンパクトな数学的基盤の上に成り立っています。ChatGPT が文章を生成することから Stable Diffusion が画像を描画することまで、すべては最も低いレベルでは同じ演算、つまり行列の乗算、非線形関数、勾配降下法に帰着します。高度さの源は、これらの基本要素をどう組み合わせ、どうスケールさせるかにあります。

本記事では、数学を第一原理から展開します。まず線形代数と確率論から始め、微積分に基づく最適化を積み上げ、ニューラルネットワークの形式を構築し、誤差逆伝播法を導出し、最後に 2026 年の主要な言語モデルすべての土台となっているアテンション機構と Transformer アーキテクチャへとたどり着きます。近道はしません。すべての数式は、その構成要素から導出または説明します。

前提知識:高校レベルの代数と、基本的な微積分の記法(導関数、連鎖律)に慣れていること。それ以外はすべて本記事の中で積み上げていきます。

01

線形代数

AI の言語

1.1 ベクトルとベクトル空間

ベクトルとは、数を順番に並べたリストです。AI ではあらゆるものがベクトルで表されます。単語、画像パッチ、ユーザーの好み、隠れ状態などです。n 次元実数空間のベクトル x は次のように書きます。

x = [x₁, x₂,..., xₙ]ᵀ ∈ ℝⁿ

集合 ℝⁿ はベクトル空間です。加法とスカラー倍について閉じており、零ベクトルを持ち、ベクトル空間の 8 つの公理を満たします。この代数的構造こそが、線形代数を機械学習に応用できる理由です。ニューラルネットワークの層は、ベクトル空間の間の線形写像なのです。

1.1.1 内積とコサイン類似度

2 つのベクトル x, y ∈ ℝⁿ の内積は次のとおりです。

x · y = xᵀy = Σᵢ xᵢyᵢ = ‖x‖‖y‖cos(θ)

ここで θ はベクトル間の角度です。内積は向きの一致度を測ります。x と y が同じ方向を向くとき(cos θ = 1)に最大、直交するとき(cos θ = 0)にゼロ、逆向きのとき(cos θ = -1)に最小になります。この幾何学的な解釈がアテンション機構の基礎になっています。クエリとキーの内積は、両者が互いにどれだけ「注意を向け合う」かを測るのです。

コサイン類似度は、内積をベクトルの大きさの積で正規化したものです。

cos_sim(x, y) = (x · y) / (‖x‖ · ‖y‖) ∈ [-1, 1]

コサイン類似度は、単語埋め込み間の意味的な類似度を測るために NLP で広く使われています。意味の近い単語を表すベクトルは埋め込み空間内で集まり、コサイン類似度が 1 に近くなります。

1.2 行列と線形変換

行列 W ∈ ℝᵐˣⁿ は、ℝⁿ から ℝᵐ への線形変換を表します。行列とベクトルの積は次のとおりです。

y = Wx、ただし yᵢ = Σⱼ Wᵢⱼ xⱼ

これがニューラルネットワークの層の中核となる演算です。各行 Wi· は重みベクトルであり、出力 yi は i 番目の行と入力 x の内積です。行列 W は、その層が学習した内容、つまり入力特徴量のどの線形結合を計算するかを表しています。

1.2.1 行列の積

行列 A ∈ ℝᵐˣⁿ と B ∈ ℝⁿˣᵖ の積 C = AB ∈ ℝᵐˣᵖ の成分は次のとおりです。

Cᵢⱼ = Σₖ Aᵢₖ Bₖⱼ = Aᵢ· · B·ⱼ

行列の積は一般に可換ではありません(一般に AB ≠ BA)が、結合法則は成り立ちます:A(BC) = (AB)C。m×n 行列と n×p 行列の積の計算コストは O(mnp) で、大規模ニューラルネットワークにおける支配的なコストです。隠れ次元 d = 4096 の Transformer が 2048 トークンの系列を処理する場合、1 回の行列積のコストは O(2048 × 4096 × 4096) ≈ 340 億回の演算になります。

1.2.2 転置と対称行列

行列 W の転置 Wᵀ は行と列を入れ替えます:(Wᵀ)ij = Wji。主な性質:(AB)ᵀ = BᵀAᵀ, (Wᵀ)ᵀ = W。対称行列は W = Wᵀ を満たします。

Transformer のアテンション重み行列 QKᵀ/√dk は、転置を含む行列積として計算されます。クエリ行列 Q ∈ ℝˢˣᵈ に転置したキー行列 Kᵀ ∈ ℝᵈˣˢ を掛けることで、s×s のアテンション重み行列が得られます(s は系列長)。

1.3 固有値、固有ベクトル、SVD

次の式を満たすとき、ベクトル v は行列 A の固有ベクトルです。

Av = λv

ここで λ は対応する固有値です。固有ベクトルとは、行列 A が回転させずに伸縮だけを行う方向のことです。すべての固有値の集合を A のスペクトルと呼び、行列の振る舞いを特徴づけます。大きな固有値は対応する方向を増幅し、小さな固有値は減衰させます。

特異値分解(SVD)は、固有値分解を正方行列以外にも一般化したものです。

W = U Σ Vᵀ

ここで U ∈ ℝᵐˣᵐ と V ∈ ℝⁿˣⁿ は直交行列(回転・鏡映)、Σ ∈ ℝᵐˣⁿ は非負の成分 σ₁ ≥ σ₂ ≥... ≥ σᵣ(特異値)を持つ対角行列です。SVD は重みの圧縮に使われます。上位 k 個の特異値だけを用いた低ランク近似 Wk = Uk Σk Vkᵀ は、フロベニウスノルムの意味で W の最良のランク k 近似を与えます。これが LoRA(Low-Rank Adaptation)ファインチューニングの基礎です。

1.4 ノルムと正則化

ベクトル x ∈ ℝⁿ の L2 ノルム(ユークリッドノルム):

‖x‖₂ = √(Σᵢ xᵢ²) = √(xᵀx)

行列 W ∈ ℝᵐˣⁿ のフロベニウスノルム:

‖W‖_F = √(Σᵢ Σⱼ Wᵢⱼ²) = √(tr(WᵀW))

ノルムは、ベクトルや行列の「大きさ」を数値化します。最適化では、損失関数にノルムのペナルティを加えること、つまり正則化によって大きな重みにペナルティを課し、過学習を防ぎます。L2 正則化(重み減衰)は損失に λ‖W‖²F を加え、学習中に重みをゼロに向かって減衰させます。

02

確率論と情報理論

2.1 確率分布

離散標本空間 X 上の確率分布 P は、各結果 x ∈ X に P(x) ≥ 0 を割り当て、Σx P(x) = 1 を満たします。言語モデリングとはまさにこれ、つまりトークン列上の分布を推定することです。

連続変数の場合、確率密度関数(PDF)f(x) は f(x) ≥ 0 かつ ∫f(x)dx = 1 を満たします。ある範囲の確率は P(a ≤ X ≤ b) = ∫ab f(x)dx です。

2.1.1 ソフトマックス分布

ソフトマックス関数は、実数値のロジットのベクトル z ∈ ℝⁿ を確率分布に変換します。

softmax(z)ᵢ = exp(zᵢ) / Σⱼ exp(zⱼ)

性質:すべての出力は正で、合計は 1 になり(有効な確率分布)、大きなロジットは 1 に近い確率に、小さなロジットは 0 に近い確率に対応します。温度スケーリングはこれを調整します:softmax(z/T)。T → 0 では argmax(one-hot)に近づき、T → ∞ では一様分布に近づきます。言語モデルは生成の各ステップでこの分布からサンプリングします。

数値安定性の問題:z が大きいと exp(z) はオーバーフローします。標準的な対策は、指数を取る前に最大値を引くことです。

softmax(z)ᵢ = exp(zᵢ - max(z)) / Σⱼ exp(zⱼ - max(z))

2.2 情報理論

2.2.1 シャノンエントロピー

分布 P のエントロピー H(P) は、その不確実性、つまり 1 つの結果が持つ平均情報量を測ります。

H(P) = -Σₓ P(x) log₂ P(x) [ビット]

エントロピーは P が一様分布のとき最大(不確実性が最大)になり、P が決定論的なとき最小(= 0)になります。公平なコインは H = 1 ビット、6 面のサイコロは H = log₂(6) ≈ 2.58 ビットです。言語のエントロピーは、その言語を符号化するのに 1 トークンあたり何ビット必要かを表します。

2.2.2 交差エントロピーと KL ダイバージェンス

交差エントロピー H(P, Q) は、真の分布 P からのサンプルを分布 Q を使って符号化したときの期待符号長を表します。

H(P, Q) = -Σₓ P(x) log Q(x)

これは分類と言語モデリングにおける標準的な学習損失です。P は真の(one-hot の)ラベル分布、Q はモデルが予測した分布です。交差エントロピーを最小化することは、モデルのもとでのデータの対数尤度を最大化することと等価です。

KL ダイバージェンス DKL(P‖Q) は、Q が P からどれだけ異なるかを測ります。

D_KL(P‖Q) = Σₓ P(x) log(P(x)/Q(x)) = H(P,Q) - H(P) ≥ 0

KL ダイバージェンスは、P = Q がほとんど至るところで成り立つときに限りゼロとなり、それ以外では正になります(ギブスの不等式)。対称ではありません:DKL(P‖Q) ≠ DKL(Q‖P)。RLHF の学習にも登場します。ファインチューニングしたモデルがベースモデルから離れすぎないようにする KL ペナルティ項は DKL(πθ ‖ πref) です。

2.2.3 Perplexity

パープレキシティは交差エントロピー損失の指数で、言語モデル評価の標準的な指標です。

PPL(P, Q) = exp(H(P, Q)) = exp(-1/N Σₙ log Q(tₙ | t₁,...,tₙ₋₁))

直感的には、パープレキシティはモデルが各ステップで選択している実質的な語彙サイズです。パープレキシティ 20 とは、モデルが平均して、20 個の等確率の選択肢から一様に選んでいるのと同じくらい不確かだという意味です。最先端の言語モデルは、標準的なベンチマークで 3〜8 のパープレキシティを達成しています。

2.3 ベイズの定理

ベイズの定理は確率的機械学習の基礎です。

P(θ|D) = P(D|θ) · P(θ) / P(D)

ここで θ はモデルパラメータ、D は観測データ、P(θ|D) は事後分布、P(D|θ) は尤度、P(θ) は事前分布、P(D) = ∫P(D|θ)P(θ)dθ は周辺尤度(エビデンス)です。最尤推定(MLE)は事前分布を無視して P(D|θ) を最大化します。最大事後確率(MAP)推定は P(θ|D) を最大化し、これは -log P(θ) に比例する正則化を加えた MLE と等価です。

現代のディープラーニングでは、完全なベイズ推論ではなく MLE/MAP を用いるのが一般的です。数十億個のパラメータについて事後分布を計算するのは、計算上手に負えないからです。LLM における不確実性の推定は、いまだ未解決の研究課題です。

03

微積分と最適化

3.1 導関数と勾配

スカラー関数 f: ℝ → ℝ の点 x における導関数は、瞬間的な変化率を表します。

f'(x) = df/dx = lim_{h→0} [f(x+h) - f(x)] / h

関数 f: ℝⁿ → ℝ(損失関数など)に対して、勾配 ∇f ∈ ℝⁿ は偏導関数を並べたベクトルです。

∇f(x) = [∂f/∂x₁, ∂f/∂x₂,..., ∂f/∂xₙ]ᵀ

勾配は最も急な上昇方向を指します。したがって、勾配の負の方向に進めば損失関数を下っていくことになります。これが勾配降下法の基礎です。

3.1.1 ヤコビ行列とヘッセ行列

ベクトル値関数 f: ℝⁿ → ℝᵐ に対して、ヤコビ行列 J ∈ ℝᵐˣⁿ はすべての 1 階偏導関数を含みます:Jij = ∂fi/∂xj。層の出力の入力に関するヤコビ行列は、誤差逆伝播法の中心となります。

スカラー関数のヘッセ行列 H ∈ ℝⁿˣⁿ は、すべての 2 階偏導関数を含みます:Hij = ∂²f/(∂xi ∂xj)。ヘッセ行列は損失地形の曲率を特徴づけます。ヘッセ行列が正定値なら極小、負定値なら極大、不定値なら鞍点を意味します。

3.1.2 連鎖律

連鎖律は誤差逆伝播法の数学的基礎です。合成関数 g(f(x)) に対しては次のようになります。

d/dx g(f(x)) = g'(f(x)) · f'(x)

ベクトル値関数の場合、多変数の連鎖律はヤコビ行列を用います。

∂z/∂x = (∂z/∂y) · (∂y/∂x) = J_g · J_f

ニューラルネットワークは関数の合成です:L(θ) = loss(fₙ(...f₂(f₁(x; W₁)); Wₙ))。この合成に沿って連鎖律を再帰的に適用することで、すべての層 i について ∂L/∂Wi を計算します。この再帰的な適用こそが誤差逆伝播法です。

3.2 勾配降下法とその派生手法

3.2.1 確率的勾配降下法

標準的な勾配降下法は、パラメータ θ を勾配の負の方向に更新します。

θ_{t+1} = θ_t - η · ∇_θ L(θ_t)

ここで η は学習率です。データセット全体で真の勾配を計算するのはコストが高く、1 ステップあたり O(N) 回の順伝播が必要です。確率的勾配降下法(SGD)は、サイズ b のミニバッチ B ⊂ D を使ってこれを近似します。

θ_{t+1} = θ_t - η · (1/b) Σ_{x∈B} ∇_θ ℓ(f(x; θ), y)

ミニバッチ勾配は全体の勾配の不偏推定量です:E[gB] = ∇L。その分散はバッチサイズ b とともに減少します:Var(gB) = σ²/b.

3.2.2 モーメンタム

モーメンタムは、勾配のうち一貫して現れる成分の方向に速度ベクトル v を蓄積します。

v_{t+1} = β · v_t + (1-β) · ∇_θ L(θ_t)
θ_{t+1} = θ_t - η · v_{t+1}

β ∈ [0.9, 0.99] のとき、モーメンタムは実質的に 1/(1-β) ステップ分の勾配を平均します。β=0.9 なら 10 ステップ、β=0.99 なら 100 ステップです。これにより平坦な次元に沿った収束が加速され、急峻な次元に沿った振動が抑えられます。

3.2.3 Adam:適応的モーメント推定

Adam(Kingma & Ba, 2015)は、勾配の 1 次モーメント(平均)と 2 次モーメント(中心化していない分散)の両方を追跡することで、パラメータごとに適応的な学習率を保持します。

m_t = β₁ · m_{t-1} + (1-β₁) · g_t
v_t = β₂ · v_{t-1} + (1-β₂) · g_t²
m̂_t = m_t / (1-β₁ᵗ), v̂_t = v_t / (1-β₂ᵗ)
θ_{t+1} = θ_t - η · m̂_t / (√v̂_t + ε)

典型的なハイパーパラメータ:β₁ = 0.9、β₂ = 0.999、ε = 10⁻⁸、η = 3×10⁻⁴。パラメータごとの実効学習率は η/√v̂_t です。勾配の分散が大きいパラメータは実効ステップが小さくなり、分散が小さいパラメータはステップが大きくなります。

3.2.4 学習率スケジューリング

学習率 η は通常、一定には保たれません。よく使われるスケジュールには、線形ウォームアップ+コサイン減衰(Transformer の事前学習の大半で使用)、リスタート付きコサインアニーリング、多項式減衰などがあります。大規模モデルではウォームアップ期間が極めて重要です。初期化直後は勾配の推定値にノイズが多く、初期学習率が大きいと学習が不安定になりかねません。

04

ニューラルネットワークのアーキテクチャ

数学

4.1 フィードフォワード層

ニューラルネットワークの 1 つの層は、線形変換を行ったあとに非線形の活性化関数 σ を適用します。

h = σ(Wx + b)

ここで W ∈ ℝᵐˣⁿ は重み行列、b ∈ ℝᵐ はバイアスベクトル、x ∈ ℝⁿ は入力、h ∈ ℝᵐ は隠れ状態です。σ がなければ、層をいくら重ねても 1 つの線形変換と等価になってしまいます。活性化関数がこの線形性を崩すことで、深いネットワークは指数関数的に複雑な関数を表現できるようになります。

4.2 活性化関数

4.2.1 ReLU とその派生

ReLU(x) = max(0, x) = x · 𝟙[x > 0]

性質:計算が非常に簡単、勾配は 0(x < 0)か 1(x > 0)のどちらか、疎な活性化を生む、正の値で飽和しない。問題点:「dying ReLU」。x < 0 のニューロンは勾配がゼロになり、回復できなくなります。

GPT や BERT で使われている GeLU(Gaussian Error Linear Unit):

GELU(x) = x · Φ(x) = x · P(Z ≤ x)、ただし Z ~ N(0,1)

LLaMA や PaLM で使われている SwiGLU は、ゲート付きの派生形です。

SwiGLU(x, W, V) = Swish(xW) ⊙ (xV)

4.2.2 シグモイドと tanh

σ(x) = 1/(1 + e⁻ˣ) ∈ (0,1)
tanh(x) = (eˣ - e⁻ˣ)/(eˣ + e⁻ˣ) ∈ (-1,1)

どちらも深いネットワークでは勾配消失に悩まされます。|x| >> 0 では勾配 σ'(x) = σ(x)(1-σ(x)) → 0 となり、逆方向に伝播するにつれて勾配が指数関数的に消えていきます。これは、ReLU と残差接続が登場する以前、深いネットワークの学習を阻む最大の障害でした。

4.3 多層パーセプトロン(MLP)

L 層の MLP は次のように計算します。

h₀ = x
hₗ = σ(Wₗ hₗ₋₁ + bₗ) for l = 1,...,L-1
ŷ = softmax(W_L h_{L-1} + b_L)

万能近似定理(Hornik, 1989)によれば、十分な幅を持つ隠れ層 1 つの MLP は、コンパクトな定義域上の任意の連続関数を任意の精度で近似できます。ただし、多くの関数クラスにおいて、深いネットワークは浅いネットワークよりも指数関数的に少ないパラメータで済みます。

4.4 誤差逆伝播法

誤差逆伝播法は、計算グラフを逆向きにたどって連鎖律を適用し、ニューラルネットワーク内のすべての重み行列 W について ∂L/∂W を計算します。

誤差信号(上流からの勾配)を次のように定義します。

δₗ = ∂L/∂zₗ、ただし zₗ = Wₗhₗ₋₁ + bₗ

誤差逆伝播の漸化式:

δ_L = ∂L/∂z_L
δₗ = (Wₗ₊₁ᵀ δₗ₊₁) ⊙ σ'(zₗ)
∂L/∂Wₗ = δₗ hₗ₋₁ᵀ
∂L/∂bₗ = δₗ
python 誤差逆伝播法の実装
# Forward pass
def forward(x, layers):
    activations = [x]
    pre_activations = []
    for W, b in layers:
        z = W @ activations[-1] + b
        pre_activations.append(z)
        activations.append(relu(z))
    return activations, pre_activations

# Backward pass
def backward(loss_grad, activations, pre_acts, layers):
    delta = loss_grad
    grads = []
    for l in reversed(range(len(layers))):
        W, b = layers[l]
        dW = delta @ activations[l].T  # ∂L/∂W
        db = delta.sum(axis=1)         # ∂L/∂b
        grads.insert(0, (dW, db))
        if l > 0:
            delta = (W.T @ delta) * relu_grad(pre_acts[l-1])
    return grads

誤差逆伝播法が効率的な理由

素朴な方法では、各重みを ε だけ摂動させて (L(W+εeij) - L(W))/ε を測ることになります。パラメータが n 個あれば、n 回の順伝播が必要です。誤差逆伝播法は、動的計画法によって中間計算を再利用し、1 回の逆方向パスで n 個すべての勾配を計算します。計算量は O(n²) ではなく O(n) です。

4.5 勾配消失・勾配爆発問題

誤差信号 δₗ には L-l 個のヤコビ行列の積が含まれます。スペクトル半径 ρ(J) < 1 なら勾配は指数関数的に消失し、ρ(J) > 1 なら勾配は爆発します。解決策としては、残差接続(h = F(x) + x)、勾配クリッピング(‖g‖ > γ → 再スケール)、層正規化、そして慎重な初期化(He の初期化:W ~ N(0, 2/nin))などがあります。

05

正規化層

5.1 バッチ正規化

μ_B = (1/m) Σᵢ xᵢ, σ²_B = (1/m) Σᵢ (xᵢ - μ_B)²
x̂ᵢ = (xᵢ - μ_B) / √(σ²_B + ε)
yᵢ = γ · x̂ᵢ + β

γ と β は学習可能なパラメータで、それが最適であればネットワークが正規化を打ち消せるようにします。BatchNorm は言語モデルには向きません。系列の長さが可変であり、小さなバッチではバッチ統計量が不安定になるためです。

5.2 層正規化

μₓ = (1/H) Σⱼ xⱼ, σ²ₓ = (1/H) Σⱼ (xⱼ - μₓ)²
x̂ⱼ = (xⱼ - μₓ) / √(σ²ₓ + ε), yⱼ = γⱼ x̂ⱼ + βⱼ

層正規化の統計量はバッチ単位ではなくサンプル単位で計算されるため、バッチサイズに依存せず、学習時と推論時で同じように動作します。そのため LayerNorm は Transformer における標準的な正規化手法となっています。Pre-LN 型の Transformer(GPT-2 以降)では、LayerNorm をアテンションと MLP のサブレイヤーの前に適用することで、大規模でもより安定した学習ダイナミクスが得られます。

5.3 RMSNorm

RMSNorm(x) = x / RMS(x) · γ、ただし RMS(x) = √(1/H Σⱼ xⱼ²)

RMSNorm は LayerNorm より約 10% 高速で、同等の結果が得られます。LLaMA、Mistral、Gemma のアーキテクチャで採用されています。直感的に言えば、LayerNorm の再中心化ステップはモデルの品質にほとんど影響せず、主な効果は活性化の大きさを制御する再スケーリングから生まれているのです。

06

埋め込みと位置エンコーディング

6.1 トークン埋め込み

トークン埋め込み行列 E ∈ ℝ|V|×d は、語彙 V に含まれる離散的な各トークンを、密な d 次元ベクトルに写像します。

e_t = E[t] ∈ ℝᵈ

埋め込み次元 d は、現代のモデルでは通常 512〜4096 です。埋め込み行列はモデルの他の部分と同時に学習され、埋め込み空間で近くにあるトークンは、文脈での使われ方が似ています。埋め込み空間での演算が意味的な関係を捉える(king - man + woman ≈ queen)という Word2Vec の発見は、大規模コーパスでの学習から創発的に生まれる性質です。

重み共有(weight tying):多くのモデルでは、出力射影行列 Wout を Eᵀ と共有することで、経験的な性能低下なしにパラメータを |V|×d 個削減しています。

6.2 位置エンコーディング

Transformer には本来、順序の概念がありません。アテンションは置換同変だからです。位置エンコーディングが位置情報を注入します。

6.2.1 正弦波位置エンコーディング

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

6.2.2 回転位置埋め込み(RoPE)

LLaMA、Mistral、GPT-NeoX で使われている RoPE(Su et al., 2021)は、クエリベクトルとキーベクトルを 2 次元部分空間で回転させることで位置を符号化します。

q_m = R_m q, k_n = R_n k
(R_m q)ᵀ(R_n k) = qᵀ R_{m-n}ᵀ k = f(q, k, m-n)

内積は絶対位置ではなく、相対位置 m-n だけに依存します。そのため RoPE は相対位置への感度という点で正弦波エンコーディングより確実に優れており、コンテキスト長の外挿も可能にします。

07

アテンション機構

7.1 スケール化ドット積アテンション

アテンション機構は、クエリとキーの類似度で重みを決め、バリューの加重和を計算します。

Attention(Q, K, V) = softmax(QKᵀ / √dₖ) · V

ここで Q ∈ ℝˢˣᵈᵏ(クエリ)、K ∈ ℝˢˣᵈᵏ(キー)、V ∈ ℝˢˣᵈᵥ(バリュー)です。スケーリング係数 1/√dk は内積が大きくなりすぎるのを防ぎます。これがないとソフトマックスが飽和して one-hot に近い分布になり、勾配消失を引き起こします。

アテンション重み行列 A = softmax(QKᵀ/√dk) ∈ ℝˢˣˢ の成分 Aij は、位置 i が位置 j にどれだけ注意を向けるかを表します。出力はバリューの加重和です:outputi = Σj Aij Vj。これにより、各位置は系列内の他の任意の位置から情報を集約できます。これこそが Transformer を特徴づける能力です。

7.2 マルチヘッドアテンション

マルチヘッドアテンションは、より低次元の部分空間で h 個のアテンション演算を並列に実行します。

headᵢ = Attention(QWᵢQ, KWᵢK, VWᵢV)
MultiHead(Q,K,V) = Concat(head₁,...,headₕ) Wᴼ

ヘッドごとに異なるアテンションパターンを学習します。直近の位置(局所的な文脈)に注目するもの、統語構造に注目するもの、意味的な関係に注目するものなどがあります。h=12 ヘッド、d=768(BERT-base)の場合、各ヘッドは 64 次元の部分空間で動作します。

7.3 因果的(マスク付き)アテンション

A = softmax((QKᵀ/√dₖ) + M), M_ij = 0(j≤i のとき)、-∞(j>i のとき)

ソフトマックスの前にマスク対象の位置へ -∞ を加えると exp(-∞) = 0 となり、それらのアテンション重みがゼロになります。結果として得られるアテンションは下三角行列になり、位置 i は位置 1,...,i には注意を向けますが、i+1,...,s には向けません。

7.4 計算量

標準的なアテンションは、s×s のアテンション行列があるため、時間計算量が O(s²d)、メモリが O(s²) になります。効率的な派生手法には、FlashAttention(タイリングにより 2〜4 倍高速化、厳密)、スパースアテンション(ウィンドウサイズ w で O(s·w))、線形アテンション(O(s·d²))、Multi-Query Attention(K と V をヘッド間で共有し、KV キャッシュのサイズを h 分の 1 に削減)などがあります。

08

Transformer アーキテクチャ

8.1 Transformer ブロック

Transformer の 1 層は、マルチヘッド自己アテンションと位置ごとの MLP という 2 つのサブレイヤーで構成され、それぞれに残差接続と層正規化が付きます。

x' = x + MultiHead(LN(x), LN(x), LN(x))
x'' = x' + MLP(LN(x'))

MLP サブレイヤー:

MLP(x) = W₂ · GELU(W₁x + b₁) + b₂

ここで W₁ ∈ ℝ4d×d、W₂ ∈ ℝd×4d です。d=4096 の場合、この MLP は 1 層あたり約 1億3400万個のパラメータを持ちます。

8.2 パラメータ数

構成要素 パラメータ数 備考
トークン埋め込みd × |V|出力と重み共有
位置埋め込みd × s_maxRoPE モデルにはなし
アテンション(1 層あたり)4d²Q、K、V、O の射影
MLP(1 層あたり)8d²SwiGLU の場合:12d²
LayerNorm(1 層あたり)4dごくわずか
合計(L 層)≈ 12Ld²d が大きい場合

GPT-3(L=96、d=12288)の場合:12 × 96 × 12288² ≈ 1750億パラメータ。

8.3 残差ストリーム

残差接続のパターンは残差ストリームを生み出します。これはネットワーク全体を流れる d 次元のベクトルで、各層によって加算的に更新されていきます。

x₀ = Embed(tokens) + PE
xₗ = xₗ₋₁ + Attn_l(xₗ₋₁) + MLP_l(...)
logits = Unembed(LN(x_L))

メカニスティック解釈可能性の観点では、残差ストリームを通信チャネルとして捉えます。アテンションヘッドと MLP 層はそこから読み取り、加算的な更新を書き込みます。この見方によって、情報の流れに関する解釈可能性の研究が可能になります。

09

大規模学習のダイナミクス

9.1 損失地形

ニューラルネットワークの損失関数 L: ℝⁿ → ℝ(n ~ 10⁹〜10¹²)は、強い非凸性を持ちます。理論的には手に負えないはずですが、大規模な過剰パラメータ化ネットワークは比較的容易に学習できます。その理由は、過剰パラメータ化(ほとんどの局所解が大域解に近い)、NTK 領域(無限幅のネットワークはカーネル回帰のように収束する)、暗黙的正則化(SGD は平坦で汎化しやすい解を見つける)にあります。

9.2 Chinchilla スケーリング則

Hoffmann et al.(2022)は、計算予算 C、モデルサイズ N、データセットサイズ D を関係づける経験的なスケーリング則を導きました。

L(N, D) = E + A/Nᵅ + B/Dᵝ

ここで E ≈ 1.69(削減不能なエントロピー)、α ≈ β ≈ 0.34 です。重要な発見は、計算量 C = 6ND を固定したときの最適なトレードオフが Nopt ∝ C0.5 かつ Dopt ∝ C0.5 になるということです。つまり、モデルサイズとデータセットサイズは同じ割合で拡大すべきです。これは、GPT-3(1750億パラメータ、3000億トークン)が大幅に学習不足だったことを意味します。

9.3 混合精度学習

現代のモデルは混合精度で学習します。メモリ効率のために順伝播は float16 で行い、数値安定性のために重みの更新は float32 で行います。

python 混合精度学習(PyTorch)
# Forward pass in fp16
with torch.autocast(device_type='cuda', dtype=torch.float16):
    logits = model(input_ids)
    loss = cross_entropy(logits, targets)

# Backward pass: gradients in fp16
scaler.scale(loss).backward()

# Gradient unscaling + clipping in fp32
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)

# Weight update in fp32 (master weights)
scaler.step(optimizer)
scaler.update()

float16 よりも BFloat16 が好まれます。float32 と同じ 8 ビットの指数部を持つ(ダイナミックレンジが一致する)一方で仮数部は 7 ビットのみで、ロススケーリングなしでもオーバーフローやアンダーフローを避けられるためです。

9.4 分散学習

70B モデルの学習には、重みだけで約 140 GB の GPU メモリが必要です。戦略としては、データ並列(モデルを複製し、勾配を同期)、テンソル並列(重み行列を複数の GPU に分割)、パイプライン並列(層を別々の GPU に割り当て)、ZeRO(オプティマイザの状態、勾配、重みをワーカー間で分割し、任意の大きさのモデルを可能にする)などがあります。

10

言語モデリングと生成

10.1 自己回帰の目的関数

L(θ) = -E_{x~D}[ Σₜ log P_θ(xₜ | x_{<t}) ]

各位置 t で、モデルは先行するすべてのトークンを条件として、語彙 V 全体にわたる分布を予測します。このシンプルな次トークン予測という目的を桁外れの規模で適用するだけで、言語の豊かな表現、事実知識、推論能力を学習するのに十分なのです。

10.2 デコーディング戦略

10.2.1 温度スケーリング

P(tᵢ) = exp(zᵢ/T) / Σⱼ exp(zⱼ/T)

T < 1 では分布が鋭くなり(より決定論的)、T > 1 では平坦になります(よりランダム)。T = 0 では argmax(貪欲デコーディング)に帰着します。

10.2.2 Top-k サンプリング

P'(tᵢ) = P(tᵢ) / Σ_{j∈top-k} P(tⱼ) for i ∈ top-k

10.2.3 Nucleus(Top-p)サンプリング

V_p = {t : Σ_{v sorted} P(v) ≤ p}, P'(tᵢ) = P(tᵢ)/p

Top-p は適応的です。不確かなときは多くのトークンを、確信があるときは少ないトークンを候補にします。典型的な設定は、温度 0.7〜1.0、top-p 0.9〜0.95 です。

10.2.4 ビームサーチ

score(x_{1:t}) = (1/t) Σᵢ log P(xᵢ|x_{<i})

ビームサーチは確率を直接最大化します。翻訳や構造化された出力に適しており、自由な生成にはサンプリングが好まれます。

10.3 Key-Value キャッシュ

自己回帰推論では、KV キャッシュが計算済みの K と V のテンソルを保存するため、各生成ステップは O(s²d) ではなく O(sd) で済みます。ただし O(2Lsd) のメモリを消費し、70B モデルでは float16 で約 320 GB になります。KV キャッシュの圧縮は、長文コンテキストの推論に欠かせない活発な研究分野です。

python KV キャッシュを使った推論
kv_cache = {}

def generate_step(input_token, kv_cache, model):
    q, k, v = model.qkv_proj(embed(input_token))

    if layer_idx in kv_cache:
        K = torch.cat([kv_cache[layer_idx][0], k], dim=1)
        V = torch.cat([kv_cache[layer_idx][1], v], dim=1)
    else:
        K, V = k, v

    kv_cache[layer_idx] = (K, V)
    output = scaled_dot_product_attention(q, K, V)
    return output, kv_cache
11

人間のフィードバックによる強化学習

11.1 3 段階のパイプライン

RLHF は、教師ありファインチューニング(SFT)、報酬モデルの学習、強化学習による最適化という 3 つの段階を通じて、事前学習済み言語モデルを人間の選好に合わせます。

11.2 報酬モデル

報酬モデル Rφ:(プロンプト, 応答)→ ℝ は、人間によるペアワイズの選好データで学習されます。

L_RM(φ) = -E[ log σ(R_φ(x,y_w) - R_φ(x,y_l)) ]

11.3 PPO による最適化

言語モデル πθ は、参照方策から離れすぎないようにしつつ、期待報酬を最大化するよう最適化されます。

max_θ E[ R_φ(x,y) ] - β · D_KL(π_θ ‖ π_ref)
L_PPO = E_t[ min(rₜ Aₜ, clip(rₜ, 1-ε, 1+ε) Aₜ) ]

KL 項は報酬ハッキング、つまりモデルが報酬モデルの弱点を突くように逸脱していくことを防ぎます。PPO のクリップ付き代理目的関数は、学習を不安定にするような過度に大きな方策更新を防ぎます。

11.4 Direct Preference Optimization(DPO)

DPO(Rafailov et al., 2023)は報酬モデルを完全に省きます。

L_DPO(θ) = -E[ log σ(β log π_θ(y_w|x)/π_ref(y_w|x) - β log π_θ(y_l|x)/π_ref(y_l|x)) ]

DPO は数学的には RLHF と等価ですが、よりシンプルで安定しており、別個の報酬モデルを必要としません。現代のファインチューニングパイプラインの多くは、PPO の代わりに DPO やその派生手法(IPO、KTO)を使っています。

∞

まとめ:数学の構成要素

概念 中核となる数式 AI における役割
行列の積y = Wx + bすべての線形層、アテンションの射影
ソフトマックスexp(z)/Σexp(z)トークン確率、アテンション重み
交差エントロピーH(P,Q) = -Σ P log Q分類・言語モデルの学習損失
連鎖律∂z/∂x = (∂z/∂y)(∂y/∂x)層をまたぐ誤差逆伝播
Adam の更新式θ -= η·m̂/√(v̂+ε)学習中のパラメータ更新
ドット積アテンションsoftmax(QKᵀ/√dₖ)VTransformer の自己アテンションの中核
層正規化(x-μ)/σ · γ + βサンプルごとに活性化を安定化
RoPE(Rₘq)ᵀ(Rₙk)=f(q,k,m-n)相対位置エンコーディング
KL ダイバージェンスΣ P log(P/Q)RLHF の正則化、VAE の目的関数
Perplexityexp(H(P,Q))言語モデルの評価指標
SVDW=UΣVᵀ重みの圧縮、LoRA ファインチューニング
PPO の目的関数E[min(r·A, clip(r)·A)]RLHF の方策最適化

参考文献

Vaswani, A., et al. (2017). Attention is all you need. NeurIPS 2017.

He, K., et al. (2016). Deep residual learning for image recognition. CVPR 2016.

Ba, J. L., et al. (2016). Layer normalization. arXiv:1607.06450.

Kingma, D. P., & Ba, J. (2015). Adam: A method for stochastic optimization. ICLR 2015.

Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural Computation 9(8).

Ioffe, S., & Szegedy, C. (2015). Batch normalization. ICML 2015.

Elhage, N., et al. (2021). A mathematical framework for transformer circuits. Transformer Circuits Thread.

Hoffmann, J., et al. (2022). Training compute-optimal large language models. arXiv:2203.15556.

Su, J., et al. (2021). RoFormer: Enhanced transformer with rotary position embedding. arXiv:2104.09864.

Dao, T., et al. (2022). FlashAttention: Fast and memory-efficient exact attention. NeurIPS 2022.

Rafailov, R., et al. (2023). Direct preference optimization. NeurIPS 2023.

Zhang, B., & Sennrich, R. (2019). Root mean square layer normalization. NeurIPS 2019.

Schulman, J., et al. (2017). Proximal policy optimization algorithms. arXiv:1707.06347.

Ouyang, L., et al. (2022). Training language models to follow instructions with human feedback. NeurIPS 2022.

Kirchenbauer, J., et al. (2023). A watermark for large language models. ICML 2023.

Rajbhandari, S., et al. (2020). ZeRO: Memory optimizations toward training trillion parameter models. SC 2020.

さらに詳しく

有料プランを見る