Re Reference AI

アーキテクチャ

拡散モデルとは

Diffusion Model

データに徐々にノイズを加える過程を学習し、その逆過程をたどってノイズから新しいデータを生成するモデル

生成AI画像生成

ひとことで言うと

ノイズだらけの砂嵐のような画像を、少しずつきれいな画像へ整えていくことで新しい画像を作るAI。

概要

拡散モデルは、元のデータへ段階的にガウスノイズを加えていき最終的に完全なノイズへ変換する「拡散過程」と、その逆にノイズから段階的にノイズを取り除いて元のデータらしいものを復元していく「逆拡散過程」の2つで構成される生成モデル。 学習では、各ステップでノイズが加えられたデータから、加えられたノイズそのものを予測するようニューラルネットワークを訓練する。 生成時には、ランダムなノイズから出発し、学習済みネットワークが予測したノイズを繰り返し差し引いていくことで、最終的に自然な画像やその他のデータを作り出す。 Stable DiffusionやDALL-E 2、Imagenなど、2022年前後から急速に普及した高品質な画像生成AIの多くが拡散モデルを採用しており、GANに代わる生成モデルの主流として広がっている。

背景

GANは高品質な画像を生成できる一方、学習が不安定になりやすいという課題があった。 拡散モデルは、ノイズの除去という比較的単純で安定したタスクを繰り返し学習させることで、高品質な生成と学習の安定性を両立させる方向性として発展した。

歴史

2015年: Sohl-Dickstein らが非平衡熱力学に着想を得た拡散モデルの枠組みを提案。 2020年: Ho らが論文「Denoising Diffusion Probabilistic Models」(DDPM)で現在の実用的な拡散モデルの基礎を確立。 2021-2022年: OpenAIのDALL-E 2、GoogleのImagen、Stability AIのStable Diffusionなど、拡散モデルベースの画像生成サービスが相次いで登場。

アーキテクチャ

拡散過程では、元データ x_0 に対しタイムステップ t ごとに少量のガウスノイズを加え、十分な回数繰り返すことで x_T をほぼ純粋なノイズにする。 逆拡散過程では、ニューラルネットワーク(多くの場合U-Net構造)が、ノイズが加えられたデータ x_t とタイムステップ t を入力として受け取り、そこに含まれるノイズを予測する。 生成時はランダムなノイズ x_T から出発し、予測されたノイズを少しずつ差し引く操作を t=T から t=0 まで繰り返し、最終的な生成データ x_0 を得る。

コード例

diffusersライブラリでの画像生成

from diffusers import DDPMPipeline

pipeline = DDPMPipeline.from_pretrained("google/ddpm-cifar10-32")
image = pipeline().images[0]
image.save("generated.png")

利点

  • GANと比べて学習が安定しやすく、モード崩壊(生成結果の多様性が失われる現象)を起こしにくい
  • テキストなどの条件付け情報を組み込みやすく、テキストから画像を生成する用途に適している
  • 生成過程を多数のステップに分解しているため、生成の途中経過を制御しやすい

欠点

  • 生成時にノイズ除去を何十〜何百ステップも繰り返す必要があり、GANなど1回の順伝播で生成できる手法より推論に時間がかかる
  • 学習・推論ともに計算コストが高く、大規模なGPU資源を要することが多い
  • 生成結果の細部(手や指など)に不自然さが残ることもある

比較

  • GANGANは生成器と識別器の敵対的学習で1回の順伝播により生成するのに対し、拡散モデルは多数のステップでノイズ除去を繰り返して生成する
  • VAEVAEは1回のデコードで生成するのに対し、拡散モデルは段階的な逆拡散過程で生成する点が異なる
  • マルチモーダルテキストから画像を生成するモデルの多くは、拡散モデルとテキストエンコーダを組み合わせたマルチモーダルな構成をとる
  • 潜在拡散モデル潜在拡散モデルは、拡散過程をピクセル空間ではなく潜在空間で行い、計算コストを抑えた拡散モデルの一種

関連用語

GANVAEマルチモーダルStable DiffusionDiffusion LLM潜在拡散モデル

よくある質問

拡散モデルとGANの違いは?

GANは生成器と識別器を競わせる敵対的学習で1回の順伝播から画像を生成するのに対し、拡散モデルはノイズ除去を何十ステップも繰り返して画像を生成する。学習の安定性では拡散モデルが優れる一方、生成速度はGANの方に分がある。

拡散モデルの生成に時間がかかるのはなぜ?

ノイズから画像を復元する逆拡散過程は、通常は数十〜数百ステップに分けて繰り返し実行する。ステップ数を減らす高速化手法(DDIMなど)も研究されている。

参考文献

関連Zenn記事