【入門】拡散モデルのエッセンス
はじめに
2025 年のいま、拡散モデルは静止画だけでなく 動画・テキスト へと射程を拡げています。たとえば OpenAI の Sora は最長 1 分の映像を一括生成し、拡散的アプローチが時空間モデリングでも威力を示すことを証明しました。さらに Google DeepMind が Google I/O 2025 で発表した Gemini Diffusion は “テキストを拡散で生成する” という大胆な試みで、従来の自己回帰型 LLM を遥かに凌ぐ低レイテンシを目指しています。
こうした急激な進歩が示すのは、「拡散」という魔法のようなアイデアが依然として生成 AI の中心にあり続ける――という事実です。
岡野原 大輔氏による「拡散モデル データ生成技術の数理」(Amazon)は、まさにその魔法の謎に真正面から挑んだ一冊です。本書は拡散モデルの「なぜうまくいくのか」を理論的に解き明かし、その数学的美しさと実用性の両面を丁寧に描写しています。
ただし、その理論的な深遠さゆえに、初めて拡散モデルに触れる方にとってはやや険しい道のりに感じられるかもしれません。そこで本記事では、本書への架け橋として、拡散モデルの数理的エッセンスを可能な限りわかりやすく紐解いていきます。
この記事が、皆様にとって拡散モデルという魅力的な世界への扉を開く鍵となり、そして本書との出会いへと導く道標となることを願っています。
本記事の構成
- 第1章:生成モデルとは?
- 第2章:拡散モデルとは?SBMとDDPM
- 第3章:確率微分方程式 (SDE) と拡散モデル
- 第4章:条件付け、効率化、対称性
『ゼロから作るDeep Learning ❺ ―生成モデル編』も初学者の方にはおすすめです!
拡散モデルを、実装を実際に動かしながら学びたい方には、斎藤 康毅氏の『ゼロから作るDeep Learning ❺ ―生成モデル編』(Amazon)の第8~10章が絶好の入門書となります。
DDPM をはじめ、U-Net、条件付き拡散モデル、分類器ガイダンス/分類器無しガイダンス、Latent Diffusion まで、昨今ではより重要な拡散モデルの技法についてすべて PyTorch で一から組み立てる実装が収録されており、本書『拡散モデル データ生成技術の数理』で示された理論を手を動かして確かめられる構成になっています。
さあ、数式という羅針盤を手に、果てしない拡散モデルの世界へ踏み出しましょう。
第1章:生成モデルとは?
この章のゴール:
この章では、拡散モデルを理解するための土台となる「生成モデル」の基本的な考え方と、従来の生成モデルが抱えていた課題、そしてその課題を解決する鍵となる「スコア関数」と「スコアマッチング」という概念について学びます。特に、拡散モデルの核心的なアイデアに繋がる「デノイジングスコアマッチング」の重要性を理解することを目指します。
1.1 生成モデル:データを「創り出す」AI技術
まず初めに、「生成モデル(Generative Models)」とは一体何でしょうか?
一言で言えば、学習データの特徴を捉え、そのデータと似た新しいデータを自動的に生成する能力を持つモデルのことです。例えば、たくさんの猫の画像データを学習した生成モデルは、これまで見たことのない新しい猫の画像を生成することができます。あるいは、多くの楽曲データを学習すれば、新しいメロディを創り出すことも可能です。
生成モデルの主な目的は、以下の2つに大別できます。
-
データ生成(サンプリング): モデルが学習したデータ分布
に従う新しいサンプルp_{data}(\mathbf{x}) を生成すること。これが最も直感的で華やかな応用例です。\mathbf{x}_{new} -
尤度評価(密度推定): 与えられたデータ
が、モデルが学習したデータ分布\mathbf{x} から生成されたものである確率(尤度)を評価すること。これにより、異常検知などにも応用できます。p_{\bm{\theta}}(\mathbf{x})
本書では、特に高次元で複雑なデータ(例えば、高解像度の画像や長い音声波形)を扱う際の生成モデルの学習とサンプリングの難しさに焦点を当てています。
1.1.1 高次元データの生成はなぜ難しい?
私たちが普段目にする画像や音声は、コンピュータにとっては非常に高次元なデータです。例えば、1024x1024ピクセルのカラー画像は、
しかし、希望もあります。多くの場合、高次元空間に存在するデータは、実際にはその空間全体に広がっているわけではなく、より低次元の「多様体(Manifold)」と呼ばれる構造の上に分布していると考えられています。これを「多様体仮説(Manifold Hypothesis)」と呼びます。生成モデルの目標の一つは、この隠れた多様体構造を学習し、その多様体上に新しいデータ点を生成することと言えるでしょう。
1.2 エネルギーベースモデル(EBM):確率分布をエネルギーで表現する
生成モデルの具体的なアプローチの一つとして、「エネルギーベースモデル(Energy-Based Models, EBMs)」があります。EBMは、データの「もっともらしさ」を「エネルギー」という概念で表現します。直感的には、データがもっともらしい(つまり、学習データに近い)ほどエネルギーが低く、もっともらしくないほどエネルギーが高いと考えます。
あるデータ
この関係性を視覚的に理解するために、図1を見てみましょう。
図1:エネルギーベースモデル(EBM)の概念図。データがもっともらしい(エネルギーが低い)領域ほど、確率密度が高くなる様子を示しています。
図1に示すように、エネルギー関数
ここで、
分母の
この積分は、データ
EBMの魅力は、エネルギー関数
1.2.1 EBMの大きな壁:分配関数の計算
EBMは非常に柔軟で表現力の高いモデルですが、大きな課題を抱えています。それは、分配関数
式 (1.2) を見るとわかるように、
この分配関数の計算困難性は、EBMの学習(パラメータ
1.3 生成モデルの学習:データに近づけるには?
生成モデルを学習するとは、モデルのパラメータ
最も一般的な学習方法は「最尤推定(Maximum Likelihood Estimation, MLE)」です。
最尤推定では、訓練データセット
実際には、積の形よりも和の形の方が扱いやすいため、対数を取った「対数尤度関数
この対数尤度を最大化するために、通常は勾配上昇法(または損失関数として負の対数尤度を考え、勾配降下法)を用います。つまり、
1.3.1 EBMの最尤推定の難しさ
EBMの対数尤度は、式 (1.1) を用いると、
と書けます。したがって、訓練データ全体に対する対数尤度は、
となります。この勾配
と変形できます[1]。これは、モデル分布
このように、分配関数の存在がEBMの学習を非常に難しくしているのです。
1.4 スコア関数:確率分布の「坂道」を捉える
ここで、拡散モデルを理解する上で非常に重要な概念である「スコア関数(Score Function)」が登場します。
スコア関数
スコア関数は、
このベクトルは、各データ点
1.4.1 スコア関数の重要な性質:分配関数からの解放
EBM
ここで注目すべきは、
したがって、EBMのスコア関数は、
となり、分配関数
これは非常に強力な性質です。分配関数の計算困難性というEBMの大きな壁を回避できる可能性を示唆しています。もし、データ分布
1.5 スコアマッチング:未知のスコア関数をどう学習するか?
スコア関数が有用であることはわかりましたが、問題は、真のデータ分布
そこで登場するのが「スコアマッチング(Score Matching)」という考え方です。
スコアマッチングの目標は、パラメータ
つまり、
1.5.1 明示的スコアマッチング(Explicit Score Matching, ESM)
最も直接的なアプローチは、モデルのスコア
目的関数
しかし、この目的関数には依然として未知の
1.5.2 暗黙的スコアマッチング(Implicit Score Matching, ISM)
幸いなことに、Hyvärinen (2005) によって、真のスコア
(いくつかの仮定のもとで)式 (1.6) と定数項を除いて等価な目的関数
ここで、
よりコンパクトに書くと、
となります。ここで、
この目的関数
ISMの簡易的な導出 (1次元の場合):
を展開し、部分積分などを用いると(
という形に変形できます。ここで
ISMの課題:
ISMは画期的な手法ですが、いくつかの課題があります。
-
計算コスト:
の計算には、スコア関数\text{tr}(\nabla_\mathbf{x} \mathbf{s}_{\bm{\theta}}(\mathbf{x})) の出力次元\mathbf{s}_{\bm{\theta}}(\mathbf{x}) に対してd 回の逆伝播(backpropagation)が必要になる場合があり、高次元データでは計算コストが非常に大きくなります(d の計算量、またはO(d^2) 回の逆伝播)。O(d) - 過学習: 特にデータが少ない場合や高次元の場合、モデルが訓練データに過剰適合しやすくなる傾向があります。
1.6 デノイジングスコアマッチング(Denoising Score Matching, DSM):拡散モデルへの道
ISMの計算コストと過学習の問題を解決するために提案されたのが、「デノイジングスコアマッチング(Denoising Score Matching, DSM)」です (Vincent, 2011)[3]。これが、拡散モデルの根幹をなすアイデアへと繋がっていきます。
DSMの基本的な考え方は、元データ
まず、元データ
つまり、
このときの条件付き確率分布
となります。
このノイズを加えた後の攪乱データ
となります。DSMの目標は、この攪乱データ分布
しかし、
ここで巧妙なのは、学習対象を
これは、加えられたノイズ
DSMの目的関数
式 (1.11) を代入すると、
となります。
この目的関数は、訓練データ
DSMの重要なポイント:
驚くべきことに、このDSMの目的関数 (1.12) を最小化することは、元のノイズが加えられていないデータのスコアではなく、ノイズが加えられたデータ分布
つまり、
と書けるのです(
これは、DSMが実質的に「ノイズ除去(denoising)」を通じてスコアを学習していることを意味します。モデル
DSMのプロセスを図2に示します。
図2:デノイジングスコアマッチング(DSM)の概念図。元データにノイズを加え、その攪乱データから元のノイズ(または関連するスコア)を予測することで学習します。
図2のように、DSMはまず元データ
このDSMは、以下の利点があります。
- 計算効率: ヤコビ行列のトレース計算が不要なため、高次元データでも効率的に学習できます。
- 過学習抑制: データにノイズを加えることで、一種のデータ拡張(data augmentation)の効果があり、モデルの過学習を抑制する傾向があります。
- 任意のノイズ分布: 理論上はガウスノイズでなくても、微分可能であれば他のノイズ分布も使用可能です。
この「ノイズを加えてスコアを学習する」というDSMのアイデアが、拡散モデルの基本的な考え方へと直接繋がっていきます。拡散モデルでは、様々なレベルのノイズをデータに加えて、それぞれのノイズレベルに対応するスコア関数を学習していくことになります。
1.6.1 スコア関数を手に入れたらどうする?ランジュバン・モンテカルロ法
さて、スコアマッチング(特にDSM)によって、データ分布(またはノイズが加えられたデータ分布)のスコア関数
ここで活躍するのが「ランジュバン・モンテカルロ法(Langevin Monte Carlo, LMC)」または「ランジュバン動力学(Langevin Dynamics)」と呼ばれるMCMC(マルコフ連鎖モンテカルロ)法の一種です。
LMCは、以下の更新式に従ってデータ点
ここで、
-
は\mathbf{x}_k ステップ目のデータ点。k -
は\mathbf{s}_{\bm{\theta}}(\mathbf{x}_k) における学習済みスコア関数\mathbf{x}_k の近似値。\nabla_\mathbf{x} \log p(\mathbf{x}_k) -
はステップサイズ。\alpha > 0 -
は標準正規分布\mathbf{u}_k からサンプリングされるノイズ。\mathcal{N}(\bm{0}, \mathbf{I})
この更新式は、二つの項からなります。
-
勾配項
: スコア関数の方向にデータ点を移動させます。スコア関数は確率密度が高くなる方向を指すため、この項はデータ点をより「もっともらしい」領域へと導く役割を果たします。\alpha \mathbf{s}_{\bm{\theta}}(\mathbf{x}_k) -
ノイズ項
: ランダムなノイズを加えることで、データ点が局所的な確率の山に囚われるのを防ぎ、確率分布全体を探索できるようにします。\sqrt{2\alpha} \mathbf{u}_k
ステップサイズ
こうして、学習したスコア関数
1.7 第1章のまとめ:拡散モデルへの道筋
この章では、生成モデルの基本的な概念から出発し、EBMとその課題である分配関数の計算困難性を見てきました。そして、その困難性を回避する鍵としてスコア関数
特に、計算効率が高く、拡散モデルの基礎となるデノイジングスコアマッチング(DSM)は、データにノイズを加えてそのノイズを除去する過程でスコアを学習するという重要なアイデアを提示しました。
最後に、学習したスコア関数を用いて実際にデータをサンプリングする手法としてランジュバン・モンテカルロ法を紹介しました。
これらの概念は、次章以降で解説する拡散モデル(スコアベースモデルやDDPM)を理解するための非常に重要な基礎となります。特に「ノイズを付加し、そのノイズ(またはスコア)を予測/除去する」というテーマは、拡散モデル全体を貫く中心的なアイデアです。
ここまでの流れのポイント:
- 生成モデルは新しいデータを創り出す。高次元データは難しい。
- EBMはエネルギーで確率を表現するが、分配関数が計算困難。
- スコア関数
は確率分布の「坂道」を示し、分配関数に依存しない。\nabla_\mathbf{x} \log p(\mathbf{x}) - スコアマッチングは未知のスコア関数を学習する枠組み。
- ISMは真のスコアが不要だが、計算コストが高い。
- DSMはデータにノイズを加え、そのノイズを除去するタスクを通じてスコアを学習。計算効率が良い。
- 学習したスコア関数はランジュバン動力学でサンプリングに使える。
これらの知識を元に、いよいよ次章では拡散モデルの具体的な仕組みに入っていきます。
第2章:拡散モデルとは?SBMとDDPM
この章のゴール:
この章では、いよいよ現代の拡散モデルの主役である「スコアベースモデル(Score-Based Models, SBM)」と「デノイジング拡散確率モデル(Denoising Diffusion Probabilistic Models, DDPM)」という2つの強力なアプローチを詳しく見ていきます。それぞれのモデルがどのようにデータを生成し、どのように学習するのかを理解し、最終的にはこれら一見異なるモデルが「シグナルノイズ比」という統一的な視点から捉えられることを学びます。
前章で学んだスコアマッチング、特にデノイジングスコアマッチング(DSM)とランジュバン動力学が、SBMの基礎となります。一方、DDPMは潜在変数モデルとしての側面を持ち、変分推論の枠組みで学習されます。これらのモデルの数学的な仕組みと、それらがもたらす驚異的なデータ生成能力の源泉に迫りましょう。
2.1 スコアベースモデル(SBM):複数ノイズレベルでのスコア学習と生成
第1章の最後で、デノイジングスコアマッチング(DSM)を使えば、データに単一レベルのノイズ
しかし、この単一ノイズレベルのDSMにはいくつかの課題がありました。
-
低密度領域のスコア学習の困難性: 元のデータ分布
がほとんど存在しないような低密度領域では、ノイズを加えたとしてもサンプルが少なく、その領域でのスコア関数の学習が不正確になりがちです。特に、元のデータが高次元空間内の低次元多様体上に集中している場合、多様体から離れた領域のスコアはうまく学習できません。p_{data}(\mathbf{x}) - モード間の接続性: データ分布が複数のモード(確率の山)を持つ場合、それらのモード間は通常、確率密度が非常に低い領域となります。単一の強いノイズを加えるとモード構造が破壊されてしまいますが、弱いノイズではモード間を繋ぐスコアが学習できず、サンプリング時に全てのモードを探索できない可能性があります。
-
初期サンプルの選択: ランジュバン動力学を開始する初期サンプル
をどこから持ってくるかが問題です。もし初期サンプルが低密度領域にあれば、不正確なスコアに導かれてうまくサンプリングできないかもしれません。\mathbf{x}_0
これらの課題に対処するために登場したのが、「スコアベース生成モデリング(Score-Based Generative Modeling)」、またはその初期の代表的な手法である「ノイズ条件付きスコアネットワーク(Noise Conditional Score Network, NCSN)」です。SBMという呼称は、より広範なスコアベースのアプローチを指すこともありますが、ここではSong & Ermon (2019, 2020)らによる複数ノイズレベルを用いるアプローチを指すこととします[4][5]。
2.1.1 複数ノイズレベルの導入
SBMの核心的なアイデアは、単一ではなく、複数の異なる強さのノイズレベル
なぜ複数のノイズレベルを使うのでしょうか?
-
大きなノイズレベル (
):\sigma_{large} - 元データ
に大きなノイズを加えると、攪乱データ\mathbf{x} の分布\tilde{\mathbf{x}} は、元データの複雑な構造がほぼ失われ、滑らかで単純な分布(例えば、ほぼガウス分布)に近づきます。p_{\sigma_{large}}(\tilde{\mathbf{x}}) - このような単純な分布のスコアは学習しやすく、また、異なるモード間も接続されやすくなります。
- 低密度領域でもノイズによってデータが「水増し」されるため、スコア学習が多少安定します。
- 元データ
-
小さなノイズレベル (
):\sigma_{small} - 元データ
に小さなノイズを加えた場合、攪乱データ\mathbf{x} の分布\tilde{\mathbf{x}} は、元データの詳細な構造を保持しています。p_{\sigma_{small}}(\tilde{\mathbf{x}}) - このスコアを学習することで、データの細部を正確に捉えることができます。
- 元データ
SBMでは、これらの異なるノイズレベルに対応するスコア関数を、単一のニューラルネットワーク
学習時の目的関数は、各ノイズレベル
ここで、
ネットワークがノイズそのものを予測する場合の目的関数(DDPMなど)
実際には、目的関数はノイズ予測の形でも書けます。
という形も考えられます(
DDPMの論文などでは、このノイズ予測の形
スコア予測とノイズ予測の等価性については、本記事の2.3.2節で深堀りしていきます。
2.1.2 SBMによるサンプリング:アニールド・ランジュバン動力学
複数のノイズレベルでスコア関数
SBMでは、「アニールド・ランジュバン動力学(Annealed Langevin Dynamics)」と呼ばれる手法を用います。これは、シミュレーテッドアニーリング(焼きなまし法)のアイデアとランジュバン動力学を組み合わせたものです。
そのサンプリングプロセスをまずは図3に概念的に示します。
図3:SBMのアニールド・ランジュバン動力学。最も高いノイズレベルから徐々にノイズレベルを下げながら、各レベルでランジュバン動力学を適用し、サンプルを精緻化していきます。
これは、以下のようにまとめられます。
アルゴリズム 2.1:SBMサンプリング
-
入力:
- ノイズレベルの降順リスト:
\sigma_1 > \sigma_2 > \dots > \sigma_L - (
が最も高いノイズレベル、\sigma_1 が最も低いノイズレベル)\sigma_L
- (
- スコアモデル:
\mathbf{s}_{\bm{\theta}}(\mathbf{x}, \sigma_i) - 基本ステップサイズ:
\alpha - 各ノイズレベルでのランジュバンステップ数:
K
- ノイズレベルの降順リスト:
-
出力:
- 最終生成サンプル:
\mathbf{x}
- 最終生成サンプル:
-
手順:
-
初期化:
- Initialize
\mathbf{x} \quad \text{(例: } \mathcal{N}(\bm{0}, \sigma_1^2 \mathbf{I}) \text{ からサンプリング)}
// 最も高いノイズレベル に対応する分布から開始\sigma_1
- Initialize
-
反復処理:
- For
:i = 1, \dots, L
//「アニールステップ」 のループ。i へとノイズレベルが下がっていく\sigma_1 \to \sigma_L - 現在のノイズレベルは
です。\sigma_i - アニールステップ
におけるステップサイズi を設定します。\alpha_i
\alpha_i := \alpha \cdot (\sigma_i^2 / \sigma_1^2)
// これは、現在のアニールステップ が高いほど、i (最大ノイズ分散) との比率でステップサイズが小さくなるように調整する一例です。\sigma_1^2 - For
:k = 1, \dots, K
// ランジュバンステップのループ\mathbf{u}_k \sim \mathcal{N}(\bm{0}, \mathbf{I}) - (オプション: if
andi=L thenk=K )\mathbf{u}_k \leftarrow \bm{0}
// 最も低いノイズレベルの最後のステップではノイズを加えない \mathbf{x} \leftarrow \mathbf{x} + \alpha_i \mathbf{s}_{\bm{\theta}}(\mathbf{x}, \sigma_i) + \sqrt{2\alpha_i} \mathbf{u}_k \quad (2.3)
- 現在のノイズレベルは
- For
-
最終サンプル:
- Return
\mathbf{x}
(この が最終サンプルとなります)\mathbf{x}
- Return
-
初期化:
なぜこのアルゴリズムがうまくいくのか?
-
高いノイズレベル (
) で開始: 最初は非常にノイジーで滑らかな分布 (\sigma_1 に対応) からサンプリングを始めます。ここでは、データの全体的な構造(例えば、複数のモードが存在するなら、それらの大まかな位置関係)を捉えることを目指します。スコア\sigma_1 は、このぼやけた分布の勾配に従ってサンプルを動かします。\mathbf{s}_{\bm{\theta}}(\mathbf{x}, \sigma_1) -
ノイズレベルの低減 (アニーリング): アニールステップ
が進むにつれて、ノイズレベルi は徐々に低くなります (\sigma_i )。ターゲットとする分布も徐々に元データの分布\sigma_1 \to \sigma_L に近づいていき、より詳細な構造が現れてきます。各ステップで適用されるスコアp_{data}(\mathbf{x}) も、その時点でのターゲット分布の勾配を反映します。\mathbf{s}_{\bm{\theta}}(\mathbf{x}, \sigma_i) -
低いノイズレベル (
) で終了: 最終的には、非常に低いノイズレベル\sigma_L でのスコア\sigma_L を用いてサンプリングを行います。これにより、データの細部や高品質なテクスチャが生成されることが期待されます。\mathbf{s}_{\bm{\theta}}(\mathbf{x}, \sigma_L)
このアニーリングのプロセスは、最初は高温(大きなノイズ)で自由に動き回っていた粒子が、徐々に温度を下げる(ノイズを小さくする)ことでエネルギーの低い安定した状態(もっともらしいデータ)に落ち着く様子に似ています。
SBMは、この複数ノイズレベルでの学習とアニールド・ランジュバン動力学によるサンプリングによって、高品質な画像生成などで大きな成功を収めました。
2.2 デノイジング拡散確率モデル(DDPM):潜在変数モデルとしての拡散過程
SBMがスコア関数の直接的な推定とMCMCサンプリングに焦点を当てていたのに対し、「デノイジング拡散確率モデル(Denoising Diffusion Probabilistic Models, DDPM)」は、潜在変数モデルの枠組みで拡散過程を定式化します (Ho et al., 2020)[6]。DDPMは、そのシンプルさと優れた性能から、現在の拡散モデル研究の主流の一つとなっています。
DDPMは、大きく分けて2つの過程からなります。これらの過程を図4に示します。
図4:DDPMの拡散過程と逆拡散(生成)過程。拡散過程でデータは徐々にノイズに変換され、逆拡散過程では学習されたモデルがノイズからデータを復元します。
- 拡散過程(Forward Process / Diffusion Process): データに徐々にノイズを加えていき、最終的には既知の単純なノイズ分布(通常は標準正規分布)に変換する過程。これは固定された過程であり、学習は不要です。
- 逆拡散(生成)過程(Reverse Process / Denoising Process): ノイズ分布から出発し、学習されたニューラルネットワークを使って徐々にノイズを除去していき、元データを復元する過程。この逆拡散過程のモデルを学習します。
2.2.1 拡散過程:データをノイズへと拡散させる
拡散過程では、元のデータサンプル
ここで、
-
はノイズの分散を制御するスケジュール(\{\beta_t\}_{t=1}^T )。0 < \beta_1 < \beta_2 < \dots < \beta_T < 1 -
は単位行列。\mathbf{I}
このマルコフ連鎖を
拡散過程の重要な性質として、
ここで、
つまり、
となります。これは、時刻
なお、式
2.2.2 逆拡散過程:ノイズからデータを復元する
拡散過程がデータをノイズへと変換するのに対し、逆拡散過程はその逆、つまり純粋なノイズ
この逆拡散過程は、各ステップ
ここで、
DDPMの論文では、分散
2.2.3 DDPMの学習:変分下限(ELBO)の最大化
DDPMの学習は、変分オートエンコーダ(VAE)と同様に、対数尤度
ELBOは以下のように定義されます(導出の詳細はDDPMの元論文 (Ho et al., 2020) の付録Aなどを参照してください)。
学習の目標は、この
この損失関数
ここで、
-
は、\mathbb{E}_q (データ分布からのサンプリング)および\mathbf{x}_0 \sim p_{data}(\mathbf{x}_0) (\mathbf{x}_{1:T} \sim q(\mathbf{x}_{1:T}|\mathbf{x}_0) から始まる拡散過程)に対する期待値を表します。\mathbf{x}_0 -
はD_{KL}(q\|p) とq の間のカルバック・ライブラー(KL)ダイバージェンスです。p -
: 最終的な潜在変数L_T = D_{KL}(q(\mathbf{x}_T|\mathbf{x}_0) \| p(\mathbf{x}_T)) の分布\mathbf{x}_T が事前分布q(\mathbf{x}_T|\mathbf{x}_0) (通常、標準正規分布p(\mathbf{x}_T) )に近づくように促す項です。拡散過程の設計により、\mathcal{N}(\bm{0},\mathbf{I}) はq(\mathbf{x}_T|\mathbf{x}_0) にほとんど依存せず\mathbf{x}_0 に近くなるため、この項はしばしば定数として扱われたり、学習において重み付けが小さかったりします。p(\mathbf{x}_T) -
(L_{t-1} = D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) \| p_{\bm{\theta}}(\mathbf{x}_{t-1}|\mathbf{x}_t)) ): 各タイムステップt \in [2,T] における逆拡散過程t が、解析的に計算可能な真の事後分布p_{\bm{\theta}}(\mathbf{x}_{t-1}|\mathbf{x}_t) を模倣するように学習するための項です。これがDDPMにおけるノイズ除去ステップの学習の主要部分です。q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) -
: 最終的なデータL_0 = - \log p_{\bm{\theta}}(\mathbf{x}_0|\mathbf{x}_1) を再構成するステップ(\mathbf{x}_0 から\mathbf{x}_1 を生成)における負の対数尤度です。この項を最小化することは、元データ\mathbf{x}_0 の再構成尤度\mathbf{x}_0 を最大化することに相当し、「再構成項」とも呼ばれます。p_{\bm{\theta}}(\mathbf{x}_0|\mathbf{x}_1)
学習の目標は、この損失関数
- KLダイバージェンスである
およびL_T の各項を最小化すること(モデルの分布をターゲットの分布に近づけること)、L_{t-1} - そして、
項を最小化すること(元データの再構成品質を高めること)L_0 = -\log p_{\bm{\theta}}(\mathbf{x}_0|\mathbf{x}_1)
を意味します。
なお、
DDPMの目的関数の簡略化:
Ho et al. (2020) は、このELBOの式をさらに変形し、より直感的で扱いやすい目的関数を導出しました。
特に、
式 (2.5)
これと、
とパラメータ化します[7]。ここで、
このとき、ELBOの主要な損失項は、以下のような単純な二乗誤差の形になります。
つまり、DDPMの学習は、ランダムに選んだ時刻
この目的関数は、SBMのノイズ予測型の目的関数 (2.2) と非常に似ていることに気づくでしょう(重みやノイズのスケールは異なりますが、本質的にノイズ予測タスクである点は共通しています)。
以下にDDPMの学習アルゴリズムを示します。
アルゴリズム 2.2:DDPMの学習
-
入力:
- 訓練データ分布:
p_{data}(\mathbf{x}) - ノイズスケジュール:
\beta_1, \dots, \beta_T - (これらから
および\alpha_t = 1-\beta_t が計算される)\bar{\alpha}_t = \prod_{s=1}^t \alpha_s
- (これらから
- ノイズ予測モデル(ニューラルネットワーク):
\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) - 学習率:
\eta
- 訓練データ分布:
-
出力:
- 学習済みノイズ予測モデル:
\bm{\epsilon}_{\bm{\theta}}
- 学習済みノイズ予測モデル:
-
手順:
- モデルパラメータ
をランダムに初期化します。\bm{\theta} -
収束するまで以下を繰り返します:
- 訓練データから元データ
をサンプリングします。\mathbf{x}_0 \sim p_{data}(\mathbf{x}) - タイムステップ
をt から一様ランダムにサンプリングします。\{1, \dots, T\}
t \sim \text{Uniform}(\{1, \dots, T\}) - 標準正規分布からノイズ
をサンプリングします。\bm{\epsilon} \sim \mathcal{N}(\bm{0}, \mathbf{I}) - 式 (2.5) を用いて、時刻
におけるノイズが加えられたデータt を計算します。\mathbf{x}_t
\mathbf{x}_t := \sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\bm{\epsilon} - 現在のモデル
を用いて、加えられたノイズ\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) を予測します。\bm{\epsilon} - 損失関数
(式 (2.10) の期待値の中身) を計算します。L_{simple}
L := \| \bm{\epsilon} - \bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) \|^2 - 損失
に関してモデルパラメータL の勾配\bm{\theta} を計算します。\nabla_{\bm{\theta}} L - 勾配降下法などを用いてモデルパラメータを更新します。
\bm{\theta} \leftarrow \bm{\theta} - \eta \nabla_{\bm{\theta}} L
- 訓練データから元データ
-
学習済みモデルを返します:
- Return
\bm{\epsilon}_{\bm{\theta}}
- Return
- モデルパラメータ
このアルゴリズムは非常にシンプルで、各イテレーションでデータにノイズを加え、そのノイズを予測するというタスクを繰り返すだけです。この単純さにもかかわらず、DDPMは非常に高品質なデータ生成を実現できます。
2.2.4 DDPMによるサンプリング
DDPMの学習が終われば、学習済みのノイズ予測モデル
以下にDDPMのサンプリングアルゴリズムを示します。
アルゴリズム 2.3:DDPM サンプリング
-
入力:
- 学習済みノイズ予測モデル:
\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) - ノイズスケジュールから導出される定数:
(for\alpha_t, \beta_t, \bar{\alpha}_t )t=1, \dots, T - サンプリング時のノイズの分散の選択:
\sigma_t^2 - 例1:
(for\sigma_t^2 = \tilde{\beta}_t = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t ),t > 1 \sigma_1^2 = 0 - 例2:
(for\sigma_t^2 = \beta_t ),t > 1 \sigma_1^2 = 0
- 例1:
- 学習済みノイズ予測モデル:
-
出力:
- 生成サンプル:
\mathbf{x}_0
- 生成サンプル:
-
手順:
-
初期化:
-
\mathbf{x}_T \sim \mathcal{N}(\bm{0}, \mathbf{I})
// 最もノイズの多い状態(通常は標準正規分布)からサンプリングを開始
-
-
反復処理 (逆拡散ステップ):
- For
:t = T, T-1, \dots, 1
// 時刻 からt へとノイズを除去していくループt-1 -
現在の状態は
、時刻は\mathbf{x}_t です。t -
標準正規分布からノイズ
をサンプリングします。\mathbf{u} \sim \mathcal{N}(\bm{0}, \mathbf{I})
(ただし、 の場合はt=1 とするため、\sigma_1=0 は使用されないか、形式的に\mathbf{u} とします)\mathbf{u}=\bm{0} -
学習済みモデル
を用いて、現在の状態\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) に含まれると予測されるノイズ成分を取得します。\mathbf{x}_t -
式 (2.11) に従って、
を計算します。\mathbf{x}_{t-1} \mathbf{x}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}} \bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) \right) + \sigma_t \mathbf{u} \tag{2.11} // 第1項がノイズ除去(デノイジング)の主要部分。
// 第2項が確率的な要素を導入し、サンプルの多様性を確保する。
-
- For
-
最終サンプル:
- Return
\mathbf{x}_0
(この が最終的な生成サンプルとなります)\mathbf{x}_0
- Return
-
初期化:
このプロセスを
サンプリング時のノイズ項
2.3 SBMとDDPMの統一:シグナルノイズ比(SNR)という視点
ここまで、SBMとDDPMを個別に見てきましたが、どちらも学習時の目的関数が、「ノイズが加えられたデータから、元のノイズまたはそれに類する情報(スコア)を予測する」という形になっています。また、サンプリングも、学習したモデルを使ってノイズを徐々に除去していくという点で共通の構造を持っています(いわゆる逆拡散過程)。
これらのモデルの核心的な違いは、データにノイズを加えていく拡散過程の定義と、学習ターゲットの具体的な形式(スコア関数か、ノイズそのものか) にあります。
-
SBM (NCSN) の拡散過程と学習ターゲット:
-
拡散過程: 元データ
に対し、標準偏差\mathbf{x}_0 のガウスノイズ\sigma_i を加えます。攪乱データ\bm{\epsilon} \sim \mathcal{N}(\bm{0}, \mathbf{I}) は、\tilde{\mathbf{x}} = \mathbf{x}_0 + \sigma_i \bm{\epsilon} に従います。元シグナルp_{\sigma_i}(\tilde{\mathbf{x}}|\mathbf{x}_0) = \mathcal{N}(\tilde{\mathbf{x}}; \mathbf{x}_0, \sigma_i^2 \mathbf{I}) のスケールは変化せず、ノイズの分散\mathbf{x}_0 のみが変化します。\sigma_i^2 -
学習ターゲット: スコア関数
をモデル\nabla_{\tilde{\mathbf{x}}} \log p_{\sigma_i}(\tilde{\mathbf{x}}|\mathbf{x}_0) で予測します。\mathbf{s}_{\bm{\theta}}(\tilde{\mathbf{x}}, \sigma_i)
-
拡散過程: 元データ
-
DDPM の拡散過程と学習ターゲット:
-
拡散過程: 元データ
に対し、時刻\mathbf{x}_0 における攪乱データt (\mathbf{x}_t = \sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\bm{\epsilon} )は、\bm{\epsilon} \sim \mathcal{N}(\bm{0}, \mathbf{I}) に従います。元シグナルq(\mathbf{x}_t|\mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t}\mathbf{x}_0, (1-\bar{\alpha}_t)\mathbf{I}) は\mathbf{x}_0 倍にスケールダウンされ、ノイズの分散は\sqrt{\bar{\alpha}_t} となります。(1-\bar{\alpha}_t) -
学習ターゲット: 加えられたノイズ
をモデル\bm{\epsilon} で予測します。\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t)
-
拡散過程: 元データ
これらの違いにもかかわらず、Kingma et al. (2021) や Song et al. (2020, "Score-Based Generative Modeling through Stochastic Differential Equations") などの研究により、SBMとDDPMは実は同じ枠組みの特殊なケースとして統一的に理解できることが示されました。その鍵となるのが「シグナルノイズ比(Signal-to-Noise Ratio, SNR)」という概念です。
ここからは、必要がある時以外は SBM と DDPM を特に区別せず、あわせて "拡散モデル" と呼ぶことにします。
2.3.1 シグナルノイズ比の定義
時刻
ここで、シグナル成分は元データ
シグナルノイズ比 (SNR) は、シグナル成分のパワー(分散のスケール)とノイズ成分のパワー(分散)の比として定義されます。
簡単のため、元データ
-
SBM (NCSN) の場合:
\tilde{\mathbf{x}} = \mathbf{x}_0 + \sigma_i \bm{\epsilon} - シグナル成分:
(パワー(各成分の分散):\mathbf{x}_0 )1 - ノイズ成分:
(パワー(各成分の分散):\sigma_i \bm{\epsilon} )\sigma_i^2
したがって、
\text{SNR}_{SBM}(\sigma_i) = \frac{1}{\sigma_i^2} \tag{2.12} ノイズレベル
を大きくしていく(SBMのサンプリングでは\sigma_i とノイズレベルが下がっていくので、学習時は様々な\sigma_1 > \dots > \sigma_L を考える)場合を考えると、\sigma_i -
は減少します。特に、SBMのサンプリング初期の大きなノイズ\text{SNR}_{SBM}(\sigma_i) ではSNRは小さく、サンプリング終盤の小さなノイズ\sigma_1 ではSNRは大きくなります。拡散の方向(ノイズを増やしていく方向)で見れば、\sigma_L が\sigma_i となるに従い、SNRは0 \to \infty と単調に減少します。\infty \to 0 - 一方、
は大きくなっていきます。なのでSBMの拡散過程は、分散発散型拡散過程 (Variance-Exploding Diffusion Process) と呼ばれます。\text{Var}(\tilde{\mathbf{x}})=1+\sigma_i^2
- シグナル成分:
-
DDPMの場合:
\mathbf{x}_t = \sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\bm{\epsilon} - シグナル成分:
(パワー(各成分の分散):\sqrt{\bar{\alpha}_t}\mathbf{x}_0 )\bar{\alpha}_t - ノイズ成分:
(パワー(各成分の分散):\sqrt{1-\bar{\alpha}_t}\bm{\epsilon} )1-\bar{\alpha}_t
したがって、
\text{SNR}_{DDPM}(t) = \frac{\bar{\alpha}_t}{1-\bar{\alpha}_t} \tag{2.13} 時刻
が進む(t )につれて、t: 0 \to T -
は\bar{\alpha}_t と減少するため、1 \to 0 は\text{SNR}_{DDPM}(t) と単調に減少します。\infty \to 0 - 一方、
は一定となります。なのでDDPMの拡散過程は、分散保存型拡散過程 (Variance-Preserving Diffusion Process) と呼ばれます。\text{Var}(\mathbf{x}_t)=\bar{\alpha}_t+(1-\bar{\alpha}_t)=1
- シグナル成分:
どちらのモデルも、拡散過程(ノイズを増やしていく過程)が進むほど、シグナルよりもノイズが支配的になる(SNRが低下する)という共通の性質を持っています。このSNRは、異なるノイズスケジュールやパラメータ化を持つ拡散モデル間での「シグナルの相対的な強さ/ノイズの相対的な弱さ」を比較するための共通の尺度となります。
2.3.2 スコア予測とノイズ予測の等価性
SBMが学習するスコア関数
まずは攪乱データ
これを用いて、
となります。つまり、真のノイズ
具体的には、
SBMの目的関数 式(2.1) は、モデル
DDPMの目的関数 式(2.10) は、モデル
したがって、
この関係性から、DDPMの学習目的関数 式(2.10) は、スコアマッチングの目的関数に書き換えることができます。
ここで、
つまり、DDPMの目的関数は、重み
ここで、
書籍ではさらに、一般化された拡散過程
-
(時刻\hat{\mathbf{x}}_0(\mathbf{x}_t;t) のt から予測された元のデータ\mathbf{x}_t ) を用いる形式 (書籍の式2.14)\mathbf{x}_0 -
(時刻\hat{\bm{\epsilon}}_{\bm{\theta}}(\mathbf{x}_t;t) のt から予測されたノイズ) を用いる形式 (書籍の式2.15)\mathbf{x}_t -
(時刻\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t;t) のt から予測されたスコア) を用いる形式 (書籍の式2.16)\mathbf{x}_t
の3通りで表現できることを示しています。これらはすべて等価な表現であり、モデルが何を予測ターゲットとするか(
以下ではしばらく、1.の再構成的な形式を念頭に置いて議論します。
そして、DDPMと同様にELBOを最大化する枠組みで考えると、最終的な目的関数は、各タイムステップ
ここで
-
であり、s_i < t_i は単調減少するのでSNR(t) です。SNR(s_i) - SNR(t_i) > 0 -
です。\mathbf{x}_t = a(t)\mathbf{x}_0 + b(t)\bm{\epsilon}
この重みは、SNRが大きく変化する(つまりノイズレベルが大きく変わる)ステップほど、元のデータ
2.3.3 連続時間モデル
拡散モデルの理論をさらに深めるために、時間ステップを離散的な
このときに、拡散過程が確率微分方程式(SDE)によって一般的に記述できることは第3章で詳しく議論します。
この連続時間モデルの枠組みでは、目的関数は時刻
ここで、
元のデータ
2.3.4 ノイズスケジュールによらず同じ解が得られる
Karrasら (2022) の研究 "Elucidating the Design Space of Diffusion-Based Generative Models" では、驚くべきことに、拡散モデルの学習は、具体的なノイズスケジュール(
具体的には、時刻
これは、SBM(分散発散型拡散過程に対応)とDDPM(分散保存型拡散過程に対応)が、連続時間の極限では、本質的に同じ関数(時刻
したがって、学習の際には、SNRの範囲を適切にカバーすることが重要であり、具体的なスケジュールの選択は二次的な問題である可能性があります。
2.3.5 学習可能なノイズスケジュール
これまではノイズスケジュール
これにより、データセットやモデル構造に対してより最適な拡散過程を自動的に見つけ出し、性能を向上させることが期待されます。具体的には、単調増加関数
2.4 第2章のまとめ:拡散モデルの二大潮流とその融合
この章では、拡散モデルの代表的な2つのアプローチであるスコアベースモデル(SBM)とデノイジング拡散確率モデル(DDPM)について詳しく学びました。
-
SBM (NCSN):
- 複数のノイズレベル
を導入。\{\sigma_i\} - 各ノイズレベルで攪乱されたデータのスコア
をDSMで学習。\mathbf{s}_{\bm{\theta}}(\tilde{\mathbf{x}}, \sigma_i) - アニールド・ランジュバン動力学を用いて、高ノイズレベルから低ノイズレベルへと徐々にサンプルを精緻化。
- 複数のノイズレベル
-
DDPM:
- 固定された拡散過程
でデータq(\mathbf{x}_t|\mathbf{x}_{t-1}) をノイズ\mathbf{x}_0 へ。\mathbf{x}_T - 学習可能な逆拡散(生成)過程
でノイズからデータを復元。p_{\bm{\theta}}(\mathbf{x}_{t-1}|\mathbf{x}_t) - 学習はELBO最大化、実質的には各時刻
でt から加えられたノイズ\mathbf{x}_t を予測する\bm{\epsilon} を訓練。\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t)
- 固定された拡散過程
そして、これらのモデルは、一見異なる定式化をしているように見えても、本質的には「ノイズを加え、その影響を除去する」という共通の原理に基づいており、「シグナルノイズ比(SNR)」という概念を通じて統一的に理解できることを見ました。
この統一的理解は、次章で議論する連続時間拡散モデル(SDE)への橋渡しとなります。SDEを用いることで、ノイズスケジュールの選択やサンプリング方法がより柔軟になり、拡散モデルの理論的基盤が一層強固になります。
ここまでの流れのポイント:
- SBMは複数ノイズレベルでスコアを学習し、アニールド・ランジュバン動力学でサンプリング。
- DDPMは拡散過程でノイズを加え、逆拡散過程でノイズを除去するモデルを学習。学習はノイズ予測タスクに帰着。
- SBMとDDPMは、ノイズスケジュールの設定や損失の重み付けは異なるが、本質的には同じ拡散・逆拡散の原理に基づいている。
- シグナルノイズ比(SNR)が、両者を結びつける重要な概念。
次章では、これらのモデルを時間連続な枠組みへと拡張し、確率微分方程式(SDE)の世界へと足を踏み入れます。
第3章:確率微分方程式 (SDE) と拡散モデル
この章のゴール:
この章では、第2章で学んだ離散的な時間ステップで定義されていた拡散モデル(SBMやDDPM)を、時間的に連続な枠組みへと拡張します。そのための主要な数学的ツールが「確率微分方程式(Stochastic Differential Equations, SDEs)」です。SDEを用いることで、拡散過程と逆拡散過程を統一的に記述し、ノイズスケジュールの設計やサンプリング手法にさらなる柔軟性をもたらします。さらに、SDEから導かれる決定論的な「確率フロー常微分方程式(Probability Flow Ordinary Differential Equations, ODEs)」という概念も導入し、これが拡散モデルの理解と応用に新たな道を開くことを見ていきます。この章を通じて、拡散モデルの数学的基盤をより深く、そしてエレガントに捉えることを目指します。
3.1 確率微分方程式(SDE):ランダムネスを伴う変化を記述する
まず、確率微分方程式(SDE)とは何か、その基本的な形を見ていきましょう。
SDEは、時間の経過とともに状態が変化するシステムを記述する方程式ですが、その変化にランダムな要素(ノイズ)が含まれる場合に使われます。
一般的なSDEは以下のような形で書かれます。
ここで、
-
は時刻\mathbf{x}_t \in \mathbb{R}^d におけるシステムの状態(t 次元ベクトル)。d -
は微小時間d\mathbf{x}_t の間のdt の変化量。\mathbf{x}_t -
は「ドリフト係数」と呼ばれ、システムの決定論的な変化の方向と大きさを記述します。\mathbf{f}(\mathbf{x}_t, t): \mathbb{R}^d \times \mathbb{R}_{\ge 0} \to \mathbb{R}^d -
は「拡散係数」と呼ばれ、ランダムな変動の大きさを制御します。\mathbf{G}(\mathbf{x}_t, t): \mathbb{R}^d \times \mathbb{R}_{\ge 0} \to \mathbb{R}^{d \times d} -
は「ウィーナー過程(Wiener Process)」または「ブラウン運動(Brownian Motion)」の微小変化量を表します。ウィーナー過程d\mathbf{w}_t は、平均が\mathbf{w}_t で、微小時間\bm{0} の間に分散dt (dt \cdot \mathbf{I} は単位行列)だけ変化するようなランダムな過程です。つまり、\mathbf{I} と考えることができます。d\mathbf{w}_t \sim \mathcal{N}(\bm{0}, dt \cdot \mathbf{I})
式 (3.1) は、状態
SDEの解
なお、拡散モデルで扱うSDEは、多くの場合、式 (3.1) の一般形から以下のように特殊化されます。
まず、ドリフト係数
次に、拡散係数
これらの仮定を式 (3.1) に代入すると、次のSDEが得られます。
ここで、
-
は時間にのみ依存するスカラー値の関数。f(t): \mathbb{R}_{\ge 0} \to \mathbb{R} -
は時間にのみ依存するスカラー値の関数。g(t): \mathbb{R}_{\ge 0} \to \mathbb{R}
この式 (3.1改) は、多くの拡散モデルで用いられる基本的なSDEの形であり、解析や実装が比較的容易になります。ドリフト項
3.2 SBMとDDPMをSDEで表現する:連続時間への拡張
第2章で見たSBMやDDPMの拡散過程は、時間ステップを無限に小さくする極限を取ることで、特定の形のSDEとして表現することができます。
3.2.1 SBM (NCSN) と分散発散型SDE (VE-SDE)
SBM(特にNCSN)では、データに様々な強さのガウスノイズ
この過程を連続時間で考えると、時刻
具体的には、以下のようなSDEが考えられます(Song et al., 2020, SDE論文)。
ここで、
このSDEは、分散が時間とともに大きくなっていくため、「分散発散型SDE(Variance Exploding SDE, VE-SDE)」と呼ばれます。
このSDEの解
3.2.2 DDPM と分散保存型SDE (VP-SDE)
一方、DDPMの拡散過程
ここで、
このSDEは、ドリフト項
適切に
このSDEの解
VE-SDEとVP-SDEは、拡散モデルで用いられる代表的なSDEの二つのクラスです。これらを用いることで、離散的なノイズスケジュールに縛られず、連続的な時間軸上で拡散過程を柔軟に設計できます。
3.3 逆時間SDE:ノイズからデータを生成するSDE
拡散過程がSDE
この「逆時間SDE(Reverse-Time SDE)」は、以下のような形を取ります。
ここで、
-
は時間を逆向きに(d\mathbf{x}_t )進めたときのdt < 0 の変化量。\mathbf{x}_t -
は時刻p_t(\mathbf{x}_t) におけるt の(周辺)確率密度。\mathbf{x}_t -
は時刻\nabla_{\mathbf{x}_t} \log p_t(\mathbf{x}_t) におけるt のスコア関数。\mathbf{x}_t -
は逆向き時間のウィーナー過程。d\bar{\mathbf{w}}_t
また、拡散モデル用に簡略化された式
この逆時間SDEこそが生成過程であり、非常に重要です。
なぜなら、もし各時刻
実際には、真のスコア関数
このSDE (3.5) を、オイラー・丸山法のような数値積分手法(SDEソルバー)を用いて、
SDEを用いた拡散と生成のプロセスを図5に概念的に示します。
図5:SDEによる拡散と逆時間SDEによる生成。順時間SDEでデータ分布はノイズ分布に滑らかに変化し、逆時間SDEでは学習したスコア関数を用いてノイズからデータを生成します。
これは、SBMでアニールド・ランジュバン動力学を用いていたことや、DDPMで逆ステップをモデル化していたことの、より一般的で連続的な表現と見なすことができます。
3.3.1 スコア関数の学習
前述のとおり逆時間SDE (3.5) を用いてサンプリングするためには、スコア関数
これは、第1章で学んだスコアマッチング(特にDSM)や、第2章でSBM/DDPMが見たノイズ予測の考え方を、連続時間のSDEに拡張することで実現できます。
SDE
このとき、条件付きスコア
これを用いて、DSMと同様の目的関数でスコアモデル
ここで、
驚くべきことに、この目的関数で学習された
学習されたスコアモデル
3.4 確率フローODE:決定論的な生成経路
SDEはランダムなウィーナー過程を含むため、同じ初期値から出発しても毎回異なるサンプルが生成されます。これは多様なサンプルを得る上では良いのですが、時には決定論的な生成経路が欲しい場合もあります(例えば、潜在空間での補間や、尤度を正確に計算したい場合など)。
驚くべきことに、任意のSDE
式 (3.1) に対応する確率フローODEは以下の形で与えられます。
このODEにはランダムなウィーナー項
このODEを時刻
ここでも、スコア関数
3.4.1 確率フローODEの利点
確率フローODEを用いることには、いくつかの重要な利点があります。
-
決定論的サンプリング: ODEソルバー(例えばルンゲ・クッタ法など)を用いることで、高速かつ安定したサンプリングが可能です。SDEソルバーよりも少ないステップ数で高品質なサンプルが得られることが多いです。決定論的な生成パスのイメージを図6に示します。
図6:確率フローODEによる決定論的な生成パス。各初期ノイズ は、確率フローODEによって一意のデータサンプル\mathbf{x}(T) へと写像されます(可逆変換)。\mathbf{x}(0) -
正確な尤度計算: ODEは状態空間の体積変化を伴う可逆な変換を定義するため、変数変換の公式を用いて、元データの尤度
を、対応するノイズp_0(\mathbf{x}_0) の既知の尤度\mathbf{x}_T (例えば正規分布の尤度)とヤコビアンの行列式から正確に計算することができます[9]。p_T(\mathbf{x}_T) \log p_0(\mathbf{x}_0) = \log p_T(\mathbf{x}_T(\mathbf{x}_0)) + \int_0^T \nabla_{\mathbf{x}_t} \cdot \left( \mathbf{f}(\mathbf{x}_t, t) - \frac{1}{2}g(t)^2 \mathbf{s}_{\bm{\theta}}(\mathbf{x}_t,t) \right) dt ここで
は発散(divergence)で、ヤコビアンのトレースに相当します。この積分内の発散項の計算には、Hutchinsonのトレース推定量などが用いられます。\nabla_{\mathbf{x}_t} \cdot (\dots) -
潜在空間の操作: データ
とノイズ\mathbf{x}_0 がODEによって一対一に対応付けられるため、\mathbf{x}_T の空間(潜在空間)で補間を行ったり、意味のある操作をしたりすることが容易になります。\mathbf{x}_T
3.5 SDEとODEを用いた拡散モデルの一般的な枠組み
これまでの議論をまとめると、SDEとODEを用いた拡散モデルは以下のような一般的な枠組みで捉えることができます。
-
順時間SDEの選択: まず、データ
をノイズ\mathbf{x}_0 へと変換する拡散過程を記述するSDE\mathbf{x}_T を選択します(例:VE-SDE, VP-SDE)。d\mathbf{x}_t = f(t)\mathbf{x}_tdt + g(t)d\mathbf{w}_t -
スコアモデルの学習: 選択したSDEに基づき、各時刻
におけるスコア関数t を近似するニューラルネットワーク\nabla_{\mathbf{x}_t} \log p_t(\mathbf{x}_t) を、目的関数 (3.6) などを用いて学習します。\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t, t) -
サンプリング:
-
SDEサンプラー: 学習した
を用いて、対応する逆時間SDE (3.5) を数値的に解き、ノイズ\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t, t) からサンプル\mathbf{x}_T を生成します。\mathbf{x}_0 -
ODEサンプラー: 学習した
を用いて、対応する確率フローODE (3.8) を(時間を逆向きに)数値的に解き、ノイズ\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t, t) からサンプル\mathbf{x}_T を生成します。ODEサンプラーは、より少ない評価回数で高品質なサンプルを生成できる傾向があります。\mathbf{x}_0
-
SDEサンプラー: 学習した
このSDE/ODEベースの枠組みは、SBMやDDPMを特殊なケースとして含みつつ、より広範で柔軟な拡散モデルの設計を可能にします。例えば、異なるSDEを選んだり、ODEソルバーのテクニックを応用したりすることで、生成品質やサンプリング速度を改善する研究が活発に行われています。
3.6 拡散モデルの持つ特徴(SDE/ODEの視点から)
SDE/ODEの視点から見ると、拡散モデルがなぜこれほど成功しているのか、その特徴がより明確になります。
-
モードカバー能力: 拡散過程でデータ分布全体が滑らかなノイズ分布に変換されるため、(固定された)認識モデルは原理的にデータ分布の全てのモードを捉えます。
- これに対しGANやVAEなどの従来の潜在変数モデルでは、認識モデルが事後分布のすべてのモードをカバーできず、一部しかカバーしないモード崩壊(事後崩壊)が起きることが少なくないです。
- 学習の安定性: スコアマッチングの目的関数は、GANのような敵対的学習に比べて安定して最適化しやすいとされています。
-
複雑な問題を簡単な部分問題に分解:
- 周波数成分の分解: 拡散過程は、高周波成分から低周波成分へと徐々に情報を破壊していくと解釈できます。逆拡散過程では、まず低周波の大まかな構造を生成し、次に高周波の詳細を加えていく、という階層的な生成を行います。
-
時間ステップごとの単純化: 各時刻
でのスコア/ノイズ予測は、比較的単純な(局所的な)タスクであり、これを多数積み重ねることで複雑なデータ生成を実現します。t
-
条件付けの容易さ: スコア関数
は、ベイズの定理から\nabla_\mathbf{x} \log p(\mathbf{x}|y) のように分解できる場合があり、条件\nabla_\mathbf{x} \log p(\mathbf{x}) + \nabla_\mathbf{x} \log p(y|\mathbf{x}) を組み込みやすい構造をしています(詳細は第4章)。y -
対称性の組み込み: データやタスクが持つ対称性(例えば、画像の並進不変性や分子の回転不変性)を、スコアモデル
の設計に反映させることで、学習効率や汎化性能を向上させることができます(詳細は第4章)。\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t,t)
一方で、SDE/ODEベースの拡散モデルにも課題は残っています。
- サンプリング速度: SDE/ODEを数値的に解くには、多数の関数評価(スコアモデルの推論)が必要となり、サンプリングに時間がかかる場合があります。ODEサンプラーや専用の高速化手法の研究が進んでいます。
- 汎化メカニズムの完全な理解: なぜ拡散モデルがこれほど多様で高品質なサンプルを生成できるのか、その汎化能力の理論的な解明はまだ途上にあります。
3.7 第3章のまとめ:連続時間への飛躍とその恩恵
この章では、拡散モデルの理論を時間連続な枠組みへと拡張し、確率微分方程式(SDE)と確率フロー常微分方程式(ODE)という強力な数学的ツールを導入しました。
- SBMやDDPMといった離散時間モデルは、それぞれVE-SDEやVP-SDEという連続時間SDEの離散化として捉え直すことができます。
- 任意のSDEに対して、その逆拡散過程を記述する逆時間SDEが存在し、これはスコア関数
を用いてサンプリングを可能にします。\nabla_{\mathbf{x}_t} \log p_t(\mathbf{x}_t) - スコア関数は、連続時間版のDSMのような目的関数で学習できます。
- さらに、各SDEには対応する決定論的な確率フローODEが存在し、これは高速なサンプリング、正確な尤度計算、潜在空間操作といった利点をもたらします。
このSDE/ODEベースの統一的な視点は、拡散モデルの設計と解析に大きな柔軟性と深い洞察を与えてくれます。
次章では、この強力な基盤の上に、拡散モデルをさらに発展させるための様々な技術(条件付き生成、効率化、対称性の考慮など)を見ていきます。
ここまでの流れのポイント:
- SDEはランダムな変化を記述する方程式。VE-SDEとVP-SDEが拡散モデルで重要。
- 逆時間SDEは、スコア関数を使ってノイズからデータを生成する経路を記述。
- スコア関数は連続時間版DSMで学習可能。
- 確率フローODEは、SDEに対応する決定論的な方程式。高速サンプリングや尤度計算に有利。
- SDE/ODEフレームワークは、拡散モデルの柔軟性と理解を深める。
第4章:条件付け、効率化、対称性
この章のゴール:
前章までで、拡散モデルの基本的な理論(SBM、DDPM)とそのSDE/ODEによる連続時間表現を学びました。この章では、これらの基礎の上に、拡散モデルの性能をさらに向上させ、応用範囲を広げるための重要な「発展」について解説します。具体的には、ユーザーの意図を反映したデータを生成するための「条件付き生成」、計算コストを削減し実用性を高めるための「効率化」、そして特定のデータ構造が持つ「対称性」をモデルに組み込む手法に焦点を当てます。これらの発展が、拡散モデルを単なる学術的な興味から、実社会で広く利用される強力なツールへと押し上げた原動力となっています。
4.1 条件付き生成:意のままにデータを創り出す
これまでの議論では、主に訓練データ全体の分布
拡散モデルは、そのスコアベースの性質から、条件付き生成を比較的自然に実現できます。基本的には、無条件のスコア
4.1.1 分類器ガイダンス(Classifier Guidance)
条件付きスコア
まず、ベイズの定理を用いると、条件付き対数尤度は以下のように分解できます。
この両辺を
となります。ここで、
-
は、無条件拡散モデル(例えばSBMやDDPM)で学習したスコア\nabla_\mathbf{x} \log p_t(\mathbf{x}) です。\mathbf{s}_{\bm{\theta}}(\mathbf{x},t) -
は、ノイズが乗ったデータ\nabla_\mathbf{x} \log p_t(y|\mathbf{x}) (ここでは\mathbf{x}_t と表記) から条件\mathbf{x} を予測する分類器y の入力p_t(y|\mathbf{x}) に関する勾配です。この分類器は、拡散モデルとは別に、ノイズの乗ったデータで訓練する必要があります。\mathbf{x}
つまり、無条件スコア
さらに、分類器の勾配の寄与を調整するガイダンススケール
として、この調整後のスコアをサンプリングに用います。
分類器ガイダンスの利点と課題:
- 利点: 既存の無条件拡散モデルに、後から分類器を追加するだけで条件付き生成が可能になる。
-
課題:
- ノイズレベルごとに頑健な分類器
を別途訓練する必要があり、手間とコストがかかる。p_t(y|\mathbf{x}) - 分類器の勾配計算が不安定になることがある。
- ノイズレベルごとに頑健な分類器
4.1.2 分類器無しガイダンス(Classifier-Free Guidance)
分類器ガイダンスの課題を解決するために提案されたのが、「分類器無しガイダンス(Classifier-Free Guidance)」です (Ho & Salimans, 2022)[11]。これは現在、拡散モデルによる条件付き生成の主流な手法となっています。
分類器無しガイダンスの巧妙な点は、単一のニューラルネットワークで、条件付きスコア
学習時、一定の確率(例えば10-20%)で条件
これにより、モデルは
サンプリング時には、これらの学習済みスコアを用いて、以下のように目的のスコアを合成します。
または、しばしば次のような形が用いられます。
分類器無しガイダンスによるスコア合成のプロセスを図7に示します。
図7:分類器無しガイダンスの概念図。条件付きスコアと無条件スコアを学習した単一モデルを用い、サンプリング時にそれらをガイダンススケール
ここで、
なぜこの式がうまくいくのでしょうか?
さらに、
式 (4.4) は、無条件スコアに、この「暗黙的な分類器勾配」を
分類器無しガイダンスの利点:
- 別途分類器を訓練する必要がない。単一モデルで実現可能。
- 学習とサンプリングが比較的安定している。
- ガイダンススケール
を調整することで、生成されるサンプルの忠実度と多様性のトレードオフを制御できる。w
この手法は、DALL-E 2やImagen、Stable Diffusionといった最先端のテキスト画像生成モデルで広く採用されています。
4.2 効率化:より速く、より軽く
拡散モデルの大きな課題の一つは、サンプリングに多数のステップ(典型的には数百~数千)が必要で、時間がかかる点です。また、高次元データを直接扱うため、モデルサイズやメモリ消費も大きくなりがちです。これらの問題を解決するための研究も活発に行われています。
4.2.1 高速サンプリング手法
-
DDIM (Denoising Diffusion Implicit Models): Song et al. (2020) によって提案されたDDIMは、DDPMの確率的な逆拡散過程を、対応する(非マルコフ的な)決定論的な生成過程に置き換えることで、より少ないステップ数(例えば20~50ステップ)で高品質なサンプリングを可能にしました[12]。
DDIMの詳細
DDPMの生成過程が
であったのに対し、DDIMはp_{\bm{\theta}}(\mathbf{x}_{t-1}|\mathbf{x}_t) を直接予測し、それを用いて\mathbf{x}_0 を決定論的に計算するような更新式を用います。これは実質的に確率フローODEの離散化の一種と見なせます。\mathbf{x}_{t-1} DDIMの更新式(簡略版):
(現在の\mathbf{x}_0^{(t)} = \frac{1}{\sqrt{\bar{\alpha}_t}}(\mathbf{x}_t - \sqrt{1-\bar{\alpha}_t}\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t,t)) から\mathbf{x}_t を推定)\mathbf{x}_0
\mathbf{x}_{t-1} = \sqrt{\bar{\alpha}_{t-1}}\mathbf{x}_0^{(t)} + \sqrt{1-\bar{\alpha}_{t-1}-\sigma_t^2}\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t,t) + \sigma_t \mathbf{u}
ここで、 の値を調整することで、確率的なサンプリング(DDPMに近い)と決定論的なサンプリング(ODEに近い)の間を補間できます。\sigma_t とすると完全に決定論的になります。\sigma_t=0 -
その他のODEソルバーの活用: 確率フローODEは様々な数値解法(ルンゲ=クッタ法など)で解くことができ、SDEソルバーよりも少ないステップ数で高精度な解が得られる場合があります。
-
知識蒸留(Knowledge Distillation): 多数のステップで学習した教師モデル(teacher model)の挙動を、より少ないステップで動作する生徒モデル(student model)に模倣させることで、サンプリングを高速化する試みもあります (Progressive Distillationなど)。
4.2.2 潜在拡散モデル(Latent Diffusion Models)
高次元データ(特に画像)を直接拡散モデルで扱うと、計算コスト(時間とメモリ)が非常に大きくなります。この問題を軽減するために提案されたのが「潜在拡散モデル(Latent Diffusion Models, LDM)」です (Rombach et al., 2022, Stable Diffusionの元論文)[13]。
LDMのアーキテクチャを図8に示します。
図8:潜在拡散モデル(LDM)のアーキテクチャ。高次元データをオートエンコーダで低次元潜在空間に圧縮し、その潜在空間内で拡散モデルを学習・実行します。
LDMのアイデアは、
- まず、VAE(変分オートエンコーダ)やVQ-VAEのような強力なオートエンコーダを用いて、高次元の元データ
(例:画像空間)を、より低次元の潜在空間\mathbf{x} へと圧縮します (\mathbf{z} )。この潜在空間は、元データの主要な情報を保持しつつ、次元が大幅に削減されています。\mathbf{z} = E(\mathbf{x}) - 次に、この低次元の潜在空間
の中で拡散モデルを学習します。つまり、\mathbf{z} に対してノイズを加え、そのスコアやノイズを予測するモデルを訓練します。\mathbf{z} - サンプリング時には、潜在空間で拡散モデル(逆拡散過程)を実行して潜在変数
を生成し、最後にオートエンコーダのデコーダ\mathbf{z}_{sample} を用いて元データ空間のサンプルD(\cdot) を復元します。\mathbf{x}_{sample} = D(\mathbf{z}_{sample})
オートエンコーダによる次元削減のおかげで、拡散モデルが扱うデータの次元が小さくなり、計算コストを大幅に削減できます。それでいて、強力なデコーダを用いることで、高品質な画像を生成することが可能です。
Stable DiffusionはこのLDMのアーキテクチャを採用しており、テキスト条件付けも潜在空間で行うことで、比較的少ない計算資源でも高解像度の画像生成を実現しています。
なお、書籍ではもう1つのアプローチである部分空間拡散モデルについても詳細に述べられていますが、本記事では省略します。
4.3 対称性を考慮した拡散モデル:構造を活かす
多くのデータには、何らかの「対称性(Symmetry)」や「不変性(Invariance)」、「同変性(Equivariance)」が存在します。これらの概念を感覚的に捉えてみましょう。
-
不変性 (Invariance):
データに対してある操作(例えば、画像の平行移動)をしても、モデルの出力(例えば、画像が「猫」であるという分類結果)が変わらない性質です。- 例:画像分類タスクをCNNで解く場合、画像中の猫が少し右にずれても「猫」と認識されるのは、並進不変性をモデルが(ある程度)学習しているためです。
- 例:株価変動などの時系列データをRNNで処理する場合、分析の開始時刻が異なっても同じパターンが見いだせるのは、時間移動不変性を仮定しているためです。
-
同変性 (Equivariance):
データに対してある操作をすると、モデルの出力もそれに対応して同じように変化する性質です。入力の変換が出力の変換に「追従」するイメージです。- 例:画像セグメンテーション(画像内の各ピクセルがどの物体に属するかを識別するタスク)で、入力画像を回転させると、出力されるセグメンテーションマップも同じように回転する場合、モデルは回転同変性を持ちます。
- 例:グラフデータにおいて、ノードのラベリング順序を変えてもグラフの構造は変わらないことを置換同変性といいます。モデルがノードの埋め込みベクトルを計算する際、入力のノード順序が変われば出力の埋め込みベクトルの順序も対応して変わるが、各ノードに対応する埋め込みベクトル自体は(相対的な関係性を保ったまま)同じになるような性質です。
-
対称性 (Symmetry):
不変性や同変性を含む、より広範な概念です。ある操作に対して、対象の何らかの性質が変わらないことを指します。
このような対称性をモデル設計に組み込むことで、学習効率が向上したり、より妥当な(物理法則に合致するなど)サンプルが生成されたりすることが期待できます。
(なお、対称性、不変性、同変性の数式を用いた厳密な定義は本記事では省略します。)
拡散モデルにおいてもスコア関数
4.3.2 分子構造生成への応用
例えば、3次元空間における原子座標の集合として表現される分子構造を生成する場合を考えます。分子の物理的特性は、分子全体を平行移動したり回転したりしても変わりません。
このようなSE(3)同変性(3次元特殊ユークリッド群:平行移動と回転の組み合わせ)を考慮した拡散モデルが研究されています (e.g., G-SDE, E(3)-Equivariant Diffusion Models)[14][15]。
基本的なアイデアは、
-
拡散過程: 分子座標
にSE(3)同変な方法でノイズを加えていく。例えば、各原子の座標に独立なガウスノイズを加える過程は、平行移動に対しては同変ですが、回転に対しては同変ではありません。しかし、重心を原点に固定したり、ノイズの加え方を工夫することで、全体の分布がSE(3)不変なノイズ(例えば、全ての原子座標が独立な等方性ガウスノイズに従うなど)に収束するように設計できます。\mathbf{x}_0 -
スコア/ノイズ予測モデル: スコア関数
やノイズ予測関数\mathbf{s}_{\bm{\theta}}(\mathbf{x}_t, t) のニューラルネットワークアーキテクチャを、SE(3)同変性を持つように設計します。これには、同変なメッセージパッシングニューラルネットワーク(例:EGNN, SchNet)などが用いられます。これにより、入力座標\bm{\epsilon}_{\bm{\theta}}(\mathbf{x}_t, t) が回転・平行移動されても、出力されるスコアベクトル(またはノイズベクトル)も同じように回転・平行移動されるようになります。\mathbf{x}_t - 逆拡散(生成)過程: この同変なスコア/ノイズ予測モデルを用いて逆時間SDE(またはODE)を解くことで、生成される分子座標もSE(3)対称性を満たす(つまり、どの向きで生成されても統計的に等価である)ことが期待されます。
このような対称性を考慮した拡散モデルは、より物理的に妥当な分子構造の生成や、少ないデータでの効率的な学習に貢献すると考えられています。
4.4 第4章のまとめ:拡散モデルの表現力と実用性の向上
この章では、拡散モデルをより強力で実用的なものにするための3つの主要な発展方向について学びました。
-
条件付き生成:
- 分類器ガイダンス:外部の分類器の勾配を利用して条件付け。
- 分類器無しガイダンス:単一モデルで条件付き・無条件スコアを学習し、合成してサンプリング。現在の主流。
-
効率化:
- 高速サンプリング:DDIMなどの決定論的(またはそれに近い)サンプラーやODEソルバーの活用。
- 潜在拡散モデル(LDM):オートエンコーダで低次元潜在空間に圧縮し、そこで拡散モデルを学習することで計算コストを削減。Stable Diffusionの基盤技術。
-
対称性の考慮:
- データの持つ対称性(特に同変性)をスコア/ノイズ予測モデルの設計に組み込むことで、学習効率の向上やより妥当なサンプルの生成を目指す。分子構造生成などで重要。
これらの発展により、拡散モデルは、単に高品質なデータを生成できるだけでなく、ユーザーの意図に沿った生成、計算資源の制約下での利用、そして特定のドメイン知識の組み込みといった、より幅広い要求に応えられるようになってきました。
おわりに
本記事では、拡散モデルの数理的エッセンスを、要点を辿りながら探ってきました。
- 第1章では、生成モデルの基礎を学び、スコア関数とスコアマッチングという重要な概念を手に入れました。
- 第2章では、SBMとDDPMという二つのアプローチが、シグナルノイズ比という共通の原理で統一的に理解できることを発見しました。
- 第3章では、SDEとODEを用いた連続時間の定式化により、拡散モデルの理論的な深さを垣間見ました。
- 第4章では、条件付き生成、効率化、対称性といった実用的な発展により、拡散モデルがより強力になる仕組みを理解しました。
ただし、これらはあくまで岡野原 大輔氏の著書「拡散モデル データ生成技術の数理」の入り口に過ぎません。実際の書籍には、厳密な数学的導出、詳細な理論展開、そして実装に役立つ具体的な知見が豊富に盛り込まれています。
特に以下のような方にとって、本書は貴重な情報源となるでしょう。
- 拡散モデルの数学的仕組みを根本から理解したい研究者や学生の方、
- SBM、DDPM、SDE/ODEベースの手法の関係性を明確に把握したい方、
- 条件付けや高速化技術の基礎を学びたいエンジニアの方、
- そして、自身のプロジェクトに拡散モデルを応用したいと考えている実践者の方。
ノイズから意味のあるデータを生成するという、一見不可思議な技術の背後には、美しく整合性のとれた数学的構造が存在します。その全貌を理解することで、きっと新たな視点や応用のアイデアが生まれることでしょう。
本記事が、皆様にとって拡散モデルのより深い世界への案内役となり、本書との出会いへの橋渡しとなれば幸いです。
関連リソース
本記事でスコアマッチングと確率微分方程式を理解した直後に参照すると、2023年以降に登場した拡散モデルの高速化・一般化パラダイム(Consistency/Flow Matching/Rectified Flow)が一気に俯瞰できるようになります。
記事
-
Consistency Models: 1〜4stepsで画像が生成できる、新しいスコアベース生成モデル(Zenn)
拡散モデルから“数ステップ生成”へ向かうアイデアである一貫性損失(Consistency Loss)の導入と実装例を日本語で丁寧に解説。まずはここで高速化の基本概念を押さえます。 -
Latent Consistency Model による蒸留を試してみた(note)
Stable Diffusion を LCM で蒸留し、4 ステップ前後で画像を出力する手順をスクリーンショット付きで公開。1本目で学んだ理論を、手元で実際に動かすのを追体験できます。 -
要約:Flow Matching for Generative Modeling (Part 1)(Qiita)
“フロー”というより一般的な枠組みを、定理の証明まで掘り下げて日本語で整理。Consistency の次に読むと、拡散モデルを包含する連続ベクトル場の視点へスムーズに接続できます。 -
Flow Matching Guide and Code(arXiv)
フローマッチングの実装付きの包括的なガイドが示されています。 -
Optimal Transport Conditional Flow Matching – 拡散モデルに取って代わる次世代の生成技術?(Zenn)
Flow Matching を最適輸送で正則化し、条件付き生成まで扱う発展形 OT-CFM を解説。前項の基礎を実装レベルでどう拡張するかを学べます。 -
Rectified Flow ①(Zenn)
“直線フロー”を学習して 1 step 生成に迫る最新理論を図解。Flow Matching 系を踏まえた上で読むことで、直線経路の意義と高速化の極限に納得できます。
Youtube動画
-
【AI論文解説】Consistency ModelsとRectified Flow ~解説編Part1~(YouTube)
Consistency Models と Rectified Flow に関する最新の研究動向を、スライドとともに解説した動画です。理論的背景や実装のポイントを視覚的に理解できます。 -
【AI論文解説】拡散モデルと自己回帰型モデルの融合 Part1(YouTube)
拡散モデルと自己回帰型モデルの融合に関する論文を紹介し、それぞれのモデルの特徴や統合の意義について解説しています。
実装チュートリアル
-
Hugging Face Diffusion Models Course (Hugging Face)
拡散モデルの理論から、🤗 Diffusers ライブラリを用いた画像・音声生成、独自モデルの訓練やファインチューニング、条件付き生成、カスタムパイプラインの構築までを網羅した無料のオンラインコースです。Python、深層学習、PyTorchの基礎知識がある方を対象としています。 -
02_diffusion_models_from_scratch.ipynb (Colab)
上記Hugging Face Diffusion Models Courseのユニット1に含まれるColabノートブックです。原始的な拡散モデルとDDPMをそれぞれスクラッチで実装することを通じて、ノイズ付加プロセス、U-Netアーキテクチャ、学習方法、サンプリング理論といった拡散モデルの実践的な要素を詳細に学ぶことができます。
-
. これを\nabla_{\bm{\theta}} Z(\bm{\theta}) = \nabla_{\bm{\theta}} \int \exp(-E_{\bm{\theta}}(\mathbf{x})) d\mathbf{x} = \int \nabla_{\bm{\theta}} \exp(-E_{\bm{\theta}}(\mathbf{x})) d\mathbf{x} = \int \exp(-E_{\bm{\theta}}(\mathbf{x})) (-\nabla_{\bm{\theta}} E_{\bm{\theta}}(\mathbf{x})) d\mathbf{x} で割ると、Z(\bm{\theta}) . ↩︎\frac{1}{Z(\bm{\theta})} \int \exp(-E_{\bm{\theta}}(\mathbf{x})) (-\nabla_{\bm{\theta}} E_{\bm{\theta}}(\mathbf{x})) d\mathbf{x} = \int p_{\bm{\theta}}(\mathbf{x}) (-\nabla_{\bm{\theta}} E_{\bm{\theta}}(\mathbf{x})) d\mathbf{x} = \mathbb{E}_{\mathbf{x} \sim p_{\bm{\theta}}(\mathbf{x})} [-\nabla_{\bm{\theta}} E_{\bm{\theta}}(\mathbf{x})] -
A. Hyvärinen. Estimation of Non-Normalized Statistical Models by Score Matching. Journal of Machine Learning Research, 6:695-709, 2005. ↩︎
-
P. Vincent. A Connection Between Score Matching and Denoising Autoencoders. Neural Computation, 23(7):1661-1674, 2011. ↩︎
-
Y. Song and S. Ermon. Generative Modeling by Estimating Gradients of the Data Distribution. NeurIPS 2019. ↩︎
-
Y. Song and S. Ermon. Improved Techniques for Training Score-Based Generative Models. NeurIPS 2020. ↩︎
-
J. Ho, A. Jain, and P. Abbeel. Denoising Diffusion Probabilistic Models. NeurIPS 2020. ↩︎
-
このパラメータ化は、Sohl-Dickstein et al. (2015) の論文で最初に提案され、Ho et al. (2020) で採用されたものです。 ↩︎
-
B. D. O. Anderson. Reverse-time diffusion equation models. Stochastic Processes and their Applications, 12(3):313–326, 1982. ↩︎
-
この尤度計算は、Neural ODEs や Normalizing Flows と共通のアイデアです。 ↩︎
-
P. Dhariwal and A. Nichol. Diffusion Models Beat GANs on Image Synthesis. NeurIPS 2021. ↩︎
-
J. Ho and T. Salimans. Classifier-Free Diffusion Guidance. arXiv:2207.12598, 2022. ↩︎
-
J. Song, C. Meng, and S. Ermon. Denoising Diffusion Implicit Models. ICLR 2021. ↩︎
-
R. Rombach, A. Blattmann, D. Lorenz, P. Esser, and B. Ommer. High-Resolution Image Synthesis with Latent Diffusion Models. CVPR 2022. ↩︎
-
Y. Xu, J. Liu, Y. Wang, Y. Cao, and S. Ermon. GeoDiff: A Geometric Diffusion Model for Molecular Conformation Generation. ICLR 2022. ↩︎
-
E. Hoogeboom, V. G. Satorras, C. Vignac, and M. Welling. Equivariant Diffusion for Molecule Generation in 3D. ICML 2022. ↩︎
Discussion