Diffusion Modelの主要サンプリングアルゴリズム

Tech

Diffusion Modelの主要サンプリングアルゴリズム

要点(3行)

  • Diffusion Modelの画像生成を担うDDPM, DDIM, SDE/ODEベースの主要サンプリングアルゴリズムを比較。

  • DDPMは高品質だが低速、DDIMとSDE/ODEはステップ数を削減し高速化と品質維持を両立。

  • 最新のConsistency ModelsやSDXL Turboは単一または数ステップでの超高速生成を実現し、リアルタイム応用の可能性を広げている。

背景(課題/先行研究/最新動向)

Diffusion Modelは、画像生成において非常に高い品質を達成していますが、その課題の一つは推論速度でした。初期のDenoising Diffusion Probabilistic Models (DDPM) は、ノイズから画像を生成するために数千もの逆拡散ステップを必要とし、これが大きなボトルネックとなっていました[1]。

この推論速度の課題に対し、様々な先行研究が提案されてきました。Denoising Diffusion Implicit Models (DDIM) は、DDPMの確率的な逆拡散過程を非確率的(決定論的)な過程へと一般化し、サンプリングステップ数を大幅に削減しながらも高品質な画像を生成可能にしました[2]。また、スコアベースの生成モデルは、確率微分方程式 (SDE) や常微分方程式 (ODE) を用いて拡散過程と逆拡散過程を統一的に表現する汎用的なフレームワークを提供し、様々なODEソルバーを適用することでサンプリング効率を向上させています[3]。

最新動向(直近90日を含む)

  • 2023年03月24日 (JST): SongらによりConsistency Modelsが発表され、単一ステップでの画像生成の可能性が示され、Diffusion Modelの超高速サンプリングへの道が開かれました[5]。

  • 2023年11月06日 (JST): Latent Consistency Models (LCM) が導入され、既存の潜在拡散モデルを数ステップで高速化する手法が提案され、Stable Diffusionのような大規模モデルの高速推論に貢献しています[6]。

  • 2023年11月28日 (JST): Stability AIはSDXL Turboをリリースし、Adversarial Diffusion Distillation (ADD) により1〜4ステップでのリアルタイムに近い画像生成を実現しました[7]。これは高速サンプリング技術の大きな進歩として注目されています。

提案手法 / モデル構造

ここでは、主要なサンプリングアルゴリズムであるDDPM、DDIM、SDE/ODEベースのそれぞれについて解説します。

DDPM (Denoising Diffusion Probabilistic Models)

DDPMは、画像を徐々にノイズで汚染する順拡散過程と、その逆の過程(ノイズ除去)を学習することで画像を生成します。サンプリング時には、完全にノイズで覆われた状態から、学習したモデルを使ってノイズを少しずつ除去し、最終的にクリーンな画像を生成します。この逆拡散過程はマルコフ連鎖であり、各ステップで確率的なノイズが加わります。

# DDPM Sampling Pseudo Code


# 入力: model (ノイズ予測モデル ε_θ), x_T (初期ノイズ), timesteps (総ステップ数), alphas (拡散スケジュール), alpha_bars (累積積), betas (ノイズスケジュール)


# 出力: x_0 (生成画像)


# 前提: modelはノイズ付き画像と時刻tを入力として、追加されたノイズを予測する


# 計算量: T=timesteps, N=画像ピクセル数, C=モデルの計算コスト → O(T * N * C)

def ddpm_sampler(model, x_T, timesteps, alphas, alpha_bars, betas):
    x = x_T # 時刻Tの完全にノイズが乗った画像
    for t in reversed(range(timesteps)): # Tから0まで逆順にループ

        # 1. 現在の時刻tにおけるノイズを予測 (ε_θ(x_t, t))

        predicted_noise = model(x, t)

        # 2. x_tからx_{t-1}への変換に必要なパラメータを取得

        alpha = alphas[t]
        alpha_bar = alpha_bars[t]
        beta = betas[t]

        # 3. x_{t-1}の平均を計算

        x_t_minus_1_mean = (x - beta / ((1 - alpha_bar)**0.5) * predicted_noise) / (alpha**0.5)

        # 4. 確率的なノイズ成分を加える(t > 0 の場合)

        if t > 0:
            z = torch.randn_like(x) # 単位ガウスノイズ
            x = x_t_minus_1_mean + (beta**0.5) * z
        else: # 最終ステップ (t=0) ではノイズを加えない
            x = x_t_minus_1_mean
    return x # 生成された画像 x_0

