侧边栏壁纸
博主头像
CyberWEI博主等级

We are the history

  • Wrote 28 Articles
  • Made 9 Tags
  • Got 24 Comments

OutlineCONTENT

Outline

【論文輪読会】Diffusionモデルってなに?~元祖論文DDPM解説~

CyberWEI
2023-06-07 / 0 Comments / 0 Likes / 2,322 Views / 1,322 Words

今回のコードは【こちら】

Denoising Diffusion Probabilistic Models【こちら】

ひとことまとめ

  • GANと比べて、一つのモデルしかない
  • 情報からノイズ、ノイズから情報へ
  • 学習過程(FP)と生成過程(RP)はマルコフ連鎖で決まれ
  • 数学的完備

図0

Forword Process

実画像にノイズを加えていく、その過程はマルコフ連鎖で定義されている。

図1

{qθ(X1:TX0):=q(XtXt1)qθ(XtXt1):=N(Xt;1βtXt1,βtI)(1)\begin{cases} q_\theta(X_{1:T}|X_0) := ∏q(X_t|X_{t-1})\\ q_\theta(X_t|X_{t-1}) := N(X_t;\sqrt{1-\beta_t}X_{t-1},\beta_t I) \end{cases}\tag{1}

ここでのβt\beta_tは加えたノイズの強さと考えてよい

二つのガウス分布N(0,σ12I)N(0,\sigma ^2_1 I) N(0,σ22I)N(0,\sigma ^2_2 I)を足し合わせると新しいガウス分布N(0,(σ12+σ22)I)N(0,(\sigma ^2_1 + \sigma ^2_2) I)になることにより

at=1βta_t = 1 - \beta_t

Xt{=atXt1+1atϵt1=at(at1Xt2+1at1ϵt2)+1at1ϵt1=atat1Xt2+1atat1ϵt2=...=atX0+1atϵ(2)X_t\begin{cases} =\sqrt{a_t} X_{t-1}+\sqrt{1- a_t} \epsilon_{t-1}\\ =\sqrt{a_t}(\sqrt{a_{t-1}} X_{t-2}+\sqrt{1- a_{t-1}} \epsilon_{t-2})+\sqrt{1- a_{t-1}} \epsilon_{t-1}\\ =\sqrt{a_ta_{t-1}} X_{t-2}+\sqrt{1- a_ta_{t-1}} \overline \epsilon_{t-2}\\ =...\\ =\sqrt{\overline a_t}X_0+\sqrt{1-\overline a_t}\epsilon \end{cases}\tag{2}

つまり

q(XtX0)=N(Xt;atX0,(1at)I)q(X_t|X_0) = N(X_t;\sqrt{\overline a_t}X_{0},(1-\overline a_t) I)

図2

よって、tt時の画像の状態はX0X_0, ttだけに依存する
(あとスケールを決めるハイパラだけ)

これで何がうれしいか?

  • 時系列ではなく独立でBatch学習ができる

Reverse Process

途中時刻tの画像のノイズを予測し、ノイズを抜いていく過程。
これもマルコフ連鎖で定義されている。

Xt1XtnoiseX_{t-1} \rightarrow X_t -noise

{qθ(XT)=N(Xt;0;I)qθ(X0:TX0):=q(xT)qθ(Xt1Xt)qθ(Xt1Xt):=N(Xt1;μθ(Xt,t),Σ(Xt,t))(3)\begin{cases} q_\theta(X_T)=N(X_t;0;I)\\ q_\theta(X_{0:T}|X_0) := q(x_T)∏q_\theta(X_{t-1}|X_{t})\\ q_\theta(X_{t-1}|X_{t}) := N(X_{t-1}; \mu _\theta (X_{t},t), \Sigma(X_t,t)) \end{cases}\tag{3}

  • μθ(Xt,t)\mu _\theta (X_{t},t)でネットワークを使う
    可能条件について厳密な証明はあるが、証明が難しいため一旦とばす。(DDPM P12-A)

Choose a network

図3-1

UNet!です

  • 入力:
    tt時刻の画像
  • 出力:
    tt時刻の画像のノイズ
  • 損失/目的関数
    予測ノイズと実際ノイズのL2正則
    厳密な証明はあるが一旦とばす。(DDPM P12-A)

しかしこれだけじゃ足りない!
ノイズの強さは時刻によるものなので、時刻のembeddingが必要。

図4

  • ここで使ったembeddingはposition embedding
  • transformerでも使われている

図5

kk ~ 位置情報
ii ~ i番目のパラメータ
dd ~ dimension
nn ~ 定数・Attention is all you needでは10000

図6

流れのまとめ

図7

実際まわしてみよう!

今回のコードは【こちら】

参考

Understanding Diffusion Models: A Unified Perspective: https://arxiv.org/pdf/2208.11970.pdf
Diffusion models from scratch in PyTorch: https://www.youtube.com/watch?v=a4Yfz2FxXiY
Tutorial on Denoising Diffusion-based Generative Modeling: Foundations and Applications: https://www.youtube.com/watch?v=cS6JQpEY9cs
Positional Embeddings: https://machinelearningmastery.com/a-gentle-introduction-to-positional-encoding-in-transformer-models-part-1

0

Comment