Denoising Diffusion Probabilistic Models (2020)
June 15, 2025Denoising Diffusion Probabilistic Modelsは、高品質な画像の生成することで、デノイジング確率拡散モデル(拡散モデル)の効果を示した。 拡散モデルは、観測データにノイズを徐々に加えるマルコフ過程を遡行する。 言いかえればノイズから観測データを生成するマルコフ過程である。 モデルにノイズを加える過程は拡散過程、遡行する過程は逆拡散過程とよばれる。 ノイズが徐々に除かれるデータの各時刻の状態を潜在変数、ノイズを除いたデータを観測変数とすれば、拡散モデルを潜在変数モデルとみなせる。 観測変数の尤度を現実的な計算量で求めるために、最尤推定に変分下限を応用する。
まずは、変分下限を適用する尤度を示すために拡散過程と逆拡散過程を定義する。 拡散過程では、時刻\(T\)の潜在変数について\(p(\textbf{x}_T)=\mathcal{N}(\textbf{x}_T;\boldsymbol{0}, \textrm{\textbf{I}})\)が成りたつように正規分布にしたがうノイズを観測データに加える。 このとき、拡散モデルを潜在変数モデルとみなして周辺化すると、拡散モデルを\(p_\theta (\textbf{x}_0)\)と表せる。 $$ \begin{align} p_\theta(\textbf{x}_0)&:=\int p_\theta (\textbf{x}_{0:T})d\textbf{x}_{1:T}\\ p_\theta(\textbf{x}_{0:T})&:=p(\textbf{x}_T)\prod^T_{t=1}p_\theta (\textbf{x}_{t-1}|\textbf{x}_t)\\ p_\theta(\textbf{x}_{t-1}|\textbf{x}_t)&:= \mathcal{N}(\textbf{x}_{t-1};\boldsymbol{\mu}_\theta (\textbf{x}_t,t),\boldsymbol{\Sigma}_\theta(\textbf{x}_t,t)) \end{align} $$ 一方、ノイズによる分散を\(\beta_1,\dots,\beta_T\)として、拡散過程を\(q(\textbf{x}_{1:T}|\textbf{x}_0)\)と定義する。分散\(\beta_t\)は時刻によらず一定でもよい。 $$ \begin{align} q(\textbf{x}_{1:T}|\textbf{x}_0)&:=\prod^T_{t=1}q(\textbf{x}_t|\textbf{x}_{t-1})\\ q(\textbf{x}_t|\textbf{x}_{t-1})&:=\mathcal{N}(\textbf{x}_t;\sqrt{1-\beta_t}\textbf{x}_{t-1},\beta_t\textbf{I}) \end{align} $$ \(p_\theta(\textbf{x}_{0})\)には積分が出現する。 そこで、最尤推定を現実的な時間で終えるために、負の対数尤度の変分下限を最小化する問題として学習を設定する。 $$ \mathbb{E}\left[-\log p_\theta(\textbf{x}_0)\right]\le\mathbb{E}_q\left[-\log\frac{p_\theta(\textbf{x}_{0:T})}{q(\textbf{x}_{1:T}|\textbf{x}_0)}\right]=\mathbb{E}_q\left[-\log p(\textbf{x}_T)-\sum_{1\ge 1}\log\frac{p_\theta(\textbf{x}_{t-1}|\textbf{x}_t)}{q(\textbf{x}_t|\textbf{x}_{t-1})}\right]:=L $$ さらに、文献のAppendix Aより、\(L\)はカルバックライブラーの情報量をもって表せる。 $$ L=\mathbb{E}_q\left[D_{\textrm{KL}}(q(\textbf{x}_T|\textbf{x}_0)||p(\textbf{x}_T))+\sum_{t>1}D_{\textrm{KL}}(q(\textbf{x}_{t-1}|\textbf{x}_t,\textbf{x}_0)||p_\theta (\textbf{x}_{t-1}|\textbf{x}_t))-\log p_\theta(\textbf{x}_0|\textbf{x}_1)\right] $$
上の\(L\)を最小化する問題において、\(D_{\textrm{KL}}(q(\textbf{x}_T|\textbf{x}_0)||p(\textbf{x}_T))\)は、\(\beta_t\)を訓練で更新しないとき、パラメタに依存しない定数とみなせる。 拡散過程の\(\textbf{x}_t\)は、\(\alpha_t:=1-\beta_t\), \(\bar{a}_t:=\prod^t_{s=1}\alpha_s\)とすると解析的に求めることができる。 $$ \begin{equation} q(\textbf{x}_t|\text{x}_0)=\mathcal{N}(\textbf{x}_t;\sqrt{\bar{\alpha}_t}\textbf{x}_0,(1-\bar{\alpha}_t)\textbf{I}) \end{equation} $$ より、\(q(\textbf{x}_t|\textbf{x}_0)\)も\(p(\textbf{x}_T)\)もパラメタに依存せず、定数とみなせる。
次に\(L_{t-1}:=\mathbb{E}_q\left[D_{\textrm{KL}}(q(\textbf{x}_{t-1}|\textbf{x}_t,\textbf{x}_0)||p_\theta (\textbf{x}_{t-1}|\textbf{x}_t))\right]\)を最小化するパラメタを調べる。 まず、生成過程が $$ \begin{align*} q(\textbf{x}_{t-1}|\textbf{x}_t, \textbf{x}_0)&=\mathcal{N}(\textbf{x}_{t-1};\tilde{\boldsymbol{\mu}}_{t}(\textbf{x}_{t},\textbf{x}_0),\tilde{\beta}_t\textbf{I})\\ \tilde{\boldsymbol{\mu}}_t(\textbf{x}_t,\textbf{x}_0)&:=\frac{\sqrt{\bar{\alpha}_{t-1}\beta_t}}{1-\bar{\alpha}_t}\textbf{x}_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\textbf{x}_t\\ \tilde{\beta}_t&:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_{t} \end{align*} $$ とする。このとき、共分散行列が対角行列で次元が等しい正規分布のKLダイバージェンスになり、\(C\)を\(\theta\)に依存しない定数として $$ L_{t-1}-C = \mathbb{E}_q\left[\frac{1}{2\sigma^2_t}||\tilde{\boldsymbol{\mu}}(\textbf{x}_t,\textbf{x}_0)-\boldsymbol{\mu}_\theta (\textbf{x}_t, t)||^2\right] $$ ここで、\((6)\)より、\(\textbf{x}_t(\textbf{x}_0,\boldsymbol{\epsilon})=\sqrt{\bar{\alpha}_t}\textbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}\), \(\boldsymbol{\epsilon}\sim\mathcal{N}(\textbf{0}, \textbf{I})\)とすると、 $$ \begin{align*} L_{t-1}-C=\mathbb{E}_{\textbf{x}_0, \boldsymbol{\epsilon}}\left[\frac{1}{2\sigma^2_t}\left|\left|\frac{1}{\sqrt{\alpha_t}}\left(\textbf{x}_t(\textbf{x}_0,\boldsymbol{\epsilon})-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}\right)-\boldsymbol{\mu}_{\theta}(\textbf{x}_t(\textbf{x}_0,\boldsymbol{\epsilon}),t)\right|\right|^2\right] \end{align*} $$ 以上から、\(\boldsymbol{\mu}_\theta\)は\(\frac{1}{\sqrt{\alpha_t}}\left(\textbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}\right)\)となるように、パラメタを更新することになる。 \(\textbf{x}_t\)はモデルへの入力であり、また、\(\textbf{x}_t(\textbf{x}_0,\boldsymbol{\epsilon})=\sqrt{\bar{\alpha}_t}\textbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon}\)なので、 $$ L_{t-1}-C=\mathbb{E}_{\textbf{x}_0,\boldsymbol{\epsilon}}\left[\frac{\beta^2_t}{2\sigma^2_t\alpha_t(1-\bar{\alpha}_t)}\left|\left|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_\theta(\sqrt{\bar{\alpha}_t}\textbf{x}_0+\sqrt{1-\bar{\alpha}_t}\boldsymbol{\epsilon},t)\right|\right|^2\right] $$ 以上より、逆拡散過程では、\(\boldsymbol{\mu}_\theta\)が\(\tilde{\boldsymbol{\mu}}_t\)を予測できるようにすることであり、それは同時に\(\boldsymbol{\epsilon}\)を予測できるようにパラメタを更新することでもある。
最後に、\(-p_\theta(\textbf{x}_0|\textbf{x}_1)\)の最小化するにあたり、次元のデータを\([-1, 1]\)にスケールし、逆拡散過程が次元\(i\)ごとに独立な正規分布\(\mathcal{N}(\textbf{x}_0;\boldsymbol{\mu}_\theta(\textbf{x}_1,1), \sigma^2_1\textbf{I})\)にしたがうとみなす。 $$ p_\theta(\textbf{x}_0|\textbf{x}_1)=\prod^D_{i=1}\int^{\delta+(x^i_o)}_{\delta_-(x^i_0)}\mathcal{N}(x;\mu^i_{\theta}(\textbf{x}_1,1),\sigma^2_1)dx $$
$$
\begin{align*}
\delta_+(x)&=\begin{cases}
\infty&\text{if}\ x=1\\
x+\frac{1}{255}&\text{if}\ x < 1
\end{cases}\\
\delta_-(x)&=\begin{cases}
-\infty&\text{if}\ x=-1\\
x-\frac{1}{255}&\text{if}\ x > -1
\end{cases}\\
\end{align*}
$$
以上より、\(\textbf{x}_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(\textbf{x}_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha_t}}}\boldsymbol{\epsilon}_\theta(\textbf{x}_t,t)\right)+\sigma_t\textbf{z}\), \(\textbf{z}\sim\mathcal{N}(\textbf{0}, \textbf{I})\)のようにサンプリングする場合、学習とサンプリングは文献中の以下の手続きになる。
