Flow Matching(FM)とは?
FLUX.1、Qwen-Image*1やWAN*2でDiTとともに採用されている画像生成用のアルゴリズム。
SD3はその派生であるRectified Flowを採用している。
従来の潜在拡散モデルと比較してのメリットは、プロンプト追従性が上がりやすく、予測も安定しやすい。
その結果、蒸留による低ステップ化が容易で、サンプラーによる品質調整も効きやすい。
| Flow Matchingの長所 | Flow Matchingの短所 |
| 拡散モデルよりは早期ステップでの予測確度が高い | 早期ステップでの予測ミスが最後まで残りやすい |
| 大域構造(コントラスト・色調・方向性に合った構図)が後半まで調整可能 | 方向性が固まると方針転換が難しい (epred SDXLモデルより硬直的) |
| ディティールがシャープになりやすい | 高周波誤差が増幅されやすい |
潜在拡散モデルは各ステップのノイズ画像(仕掛品)をその場その場でノイズ「除去」していたが、
Flow Matchingではベクトル場(単位時間あたりの変化率)の推定を学習する。
FMのベクトル場は、一般的な画像生成AIについては次のように表せる。
dx/dt = x1 - x0
x0は生成時の出力に相当する教師画像である。
x1も任意の起点を選べるが、t2iでは一般的に、AIにとっての「何も描いてないまっさらなキャンバス」として扱いやすいガウシアンノイズが入力される。
WAN、Qwen-Image-EditやFLUX.1 Kontextなどは出発点をノイズ画像ではなく別の画像にしたFlow Matchingといえる。
ただし、生成時においてはFMのベクトル場はあくまで瞬間的な速度ベクトルを返すだけであって、実際の初期ノイズと生成結果の差分とは一致しない。
ステップ毎のサンプラーへの編集指示を返すだけである。
また定義上速度ベクトルのノルムは単位時間あたりの変化量だが、実際には未知の入力を与えられている早期ステップは平均化圧力が強く巨大なベクトルが返される。
その後は予測が安定しやすい大域的構造(低周波数帯)からノルムが安定し、ノイズとの区別が難しい細部の高周波数帯は最後までノルムが安定しない。
このため、低周波優位で意味的に連続している潜在空間でないと安定しない。
論文
Yaron Lipman他「Flow Matching for Generative Modeling」arXiv
FMの損失関数(どのように調教されているか)
Flow Matchingモデルはこれを最小化するように訓練される。
モデルによってカスタマイズされているはずだが、FM論文の式(5)(22)(23)に基づく最も基本的な損失関数は以下のようなもの。
L = E||Vt(xt) - μt(xt)||2
xt = φt(x0,x1) = (1-t)x0 + tx1
μt(xt) = E[d/dt・φt(x0,x1) | xt] = x1 - x0
- Vt(xt)は時刻tで画像xtを与えられたときのモデルの予測ベロシティ
- x0は生成結果に対応する教師画像
- x1は生成時の初期状態に対応する教師画像だが、t2iモデルの訓練にはノイズ画像が使われる
- tは経過時間に対応し0-1。拡散モデルに合わせ、t=0がx0に対応し、t=1がx1に対応する
- φtは教師画像が辿る決定論的なパス上の、時刻tに対応する位置を返す関数
イメージとしては、線形パスでは画像x0に対し透過率t%で画像x1を重ねたもの
理論上は任意の関数を選べるが、一般には上記の線形パスが使われる
定義上は、tごとに異なるφtが存在し、パス全体はφtの連続した集合として表現される - μtは時刻tでモデルが模倣すべき真のベクトル場で、φtを微分したものの条件付き期待値
線形パスでは画像x1と画像x0の差分
FMモデルでは一般的に、ノイズを確率的に取り除くのではなく、
入力が同じなら出力も同じにする調整が行われるため、確率過程が外れる
t2iの場合
t2iのFMモデルは次の予測に対しての誤差を最小化するよう訓練される。
vt(xt) = x1 - x0 = e -x0
ただし、x0は「完全な教師画像」、x1=eは「初期ノイズ全体」
潜在拡散モデルの損失関数と比較してみる*3。
L = E||e - e||2 ∝ E||x0 - x0||2
x0はFMモデルと同様「完全な教師画像」、eも「(初期)ノイズ全体」
ただし拡散モデルでは、ノイズeの誤差最小化と教師画像x0の誤差最小化は時間依存の係数を除いて同値である。
理由
拡散モデルの前進式
Xt=√(αt)X0 + √(1-αt)ε (ただし、αtは累積信号残存率)
X0について整理すると
X0={Xt - √(1-αt)ε} / √(αt)
予測誤差は
X0 - X0 = {Xt - √(1-αt)ε} / √(αt) - {Xt - √(1-αt)ε} / √(αt)
X0 - X0 = {√(1-αt) / √(αt) }・(ε - ε)
※Xtおよびαtはモデルに与えられるパラメータもしくはそこから直接計算可能なので、推測値につくハット(^)は付かない
そのため、ノイズ予測モデルはx0予測モデルに近い特性を共有する。
損失関数が異なるため、Flow Matchingモデルは拡散モデルより細部のディテール(高周波成分)を表現しやすい。
- 教師画像x0は低周波成分が支配的で、ノイズ画像eは全周波数帯均等なガウシアンノイズで構成されている。
- 広範囲にまたがる領域(低周波成分)での誤差は損失が大きいため、拡散モデルは結果的に低周波成分の復元に寄与する予測を優先するようになる。
- 拡散モデルでは、事実上予測不能な高ノイズ領域では平均化された回答をするように促され、ε予測では白紙化(ガウスノイズの平均0)、x0予測ではデータセット全体の平均像に寄る。
x0予測は低ノイズ領域では入力値そのままといった平均的な出力でも、損失関数の性質上ある程度減点を免れることができる。 - また、拡散モデルの訓練ではε予測・x0予測・v予測のどれを使っても、
最終的には「ノイズの混ざった画像xtから元の画像x0を復元する」ことを学習している点で共通している。
だが、教師画像x0の高周波成分(細部の構造)は早々にノイズに破壊されてしまい、モデルはすぐに観測することができなくなる。 - しかしFMモデルの損失関数は拡散モデルと異なり、一般的なモデルでは実質的には教師画像と初期ノイズとの差分についての予測と等価である。
低周波成分とは滑らかなグラデーションのような広範囲の整然とした構造であるため、それとノイズの差分を取れば高周波成分が強くなる。
また、t2iのFMモデルは「ノイズと教師画像x0の中間状態から、起点と到達点との差分全体を予測する」ことを学習しており、訓練中は常にある程度正答に含まれる高周波成分を入力から観測することができる。
(正答となる「差分」は入力画像xtに含まれるノイズそのものではなく、「初期ノイズと教師画像x0との差分」)
拡散モデルのように低周波の復元へ平均化した出力では損失が大きくなり、t2iのFMモデルには高周波成分を正確に再現する強い圧力が働く。
ただし、t2iのFMモデルはそのままだと学習時の入力xtと推論時のxtの周波数特性が一致しない。
モデルが期待しているのはノイズ由来の高周波成分を多く含むxtだが、
生成時はモデル自身の予測に基づき、高周波ノイズが真っ先に削られ低周波成分から構築される。
FMは理想的には生成工程を通じて一貫したベクトル場を返すように訓練されるが、
この差により早期ステップでの推定パスの揺れが大きい。
このため「モデルサンプリングオーラフロー」ノード等でタイムシフト値を設定し、
モデルに与えるt値を調整して学習時の周波数特性に近づける必要がある。
編集モデルや動画モデルの場合
損失関数は変わらないが、起点がノイズではなく別の教師画像になる為、挙動が大幅に変わる。
編集モデルや動画モデルはt2iほど広範囲の領域の自由生成はできない。
さらに、編集モデルにt2iのタスクを学ばせると編集前後で一貫性を保つ能力が弱まる。
損失関数設計はモデル設計者によるが、編集モデルは次のような予測に対しての誤差を最小化するよう訓練されると考えられる。
μt(xt) = x1 - x0
x1、x0はそれぞれ編集前、編集後として与えられる教師画像になる。
編集タスクにおいては入力画像のある程度の領域をそのままコピーしたほうが損失を抑えやすい。
モデルには積極的に描き換える圧力が弱く、必要な部分だけ変える方向にバイアスがかかる。
(実際のモデルでは損失関数設計による)
特に動画モデルについては、前のフレームの大部分をそのまま出力するのが最も損失を抑えやすくなる。
そのためx0予測同様フレーム毎に誤差が蓄積していき、長時間の生成を行うと徐々に破綻する。
(WANなどは逆に口があればやたら動かすような挙動を見せるが、
目立つところでサボらないよう強く条件付けされているものと思われる)
理論
U-Net拡散モデルでは「1000ステップかけて一定のルールで完全にノイズ化すると約束されている画像のnステップ目の状態を受け取り、除去すべきノイズ全体を予測させる」という訓練を行ってAIにノイズの中から画像を削りだすやり方を学習させていた。
数学的基盤に基づく美しい数式によって実現されたものだが、明確な弱点がある。
各ステップでの仕掛かり画像を入力として教師画像とその時点での確率的に撒かれた累積ノイズを切り分ける訓練である為、その過程を学習したモデルは「一度描いたものを消してまた描き直す」といったようなふらふらした描画過程を再現することになる。
ノイズは教師画像の高周波成分(細部のディテール)を真っ先に破壊するため、モデルは生成工程の終盤でしかディテールを再現する能力を持たない。
しかし逆にノイズが少ない段階では細部のディテール程度でしか変化がないため、生成工程の終盤については細部の微調整についてしか学習できない。
訓練時にモデルが予測を出すために使える情報の特性がステップ数によって変化するため、拡散モデルは一貫性のある予測を返すことができない。
これによって次のような問題が発生する。
- CFG Scaleを高めにしないと効かない
ステップ数に依存してモデルが観測できる入力と復元できる出力双方の特性が著しく変わるため、プロンプト追従性が悪い。
早期ステップではモデルはほとんど何も観測できないため、その予測は平均化バイアスが強く曖昧になりやすい。
生成ステップが進むにつれて観測できる情報が増えるが、ノイズ量が低いために構図を大きく変えることができず、早期ステップで生じた誤差を十分に修正できない。
- キャンバスサイズの変更に弱い
一般に高解像度の画像ほど細かい描き込み(高周波成分)が増えてノイズとの区別が難しくなる。
このためモデルの期待する周波数特性に合わせ、モデルに渡す時間を表すパラメータを調整する必要がある。
しかし、e-pred、v-predとも予測値には教師画像x0の信号成分が寄与する部分があり、
その寄与の程度が時間に応じて変わるため*4、柔軟な時間パラメータの調整ができない。
- 高速化が困難。画像生成モデルの挙動を近似するのが難しい
- ステップ数を減らすと品質が極端に劣化する
画像生成モデルを1000ステップ呼んで生成を行うのは時間がかかりすぎるため、
現在ではそのうちの数十ステップ程度のみをモデルに推論させ、
間のステップについてはサンプラーが軽い計算を行って補間するのが当たり前となっている。
しかし拡散モデルの描画過程は気まぐれで曲がりくねっているため、この補間を行うのが難しい。
そもそもサンプラーがモデルの代わりに補間を行えるのは、
DDIMによって離れたステップ間を飛ばし飛ばしで予測させ間を別の数式で補間しても性能が保たれることが示されたためである。
この「ノイズから画像へ向かう連続的な軌道を外部のサンプラーが再構成する」という発想をさらに推し進め、
「最初からこの軌道そのものをモデルが直接学習すればよいのではないか?」という問いに対する答えの一つがFlow Matchingである。
Flow Matchingではノイズ拡散過程ではなく、教師画像の上に起点画像(ノイズ画像等)を透過率t%で重ねた状態を受け取り、ベクトル場(起点画像と出力画像との差分)を予測するという訓練を受けている。
これはv-predのベロシティと似ているが、損失関数(訓練時の採点基準)が異なり生成工程を通じて一貫した予測を返すよう強い圧力をかけている。
これによりFMモデルは潜在拡散モデルのような気まぐれな挙動ではなく、海の底から少しずつ画像を浮かび上がらせていくような直線的で安定した描画過程を示す。
これにより次のようなメリットがある。
- 予測確度が上がってから構図を修正できる
FMモデルは「ノイズがばら撒かれる」のではなく「2つの画像が重ね合わされる」過程を学習している。
確率的にノイズを撒くと高周波成分(細部のディテール)から破壊されるが、線形補間では全周波数帯フラットである。
このためどのステップでも構図を含む広範囲の編集が可能で、修正が効きやすい。
- キャンバスサイズによってモデルに渡す時間パラメータを調節できる
FMモデルの予測値は時間に依存しないため、タイムシフトを設定することで
モデルの期待する周波数特性と(キャンバスサイズによって変わる)生成中の画像の周波数特性を合わせることができる。
- Euler法のような単純なサンプラーでも補間精度を保ちやすい
- 蒸留による低ステップ化と相性が良い
FMモデルは直線的な描画過程を学んでいるため、CFG値が穏当であれば拡散モデルのようにいきなり原色で塗りたくるような挙動は少なく、簡素なサンプラーでも品質を維持しやすい。
(計算誤差によって生成案を「切り替える」ような挙動を見せるときもあるが、FMのベクトル場は何らかの完成画像への一貫した流れを持つため、最終的な収束は安定しており破綻しにくい。)
理想的には一直線になるものの実際の画像の分布は複雑なため、通常のモデルでは収束までのステップ数は拡散モデルと変わらないが、
蒸留によって低ステップ化しても品質を維持しやすい。
Flow Matchingモデルの弱点
- シード値が効きづらい
未知の入力を与えられている早期ステップでは予測が難しいが、FMはある程度予測の方向性は出せるため、
結果として速度場の定義からずれた巨大なベクトルが返され一気にぼやけた平均化された画像に向かう。
このためSDXLモデルより多様性を出しづらい。
少しでも改善するためにタイムシフト値を設定し、早期ステップを適度な速度で進める必要がある。
- モデルの表現力が足らない場合、かえって品質が下がる
損失関数の設計上、t2iのFlow Matchingモデルはディテール描写を避けないが、細部の描写はAIにとってノイズと見分けがつかず難しい。
SDXLモデル(U-Net拡散モデル)はディテールを削るバイアスを持つが、難易度の高い描写を避けるため破綻が目立ちづらい。
パラメータ数や学習が足らず十分な表現力がない場合、FMモデルのほうが粗が目立つ場合がある。
- SDXLモデル(epredモデル)よりサンプラーとの相性差が強い
Flow Matchingモデルは理想的には生成工程を通じて一貫したベクトル場を返すよう訓練されている。
しかし、実際には訓練時のXtと推論時のXtとで周波数特性の差が大きい
(モデル自身の予測によって高周波ノイズから削られる)。
なので、v-pred程ではないが早期ステップでの予測のブレが大きくなる。
このため、res_multistepなどモデルの予測誤差を吸収する仕組みを持つものはある程度耐えられるが、
それ以外の多段法サンプラーや複数ステップでのモデル予測スコアを使うサンプラーはモデル予測値のブレに耐え切れず破綻することがある。
epredモデルの予測に従った場合の平均eは0に近い(ステップによって異なるのは予測ベクトル内の分散=振れ幅)為、FMモデルのようなサンプラーとの相性問題はおきづらい。
- 終盤のステップ数が多いとかえって誤差が増幅される
t2iのFlow Matchingモデルはディテールの描き込みを強化するバイアスがかかる為、
だらだら終盤のステップを続けるとかえって誤差が増幅される。
理想的には一貫したベクトル場を返す設計だが、実際には細部の振動が激しい。
このため拡散モデルとは対照的に、終盤になるほど粗いステップ幅になる生成スケジュールが採用されている。
また、Eulerサンプラー以外の高周波誤差を抑えるサンプラーも引き続き利用される。
- 焼きつきやすい
Flow Matchingモデルというよりは完成画像への方向性を予測する方式の弱点であり、v-predのSDXLモデルと共通する。
Flow Matchingモデルは直線的な描画過程を前提としている為、仕掛かり画像の状態を肯定的にとらえる傾向があり一度勢いがつくと修正が効きづらい。
このためe-predのU-Net拡散モデルよりCFG耐性がやや低い。
- 一度大きく崩れると画像全体が発散する
FMというよりはDiT系FMの弱点だが、DiTはエラーが広がりやすいため大きく崩れるとそれが全体に波及し、FMの直線的な描画傾向と相まって一気に崩壊する。