1. はじめに
生成AIは、ここ数年で急速に広まりました。最近、こんな会話をよく聞きます。
「これAIに聞いたら出てきました」「うーん、便利だよね」
実際、本当に便利です。論文の要約も、コードの雛形も、かなりできるようになりました。
しかし使っているうちに、気になってくることもあるでしょう。それは、
これは結局、何をしているのだろう?
という疑問ですね。ツールとして使うだけなら、この疑問は必要ありません。
しかし物理をやっている人間はどうしても
- どの数式で動いているのか
- どの数学の上に立っているのか
- 科学史のどこに位置するのか
を考えてしまいます。
「ニューラルネットって、結局何をしてるんですか?」「巨大な線形代数だと思えばいい」
などと言われることが多いと思いますが、
本当にそれだけなのか?その説明で良いか?
と思うことも多いでしょう。
そういう方向けに、生成AIを 数理物理の視点 から、
でもなるべく短く説明してみたいと思います。
この技術の中には
- 統計力学
- 拡散過程
- 変分法
- ランダム行列
など、物理で見慣れた概念が次々と現れるので、物理学の立場からも面白いはずです。
2. ニューラルネットは巨大な線形代数
まず最も基本的な構造から見てみます。
ニューラルネットワークの1層の計算は
h = Wx + b
で表されます。
ここで
- $x$ : 入力ベクトル
- $W$ : 重み行列
- $b$ : バイアスベクトル
- $h$ : 出力ベクトル
です。これは単に
ベクトルに行列を掛けて平行移動する操作
です。さらに実際のニューラルネットでは、この後に
h = \phi(Wx + b)
という 非線形関数 を通します。ここで、
\phi(\cdot)
は、
- ReLU
- sigmoid
- tanh
などの 活性化関数(activation function) と呼ばれる非線形関数です。
この非線形関数を入れることで、単なる線形変換では表せない複雑な関数を近似できるようになります。
そしてこの計算を、何百層も積み重ねる のが深層学習(Deep Learning)です。
つまり計算の大部分は行列積です。
その意味でニューラルネットの核心は 巨大な線形代数 と言うことができます。
【注】 ニューラルネットの計算の大部分は行列積であり、その意味で巨大な線形代数と見ることができます。が、本質的に重要なのは
非線形活性化関数
の存在です。もし活性化関数が無ければ、多層ネットワーク全体は
単なる1つの線形変換
に縮退してしまいます。
3. 学習とはエネルギー最小化に似た問題
ニューラルネットでは
L(\theta)
という 損失関数(loss function) を定義します。
ここで $\theta$ は
- 重み
- バイアス
などをまとめた モデルのパラメータ全体 です。
学習とは
\min_{\theta} L(\theta)
という最適化問題を解くことです。
つまり
「モデルの予測が最も良くなるパラメータ」を探す
という問題です。
この形を見ると、物理をやっている人は
これはエネルギー最小化にかなり似ている
と感じるはずです。
形式的には
L(\theta) \leftrightarrow E(\theta)
と対応づけて見ることができます。
もちろん、$L$ は一般には物理的エネルギーそのものではありません。
ただし
ある関数を最小にすることで安定な状態を求める
という数学構造は非常によく似ています。
※補足
ここでいう「エネルギー」は物理的エネルギーではなく、数学的に
あるスカラー関数を最小化する問題
という意味での類似です。
ただし Hopfield network や Boltzmann machine のように、統計力学と完全に同型の構造を持つモデルも実際に存在します。
関数を最小化する関数を求める、という操作は、汎関数微分という操作のことで、それについては別の記事で簡単に紹介しています。
4. 学習は緩和運動として見える
パラメータ更新の最も基本的な式は
\theta_{t+1}
=
\theta_t
-
\eta \nabla L
です。
ここで
- $\eta$ : 学習率
- $\nabla L$ : 損失関数の勾配
です。
これは 勾配降下法(gradient descent) と呼ばれます。
もし更新が十分小さく、連続時間極限で考えると
\frac{d\theta}{dt}
=
-\nabla L
となります。
この形は、物理ではポテンシャルに沿って系が低いエネルギー状態へ緩和していく運動と同じ形です。
つまり学習は
損失地形の中での緩和運動
として理解することもできます。
5. 学習と拡散
実際の深層学習では
- ミニバッチ学習
- データのランダムサンプリング
などのために更新には確率的な揺らぎが入ります。
そのためパラメータ更新は近似的に
d\theta
=
-\nabla L \, dt
+
\sqrt{2T}\, dW
のような確率微分方程式で書くことができます。
ここで
- $dW$ : Wiener過程(ブラウン運動)
- $T$ : ノイズ強度に対応する量
です。
この形は物理では Langevin方程式 として知られています。
つまり機械学習の最適化は
ポテンシャル中の拡散運動
としても見ることができます。
※注意
SGD が Langevin 方程式に厳密に一致するわけではありません。ただし
ミニバッチのランダム性、データサンプリングの揺らぎ
により、近似的に
勾配 + ノイズ
という形になり、確率微分方程式として解釈できることが知られています。
6. 自由エネルギーと変分推論
統計力学では
F = E - TS
という 自由エネルギー が重要です。
機械学習でも似た構造が現れます。
変分推論では
\mathcal{F}
=
E_q[\log p(x,z)]
-
E_q[\log q(z)]
のような量が登場します。
ここで
- $p(x,z)$ : データと潜在変数を含む確率モデル
- $q(z)$ : 近似分布
です。
この量は ELBO(Evidence Lower Bound) と呼ばれるものと密接に関係しており、統計力学の自由エネルギーに対応する量として理解できます。
さらに
\mathcal{F}
=
\log p(x)
-
D_{KL}(q||p)
と書けます。
ここで $D_{KL}$ は KLダイバージェンス(確率分布の距離) です。
つまり学習とは
確率分布を近似する問題
として定式化されます。
7. ランダム行列
深層学習では巨大な重み行列
W \in \mathbb{R}^{N\times N}
が登場します。このとき重要になるのが
固有値分布
です。もし行列要素がランダムなら固有値密度は
\rho(\lambda)
=
\frac{1}{2\pi\sigma^2}
\sqrt{4\sigma^2-\lambda^2}
という Wigner半円則 に従います。
これは原子核物理から生まれた結果ですが、巨大行列のスペクトルを統計的に理解するという考え方は、深層学習でも重要になっています。
8. AIと物理の歴史タイムライン
ここで少し歴史を振り返ってみます。AIの発展は、実は物理の発展とかなり深く絡んでいます。
Boltzmann(1870s)
統計力学の父 Boltzmann は
S = k \log W
という式を提唱しました。ここで
- $S$ : エントロピー
- $W$ : ミクロ状態数
です。これは 確率と物理を結びつけた革命的な式 でした。
Shannon(1948)
H = -\sum p \log p
という 情報エントロピー を導入しました。この二つは数学的に非常によく似ています。
Hopfield(1982)
物理学者 John Hopfield は、ニューラルネットワークをエネルギー最小化系として定式化しました。
Hopfieldネットのエネルギーは
E =
-\frac12
\sum w_{ij} s_i s_j
です。これは
Isingスピン模型
と同じ構造を持っています。
Hinton(1980s–)
Geoffrey Hinton は Boltzmann machine を提案しました。
これは確率的スピン系として定式化されたニューラルネットです。
つまり統計力学を機械学習に持ち込んだモデルとも言えます。
(補足) 2024年のノーベル物理学賞は Hopfield と Hinton に授与されました。
Transformer(2017)
現在の生成AIの中心的モデルです。
Attention(Q,K,V)
=
softmax
\left(
\frac{QK^T}{\sqrt d}
\right)V
という式です。ここで
- $Q$ : Query
- $K$ : Key
- $V$ : Value
です。この計算は
類似度に基づく重み付き平均
と理解できます。
9. 拡散モデルと確率過程
近年の画像生成AI(Stable Diffusion など)の中心にあるのが
拡散モデル(diffusion model)
です。名前の通り、このモデルの背景には 確率過程としての拡散 があります。
ただし重要なのは
物理の拡散方程式をそのまま逆に解いているわけではない
という点です。拡散モデルは
確率過程の時間反転を、確率密度の勾配(score)を用いて近似的に構成する方法
です。以下でその構造を順に見ていきます。
拡散過程
粒子がランダム運動をするとき、その確率密度 $p(x,t)$ は拡散方程式に従います。
最も単純な場合には
\frac{\partial p(x,t)}{\partial t}
=
D \nabla^2 p(x,t)
となります。ここで
- $p(x,t)$:確率密度
- $D$:拡散係数
です。この方程式は
- インクが水に広がる
- 花粉が空気中に拡散する
といった現象を記述します。
確率過程の立場では、この拡散は
dx = \sqrt{2D}\, dW
という ブラウン運動(確率微分方程式) として書くこともできます。
より一般には drift を含む
Fokker–Planck 方程式
で記述されますが、ここでは最も単純な拡散の場合を考えます。
データを拡散させる
拡散モデルでは、この確率過程を
データに対して人工的に適用します。
具体的には
x_0 \rightarrow x_1 \rightarrow x_2 \rightarrow \dots \rightarrow x_T
と進めていくと
画像
↓
ノイズが増える
↓
構造が崩れる
↓
完全なノイズ
になります。数学的には、この過程は
p_t(x) = p_0(x) * G_t
という ガウスカーネルとの畳み込み になっています。
つまり、データ分布が時間とともに拡散していく、過程です。
逆過程はどうなるか
ここで自然な疑問が生まれます。もし "ノイズ → データ" という
逆過程を構成できれば、データを生成できるはずです。
しかしここで問題があります。一般に
拡散方程式の時間反転は不安定で、そのまま解くことはできません。
そこで重要になるのが
\nabla_x \log p(x)
という量です。
score function
この $\nabla_x \log p(x) $は score function と呼ばれます。
これは
\nabla \log p(x)
=
\frac{\nabla p(x)}{p(x)}
なので、確率密度が増加する方向 を表しています。
直感的には、「データ分布の山がどちらにあるか」を示すベクトル場です。
逆拡散の構成
研究の重要な結果として、拡散過程の逆時間ダイナミクスは
dx =
\left[
f(x,t)
-
g(t)^2 \nabla_x \log p_t(x)
\right] dt
+
g(t) d\bar W
という 逆SDE(逆時間確率微分方程式) で表されることが知られています。ここで
\nabla_x \log p_t(x)
が必要になります。しかし、この量は通常未知です。
ニューラルネットの役割
そこで拡散モデルでは
s_\theta(x,t)
\approx
\nabla_x \log p_t(x)
をニューラルネットで学習します。
つまりネットワークは データ分布の勾配場 を近似しています。
生成とは何か
学習が終わると、完全なノイズから出発し、逆SDEを時間方向に数値的にシミュレーションします。すると
ノイズ
↓
構造が現れる
↓
輪郭が現れる
↓
画像
という過程が現れます。これが 画像生成 の流れです。
物理的な見方
ここで確率分布が
p(x) \propto e^{-E(x)/kT}
という ボルツマン分布 だと思うと理解しやすくなります。このとき
\log p(x) = -\frac{E(x)}{kT} + const
なので
\nabla \log p(x)
=
-\frac{1}{kT}\nabla E(x)
となります。つまり
score = - (力) / kT
です。そのため score は、エネルギー勾配(力) に対応します。
この構造は
Langevin dynamics
に非常によく似ています。
まとめ
拡散モデルの基本構造は
データ
↓
拡散(ノイズ付加)
↓
score を学習
↓
逆確率過程をシミュレーション
↓
データ生成
です。この意味で拡散モデルは
確率過程の時間反転を近似的に構成する方法
と言えます。
ここまでの流れ
ここまで見てきたように、生成AIの内部には
- 線形代数
- 確率論
- 統計力学
- 確率過程
といった数理科学の基本概念が現れます。
統計力学の視点では
E(x) = - \log p(x)
と定義すると
score = \nabla \log p(x)
は、エネルギー勾配、に対応します。
その意味で拡散モデルは
未知のエネルギー関数の勾配場を学習するモデル
と見ることもできます。
10. 最後に
生成AIは確かに新しい技術です。しかし、その背後には
- 線形代数
- 確率論
- 統計力学
- ランダム行列
といった古い数学もありますし、物理学の考え方も深く関わっています。
そういう意味で生成AIは、新しい技術であると同時に古い数学や物理の再発見の場、
とも考えられるかもしれません。
そして物理でそうであるように、本質は数式の中に宿る、という視点で眺めてみると、
生成AIもまた 数理科学の歴史の一部 として感じられる気がします。
関連記事