拡散モデルのサンプラー (3) - UniPC
この記事では拡散モデルの生成過程で使われるサンプラーの一種であるUniPCについて解説する。
これまでと同様に、SMLDの前提・表記を用いる。
関連記事
目次
UniPC
UniPCはDPM-Solverの考え方を拡張したアルゴリズム。
前提
以下の定義・表記を用いる。
- したがって、
- したがって、
- したがって、
- したがって、

本投稿における表記
UniP
DPM-Solverによると、拡散モデルのODEは
であり、
が成り立つことを既に解説した。ただし、
既に計算済みの
と表すことを試みる。この条件を満たす関数の集合
式を変形すると、
なので、各
となれば良い。これはつまり、
となることを意味する。ここで、
はVandermonde行列と呼ばれる行列である。
式を解くと、
となる。
この式から、各
各成分の
とすれば良い。
このようにして求められたアルゴリズムをUniP(Unified Predictor)と言う。収束精度は

UniP
が既に生成されていて、真の解 との差が が既に生成されていて、真の解 との差が- 既に計算済みの
と を保持している が に対してLipschitz連続
とする。
このとき、
ただし、
例 (p=1)
例 (p=2)
となるので、UniPのアルゴリズムは次のようになる。
DPM-Solver-2の導出過程で
例 (p=3)
となるので、UniPのアルゴリズムは次のようになる。
UniC
UniPCではUniPに加えて、UniC(Unified Corrector)というアルゴリズムを組み合わせて利用する。
UniCでは、UniPで一旦予測した
UniCのアルゴリズムの考え方はUniPと全く同じである。UniPでは
を利用していたが、UniCでは
を利用して
総和の個数が1つ増えたことで、最終的な収束次数は

UniC
が既に生成されていて、真の解 との差が が既に生成されていて、真の解 との差が が既に生成されていて、真の解 との差が- 既に計算済みの
と を保持している が に対してLipschitz連続
とする。
このとき、
ただし、
UniPとUniCを交互に実行することで
一方、
データ予測モデルのUniPC
データ予測モデルのUniPも同様に導出できる。
DPM-Solver++によると、
が成り立つ。ただし、
既に計算済みの
と表すことを試みる。
ノイズ予測モデルの場合と記号が置き換わっただけなので、以降は同様に求めることができる。UniCの導出も同様。
が既に生成されていて、真の解 との差が が既に生成されていて、真の解 との差が- 既に計算済みの
と を保持している が に対してLipschitz連続
とする。
このとき、
ただし、
参考
- [2302.04867] UniPC: A Unified Predictor-Corrector Framework for Fast Sampling of Diffusion Models
- UniPC/example/score_sde_pytorch/uni_pc.py at 25acd34b153fd82a4b1b9a945a520133419a02e1 · wl-zhao/UniPC · GitHub
- diffusers/src/diffusers/schedulers/scheduling_unipc_multistep.py at v0.22.3 · huggingface/diffusers · GitHub