JA EN
体系生成モデル
·★ 会員·論文·12分で読めます

Flow Matchingを1から — 拡散の次に来た「まっすぐ運ぶ」生成

Stable Diffusion 3 や FLUX の土台になった Flow Matching を前提知識ゼロから。速度場・常微分方程式・rectified flow を比喩と動く図で辿り、なぜ「まっすぐ運ぶ」と少ないステップで生成できるのか、現場で触るスケジューラ設定までを繋ぐ。

対象textタスクgeneration

Flow Matching for Generative Modeling


砂嵐から絵へ、どの道を通るか

画像生成モデルがやっているのは、突き詰めれば乱数を絵に変えることです。入口には意味のない砂嵐(ガウスノイズ)があり、出口には猫の写真がある。この2つを結ぶ変換をどう作るか、という問題です。

拡散モデルはこれを「壊して、逆再生する」で解きました。絵に少しずつノイズを足して砂嵐にする道を用意し、その道を逆向きにたどる方法を覚えさせる。壊し方は自分で決めた手順なので教師データはいくらでも作れます。ただし道の形は「ノイズを足す」という手順に縛られます。

Flow Matchingの発想はもっと素朴です。出発点と到着点を結ぶ道を、こちらが先に決めてしまう。そして各地点で「次にどっちへ、どれだけ動くか」だけを覚えさせる。引っ越しに例えるなら、拡散が「荷物を散らかす手順を録画して巻き戻す」やり方なのに対し、Flow Matchingは「旧居から新居へのルートを地図に引き、道中の進行方向だけを暗記する」やり方です。ルートを自分で引けるなら、いちばん短い道——直線——を引けばいい。ここから rectified flow(整流フロー)が出てきます。

直感: 覚えるのは「行き先」ではなく「速度」

川を思い浮かべてください。水面のどの地点にも「その場所の水がどっちへ流れているか」という矢印があります。この矢印の地図が速度場です。矢印そのものは行き先を教えてくれませんが、木の葉を1枚落とせば、葉は矢印に従って動き、やがて河口に着きます。

Flow Matchingでネットワークが覚えるのはこの矢印の地図だけです。しかも川と違って矢印は時間とともに変わってよく、「時刻 tt に地点 xx にいるものはどっちへ動くべきか」を返す関数を1つ学習します。生成でやることは木の葉を流すのと同じで、ノイズを引き、矢印を見て少し動かし、また矢印を見て少し動かす。モデルは絵を知らないのに絵にたどり着く——各地点での正しい一歩だけを知っているからです。

仕組み: 常微分方程式で運ぶ

矢印に従って動く、を式にすると常微分方程式(ODE)になります。

dxtdt=vθ(xt,t),x0N(0,I)\frac{d x_t}{dt} = v_\theta(x_t, t), \qquad x_0 \sim \mathcal{N}(0, I)
(1)

xtx_t は「時刻 tt にいる場所」、左辺は「いまの動く向きと速さ」、vθv_\theta が学習するネットワーク、N(0,I)\mathcal{N}(0,I) は「ガウスノイズを引け」という指示です。要するにこの式は「出発点はノイズ。あとは各地点でネットワークが指す向きへ進み続けろ」としか言っていません。t=0t=0 でノイズ、t=1t=1 でデータ、が約束です。

理論的な保証を一点だけ。速度場を決めると、粒子の集団の散らばり方——時刻ごとの確率分布——も自動的に決まります(流体でいう連続の式が対応します)。逆に言えば、「ノイズの分布からデータの分布へ移せ」という要求は、「そう移す速度場を1つ見つけろ」に置き換えられる。これが出発点です。

拡散とも無関係ではありません。拡散のサンプリングは通常ランダム性を含む確率微分方程式ですが、同じ時刻ごとの分布を再現する常微分方程式が必ず存在することが知られています(確率フローODE)。拡散も見方を変えれば「矢印に従って運ぶ」装置で、Flow Matchingはその矢印を最初から直接学ぶ、という関係です。

正解の矢印は、そのままでは計算できない

何を損失にするか。素直に書けば、正しい速度場 ut(x)u_t(x) との二乗誤差です。

LFM(θ)=Et,xptvθ(x,t)ut(x)2\mathcal{L}_{\mathrm{FM}}(\theta) = \mathbb{E}_{t,\, x \sim p_t} \left\| v_\theta(x, t) - u_t(x) \right\|^2
(2)

つまり「ネットワークが指す矢印を、正解の矢印に重ねろ」。ベクトルの二乗誤差は長さの差と向きのずれ(内積)に分解できるので、学習とは文字どおり2本の矢印を重ねる作業です。

FIG 1予測した速度ベクトルと正解の速度ベクトル。2本を回すと内積と余弦が変わる。‖a-b‖² = ‖a‖²+‖b‖²-2a·b なので、内積が最大(=完全に重なる)ときに損失が最小になる

問題は、この ut(x)u_t(x)書き下せないことです。ある地点の正しい矢印は「そこを通りうるすべてのデータ点」への向きを平均したもので、データ分布全体にわたる積分が要ります。ここがこの手法の急所であり、名前の由来でもあります。

Lipmanらの Flow Matching 論文(arXiv:2210.02747)が示した鍵は、目標を1点に条件付けてしまうことでした。全社員の平均動線は測れなくても、社員1人の動線なら分かります。同じで、行き先 を1つ固定すれば「 から へどう運ぶか」はこちらが設計した道なので速度を手で書けます。

この先にあるもの

§

ここから先は会員限定です

解説記事371本・教科書26章・学生モード48単元・論文精読6本が、月額¥490ですべて読み放題になります。新しい解説は毎日3本ずつ増えます。いつでも解約でき、解約後も期間の終わりまで読めます。

会員の方はログインすると続きが表示されます

参考文献

  1. Flow Matching for Generative Modeling. arXiv:2210.02747論文ページ·PDF
  2. Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. arXiv:2209.03003論文ページ·PDF
  3. Scaling Rectified Flow Transformers for High-Resolution Image Synthesis. arXiv:2403.03206論文ページ·PDF

本記事は上記論文の本文にもとづいて執筆しています。数値・主張は原典を優先してください。

コメント

コメントにはログインが必要です