はじめに
この記事は、Flow Matching および関連する生成モデルについて学ぶために、作成した個人的なノートの一部を整理したものです。
内容は論文や公開資料をもとに、Codexを活用しながらまとめていますが、内容や構成の確認、整理は著者自身が行っています。
現在、ネット上にある多くのFlow Matching解説が高度な数学が必要です。本記事は、入門のために理論に重きを置きません。
数学が全くいらないということではないですが、偏微分方程式とか、学習の理論について詳しくなることではなく、ざっくり理解して、コードを読める/書けるようにするという目的で作りました。
ただし、今回の内容では、数式がかなり出てきます。とりあえずは、式の中身が分からなくても、ざっくりとした理解で大丈夫です。
また、本資料の全文、コードはGitHubにあげています。Rectified Flowについては、本記事では扱っていませんが、全文には含まれています。
Githubに載せた全体の第0部と第1部を数回に分割して、記事にしていきます。前回の記事は以下になります。
誤りや改善点などがありましたら、コメントでご指摘いただけると幸いです。
想定読者
本資料は、Flow Matching および関連する生成モデルを学びたい方を対象としています。
特に、
- 深層学習の基礎を一通り学んだ方
- 論文を読む、PyTorchで実装を行うための足掛かりとなる解説を探している方
- 数式だけでなく、直感的な理解も得たい方
を主な対象としています。
厳密な理論よりも、「なぜその式になるのか」「どのような意味を持つのか」を重視して説明しています。
ただし、数学については以下を前提としています。
- 偏微分について、理解している
- 微分方程式が読める
- 統計記号が読める
第1部 Flow Matchingの基礎・理論・最小実装
1.2 学習と生成の全体像(再掲)
Flow Matchingの全体像を理解するために再掲した。これだけで、全体の役割分担がわかるので、まだ読んでいない人はぜひ読んでほしい。
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は、学習済みの地図をたどる生成側の部品である。
この先の章では、これらを一つずつ数式とコードへ落としていく。今は用語を暗記する必要はない。「ペアを作る → 練習経路と正解矢印を作る → 矢印の地図を学ぶ → 新しいノイズを地図に沿って歩かせる」という関係だけをつかめばよい。
8. 点を動かすと分布が動く: 連続の式とpushforward
この章で扱う概念: ODEが直接動かすのは一つ一つの点だが、多数の点を同じ速度場で動かすと、その集まりである分布も変形する。連続の式は分布の局所的な流入・流出を表し、pushforwardは初期分布全体をflow mapで移した結果を表す。
主な段階: 生成を支える数学的補足 — solverが個々の点を動かした結果、source分布全体がtarget側へ運ばれる関係を説明する。
8.1 点、軌道、分布を分けて考える
まず、三つの対象を区別する。
| 対象 | 意味 | 直感 |
|---|---|---|
| 点 $x_t$ | 時刻 $t$ における1サンプルの位置 | 群衆の中の1人 |
| 軌道 $(x_t)_{0\le t\le1}$ | 1点が時間とともに通る道筋 | 1人が歩いた経路 |
| 分布 $p_t$ | 時刻 $t$ における点全体の密度 | 群衆がどこに集まっているか |
ODE
\frac{d x_t}{dt}=v_t(x_t)
が直接記述するのは、1点の軌道である。しかし、source分布 $p_0$ から何千個もの点を取り、すべてを同じ速度場 $v_t$ で動かすと、点群の形も変わる。その時刻ごとの点群の密度が $p_t$ である。
つまり、「分布を動かす」という別の操作を追加で実行するわけではない。一つ一つの点を動かした結果を全体として見ると、分布が動いて見える。
8.2 連続の式は流入と流出の帳尻を合わせる
駅の通路に人が立っている場面を考える。ある区間の人が増える理由は、外から人が入ってきたか、中の人が出ていかなかったかのどちらかである。反対に人が減るのは、入ってくる人数より出ていく人数が多いからである。
確率分布でも同じである。場所 $x$ の密度を $p_t(x)$、その場所での速度を $v_t(x)$ とすると、
p_t(x)v_t(x)
は「その場所を、どれくらいの確率質量が、どちら向きに通過しているか」を表す流量である。流量の出入りと密度変化の帳尻を合わせる式が、連続の式である。
\frac{\partial p_t(x)}{\partial t}
+
\nabla\cdot\left(p_t(x)v_t(x)\right)
=0.
左の第1項は、その場所の密度が時間とともに増減する速さである。第2項の発散 $\nabla\cdot$ は、その場所から流量が差し引きどれだけ出ていくかを測る。
- 流出が流入より多い場所では、密度 $p_t(x)$ は減る。
- 流入が流出より多い場所では、密度 $p_t(x)$ は増える。
- 全体としては、確率質量を途中で作ったり消したりせず、場所を移している。
Flow Matchingの最小実装でこの偏微分方程式を直接解くわけではない。モデルが速度場を学び、solverが多数の点を動かすとき、その分布の変化を裏側で記述しているのが連続の式である。
8.3 flow mapは出発点から現在地への対応表
時刻0の点 $x_0$ を速度場に沿って時刻 $t$ まで動かし、到着した点を返す写像を flow map と呼ぶ。
\phi_t(x_0)=x_t.
$\phi_t$ は、特定の1点だけの軌道ではなく、「どの初期点を入れても、その時刻の到着点を返す規則」である。地図上の各出発地点に対して、時刻 $t$ の現在地を書いた対応表だと考えるとよい。
コードでは、学習済みモデルをsolverで $0$ から $t$ まで積分する処理全体が、$\phi_t$ を数値的に計算している。
x_t = euler_solve(
lambda time, x: model(time, x),
x0,
steps=steps,
t0=0.0,
t1=t,
)
8.4 pushforwardは分布全体へflow mapを適用すること
source分布 $p_0$ から多数の初期点を取り、それぞれへ同じflow map $\phi_t$ を適用する。得られた到着点全体の分布が $p_t$ になる。この関係を、$p_0$ が $\phi_t$ によって pushforward(押し出し) されたという。
p_t=(\phi_t)_\#p_0.
記号 $\#$ は「分布の各点を写像で移した結果」を表す。式の暗記より、次の流れをつかむことが重要である。
x0を1個選ぶ -> flow mapでxtへ移す
これを多数のx0で行う -> 到着点の集まりが分布ptになる
1次元の簡単な例として、$x_0$ を平均0、分散1の標準正規分布から取り、$\phi(x)=2x$ ですべての点を2倍する。0に近い点も遠い点も同じ規則で外側へ広がるため、到着点の分布は平均0、分散4の正規分布になる。点ごとの変換 $x\mapsto2x$ を集団全体へ適用した結果、分布の幅が変わった。これがpushforwardの最小例である。
8.5 Flow Matchingの学習と生成へ戻す
ここまでの関係を、教材の部品へ戻す。
学習:
velocity model v_theta(t,x) が矢印の地図を近似する
生成:
solverが dx/dt = v_theta(t,x) をたどる
-> 各初期点x0の到着点を計算する(flow map)
-> 多数のx0を動かす(pushforward)
-> source分布p0が生成分布p1_hatへ変形する
分布側の見方:
途中分布ptの密度変化は連続の式で表される
したがって、Flow Matchingは「分布そのものをニューラルネットワークへ入力して動かす」方法ではない。ニューラルネットワークは各点の速度を返し、solverが点を動かし、その集団として分布がpushforwardされる。連続の式とpushforwardは、この一連の生成を分布側から読み直すための言葉である。
9. 理想的なFlow Matchingはなぜそのまま使いにくいか
この章で扱う概念: 理想的なFlow Matching目的関数は、時刻ごとの周辺分布を正しく運ぶ周辺速度場を直接回帰する考え方である。しかしその正解速度場は通常データから直接得られないため、計算可能な条件付き問題へ置き換える必要がある。
主な段階: 学習の理論 — 本当に学びたい周辺速度場と、実際に作れる教師速度の違いを整理する。
9.1 直感の地図
第1部の前半では、ノイズ点 $x_0$ とデータ点 $x_1$ をペアにして、直線経路
x_t = (1 - t)x_0 + t x_1
を作った。そして、その速度
u_t = x_1 - x_0
を教師信号にした。
この説明だけを見ると、「ペアごとの速度を学べば終わり」に見える。しかし生成時には、ペア $x_0, x_1$ は手元にない。生成時にあるのは、現在の点 $x_t$ と時刻 $t$ だけである。
ここが重要である。学習時には $x_0$ と $x_1$ を知っているが、生成時には知らない。したがって、最終的に欲しい速度場は
ペアを知っているときの速度
ではなく、
時刻t・場所xだけを見たときの平均的な速度
でなければならない。
9.2 周辺速度場という目標
時刻 $t$ における分布を $p_t$ とする。この分布を正しく動かす速度場を $u_t(x)$ と書く。これは、場所 $x$ にいる確率質量をどちらへ運べば、分布全体が正しく時間発展するかを表す。
理想的には、ニューラルネットワーク $v_\theta(t, x)$ をこの $u_t(x)$ に近づけたい。
\mathcal{L}_{\mathrm{FM}}(\theta)
=
\mathbb{E}_{t, x \sim p_t}
\left[
\left\|
v_\theta(t, x) - u_t(x)
\right\|^2
\right].
この式は美しいが、実装では困る。理由は $u_t(x)$ が直接わからないからである。
ペア $x_0, x_1$ を固定すれば、直線速度 $x_1 - x_0$ はすぐに計算できる。しかし、ある場所 $x$ における周辺速度 $u_t(x)$ は、その場所に来うる全ペアの寄与を平均したものである。データ分布全体を知っていないと、直接は書きにくい。
直感的には、道路上のある交差点 $x$ を考える。そこには、いろいろな出発地と目的地を持つ人が通る。同じ交差点にいても、それぞれ行きたい方向は違う。交差点だけを見て決める速度場は、その場所を通る人たちの進行方向を平均したようなものになる。
9.3 何が難しいのか
理想的なFM lossをそのまま使うには、各 $t$ と $x$ について正解速度 $u_t(x)$ が必要である。だが実際に持っているのは、データサンプルとノイズサンプルだけである。
| 欲しいもの | 実際に作りやすいもの |
|---|---|
| 周辺速度 $u_t(x)$ | ペアごとの条件付き速度 $u_t(x\mid x_0,x_1)$ |
| $x \sim p_t$ からの汎用サンプル | ペアから作った $x_t = (1-t)x_0 + tx_1$ |
| 分布全体の時間発展 | サンプルペアごとの直線運動 |
Conditional Flow Matchingは、このギャップを埋めるための方法である。
10. CFMは何を条件付きにしているのか
この章で扱う概念: CFMにおける「条件付き」とは、端点ペアやtargetサンプルなどの潜在的な条件 $z$ を固定したときの経路と速度を考えることを指す。これはクラスラベルをモデルへ入力する意味での条件付き生成とは別であり、教師速度を計算可能にするための条件付けである。
主な段階: 学習の理論 — ペアごとの教師速度から、生成時に使える場所依存の速度場を学ぶ考え方を説明する。
10.1 直感の地図
Conditional Flow Matchingの考え方は、かなり実装寄りに言えばこうである。
難しい「分布全体の速度」を直接作らない。
代わりに、サンプルペアごとの簡単な速度を大量に作る。
ニューラルネットワークにはペア情報を渡さず、時刻と場所だけから速度を予測させる。
すると、同じ場所に来る複数のペアの速度が平均される。
この「ペアごとの簡単な世界」が、条件付き経路である。
10.2 条件変数 z
ペアをまとめて
z = (x_0, x_1)
と書く。この $z$ を固定すると、直線経路は
x_t = \psi_t(z) = (1 - t)x_0 + t x_1
であり、条件付き速度は
u_t(x_t \mid z) = x_1 - x_0
である。
ここで「条件付き」と言っているのは、$z$ を固定した世界では経路と速度が簡単に決まる、という意味である。
10.3 CFM loss
CFM lossは次のように書ける。
\mathcal{L}_{\mathrm{CFM}}(\theta)
=
\mathbb{E}_{t,z}
\Bigl[
\|v_\theta(t,x_t)-u_t(x_t\,|\,z)\|^2
\Bigr],
\qquad
x_t=\psi_t(z)
直線経路の場合は、これが
\mathcal{L}_{\mathrm{CFM}}(\theta)
=
\mathbb{E}_{t,x_0,x_1}
\left[
\left\|
v_\theta(t,(1-t)x_0+tx_1)
-(x_1-x_0)
\right\|^2
\right]
になる。
この式は、4.3節で扱った conditional_flow_matching_loss に対応する。
対応するコード:
t = time_sampler(batch, x0.device, x0.dtype)
x_t = path.sample(t, x0, x1)
u_t = path.velocity(t, x0, x1)
pred = model(t, x_t)
loss = ((pred - u_t) ** 2).flatten(1).sum(dim=1).mean()
このコードで、モデルは x0 や x1 を直接受け取らない。入力は $t$ と $x_t$ だけである。この制約が重要である。もしモデルに x0 と x1 を渡してしまうと、モデルはペアごとの速度を暗記できてしまい、生成時に使いたい「場所だけから決まる速度場」にならない。
10.4 同じ場所の矢印を平均する
CFMでは、ニューラルネットワークに「たくさんのペアの矢印」を見せる一方で、どのペアから来た矢印かは教えない。モデルが受け取るのは時刻 $t$ と場所 $x_t$ だけである。
そのため、同じ時刻・同じ場所に複数方向の教師矢印が現れたとき、二乗誤差を小さくする予測はそれらの中間になる。これが「同じ場所に来る矢印を平均する」という意味であり、図5にその関係を示す。

