はじめに
この記事は、Flow Matching および関連する生成モデルについて学ぶために、作成した個人的なノートの一部を整理したものです。
内容は論文や公開資料をもとに、Codexを活用しながらまとめていますが、内容や構成の確認、整理は著者自身が行っています。
現在、ネット上にある多くのFlow Matching解説が高度な数学が必要です。本記事は、入門のために理論に重きを置きません。
数学が全くいらないということではないですが、偏微分方程式とか、学習の理論について詳しくなることではなく、ざっくり理解して、コードを読める/書けるようにするという目的で作りました。
また、本資料の全文、コードはGitHubにあげています。Rectified Flowについては、本記事では扱っていませんが、全文には含まれています。
Githubに載せた全体の第0部と第1部を数回に分割して、記事にしていきます。
誤りや改善点などがありましたら、コメントでご指摘いただけると幸いです。
想定読者
本資料は、Flow Matching および関連する生成モデルを学びたい方を対象としています。
特に、
- 深層学習の基礎を一通り学んだ方
- 論文を読む、PyTorchで実装を行うための足掛かりとなる解説を探している方
- 数式だけでなく、直感的な理解も得たい方
を主な対象としています。
厳密な理論よりも、「なぜその式になるのか」「どのような意味を持つのか」を重視して説明しています。
ただし、数学については以下を前提としています。
- 偏微分について、理解している
- 微分方程式が読める
- 統計記号が読める
第0部 生成モデル未経験者のための入口
0.1 識別モデルとの違い
画像分類モデルなら、入力画像 $x$ を受け取り、クラス y を予測する。学習後も、利用時には入力画像が必要である。
識別モデル: 画像 x -> クラス y
生成モデルは、学習データと似た新しいデータを作ることを目標にする。生成時には正解画像を入力せず、乱数から始める。
生成モデル: 乱数 z -> 新しいデータ x_generated
ここで「似たデータ」とは、訓練画像をそのまま返すことではない。訓練データに現れる形、色、配置などの統計的な規則を学び、その規則に従う新しい標本を作ることを意味する。
0.2 データ分布とは何か
手元にあるdatasetは、未知のデータ生成規則から得られた有限個の観測だと考える。この背後の規則を データ分布 $p_{\mathrm{data}}$ と呼ぶ。実際には $p_{\mathrm{data}}$ の式を知っているわけではなく、datasetからサンプルを取り出せるだけである。
たとえば猫画像datasetなら、1枚の猫画像が1サンプルである。2D toyなら、平面上の点1個が1サンプルである。Flow Matchingは画像でも点でも同じ考え方を使うため、最初は可視化しやすい2D点で学ぶ。
未知のデータ分布 p_data
-> datasetとして有限個のサンプルを観測
-> モデルが分布の規則を学ぶ
-> 新しいサンプルを生成
0.3 なぜ乱数から始めるのか
毎回同じ入力から始めれば、決定論的なモデルは毎回同じ出力を返す。異なる画像や点を生成するには、生成ごとに異なる種が必要である。その種として、簡単に何個でもサンプルできる標準正規分布の乱数を使う。
Flow Matchingでは、この単純な乱数分布をsource分布 $p_0$、作りたいデータ分布をtarget分布 $p_1$ と呼ぶ。学習するのは、$p_0$ の乱数を $p_1$ らしいデータへ変形する規則である。
0.4 Flow Matchingの全体像を先に言葉でつかむ
まず、数式を使わずに学習から生成までを一周する。
最初に、平面上へランダムな点を大量に散らした「ノイズの雲」を想像する。一方、学習データ側には、猫画像や8個の山を持つ2D点群のような「データの集まり」がある。Flow Matchingの目的は、ノイズの雲をデータの集まりへ少しずつ変形することである。
学習時には、ノイズ点とデータ点を一つずつ組にする。その2点の間にいくつかの途中地点を置き、各途中地点で「データ側へ進むには、どちら向きにどれくらい動けばよいか」という矢印を作る。この矢印が学習用の正解である。
ニューラルネットワークには、途中地点と現在時刻を見せ、その場所の正解矢印を予測させる。同じような場所へ異なる組から矢印が集まる場合、モデルはそれらをまとめた進行方向を学ぶ。こうして、空間のどこにいても次の進行方向を答える「矢印の地図」ができる。
生成時には、学習時に使ったデータ点を渡さない。新しいノイズ点だけを置き、学習済みの矢印の地図へ現在地を問い合わせ、少し動き、もう一度問い合わせる。この操作を繰り返すと、ノイズ点の集まりがデータらしい集まりへ変わる。
学習:
noise点 + data点
-> 途中地点と正解の矢印を作る
-> modelが「時刻と場所から矢印を返す」ように学ぶ
生成:
新しいnoise点
-> modelの矢印に沿って少しずつ移動する
-> dataらしい新しいサンプルになる
ここで学ぶのは、特定のノイズ点を特定の画像へ送る対応表ではない。生成時には行き先の正解データがないため、「今の時刻と場所なら、分布全体としてどちらへ進むべきか」を答える規則を学ぶ必要がある。これが後でConditional Flow Matchingを考える理由になる。
0.5 ベクトルとベクトル場の最小補講
0.5.1 ベクトルは1本の矢印である
2次元のベクトル (3, -1) は、「横へ3、縦へ-1だけ進む」という1本の矢印として読める。向きだけでなく長さも持つため、進む方向と速さを同時に表せる。
位置 x = (2, 4)
速度 v = (3, -1)
少し進んだ位置 = x + dt * v
ここで $x$ は点の現在位置、$v$ はその点が今持つ速度である。1個の $v$ は、1個の場所における1本の速度ベクトルにすぎない。
0.5.2 ベクトル場は場所ごとに矢印を返す関数である
ベクトル場は、場所 $x$ を入力すると、その場所に対応するベクトルを返す関数である。
場所 x -> ベクトル場 v(x) -> その場所の矢印
(0, 0) -> (1, 0)
(1, 0) -> (0, 1)
別の場所 -> 別の矢印
「矢印を空間中にびっしり描いた地図」と考えるとよい。ただし実装では全地点の矢印を保存するわけではない。ニューラルネットワークが、問い合わせられた場所に対してその都度ベクトルを計算する。
0.5.3 Flow Matchingでは時刻によって地図も変わる
Flow Matchingの速度場は場所だけでなく時刻 $t$ も入力に取る。
v_theta(t, x)
同じ場所 $x$ でも、生成の序盤と終盤では進むべき方向が違うことがある。そのため $v_\theta(x)$ ではなく、時刻依存ベクトル場 $v_\theta(t,x)$ を使う。下付きの $\theta$ は、ニューラルネットワークの学習可能なパラメータをまとめて表す。
2D toyのミニバッチでは、入出力shapeは次のようになる。
t = torch.rand(batch, 1) # [B, 1]: 各点の時刻
x = torch.randn(batch, 2) # [B, 2]: 各点の現在位置
v = model(t, x) # [B, 2]: 各点の速度ベクトル
入力 $x$ と出力 $v$ のshapeが同じなのは、2次元の点を動かすには2次元の速度が必要だからである。画像なら位置 $x$ は画像tensorであり、速度も画像と同じshapeのtensorになる。
0.5.4 ベクトル場と軌道は別である
ベクトル場は「各場所でどちらへ進むかを答える規則」である。軌道は、1個の初期点がその規則に従って実際に通った道筋である。同じベクトル場でも初期点が違えば軌道は違う。
ベクトル場: 空間全体の矢印の規則
軌道: 1個の点が矢印を順にたどった結果
分布: 多数の点を動かしたときの集まり
時刻 $t$ の位置を $x_t$ と書けば、「現在位置の矢印を速度として動く」という規則が常微分方程式(Ordinary Differential Equation、ODE)である。
\frac{d x_t}{d t} = v_\theta(t,x_t).
左辺は位置が時間に対してどれくらい変わるか、右辺はモデルが現在の時刻と場所で返した速度である。Flow Matchingではニューラルネットワークが右辺を学び、生成時にこの規則を少しずつたどる。
0.6 学習時と生成時を分ける
生成モデルでは、学習時にだけ利用できる情報と、生成時に利用できる情報を分ける必要がある。
| 段階 | 手元にあるもの | 目的 |
|---|---|---|
| 学習 | dataset、乱数、モデル | データへ向かう規則を学ぶ |
| 生成 | 新しい乱数、学習済みモデル | datasetにない新しいサンプルを作る |
Flow Matchingの学習時には、ノイズ点 $x_0$ とデータ点 $x_1$ の両方を使って教師速度を作れる。しかし生成時には $x_1$ は存在しない。生成時に使えるのは、現在位置、時刻、学習済み速度場だけである。この非対称性が、CFMを理解する中心になる。
0.7 最初に覚える記号
| 記号 | 最初の意味 | PyTorchでの例 |
|---|---|---|
| $p_0$ | source分布。通常は簡単なnoise分布 | torch.randn(...) |
| $p_1$ | targetとなるデータ分布 | dataset / data loader |
| $p_t$ | 時刻 $t$ における途中の分布 | batchの $x_t$ が従う分布 |
| $x_0$ | $p_0$ から取った1サンプル | noise tensor |
| $x_1$ | $p_1$ から取った1サンプル | data tensor |
| $t$ | sourceからtargetまでの進行度 |
[B,1] の時刻tensor |
| $x_t$ | 時刻 $t$ の途中状態 | modelへの入力 |
| $u_t$ | 学習用に計算した教師速度 | regression target |
| $v_\theta(t,x_t)$ | ニューラルネットワークが予測する速度 | model output |
最初からすべての用語を暗記する必要はない。第1部の前半では、上の8記号がコードのどのtensorに対応するかだけを追えばよい。
第1部 Flow Matchingの基礎・理論・最小実装
1. 分布を運ぶ生成モデルとしてのFlow Matching
この章で扱う概念: Flow Matchingは、source分布からtarget分布へサンプルを運ぶ時間依存の速度場を、ニューラルネットワークで学習する生成モデルである。完成データを直接出力するのではなく、各時刻・各位置で「次にどちらへ進むか」を表すベクトルを予測し、その速度場をODEとして積分して生成する。
1.1 直感の地図
生成モデルを、ひとまず「乱数をデータらしい点へ変形する装置」と見る。
標準正規分布からサンプルした点 $x_0$ は、最初はただのノイズである。目標は、それをデータ分布から出てきたような点 $x_1$ へ動かすことだ。Flow Matchingでは、この変形を一回の写像として直接当てるのではなく、時刻 $t$ ごとの小さな移動として表す。
たとえば2次元なら、各点に小さな矢印を割り当てると考える。
- 場所 $x$ にいる。
- 時刻は $t$ である。
- その点は次にどちらへ動けばよいか。
この「次に進むべき方向」を返す関数が速度場である。ニューラルネットワークは
v_theta(t, x)
を学習する。ここで $v_\theta(t, x)$ は、時刻 $t$、場所 $x$ にいる点が進むべき速度ベクトルである。
1.2 学習と生成の全体像
Flow Matchingには、「矢印の地図を作る学習」と「その地図を使って新しいデータを作る生成」という二つの流れがある。この二つを分けて考えると、全体像をつかみやすい。
学習は、簡単な乱数の集まりである source分布 $p_0$ と、学びたいデータの集まりである target分布 $p_1$ から始まる。sourceからノイズ点 $x_0$、targetからデータ点 $x_1$ を取り出し、どの2点を一組にするかを coupling が決める。couplingは、出発点と目的地の組み合わせを作る「ペア係」だと考えればよい。
ペアが決まると、time sampler が練習する時刻 $t$ を選び、path(経路) がその時刻の途中地点 $x_t$ を置く。同じpathから、「その途中地点ではどちらへ進むべきか」という 教師速度 $u_t$ も得られる。pathは練習用の道を描く部品、教師速度はその道に沿った正解の矢印である。
時刻 $t$ と途中地点 $x_t$ を受け取り、矢印を予測するニューラルネットワークが velocity model(速度場モデル) $v_\theta(t,x_t)$ である。loss(損失関数) は予測矢印と教師速度のずれを採点し、optimizer はその点数が小さくなるようにモデルを調整する。この練習を繰り返して得た「矢印の地図」を、重みや設定とともに保存したものが checkpoint である。
学習:
source x0 + target x1
-> coupling: 出発点と目的地をペアにする
-> time sampler: 練習する時刻tを選ぶ
-> path: 途中地点x_tと教師速度u_tを作る
-> velocity model: v_theta(t, x_t)を予測する
-> loss: 予測と教師速度のずれを測る
-> optimizer: モデルを直す
-> checkpoint: 学習済みの矢印の地図を保存する
生成時には、学習に使ったtargetデータ、coupling、教師速度を使わない。source分布から新しいノイズ点を取り、checkpointから復元したvelocity modelへ「今の時刻と場所では、どちらへ進めばよいか」と問い合わせる。
連続した動きをコンピュータ上でたどるため、time grid が問い合わせる時刻を並べ、ODE solver がモデルの矢印を使って点を少しずつ更新する。Euler、Heun、RK4は、この「一歩の進み方」が異なるsolverである。初期ノイズの用意からsolverによる移動、生成結果の返却までをまとめた手続き全体を sampler と呼ぶ。
生成:
新しいsource noise x0
-> checkpointからvelocity modelを読み込む
-> time grid: 問い合わせる時刻を並べる
-> ODE solver: モデルに矢印を聞いて少し進む
-> sampler: この更新を繰り返して生成サンプルを返す
-> evaluation: target分布に近いかを評価する
モデルへ矢印を問い合わせた回数を NFE(Number of Function Evaluations) と呼ぶ。NFEが少なければ生成は速くなりやすいが、一歩が粗すぎると正しい道から外れる。evaluation(評価) では、生成結果がtarget分布へ近づいたかだけでなく、同じNFEでどのsolverがよかったかも調べる。
ここで最も大切な関係は、次の三つである。
- coupling、time sampler、path、教師速度、loss、optimizerは、矢印の地図を作る学習側の部品である。
- velocity modelは、学習時に矢印を練習し、生成時に矢印を答える共有部品である。
- time grid、ODE solver、sampler、NFEは、学習済みの地図をたどる生成側の部品である。
この先の章では、これらを一つずつ数式とコードへ落としていく。今は用語を暗記する必要はない。「ペアを作る → 練習経路と正解矢印を作る → 矢印の地図を学ぶ → 新しいノイズを地図に沿って歩かせる」という関係だけをつかめばよい。
1.3 生成をODEとして見る
Flow Matchingの生成は、次の常微分方程式を解くこととして書ける。
\frac{d x_t}{d t} = v_\theta(t, x_t), \quad x_0 \sim p_0.
ここで $p_0$ は簡単なsource分布である。典型的には標準正規分布を使う。ODEを $t=0$ から $t=1$ まで解くと、最終点 $x_1$ が得られる。この $x_1$ がデータ分布らしくなっていれば、生成モデルとして成功である。
直感的には、ODEは「速度場という地図を見ながら点を少しずつ歩かせる規則」である。1ステップだけなら
x_{t+\Delta t} \approx x_t + \Delta t\, v_\theta(t, x_t)
となる。これがEuler法である。
対応するコードは solvers.py の euler_solve である。
t = torch.full((x.shape[0], 1), t0 + i * dt, device=x.device, dtype=x.dtype)
x = x + dt * velocity(t, x)
この2行は、上の数式そのものになっている。velocity(t, x) が $v_\theta(t, x_t)$、dt が $\Delta t$、更新後の $x$ が $x_{t+\Delta t}$ に対応する。
ここで、点の軌道 $x_t$ と分布 $p_t$ を分けて考える。図1に示すように、ODEで直接動くのは1つ1つの点である。一方、分布 $p_t$ は、大量の点を同じ速度場で動かしたときの集まりとして変形する。

