今回の論文
今回取り上げるのは、Jiaming Song、Chenlin Meng、Stefano Ermonによる「Denoising Diffusion Implicit Models」です。2020年10月6日にarXivで初公開され、ICLR 2021で発表されました。公開元はarXivおよびICLRで、研究分野は画像生成・拡散モデル・推論高速化です。論文の書誌情報を参照でき、以下の技術と実験の説明は原論文v4の本文・付録に基づきます。
選んだ理由は、「学習済みモデルを変えず、呼び出し方を変える」という開発に取り入れやすい高速化を示しているからです。学習時に使った細かなノイズ段階を、生成時にもすべてたどる必要があるのかを問い直す研究です。
どんな技術か
DDIM(Denoising Diffusion Implicit Models)は、拡散モデルのノイズ予測器をそのまま使いながら、画像を生成する更新則を変更する技術です。多数の小さなノイズ除去を順番に実行する代わりに、選んだ少数のノイズ段階をたどって画像を作ります。
代表的な設定では、途中で新しい乱数を加えません。最初のノイズとモデル、生成設定が決まれば、そこからの生成経路は決定論的になります。生成画像の多様性は、初期ノイズを変えることで得られます。
ポイントは、小型モデルへの置き換えや高速生成用の追加学習を必要としないことです。ただし、ステップを減らしても元の生成結果や品質が完全に保存されるわけではありません。DDIMは速度と品質の調整方法を増やす技術です。
課題
拡散モデルでは、画像に異なる強さのノイズを加え、そのノイズを予測するネットワークを学習します。従来のDDPMでは、生成時にノイズから画像へ戻る多数の段階を順番に実行します。原論文の実験で用いる学習設定は1,000段階です。
各段階の入力は前の段階の出力なので、1枚の画像の全ステップを一度に並列実行することはできません。U-Netなどの大きなネットワークを繰り返し呼ぶため、複数候補を試すデザインツールや画像生成APIでは待ち時間とGPU使用時間が増えます。
とはいえ、既存の1段階用の更新式をそのまま使い、途中の呼び出しだけを削ればよいわけではありません。次の入力にどの程度の画像成分とノイズ成分が含まれるかが、モデルに与える時刻と整合しなくなるためです。大きな時刻差に対応する更新則が必要です。
DDIMは、学習で必要な「各時刻のノイズ付き画像の分布」と、その間をどうつなぐかを分けて考えます。つなぎ方を変えても同じノイズ予測の学習を利用できれば、学習済みの重みを保ちながら生成を短縮できます。
用語解説
- DDPM
- Denoising Diffusion Probabilistic Modelsの略です。画像に徐々にノイズを加える過程に対応する逆生成を学びます。DDIMの比較対象であり、ノイズ予測器を再利用する出発点になります。
- 周辺分布
- ここでは、元画像を固定したときの、ある時刻のノイズ付き画像だけの分布を指します。途中の全経路が同じでなくても、この分布をそろえれば同じノイズ予測学習を使える、という着眼点が重要です。
- サンプラー
- 学習済みモデルを呼び、ノイズ状態から画像へ変換する具体的な更新手順です。DDIMが主に変えるのはモデルの重みではなく、時刻の選択と状態の更新を担うこの部分です。
- 決定論的生成と初期ノイズ
- 途中で新しい乱数を加えず、最初に選んだノイズから一定の規則で画像を作ることです。DDIMでは初期ノイズを固定した比較や、二つの初期ノイズの間を補間する操作につながります。
- FID
- 生成画像と実画像の特徴分布の差を測る指標で、小さいほどよい値です。DDIMではステップ短縮による分布品質の変化を測ります。個々の画像の正しさや文章への忠実度を保証する指標ではありません。
技術の仕組み
学習が見る分布と、生成の経路を分ける
ノイズ付き画像は、概念的に次の形で作れます。以下のa_tは、原論文のα_tに対応する、元画像成分の累積的な残り方を表します。1ステップだけの減衰率とは区別してください。
x_t = sqrt(a_t) × x_0 + sqrt(1 - a_t) × ε
x_0は元画像、εは標準ガウスノイズです。ノイズの多い時刻ほどa_tが小さくなります。学習では画像・時刻・ノイズを選んでx_tを作り、ネットワークεθ(x_t, t)が加えたノイズを当てるように二乗誤差を小さくします。
この学習は、元画像から各時刻の入力を直接作れれば実行できます。DDIMは各時刻の周辺分布を保ちつつ、時刻間の関係を変えた非マルコフな前向き過程を構成し、同じノイズ予測の代理目的を利用できることを示します。非マルコフなのはこの前向き過程の構成であり、生成時に過去の画像列を全部保存するという意味ではありません。
厳密には、論文の最適解の議論には時刻間でパラメータを共有しない場合の条件があります。実験では時刻を入力する共有ネットワークで有効性を確かめています。「同じ学習を利用できる」ことを、「有限の学習済みモデルで、どの生成経路も完全に同じ品質になる」と読むべきではありません。
まず完成画像を推定し、次のノイズ段階へ移す
現在の状態x_tからネットワークがノイズを予測したら、元画像の推定値を計算します。
ε_hat = εθ(x_t, t)
x0_hat = (x_t - sqrt(1 - a_t) × ε_hat) / sqrt(a_t)
次に、現在よりノイズの少ない時刻sを選びます。新しい乱数を加えないDDIMの更新は、次の形です。
x_s = sqrt(a_s) × x0_hat + sqrt(1 - a_s) × ε_hat
「現在の画像から予測したノイズを単純に全部引く」のではなく、推定した完成画像と予測ノイズを、移動先のノイズレベルに合う比率で混ぜ直します。s=0でa_0=1なら、最終出力はx0_hatになります。
x0_hatはあくまで途中の推定であり、1回計算すれば十分という意味ではありません。更新したx_sをネットワークへ再入力し、推定を繰り返すことで品質を上げます。
1,000段階の学習から少数段階の生成へ
生成時には、学習で使った時刻から部分列を選び、大きい時刻から小さい時刻へ処理します。例えば1,000段階で学習したモデルでも、選んだ50時刻だけを通る構成にできます。各更新で必要なのは、移動元・移動先の係数と1回のノイズ予測です。
時刻を選ぶ間隔も結果に影響します。原論文の付録D.2では、CIFAR-10には二次関数に基づく時刻選択、ほかのデータセットには線形の選択を用いています。同じ「50ステップ」でも時刻列が違えば、同じ実験条件とは限りません。
ランダムさを調整するη
論文は決定論的更新だけでなく、追加ノイズの大きさをηで調整する生成過程も比較します。η=0がDDIMで、途中の追加乱数がなくなります。η=1は、論文が定義した分散設定のDDPMに対応します。原DDPM実装で使われた別の分散設定もあり、結果表では区別されています。
ネットワークはU-Net系のままで、このパラメータや生成時刻列を変えるために追加学習する必要はありません。一方、途中の更新規則自体を少数回生成に合わせて学ぶ方法としては、Consistency Modelsの終点予測と蒸留が比較材料になります。
実験と結果
同じ重みで生成方法だけを比較
原論文はCIFAR-10の32×32画像、CelebAの64×64画像、LSUN BedroomとChurchの256×256画像を扱います。各データセット内では同じ学習済みモデルを使い、ステップ数や追加ノイズの設定を変えて比較しています。CIFAR-10とLSUNでは既存DDPMのチェックポイントを使い、CelebAでは著者がノイズ予測器を学習しました。
以下は原論文の表1から抜粋したFIDです。DDPMの列はη=1の設定であり、別分散の設定は含めていません。
| データセット | 生成ステップ数 | DDIM(η=0) | DDPM(η=1) |
|---|---|---|---|
| CIFAR-10 | 20 | 6.84 | 18.36 |
| CIFAR-10 | 50 | 4.67 | 8.01 |
| CIFAR-10 | 1,000 | 4.04 | 4.73 |
| CelebA | 20 | 13.73 | 26.03 |
| CelebA | 100 | 6.53 | 13.93 |
| CelebA | 1,000 | 3.51 | 5.98 |
短い生成経路では、DDIMはこのDDPM設定よりよいFIDを示しています。CelebAでは20ステップのDDIMが13.73で、100ステップのDDPMの13.93に近く、同程度の分布品質へ少ない呼び出しで到達できています。
ただし、別分散の1,000ステップDDPMはCIFAR-10でFID 3.17であり、DDIMの4.04を上回ります。DDIMの50ステップの4.67も、この3.17より悪い値です。結果が示すのは短い生成経路への強さであり、すべての比較で画質が上がるという結論ではありません。数値の出典は原論文の表1です。
ステップ削減と実時間の関係
図4では、NVIDIA 2080 Tiを1台使い、5万枚を生成する時間を測定しています。本文は、20〜100ステップで1,000ステップのモデルに近い品質のサンプルを作り、10〜50倍高速化できると報告します。ただし、上のFIDが示すように、品質の近さはデータセットと設定に依存します。
これは当時のモデル・ハードウェアでの結果です。現在の画像生成サービス全体が必ず同じ比率で速くなるわけではありません。前後処理や条件付けがある構成では、その時間を含めて測定する必要があります。
同じ初期ノイズで似た構図を保てる
図5では、初期ノイズを固定すると、生成ステップ数を変えても画像の大まかな特徴が似る例を示しています。また、図6では二つの初期ノイズを補間し、意味的につながる画像変化を観察しています。これは定性的な結果であり、すべての画像で構図や物体位置を保証するものではありません。
画像からノイズ側へ数値的に経路をたどり、再び画像へ戻す再構成も検証しています。CIFAR-10テスト集合の、値域を0〜1にそろえた画素あたり平均二乗誤差は、往復それぞれ20ステップで0.0065、100ステップで0.0009でした。経路を細かくすると復元誤差を抑えられますが、完全な可逆変換やデータ圧縮を実証した結果ではありません。
何に使える?
以下は論文の性質から考えられる開発上の応用です。業務アプリやテキスト条件付き画像生成の効果を、この論文が直接測定したわけではありません。
画像生成のプレビューと最終出力
デザイン案を選ぶツールでは、少数ステップで候補を提示し、選んだ初期ノイズから多めのステップで生成し直す設計が考えられます。初期ノイズと大まかな特徴の対応を利用できれば、構図を比較しながら計算予算を配分しやすくなります。
ただし、粗いプレビューの生成途中から、そのまま別の時刻列へ切り替えられることを保証する結果ではありません。まずは同じ初期ノイズからそれぞれ生成し、最終出力で構図がどれほど変わるかを測るのが明確です。
限られたGPUでの候補探索
社内のバナー下案やゲーム背景の試作では、1枚の最高品質より、複数案を比較できることが役立つ場合があります。ステップ数を減らした候補生成により、同じGPU時間で試す初期ノイズを増やす使い方が考えられます。採用できる候補の割合も測れば、単なる生成枚数以上の価値を評価できます。
画像編集のための経路の利用
決定論的な経路を逆向きにたどり、実画像に対応するノイズ表現を求める考え方は、画像編集を設計する土台になります。ただし、この論文の再構成実験だけで、文章指示どおりの局所編集ができるとはいえません。編集条件の与え方と、変更しない領域の保存は別途検証が必要です。
開発や事業へのヒント
重みを変える前に生成手順を比較する
独自学習の予算が小さい場合でも、サンプラーを変更できる環境なら、時刻列・ステップ数・ηを比較できます。まずモデルを固定し、変更による品質差と時間差を測ると、追加学習なしで達成できる範囲が見えてきます。外部APIがサンプラーを公開していない場合は、この更新則を利用側だけで差し込むことはできません。
実装時には、モデルが予測するものがノイズなのか別の量なのか、学習時のノイズスケジュール、時刻の入力形式を確認します。上の式はノイズ予測器を前提にしています。ステップ数の設定だけを変えて、係数まで適合したと思い込まないことが重要です。
再現できる単位で生成条件を保存する
初期ノイズのシードだけでなく、モデルの版、時刻列、η、解像度などを保存すると、品質比較や再生成がしやすくなります。条件付きモデルへ応用する場合は、その条件も必要です。決定論的な数式でも、実装・数値精度・実行環境を変えた際のビット単位の一致までは保証されません。
呼び出し回数と1回の計算を分けて考える
DDIMは生成の更新回数を減らします。一方、DeepCacheの中間特徴再利用は、各ステップ内の計算を減らす方法です。両者を別々の軸として測れば、待ち時間のどこに改善余地が残るかを整理できます。併用時の速度倍率や品質は、個別の結果を単純に掛け合わせずに評価します。
限界
最も大きな制約は、ステップを減らすほど一般に品質が落ちやすいことです。表1でも、DDIMのCIFAR-10のFIDは1,000ステップの4.04から10ステップの13.36へ悪化します。少数ステップでもモデルの推定誤差が消えるわけではなく、1ステップ生成を保証する技術でもありません。
1回のネットワーク実行に必要な重みや主要な中間状態も、DDIMだけでは小さくなりません。GPU時間の削減は期待できても、モデルを載せるためのメモリ不足を直接解く方法ではありません。初期の学習コストも引き続き必要です。
主要な定量評価は無条件画像生成であり、現代の大規模な文章条件付き生成、動画、複雑な編集への品質や速度を直接裏付けません。学習済みモデルが知らない対象や細かな文字を、サンプラーの変更だけで正確に描けるようになるとも限りません。
さらに、決定論的な更新でも、ステップ数や時刻列を変えれば画像の細部は変わります。逆向きにたどる再構成にも数値誤差とモデル誤差があります。編集で元画像の完全保存が必要な場合には、その誤差を許容できるかを用途ごとに確認してください。
よくある質問
Q. DDIMを使うにはモデルの追加学習が必要ですか?
A. 原論文ではDDPMのノイズ予測学習を利用でき、生成手順を変えるための追加学習は不要です。ただし、推論実装が予測形式とノイズスケジュールに対応している必要があります。重みを変えないことと、任意のモデルに同じコードを使えることは別です。
Q. η=0だと毎回同じ画像しか作れませんか?
A. 初期ノイズとモデル・生成設定を固定した場合、途中で新しい乱数を加えない生成になります。初期ノイズを変えれば異なる画像を生成できます。η=0は多様性をなくす指定ではなく、途中の追加ノイズをなくす指定です。
Q. 50ステップなら1,000ステップより必ず20倍速いですか?
A. 主なノイズ予測の呼び出し回数は20分の1ですが、アプリ全体の処理時間が同じ比率になるとは限りません。画像の入出力や条件付けなども含め、同じGPU・解像度・バッチサイズで実時間を比較してください。
Q. 初期ノイズが同じなら、ステップ数を変えても同一画像になりますか?
A. 同一画像にはなりません。論文は、大まかな特徴が似る例を示しています。プレビューへの応用では、この傾向を使いつつ、最終生成時の構図・細部の変化を評価する必要があります。
Q. DDIMで実画像をノイズへ戻せば完全に復元できますか?
A. 保証されません。論文の再構成実験には誤差があり、往復のステップ数を増やすと小さくなる傾向があります。これは損失なしの画像圧縮ではなく、生成経路を表現や編集に利用するための手掛かりです。
今日の学び
この論文は、拡散モデルが生成時に多数回のネットワーク実行を必要とする課題を扱いました。DDIMは、学習時のノイズ付き画像の分布を保ちながら生成経路を組み替え、既存のノイズ予測器で少数ステップの生成を可能にします。
得られるヒントは、モデルの重みだけでなく「どの状態を、どの順に、何回処理するか」も性能設計の対象になることです。品質との交換条件を測れば、追加学習の予算が小さくても、探索の速さやGPU時間を改善する余地があります。