図5 同じ入力へ集まる条件付き速度と、その平均として得られる予測速度
図5の黒点は同じ入力 $(t,x)$ を表す。色のついた矢印は、異なる条件 $z$ から来た教師速度である。モデルに $z$ を渡さない場合、モデルはどの矢印だけを選べばよいかを区別できない。そのため、二乗誤差の最適解は赤い矢印、つまり条件付き平均になる。
実際の学習では、よく現れる矢印ほどミニバッチにも多く現れるため、モデルの予測へ強く反映される。厳密な証明へ進まなくても、「ペアごとの矢印を集め、場所ごとの代表的な矢印を学ぶ」と理解すれば、この教材の実装を追うには十分である。
10.5 小さな1次元例
1次元で、時刻 $t=0.5$、場所 $x=0$ に同じように到達する2つのペアを考える。
pair A: x0 = -1, x1 = 1 -> x_t = 0, velocity = 2
pair B: x0 = 1, x1 = -1 -> x_t = 0, velocity = -2
このとき、同じ $(t,x)=(0.5,0)$ に対して教師速度は $2$ と $-2$ の両方が現れる。モデルはペア情報を見ないので、二乗誤差を最小にする予測は平均の $0$ になる。
この例は、二乗誤差が競合する教師矢印の中間を選ぶことだけを示すための小さな回帰例である。
この例は、CFMの重要な性質を示している。
- 条件付き速度は、ペアごとには簡単で鋭い。
- 周辺速度は、同じ場所に来る条件付き速度の平均になる。
- モデルに何を入力として渡すかが、学習される速度場を決める。
10.6 コード上の注意
CFM lossの実装で特に間違えやすいのは次の点である。
| 注意点 | 理由 |
|---|---|
$t$ は [B, 1] にする |
各サンプルへ時刻を一つ対応させ、path側でデータ次元へ安全に拡張するため |
| モデル入力は $t, x_t$ にする | 生成時にも使える速度場にするため |
| $u_t$ と $x_t$ の端点 convention をそろえる | $t=0$ がsourceかtargetかで符号が逆になるため |
| lossは次元方向をsumしてbatch平均する | 各サンプルのベクトル誤差を測るため |
本教材の実装では、$t=0$ がsource、$t=1$ がtargetである。したがって、
u_t = x_1 - x_0
である。別の実装や論文では $t=0$ をデータ側、$t=1$ をノイズ側に置くことがある。その場合、同じ形の式に見えても、生成方向や速度の符号が変わる。
11. 第1部のまとめ
11.1 確認事項
今回で、この入門記事は終了する。ここまでのまとめを以下に記す。
第1部で押さえるべき対応は次である。
-
分布全体の平均的な速度が欲しい。
- 数式: $u_t(x)$
- コード: 直接は実装しない。
-
ペアごとの簡単な速度を作る。
- 数式: $u_t(x_t \mid z)$
- コード:
path.velocity(t, x0, x1)
-
ペアごとの途中地点を作る。
- 数式: $x_t=\psi_t(z)$
- コード:
path.sample(t, x0, x1)
-
場所だけから速度を予測する。
- 数式: $v_\theta(t, x_t)$
- コード:
model(t, x_t)
-
二乗誤差で平均速度を学ぶ。
- 数式: $\mathbb{E}[\lVert v_\theta-u_t\rVert^2]$
- コード:
conditional_flow_matching_loss
ここまで理解できると、CFMは「魔法のloss」ではなく、条件付きに作れる教師速度を使って、周辺速度場を回帰で得る方法として読める。
第2部以降は、GitHubにあげている全文にある。無料で読めるので、興味がある方は、ぜひ読んでみてほしい。
参考文献
以下には、本教材の内容、説明順序、実装対応、用語選択の検討に使用した論文、公式実装、技術文書、解説資料、動画、既存教材を掲載する。
- 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資料。