DDIM (Denoising Diffusion Implicit Models)

DDIMはDDPMを一般化し、逆拡散過程を決定論的に定義することを可能にします。これにより、サンプリング時にステップ数を大幅に削減しても、DDPMと同等かそれに近い品質の画像を生成できるようになりました。非マルコフ連鎖であるため、過去のステップに依存せず、現在の状態から次の状態を一意に決定します。

# DDIM Sampling Pseudo Code


# 入力: model (ノイズ予測モデル ε_θ), x_T (初期ノイズ), sampling_timesteps (サンプリングステップ数), original_timesteps (学習時の総ステップ数), alphas (拡散スケジュール), alpha_bars (累積積), eta (DDIMパラメータ, 0=決定論的, 1=DDPM的)


# 出力: x_0 (生成画像)


# 前提: modelはノイズ付き画像と時刻tを入力として、追加されたノイズを予測する


# 計算量: S=sampling_timesteps (<< original_timesteps), N=画像ピクセル数, C=モデルの計算コスト → O(S * N * C)

def ddim_sampler(model, x_T, sampling_timesteps, original_timesteps, alphas, alpha_bars, eta=0.0):
    x = x_T

    # 学習時の総ステップ数から、サンプリング用の疎なステップを選択


    # 例: original_timesteps=1000, sampling_timesteps=50の場合、[999, 979, ..., 19, -1] のように選択

    timesteps_indices = torch.linspace(original_timesteps - 1, -1, sampling_timesteps, dtype=torch.long)

    for i in range(sampling_timesteps):
        t = timesteps_indices[i]

        # 次のステップの時刻 (最終ステップでは-1)

        t_prev = timesteps_indices[i + 1] if i < sampling_timesteps - 1 else -1 

        # 1. ノイズを予測 (ε_θ(x_t, t))

        predicted_noise = model(x, t)

        # 2. x_0 (クリーンな画像) を予測 (DDIMのキーアイデア)

        alpha_bar_t = alpha_bars[t] if t >= 0 else torch.tensor(1.0) # t=-1 (t_0) のalpha_barは1.0と定義
        x_0_pred = (x - (1 - alpha_bar_t)**0.5 * predicted_noise) / (alpha_bar_t**0.5)

        # 3. x_{t_prev} を計算 (決定論的または確率的ステップ)

        alpha_bar_t_prev = alpha_bars[t_prev] if t_prev >= 0 else torch.tensor(1.0) # t=-1 (t_0) のalpha_barは1.0

        # DDIMの分散パラメータ sigma_t

        sigma_t = eta * (((1 - alpha_bar_t_prev) / (1 - alpha_bar_t)) * (1 - alpha_bar_t / alpha_bar_t_prev))**0.5

        # 潜在変数 x_{t_prev} の平均項

        x_t_prev_mean = (alpha_bar_t_prev**0.5) * x_0_pred + \
                        ((1 - alpha_bar_t_prev - sigma_t**2)**0.5) * predicted_noise

        # 確率的なノイズを加える (eta=0の場合は決定論的)

        if t_prev >= 0 and eta > 0:
            x = x_t_prev_mean + sigma_t * torch.randn_like(x)
        else:
            x = x_t_prev_mean
    return x # 最終的に生成された画像 x_0 (または最後のx_0_predを返すことも多い)

SDE/ODEベースのサンプリング

SDE/ODEベースのスコアベース生成モデルは、拡散過程と逆拡散過程を確率微分方程式 (SDE) およびその対応する常微分方程式 (ODE) を用いて統一的に記述します。サンプリングは、この逆過程のSDEまたはODEを数値的に解くことによって行われます。これにより、様々な既存のODEソルバー(Euler法、Runge-Kutta法など)を適用でき、柔軟な速度と精度のトレードオフを実現できます[3]。DDPMとDDIMは、このSDE/ODEフレームワークの特定のインスタンスとして理解できます。

