はじめに
「Introduction to Flow Matching and Diffusion Models」(MIT IAP 2026) のコース資料を基にフローマッチングと拡散モデルについて勉強した際の日本語メモです。
生成モデルとSDE
データ分布からのサンプリング = “生成”
$$ z_\text{new} \sim p_\text{data} $$データ分布 $p_\text{data}$ の確率密度は未知
$$ p_\text{data}: \mathbb{R}^d \rightarrow \mathbb{R}_{\geq 0}, \\ z \mapsto p_\text{data}(z) $$条件付き生成 = 条件付き確率分布からのサンプリング
条件ベクトル $y$ を用いて
$$ z_\text{new} \sim p_\text{data}(\cdot|y) $$ピカール・リンデレフの定理
ベクトル場 $u_t = u_t(x)$ について $u$ が $x$ について連続微分可能であるなら初期値条件 $X_0=x_0$ を満たす常微分方程式
$$ \frac{\text{d}}{\text{dt}}X_t = u_t(X_t) $$の解は一意に存在する。
-
ベクトル場
空間中の1点 $\bold{r}$ を指定すると $\bold{r}$ の関数としてベクトルが1つ決まるような関数。
例
$u_t(x) = -\theta x$ のときを考えると常微分方程式 $\frac{\text{d}}{\text{dt}}X_t = u_t(X_t)$ の解は、$X_t = Ce^{-\theta t}$ となる。初期条件 $X_0=x_0$ より $C=x_0$ だから $X_t = x_0e^{-\theta t}$
オイラー法
十分に小さい刻み幅 $h$ を設定し
$$ X_i = X_{i-1}+hu_t(X_{i-1}) $$と計算して $X_0,...,X_T$ の近似値を求める。
フローモデルのサンプリング
ニューラルネットワークベクトル場を $u = u^\theta (x,t)$, 反復回数を $n$ としたとき
t = 0
h = 1/n
X_t = sample(p_init) # 初期ノイズのサンプリング
for i in range(n):
X_t = X_t + h * u(X_t, t)
t += h
return X_t # 最終的な生成サンプル
確率微分方程式とブラウン運動
ブラウン運動 $B(t)_{t\in[0,T]}$ で駆動する確率微分方程式は、$t,x$ を変数とする関数 $u,b$ を用いて
$$ X_t = X_0 + \int_0^t u(X(s),t) ds +\int_0^t b(X(s),t) dB(s) $$のかたちをとり、微分形で表すと
$$ dX_t = u(X(t),t)dt + b(X(t),t)dB(t) $$オイラー・丸山法
$$ X_{t+h} - X_t =\int_t^{t+h} u(X(s),t) ds +\int_t^{t+h} b(X(s),t) dB(s) $$$h$ が十分に小さければ上式の右辺は
$$ u(t,X_t)h + b(t,X_t)(B(t+h)-B(t)) $$と近似できる。
ここで確率変数 $B(t+h) - B(t)$ は正規分布 $\mathcal N(0, h)$ に従うので、$b(t, X_t)$ が状態 $X_t$ に依存しない関数 $\sigma_t$ で表される場合
$$ X_{t+h} - X_t = u(t, X_t)h + \sigma_t\sqrt h \epsilon, \quad \epsilon \sim \mathcal N(0, I_d) $$と計算できる。
オルンシュタイン・ウーレンベック過程
確率微分方程式
$$ dX_t = -\theta(X_t-\mu)dt+ \sigma d B_t $$の解として与えられる確率過程のこと。
ブラウン運動で駆動する確率微分方程式について $u_t(x) = -\theta x$, 平均 $\mu = 0$ と設定した場合のかたちに等しい。
フローマッチング
確率パス
時刻 $t$ におけるデータ $x$ の確率密度を表す $p_t(x)$
条件付き確率パス $p_t(\cdot | z)$
任意の点 $z \in \mathbb R^d$ について
$$ p_0(\cdot | z) = p_\text{init}, \quad p_1(\cdot | z) = \delta_z $$が成立し、時間が $t=1$ のとき、$z$ の位置が確定する。
例えば、ガウス分布 $p_t(\cdot | z) = \mathcal N(\alpha_tz, \beta_t^2I_d)$ に従う場合
- $\alpha_0=0, \space \beta_0 = 1$ の場合 $\mathcal N(0, I_d) = p_\text{init}$
- $\alpha_1=1, \space \beta_1 = 0$ の場合 $\mathcal N(z, 0) = \delta_z$
のようにして $\alpha_{0}, \alpha_{1}, \beta_0, \beta_1$ を適切に設定するようなノイズスケジュールを考えればよい。
周辺確率パス $p_t$
周辺確率パスについて、
$$ p_0 = p_\text{init}, \quad p_1=p_\text{data} $$が成立する。
条件付き確率パス $p_t(\cdot | z)$ について確率の周辺化
$$ p_t(x) = \int p_t(x|z)p_\text{data}(z)dz $$を考えて求める。
条件付きベクトル場 $u_t(x|z)$
任意の条件付き確率パス $p_t(\cdot | z)$ には等価なベクトル場・常微分方程式が存在する。
ガウス分布に従う条件付き確率パスの場合
まず条件付きフロー $\psi^\text{target}_t(x|z) = \alpha_t z+\beta_tx$ を定義する。
ここでフローの定義より任意の初期点 $X_0 \sim \mathcal p_\text{init}$ について
$$ X_t = \psi^\text{target}_t(X_0|z) = \alpha_tz + \beta_t X_0 \sim \mathcal N(\alpha_tz, \beta_t^2I_d) = p_t(\cdot | z) $$であるから、常微分方程式 $\frac{\text{d}}{\text{dt}}X_t = u_t(X_t|z)$ に代入して
$$ \frac{d}{dt}\psi^\text{target}_t(x|z) = u^\text{target}_t(\psi^\text{target}_t(x|z)\mid z) $$$\psi^\text{target}_t(x|z)$ の定義から
$$ \dot{\alpha}_t z + \dot{\beta}_t x = u^\text{target}_t(\alpha_t z + \beta_t x \mid z) $$$x = (X_t - \alpha_tz)/\beta_t$ を代入して
$$ \dot{\alpha}_t z + \dot{\beta}_t \left( \frac{X_t - \alpha_t z}{\beta_t} \right) = u^\text{target}_t(X_t | z) $$$z,X_t$ についてまとめて
$$ \left( \dot{\alpha}_t - \frac{\dot{\beta}_t}{\beta_t} \alpha_t \right) z + \frac{\dot{\beta}_t}{\beta_t} X_t = u^\text{target}_t(X_t | z) $$周辺ベクトル場 $u_t(x)$
確率の周辺化を用いて
$$ u^\text{target}_t(x) = \int u^\text{target}_t(x|z)p_t(z|x)dz $$ベイズの定理より $p_t(z|x) = \frac{p_t(x|z)p_t(z)}{p_t(x)}$ であり、かつ $p_t(z)$ は実際には時間依存せず $p_t(z) = p_\text{data}(z)$ だから
$$ u^\text{target}_t(x) = \int u^\text{target}_t(x|z)\frac{p_t(x|z)p_\text{data}(z)}{p_t(x)}dz $$連続の式
ベクトル場 $u_t$ が確率パス $p_t$ に対応することは、連続の式 (continuity equation)
$$ \frac{\partial}{\partial t}p_t(x) = -\text{div}(p_t u_t)(x) $$を満たすことと同値関係にある。
損失関数
フローマッチングの損失関数は次のように定義される。
$$ \mathcal L(\theta) = ||u_t^\theta(x) - u^\text{target}_t(x|z)||^2 $$ガウス分布に従う条件付きベクトル場を考えると
- $x = \alpha_tz + \beta_t \epsilon, \quad \epsilon \sim \mathcal N (0, I_d)$
- $\dot{\alpha}_t z + \dot{\beta}_t x = u^\text{target}_t(\alpha_t z + \beta_t x \mid z)$
を踏まえて
$$ ||u_t^\theta(x) - u^\text{target}_t(x|z)||^2 = ||u_t^\theta(\alpha_tz + \beta_t \epsilon) - (\dot{\alpha}_t z + \dot{\beta}_t \epsilon)||^2 $$特に、$\alpha_t = t, \beta_t= 1-t$ を代入すれば
$$ \begin{align*}\mathcal L (\theta) &= \mathbb E_{t\sim U[0,1],z \sim p_\text{data}, \epsilon \sim \mathcal N(0, I_d)}[||u_t^\theta(\alpha_tz + \beta_t \epsilon) - (\dot{\alpha}_t z + \dot{\beta}t \epsilon)||^2] \\ &= \mathbb E_{t\sim U[0,1],z \sim p_\text{data}, \epsilon \sim \mathcal N(0, I_d)}[||u_t^\theta(tz + (1-t) \epsilon) - (z - \epsilon)||^2]\end{align*} $$このようなノイズスケジュールを特に直線スケジュールと呼び、最適輸送と一致している。
参考
- https://diffusion.csail.mit.edu/2026/index.html
- https://math-note.xyz/analysis/differential-equation/ordinary-differential-equation/theorem-of-picard-lindelof/
- http://www.den.t.u-tokyo.ac.jp/ad_prog/ode
- https://yuima.movabletype.io/past/.assets/koike_slide1.pdf
- https://yuima.movabletype.io/past/.assets/koike_slide2.pdf
- https://speakerdeck.com/taiji_suzuki/kuo-san-moderutiyutoriaru
- https://xtech.nikkei.com/atcl/nxt/mag/rob/18/00007/00060/
- https://hillbig.github.io/JNNS2023_okanohara.pdf
- https://arxiv.org/pdf/2506.02070