図1 1個の点が描く軌道と、多数の点が作る分布の変形
図1に示した区別は、Flow Matchingでかなり大切である。$x_t$ は1個のサンプルの位置、$p_t$ は時刻 $t$ におけるサンプル全体の分布である。学習ではミニバッチの点を使うが、理論で言う「分布が動く」とは、すべての点を同じ速度場で動かしたときに密度の形が変わることを指す。
1.4 学習では何を教師信号にするか
生成時には $v_\theta(t, x)$ を使って点を動かす。では学習時には、正解の速度をどう作るのか。
最も単純な考え方は、ノイズ点 $x_0$ とデータ点 $x_1$ をペアにして、その間を直線で結ぶことである。点が直線上を等速で動くなら、時刻 $t$ の位置と速度は簡単に書ける。
x_t = (1 - t)x_0 + t x_1,
u_t = \frac{d x_t}{d t} = x_1 - x_0.
この $u_t$ を教師信号として、ニューラルネットワークの出力 $v_\theta(t, x_t)$ を近づける。
ここで大切なのは、$x_t$ は「ノイズ点とデータ点の間の途中地点」であり、$u_t$ は「その途中地点で進むべき直線方向」だということだ。
対応するコードは paths.py の LinearPath である。
def sample(self, t, x0, x1):
return (1.0 - t) * x0 + t * x1
def velocity(self, t, x0, x1):
return x1 - x0
この時点で、Flow Matchingの最小ストーリーは次のようになる。
- ノイズ点 $x_0$ とデータ点 $x_1$ を用意する。
- ランダムな時刻 $t$ を選ぶ。
- 途中地点 $x_t$ を作る。
- 直線速度 $u_t$ を作る。
- $v_\theta(t, x_t)$ が $u_t$ に近くなるように学習する。
- 生成時は
v_thetaを使ってノイズをODEで動かす。
参考文献
以下には、本教材の内容、説明順序、実装対応、用語選択の検討に使用した論文、公式実装、技術文書、解説資料、動画、既存教材を掲載する。
- Yaron Lipman, Ricky T. Q. Chen, Heli Ben-Hamu, Maximilian Nickel, Matt Le, "Flow Matching for Generative Modeling", ICLR 2023. Flow Matchingの基本定式化、Gaussian path、CFMの基礎になる論文。
- Alexander Tong, Nikolay Malkin, Guillaume Huguet, Yanlei Zhang, Jarrid Rector-Brooks, Kilian Fatras, Guy Wolf, Yoshua Bengio, "Conditional Flow Matching: Simulation-Free Dynamic Optimal Transport", 2023. CFM、OT-CFM、simulation-freeなdynamic OT近似を扱う論文。
- Xingchao Liu, Chengyue Gong, Qiang Liu, "Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow", 2022. Rectified Flow、Reflow、少ステップ生成の実用的な入口になる論文。
- Qiang Liu, "Rectified Flow: A Marginal Preserving Approach to Optimal Transport", 2022. Rectified Flowのmarginal preserving propertyとOTとの関係を説明する理論寄りの論文。
- Sangyun Lee, Zinan Lin, Giulia Fanti, "Improving the Training of Rectified Flows", NeurIPS 2024. Reflowを繰り返す前に、pathの交差、時刻分布、loss設計を改善する考え方を扱う。
- Michael S. Albergo, Eric Vanden-Eijnden, "Building Normalizing Flows with Stochastic Interpolants", 2023. 補間過程を設計し、その確率流から速度場を学ぶStochastic Interpolantsの基礎論文。
- Michael S. Albergo, Nicholas M. Boffi, Eric Vanden-Eijnden, "Stochastic Interpolants: A Unifying Framework for Flows and Diffusions", 2023. FlowとDiffusionを補間・速度・scoreの枠組みで統一的に見る論文。
- Patrick Esser et al., "Scaling Rectified Flow Transformers for High-Resolution Image Synthesis", 2024. 高解像度画像生成でRectified Flow Transformerをスケールさせる実モデル系の論文。
- Yaron Lipman et al., "Flow Matching Guide and Code", 2024. Flow Matchingの用語、実装、公式コード対応をまとめた包括的ガイド。
- Peter Holderrieth, Ezra Erives, "An Introduction to Flow Matching and Diffusion Models", MIT 6.S184 lecture notes. DiffusionとFlow MatchingをODE/SDE、score、velocityの観点でつなぐ講義ノート。
- Will Grathwohl et al., "FFJORD: Free-form Continuous Dynamics for Scalable Reversible Generative Models", ICLR 2019. continuous normalizing flowのinstantaneous change-of-variables、発散推定、NLL計算の基礎資料。
- Cheng Lu et al., "DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps", NeurIPS 2022. NFEをそろえた高速sampling評価と、少stepでの品質比較を考えるための代表的なsolver研究。
- Tero Karras et al., "Elucidating the Design Space of Diffusion-Based Generative Models", NeurIPS 2022. sampler設定、NFE、FID、計算量を分けて評価する実験設計の参考資料。
- Jonathan Ho, Ajay Jain, Pieter Abbeel, "Denoising Diffusion Probabilistic Models", 2020. DDPMの基本となる前向きノイズ化、epsilon prediction、逆過程の論文。
- Martin Heusel et al., "GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium", NeurIPS 2017. Fréchet Inception Distance(FID)を導入した論文。
- Mikołaj Bińkowski et al., "Demystifying MMD GANs", ICLR 2018. Kernel Inception Distance(KID)とその不偏推定を導入した論文。
- Catherine F. Higham, Desmond J. Higham, Peter Grindrod, "Diffusion Models for Generative Artificial Intelligence: An Introduction for Applied Mathematicians", 2023. 応用数学寄りにDiffusionモデルを導入する入門論文。
- TorchCFM documentation, atong01/conditional-flow-matching. CFM variantsをFlowMatcherクラスとして読むための実装資料。
- Diff2Flow documentation, "Training Flow Matching Models via Diffusion Model Alignment". Diffusion実装をFlow Matchingへ変換・整合させる観点の実装資料。
- Black Forest Labs, FLUX official repository. FLUX.1の公式推論コード、モデル一覧、利用条件への入口。
- Black Forest Labs, FLUX.1-schnell model card. 公式checkpoint、pipeline構成、Apache-2.0表示の確認元。
- Black Forest Labs, FLUX.1-dev model card. gated checkpointと独自ライセンスへの入口。
- Black Forest Labs, FLUX.1 [dev] Non-Commercial License. weight、派生物、outputを区別して利用条件を確認する一次資料。
- Stability AI, Stable Diffusion 3.5 official repository. SD3.5モデル、推論例、モデルカードへの公式入口。
- Stability AI, Stable Diffusion 3.5 Medium and Large model cards. MMDiT構成、用途、Community Licenseの確認元。
- Stability AI, Community License. SD3.5を含む対象モデルの利用・再配布条件を確認する一次資料。
- Tencent, HunyuanVideo official repository. 公開video generation model、checkpoint、推論条件、ライセンスの一次資料。
- William Peebles et al., SiT: Exploring Flow and Diffusion-based Generative Models with Scalable Interpolant Transformers. Stochastic Interpolant Transformerの公式実装とImageNet checkpoint。
- Hugging Face Diffusers, DreamBooth training for FLUX. full/LoRA学習、対象module、text encoder学習、VRAM上の注意。
- Hugging Face Diffusers, DreamBooth training for Stable Diffusion 3. SD3系MMDiTのLoRA学習例。
- Hugging Face Diffusers, LoRA training and loading adapters. adapterの学習、読込、複数adapter、fuse/unfuseの公式文書。
- Hugging Face PEFT, LoRA developer guide. rank/alpha、対象module、merge/unmerge、発展的LoRA設定の公式文書。
- Hugging Face, safetensors documentation. tensorとmetadataを保存する形式の仕様・利用法。
- Edward J. Hu et al., LoRA: Low-Rank Adaptation of Large Language Models. 低ランク更新の原論文。
補足的に使用した研究論文・講義資料
- Michael S. Albergo et al., "Stochastic Interpolants with Data-Dependent Couplings", 2023. couplingを固定的な独立ペアリングに限定せず、データ依存に設計する観点の参考資料。
- Stanley H. Chan, "Tutorial on Diffusion Models for Imaging and Vision", 2024. 画像・視覚問題におけるDiffusionの前向き過程、逆過程、score、samplingの説明を確認するために使用した。
- Itai Gat et al., "Discrete Flow Matching", 2024. 連続空間のFlow Matchingを離散データへ拡張する研究資料。
- Aram-Alexandre Pooladian et al., "Multisample Flow Matching", ICML 2023. ミニバッチ内の複数標本とcouplingを使って輸送を改善する観点の参考資料。
- Nikita Kornilov et al., "Optimal Flow Matching: Learning Straight Trajectories in Just One Step", NeurIPS 2024. 直線的な軌道と少ステップ生成を比較するための発展資料。
- Xixi Hu et al., "Improving Rectified Flow with Boundary Conditions", ICCV 2025. Rectified Flowの境界付近の挙動と改善方法を扱う資料。
公式実装・実装補助資料
- Meta, facebookresearch/flow_matching. path、solver、continuous/discrete exampleの公式PyTorch実装。
- Meta, Flow Matching examples. 2D continuous exampleを含む、教材コードから公式実装へ移るための参照先。
- Xingchao Liu et al., gnobitab/RectifiedFlow. Rectified Flowのtrain、eval、reflowを確認するための公式実装。
- Sangyun Lee et al., sangyun884/rfpp. "Improving the Training of Rectified Flows" に対応する参考実装。
- Jonathan Ho et al., hojonathanho/diffusion. DDPMの公式実装。
- Hugging Face, Diffusers. scheduler、pipeline、Flow Matching系モデル、学習・推論コードの実装資料。
- Diffusion Meets Flow Matching. DiffusionとFlow Matchingの時間向き、予測対象、ODE/SDE対応を対話的に確認する資料。
- MIT 6.S184, Flow Matching and Diffusion Models course site. 講義ノートと関連教材の入口。
直感説明・可視化・動画の参考資料
- "Rectified Flow: Straight is Fast", Let Us Flow Together. Rectified Flow、直線軌道、Reflowの直感説明を検討するために使用した。
- "Curved × Curved = Straight: DDIM is Straight RF", Let Us Flow Together. DDIMとRectified Flowの軌道を比較する補助資料。
- "Interpolations: All Flows are One Flow", Let Us Flow Together. interpolationとpath設計の直感を確認する補助資料。
- "Flow to Diffusion: Langevin is a Guardrail", Let Us Flow Together. Flow、Diffusion、Langevin dynamicsの関係を確認する補助資料。
- "A Visual Dive into Conditional Flow Matching", ICLR Blogposts 2025. CFMの条件付き速度、平均速度場、直感図解に役立つ解説。
- Peter Holderrieth, "Flow Matching: A visual introduction". 粒子、分布、速度場、ODE生成を視覚的に説明する入門記事。
- "Flow Matching for Generative Modeling (Paper Explained)". Flow Matching論文の解説動画およびその字幕transcript。生成モデル未経験者向けの説明粒度を検討するために使用した。
- Zenn「Flow Matchingのエッセンス」. 日本語での速度場、輸送、学習と生成の説明を点検するために使用した。
- Zenn「Optimal Transport Conditional Flow Matching」. OT-CFMの日本語説明と用語選択を確認するために使用した。
- Qiita「Flow Models・Flow Matching・Diffusion Models 学習メモ」. 日本語でのFlow MatchingとDiffusionの対比を確認する補助資料。
- Docswell「Conditional Flow Matching輪読資料」. CFM、OT-CFM、条件付き経路の日本語説明を確認する補助資料。
- Zenn「Flowベース生成モデルの調査」. Flow Matchingを周辺のflow-based generative modelsと比較するために使用した日本語Web資料。