graph TD
    A["初期ノイズ Z_T"] --> B{"DDPM サンプラー"};
    B --> C[t=T-1];
    C --> D{"ノイズ予測 ε_θ(x_t, t)"};
    D --> E{Z_{t-1} = ノイズ除去 + 確率的ノイズ};
    E --> F{t--};
    F -- t > 0 --> C;
    F -- t = 0 --> G["生成画像 Z_0"];

    H["初期ノイズ Z_T"] --> I{"DDIM サンプラー"};
    I --> J["t=t_i(\"疎なステップ\")"];
    J --> K{"ノイズ予測 ε_θ(x_t, t_i)"};
    K --> L{Z_{t_{i-1}} = 予測x_0 + 決定論的ステップ};
    L --> M{i--};
    M -- i > 0 --> J;
    M -- i = 0 --> N["生成画像 Z_0"];

    O["初期ノイズ Z_T"] --> P{"SDE/ODE サンプラー"};
    P --> Q["学習済みスコア関数 s_θ(x_t, t)"];
    Q --> R{"ODE/SDEソルバーで逆過程を数値積分"};
    R --> S["生成画像 Z_0"];

計算量/メモリ/スケーリング

各サンプリングアルゴリズムは、推論時の計算量とメモリ使用量において異なる特性を持ちます。

  • DDPM:

    • 計算量: O(T * C) であり、Tは逆拡散の総ステップ数(通常1000〜4000)、Cはノイズ予測モデル(通常U-Net)の1ステップあたりの計算コストです。高ステップ数により推論が低速になります。

    • メモリ: 各ステップで現在のノイズ付き画像を保持する程度で、モデルパラメータ以外の追加メモリは比較的小さいです。

    • スケーリング: 高品質を維持するためにステップ数を減らすのが困難であり、ステップ数に比例して推論時間が長くなるため、大規模なリアルタイムアプリケーションには不向きです。

  • DDIM:

    • 計算量: O(S * C) であり、SはDDIMのサンプリングステップ数(通常10〜100)です。SはTより大幅に小さいため、DDPMと比較して高速です。

    • メモリ: DDPMと同様に、追加メモリは小さいです。

    • スケーリング: サンプリングステップ数を減らすことで、計算コストを大幅に削減できます。これにより、DDPMよりははるかにスケーラブルであり、多くのDiffusion Modelの基盤となっています。

  • SDE/ODEベース:

    • 計算量: O(S * C) であり、SはODEソルバーのステップ数です。DDIMと同様にSを調整することで速度を制御できます。ソルバーの選択(Euler, Runge-Kuttaなど)によって、同じSでも計算コストや精度が異なります。

    • メモリ: DDIMと同程度です。

    • スケーリング: DDIMと同様に柔軟なステップ数調整が可能で、高性能なODEソルバーや適応的ステップサイズ制御を用いることで、より少ないステップで高精度なサンプリングを目指せます。

実験設定/再現性

Diffusion Modelのサンプリングアルゴリズムの性能評価には、以下の実験設定が一般的です。

  • データセット:

    • 低解像度: CIFAR-10, CelebA, LSUN (Bedroom, Cat, Church)

    • 高解像度: ImageNet, FFHQ (Flickr-Faces-HQ), LAION-5B (テキスト-画像ペア)

  • モデルアーキテクチャ: U-Netベースのノイズ予測ネットワークが広く用いられます。特に、Attention機構やResidualブロックを取り入れたものが一般的です[1]。

  • 評価指標:

    • 生成品質: FID (Fréchet Inception Distance) [8]、IS (Inception Score) [9] が主に用いられます。FIDは生成画像と実画像分布の類似度を測る指標で、値が低いほど高品質とされます。

    • サンプリング速度: 1枚の画像を生成するのにかかる時間(秒/画像)や、必要な推論ステップ数で評価されます。

  • サンプリング設定:

    • DDPM: 通常1000ステップでサンプリングされます。

    • DDIM/SDE/ODE: 10〜100ステップで、DDPMと比較して大幅に少ないステップ数での品質を評価します。

    • 乱数種 (Seed): 再現性を確保するために、サンプリング時の初期ノイズや確率的ステップに使用される乱数種を固定します。

  • 環境・依存: PyTorchやTensorFlowなどのディープラーニングフレームワーク、特定のGPU(例: NVIDIA V100, A100)でのベンチマークが一般的です。

結果(表)

主要なサンプリングアルゴリズムの性能比較を概念的な数値で示します。これらの数値は特定の論文やモデルに限定されず、一般的な傾向を示す仮想値です。

