フローマッチングと連続正規化フロー
拡散モデルの遠回りなノイズ過程を捨て、まっすぐな輸送を回帰で学べる。条件付きフローマッチングの原理と直線的輸送の利点をつかめば、少ステップ生成の正体が見えます。
- 1.連続正規化フローはベクトル場が定めるODEで分布を運ぶ生成モデル。フローマッチングはその場を回帰だけで学ぶ手法で、シミュレーション不要。
- 2.鍵は条件付きフローマッチング。各サンプルへ条件付けた既知の経路の速度を目標にすると、真の周辺ベクトル場と勾配が一致し、学習可能になる。
- 3.拡散モデルは確率流ODEとして同じ枠組みに収まり、直線経路を選んだrectified flowは曲がりが小さいぶん少ステップで高品質に生成できる。
出発点:分布を「運ぶ」ベクトル場を学ぶ
生成とは、簡単な基準分布(標準正規分布 p_0 = N(0, I))からデータ分布 p_1 へ点を移す操作だと捉え直せます。各時刻 t(0 から 1)で点の速度を決めるベクトル場 v(x, t) を用意し、常微分方程式に従って点を流す——これが 連続正規化フロー(continuous normalizing flow, CNF) です。
dx/dt = v(x, t), x(0) ~ p_0
初期点をノイズから引いてこのODEを時刻 1 まで積分すれば、終点 x(1) が生成サンプルになります。問題は学習です。素朴なCNFは、ODEを実際に積分して終点の尤度を最尤化するため、訓練のたびにODEソルバを回す必要があり、極めて重い。フローマッチング はこのシミュレーションを完全に消し去ります。
フローマッチング:ベクトル場を直接回帰する
理想は、ある目標ベクトル場 u(x, t) に v_θ(x, t) を二乗誤差で合わせることです。
L_FM = E_{t, x}[ ‖ v_θ(x, t) − u(x, t) ‖² ]
これなら回帰なのでODE積分は不要です。ところが致命的な壁があります。データ分布全体を運ぶ 真の周辺ベクトル場 u(x, t) が未知 なのです(どの経路で各点を運ぶべきか、分布全体を見ないと決まらない)。スコアが未知だった スコアベース生成モデル と同じ構図です。
条件付きフローマッチング:未知を既知の経路に置き換える
突破口は 条件付きフローマッチング(conditional flow matching, CFM) です。発想は「分布全体の経路は決められないが、データ点 x_1 を1つ固定すれば、そこへ向かう経路は自分で設計できる」というもの。各 x_1 に条件付けた確率経路 p_t(x | x_1) と、その経路を実現する条件付きベクトル場 u_t(x | x_1) を人が決め打ちします。目標を周辺ではなく条件付きに差し替えます。
L_CFM = E_{t, x_1, x}[ ‖ v_θ(x, t) − u_t(x | x_1) ‖² ]
決定的に重要なのは、L_FM と L_CFM は θ について 勾配が一致する(定数差しかない)ことが証明される点です。つまり扱えない L_FM の代わりに、計算できる L_CFM を最小化すればよい。これは 拡散モデルの数理 で「未知のスコアを当てる」難問を「足したノイズを当てる」回帰へ等価変換したのと同じ論法で、フローマッチングはそれをベクトル場へ一般化したものだと言えます。
周辺経路 p_t(x) は、各 x_1 に条件付けた経路 p_t(x | x_1) をデータについて平均したものです。連続の式(質量保存)を通すと、周辺ベクトル場は条件付きベクトル場の「経路上の重み付き平均」として書けます。二乗誤差の目標を平均で置き換えても回帰の最適解は変わらないため、条件付き目標で学んだ v_θ は自動的に正しい周辺ベクトル場へ収束します。だから各サンプルごとの単純な経路だけ設計すればよく、分布全体の経路を知る必要がありません。
具体例として、ノイズ x_0 とデータ x_1 を直線で結ぶガウス経路を選ぶと、時刻 t の点と目標速度は次のように閉じた形になります。
x_t = (1 − t)·x_0 + t·x_1 # 線形補間
u_t(x_t | x_1) = x_1 − x_0 # 目標速度は一定ベクトル
学習ループはこれだけで完結します。ペアをサンプルし、補間点を作り、速度の差を二乗するだけです。
x0 = randn_like(x1) # ノイズ端点
t = rand() # 時刻 t ~ U(0,1)
xt = (1 - t) * x0 + t * x1 # 直線上の点
target = x1 - x0 # 条件付きベクトル場(定速)
loss = mse(v_theta(xt, t), target) # ベクトル場の回帰
拡散モデルとの統一視点:確率流ODE
フローマッチングと拡散モデルは別物ではありません。拡散の前向き過程に対応する逆向きSDEには、同じ周辺分布をたどる決定的な 確率流ODE(probability flow ODE) が存在し、そのドリフトは時刻ごとのスコアで書けます。
dx/dt = f(x, t) − ½·g(t)²·∇_x log p_t(x)
右辺はまさにベクトル場 v(x, t) です。つまり拡散モデルのサンプリングをODEとして見ると、スコアから定まる特定のベクトル場を流しているにすぎません。フローマッチングはこのベクトル場を、スコア経由ではなく直接回帰で学ぶ枠組みであり、確率経路の選び方の違いとして両者を一望できます。
| 観点 | 拡散モデル(確率流ODE) | フローマッチング |
|---|---|---|
| 学習目標 | ノイズ/スコアの回帰 | ベクトル場(速度)の回帰 |
| 確率経路 | 分散保存などノイズ過程で固定 | 自由に設計可(直線も可) |
| 端点分布 | ノイズ端はガウス前提が基本 | 任意分布どうしを結べる |
| 経路の形 | 曲がった経路になりやすい | 直線を選べば曲率を抑制 |
| 生成 | 逆向きSDE/ODEを数値積分 | ODEを数値積分 |
直線的輸送(rectified flow)の利点
経路を自由に選べる利点が最も効くのが 直線的輸送(rectified flow) です。狙いは、ノイズからデータへの輸送経路をできるだけまっすぐにすること。理由は数値積分のコストに直結します。曲がった経路をオイラー法で粗く刻むと、各ステップの直線近似が真の曲線から外れ、誤差を抑えるには多くのステップ(多数のネットワーク評価)が要ります。経路が直線なら、原理的に1ステップでも誤差が出ません。
ただし直線目標 x_1 − x_0 で素朴に学んでも、ランダムにペアにしたノイズとデータの経路は空間内で互いに交差します。交差点では速度が一意に決まらず、学習されるのは平均化された曲がった場になってしまいます。これを直す手続きが reflow(再フロー) です。
一度学習したフローでノイズ x_0 を流し、得られた終点 x_1' = ODE(x_0) と元の x_0 を新しいペアにして、また直線目標で学習し直します。こうして「実際にそのモデルが運んだ先」を端点にすると、経路の交差が解消され輸送がより直線へ近づきます。これを反復すると、最終的に1〜数ステップのオイラー積分で高品質に生成できる、ほぼ直線のフローが得られます。SD3 など近年の大規模生成が rectified flow を採用するのはこの少ステップ性が理由です。
個々のペアを直線で結んでも、分布全体として輸送コストを最小化する最適輸送になるとは限りません。交差が残れば周辺の場は曲がります。reflow はその交差を減らす近似手続きであって、厳密な最適輸送を解いているわけではありません。真の直線性が欲しい場合は、ミニバッチ内で最適輸送によりノイズとデータを賢く対応付ける(OT-CFM)など、ペアの組み方自体を工夫します。
まとめ:経路を設計し、速度を回帰する
| 論点 | 中身 | 押さえどころ |
|---|---|---|
| CNF | dx/dt = v(x, t) で分布を運ぶ | 終点がサンプル。素朴な尤度学習はODE積分が重い |
| フローマッチング | ベクトル場を二乗誤差で回帰 | シミュレーション不要。だが真の周辺場は未知 |
| 条件付きFM | 各 x_1 への既知経路の速度を目標化 | L_FM と勾配一致。直線なら目標は x_1 − x_0 で定速 |
| 統一視点 | 拡散=確率流ODEの特殊例 | スコア経由かベクトル場直接かの違い |
| rectified flow | 経路を直線化+reflow | 曲率が小さく少ステップ生成が可能 |
フローマッチングの核心は、「分布全体の運び方は決められないが、サンプル1つへの運び方なら設計できる」という割り切りです。条件付きの目標へ落とすことでODEシミュレーション無しの単純な回帰になり、確率経路を直線に選べば数値積分が軽くなって少ステップ生成へ届きます。拡散モデルが確率流ODEとして同じ土俵に乗ること、そして経路設計という自由度を手に入れたことが、この枠組みを現代の高速生成の主役に押し上げました。学習自体は通常の 勾配降下法 と Adam系の最適化 でよく、新しいのは「どんな経路の、どんな速度を回帰目標にするか」という設計の一点に尽きます。
AI/機械学習 Article
フローマッチングと連続正規化フローを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
フローマッチング
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
鍵は条件付きフローマッチング。各サンプルへ条件付けた既知の経路の速度を目標にすると、真の周辺ベクトル場と勾配が一致し、学習可能になる。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「フローマッチング / 生成モデル」に近いか確認する。
- 強みである「連続正規化フローはベクトル場が定めるODEで分布を運ぶ生成モデル。フローマッチングはその場を回帰だけで学ぶ手法で、シミュレーション不要。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。