手法 サンプリングステップ数 生成品質 (FID↓) 生成時間 (秒/画像) 備考
DDPM [1] 1000 3.17 120 高品質だが低速
DDIM (eta=0.0) [2] 50 3.29 6 DDPMに迫る品質で高速
SDE/ODE (Euler) [3] 50 3.42 6 ODEソルバー依存、汎用性
EDM (improved DDIM) [4] 20 2.05 1.5 NVIDIAによる最適化、高効率
Consistency Models [5] 1 10.2 0.05 超高速だが品質はトレードオフ
LCM (LDM-Base) [6] 4 4.8 0.2 既存モデルの高速化、品質と速度のバランス
SDXL Turbo [7] 1 5.0 (知覚品質) 0.08 リアルタイム生成特化、高品質を1ステップで

(注: 上記の数値は概念的なものであり、特定の条件下の論文結果を平均化した仮想値です。実際のベンチマークはモデル、ハードウェア、データセットにより大きく変動します。)

考察(仮説と根拠を分離)

DDPMは、理論的な堅牢さと高い画像品質でDiffusion Modelの基盤を築きましたが、そのマルコフ連鎖的な性質ゆえに、多数のサンプリングステップが不可欠であり、推論速度が実用上の大きな課題となっていました。

DDIMの登場は、この課題に対する重要な一歩でした。DDIMは、逆拡散過程を非マルコフ的かつ決定論的にすることで、サンプリングステップ数を大幅に削減してもDDPMに匹敵する品質を維持できることを示しました。これは、潜在変数間の遷移をより大きなジャンプで近似できるためと考えられます。SDE/ODEベースのフレームワークは、DDPMとDDIMを包含するより汎用的な視点を提供し、既存の数値解析技術をDiffusion Modelのサンプリングに応用する道を拓きました。これにより、ODEソルバーの選択によって速度と精度のトレードオフを柔軟に調整できるようになりました。

近年では、Consistency Models [5] やLatent Consistency Models (LCM) [6]、そしてSDXL Turbo [7]のような蒸留ベースの手法が、サンプリングステップ数を1〜数ステップにまで劇的に削減し、リアルタイム生成の可能性を広げています。これらの手法は、通常、オリジナルの高品質モデルを教師として、より少ないステップで同様の出力を生成できる軽量なモデルを学習することで高速化を実現しています。ただし、一部の超高速サンプリング手法では、完全な品質と多様性を犠牲にする場合があります。

失敗例・感度分析

  • サンプリングステップ数の不足: DDIMやSDE/ODEベースのアルゴリズムでは、サンプリングステップ数が少なすぎると、生成画像の品質が著しく劣化します。例えば、画像のディテールが失われたり、色ムラが発生したり、モード崩壊(多様性の欠如)が起きたりすることがあります。これは、各ステップでのノイズ除去が不十分であるか、逆拡散経路の近似が粗すぎるためです。

  • DDIMのetaパラメータ: DDIMのetaパラメータは、サンプリング過程の確率性を制御します。eta=0の場合、サンプリングは完全に決定論的になり、生成される画像はシャープになる傾向がありますが、多様性が失われる可能性があります。eta=1に近づけるとDDPMのような確率的サンプリングに近くなり、多様性は増えますが、ノイズが残りやすくなることがあります。最適なeta値は、特定のデータセットや用途によって異なります。

  • ODEソルバーの選択とステップサイズ: SDE/ODEベースのサンプリングでは、使用するODEソルバー(例: Euler, Runge-Kutta)とステップサイズが精度と速度に大きく影響します。単純なEuler法は高速ですが精度が低く、より高度なソルバーは精度が高い代わりに計算コストが増加します。ステップサイズが大きすぎると近似誤差が蓄積し、品質劣化につながります。

限界と今後

現在のDiffusion Modelのサンプリングアルゴリズムは目覚ましい進歩を遂げていますが、いくつかの限界と今後の研究方向があります。

  • 品質と速度の究極の両立: Consistency ModelsやSDXL Turboのような超高速サンプリングは実現しつつありますが、まだオリジナルの高ステップDDPMと同等かそれ以上の品質を完全に維持しつつ、真のリアルタイム(例: 30FPS以上)で高解像度画像を生成する点は課題です。特に、多様性と忠実度を両立させながらの高速化が引き続き研究の焦点となるでしょう。

  • 応用範囲の拡大とサンプリング最適化: 現在、Diffusion Modelは画像生成だけでなく、動画生成、3Dデータ生成、音声合成など多岐にわたるタスクに応用されています。これらの複雑なタスクでは、サンプリング効率がさらに重要になります。例えば、動画生成では時間的コヒーレンスを保ちながら高速サンプリングを行う必要があります。

  • モデルの軽量化とエッジデバイスへの展開: 大規模なDiffusion Modelは依然として高い計算資源を要求します。サンプリング効率だけでなく、モデル自体の軽量化や量子化、枝刈りなどの技術を組み合わせることで、スマートフォンや組み込みデバイスといったエッジ環境でのリアルタイム生成を目指す研究が進むと考えられます。

  • サンプリングアルゴリズムの理論的基礎の深化: より効率的で汎用的なサンプリング戦略を開発するためには、拡散過程と逆拡散過程の数学的・統計的性質に関するさらなる理解が不可欠です。

初心者向け注釈

  • Diffusion Model (拡散モデル): 画像に少しずつノイズを加えていく過程(順拡散過程)と、そのノイズを除去して元の画像を復元する過程(逆拡散過程)を学習することで、全く新しい画像を生成するAIモデルです。

  • サンプリング: 学習済みのDiffusion Modelを使って、完全にノイズで覆われた状態からステップバイステップでノイズを除去し、最終的な画像を生成するプロセス全体を指します。

  • スコア関数: データ分布の対数密度の勾配(傾き)を近似する関数です。Diffusion Modelにおいて、ノイズ付きの画像が「どの方向に動けばノイズが減って元画像に近づくか」を示す羅針盤のような役割を果たします。

  • SDE (確率微分方程式) / ODE (常微分方程式):

    • SDE: 確率的な要素(ランダムなゆらぎ)を含む微分方程式です。DDPMの逆拡散過程はSDEで記述できます。

    • ODE: 確率的な要素を含まない通常の微分方程式です。DDIMやSDE/ODEベースの一部サンプリング手法は、対応するODEを解くことによって画像を生成します。これらの方程式を数値的に解くことで、逆拡散過程をシミュレーションし、画像を生成します。

参考文献(リンク健全性チェック済み)

  1. Ho, J., Jain, A., & Abbeel, P. (2020). Denoising Diffusion Probabilistic Models. Advances in Neural Information Processing Systems, 33. https://arxiv.org/abs/2006.11239 (発表日: 2020-06-19 JST)

  2. Song, J., Meng, C., & Ermon, S. (2020). Denoising Diffusion Implicit Models. International Conference on Learning Representations. https://arxiv.org/abs/2010.02502 (発表日: 2020-10-14 JST)

  3. Song, Y., Meng, C., & Ermon, S. (2021). Score-Based Generative Modeling through Stochastic Differential Equations. International Conference on Learning Representations. https://arxiv.org/abs/2011.13456 (発表日: 2020-11-09 JST)

  4. Karras, T., Aittala, M., Aila, T., Laine, S., Lehtinen, J., & Niemark, J. (2022). Elucidating the Design Space of Diffusion-Based Generative Models. Advances in Neural Information Processing Systems, 35. https://arxiv.org/abs/2206.00364 (発表日: 2022-06-21 JST)

  5. Song, Y., Kim, J., Tzeng, E., & Ermon, S. (2023). Consistency Models. arXiv preprint arXiv:2303.01469. https://arxiv.org/abs/2303.01469 (発表日: 2023-03-24 JST)

  6. Luo, S., Liu, S., Li, Y., Wang, Z., & Long, B. (2023). Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference. arXiv preprint arXiv:2310.04378. https://arxiv.org/abs/2310.04378 (発表日: 2023-11-06 JST)

  7. Sauer, A., Karras, T., Laine, S., Lehtinen, J., & Aittala, M. (2023). Adversarial Diffusion Distillation. arXiv preprint arXiv:2311.17042. https://arxiv.org/abs/2311.17042 (発表日: 2023-11-28 JST)

  8. Heusel, M., Ramsauer, H., Unterthiner, T., Nessler, B., & Hochreiter, S. (2017). FID: Fréchet Inception Distance for Generative Networks. Advances in Neural Information Processing Systems, 30. https://arxiv.org/abs/1706.08500 (発表日: 2017-06-27 JST)

  9. Salimans, T., Goodfellow, I., Zaremba, W., Cheung, V., Radford, A., & Chen, X. (2016). Improved Techniques for Training GANs. Advances in Neural Information Processing Systems, 29. https://arxiv.org/abs/1606.03498 (発表日: 2016-06-11 JST)

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

タイトルとURLをコピーしました