跳转至

专题一——DDPM原理剖析

Diffusion模型原理

参考课程:李宏毅老师《生成式AI Diffusion原理剖析》
注:回顾去年暑假听过的课程,二次听课有许多新的收获,此为二次听课笔记。

一、基本概念

1.前向过程:图片添加噪声。
2.逆向过程:充满噪声的图片,经过去噪得到生成的图片。
3.对比
·VAE:先使用编码器,使用低维空间的latent representation对图片进行压缩表示;再经过解码器解码,重新生成图片。
·由于图像数据维度太高,应先在低维隐空间上进行扩散,再经由解码器解码得到图像。
·diffusion:加噪过程人为设计(noise schedule),得到充满噪声的图片;去噪过程将带噪声的图片变为最终生成的图片。

二、DDPM训练与采样算法

1.训练算法
重复下列步骤,直至收敛:
·采样纯净图片\(x_0 \sim q(x_0)\)(实质上,就是从训练数据集中选一张图片)
·采样时间步\(t \sim Uniform(\{1, \cdots, T\})\)
·采样随机噪声\(\epsilon \sim N(0, I)\)(噪声服从正态分布)
·对于下列表达式,进行梯度下降:\(\nabla_{\theta}||\epsilon - \epsilon _{\theta}(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon, t)||^2\)
[注]
\(\bar{\alpha}_1, \cdots, \bar{\alpha}_t\)从大到小,表示原始图片与噪声的比重关系。
\(\epsilon_{\theta}\)为噪声预测函数,即神经网络;\(\epsilon\)为实际噪声,即噪声预测的目标。
③神经网络\(\epsilon_{\theta}\)的目的是:进行准确的噪声预测。
④神经网络\(\epsilon_{\theta}\)的本质:接受带噪声的图片\(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon\)和时间步\(t\),预测图片中的噪声。
2.采样算法(推理)
·采样噪声图\(x_T \sim N(0, I)\)
·对\(t = T, \cdots, 1\)
·采样噪声\(z \sim N(0, 1)\),若\(t > 1\)
·\(x_{t - 1} = \frac{1}{\sqrt{\alpha_t}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}}\epsilon_{\theta}(x_t, t)) + \sigma_t z\)
·返回去噪结果\(x_0\)

三、图像生成模型的共同目标

1.共性:从常见的代理分布(如:高斯分布)采样->经过网络作用->变换为生成图片,也就是实现从代理分布到图像分布的变换。
2.图像生成模型的目标:学习到的图像分布与真实图像分布尽量接近。
3.条件(condition)生成
·“文生图”:采样后在文字条件下,去噪生成包含文字语义且真实性较高的图片。
4.最大似然估计——让学习到的图像分布与真实图像分布尽量接近
·设学习到的图像分布为\(P_{\theta}(x)\),真实图像分布为\(P_{data}(x)\)
·首先,从真实分布\(P_{data}(x)\)采样获得样本\({x^1, x^2, \cdots, x^m}\).
·\(P_{\theta}(x^i)\):即产生第\(i\)(\(i = 1, 2, \cdots, m\))张图的概率分布。
·假设\(P_{\theta}(x^i)\)能够计算,则相应有:\(\theta^* = argmax_{\theta}\prod_{i = 1}^mP_{\theta}(x^i)\),即只需找到参数\(\theta\),使得各样本图片被生成的概率最大化。
5.最大似然估计与分布接近程度的关系
·设从真实分布\(P_{data}(x)\)采样获得样本\({x^1, x^2, \cdots, x^m}\).
·最大似然估计:\(\theta^* = argmax_{\theta}\prod_{i = 1}^mP_{\theta}(x^i) \newline = argmax\space log\prod_{i = 1}^mP_{\theta}(x^i) \newline = argmax_{\theta}\sum_{i = 1}^mlogP_\theta(x^i) \newline \approx argmax_{\theta} E_{x \sim P_{data}}[logP_{\theta}(x)]\)
$ = argmax_{\theta}\int_{x}P_{data}(x)logP_{\theta}(x)dx - \int_{x}P_{data}(x)logP_{data}(x)dx$(数学期望用积分定义式展开;添加不干扰argmax的项用于配凑)
$ = argmax_{\theta}\int_{x}P_{data}(x)log\frac{P_{\theta}(x)}{P_{data}(x)}dx \newline = argmin_{\theta}KL(P_{data} || P_{\theta})\((化为KL散度,即两个分布之间差异的一种度量) ·即:最大似然估计\)\Leftrightarrow\(最小化KL散度。
6.VAE的最大似然估计 ·直接计算\)
P_{\theta}(x)$
·定义式(设\(z\)为隐变量):\(P_{\theta}(x) = \int_{z}P(z)P_{\theta}(x|z)dz\)
·\(P_{\theta}(x | z)\)的计算:假设神经网络输出\(G(z) = x\)代表的是高斯分布的均值,则\(P_{\theta}(x | z)\)正比于\(exp(-||G(z) - x||_2)\)
·VAE的实质:最小化\(logP(x)\)的一个下界。
·VAE下界推导:\(logP_{\theta}(x) = \int_{z}q(z | x)logP(x)dz\)\(q(z | x)\)可为任意分布)
\(= \int_zq(z | x)log(\frac{P(z, x)}{P(z | x)})dz\)
$ = \int_{z}q(z | x)log(\frac{P(z, x)q(z | x)}{q(z | x)p(z | x)})dz$
$ = \int_{z} q(z|x)log(\frac{P(z, x)}{q(z | x)})dz + \int_{z}q(z | x)log(\frac{q(z | x)}{P(z | x)})dz\((后一项为\)q(z | x), P(z | x)$的KL散度,恒为非负)
\(\geq \int_z q(z | x)log(\frac{P(z, x)}{q(z | x)})dz\)(放缩获得变分下界)
$ = E_{z \sim q(z | x)}[log(\frac{P(x, z)}{q(z | x)})]\((写成期望形式) ·VAE训练目标:最大化变分下界,以获得较大的\)P_{\theta}(x)$值。

四、DDPM与最大似然估计

1.思想
·从\(T, T - 1, \cdots, 0\)的去噪过程,可视为产生高斯函数均值的过程,即:
\(P_{\theta}(x_{t - 1} | x_t)\)正比于\(exp(||G(x_t) - x_{t - 1}||_2)\)
·因此,\(P_{\theta}(x_0)\)可以拆成若干条件概率乘积的多重积分:
\(P_{\theta}(x_0) = \int_{x_1: x_T}P(x_T)P_{\theta}(x_{T - 1} | x_{T})\cdots P_{\theta}(x_0 | x_1)dx_1:x_T\)
2.对比——VAE/DDPM最大似然估计\(logP(x)\)的下界
·VAE:最小化\(E_{q(z | x)}[log(\frac{P(x, z)}{q(z | x)})]\)
·DDPM:最小化\(E_{q(x_1 : x_T | x_0)}[log(\frac{P(x_0 : X_T)}{q(x_1: x_T | x_0)})]\)
[注]上述\(P(x_T)\)为噪声采样分布,与\(\theta\)无关;其余分布均由神经网络进行参数化。
3.\(q(x_t | x_{t - 1})\)的计算
·\(x_{t + 1} = \sqrt{1 - \beta_{t + 1}}x_t + \sqrt{\beta_{t + 1}}\epsilon\)
·将\(x_1 = \sqrt{1 - \beta_1}x_0 + \sqrt{\beta_1}\epsilon_0\)代入\(x_2 = \sqrt{1 - \beta_2}x_1 + \sqrt{\beta_2}\epsilon_1\)得:
\(x_2 = \sqrt{1 - \beta_2} \sqrt{1 - \beta_1}x_0 + \sqrt{1 - \beta_2}\sqrt{\beta_1}\epsilon_0 + \sqrt{\beta_2}\epsilon_1\)
·上述两个噪声进行合并,等效于:
\(x_2 = \sqrt{1 - \beta_2} \sqrt{1 - \beta_1}x_0 + \sqrt{1-(1 -\beta_2)(1 - \beta_1)}\epsilon\)
·令\(\alpha_t = 1 - \beta_t, \bar{\alpha}_t = \alpha_1 \cdots \alpha_t\),即得:
\(x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon\)
4.训练目标变形
·原始训练目标:最大化\(E_{q(x_1:x_T | x_0)}[log(\frac{P(x_0:x_T)}{q(x_1:x_T |x_0)})]\)
·经推导,得到:\(E_{q(x_1|x_0)}[logP(x_0 | x_1)] - KL(q(x_T | x_0) || P(x_T))-\sum_{t = 2}^TE_{q(x_t|x_0)}[KL(q(x_{t - 1}|x_t, x_0) || P(x_{t - 1}|x_t))]\)
·第二项:是人工定义的加噪过程,神经网络参数对它没有影响,故在最大化中,该项可抛弃。
·第三项:神经网络可以操控,\(q(x_{t - 1}| x_t, x_0)\)可以计算想办法得到,\(P(x_{t - 1} | x_t)\)为神经网络去噪产生的分布。
·第一、三项保留,且计算过程相似,下面仅解读第三项的计算。
5.训练目标的计算
\(\sum_{t = 2}^TE_{q(x_t|x_0)}[KL(q(x_{t - 1}|x_t, x_0) || P(x_{t - 1}|x_t))]\)
·问题关键:\(q(x_{t - 1}|x_t, x_0)\)的计算,该式含义是:假设已经看到原始图片、\(t\)步加噪后的图片,问\(t - 1\)步加噪的图片的分布如何。
·联想:\(q(x_t | x_0) = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\epsilon\)
·联想:\(q(x_t | x_{t - 1}) = \sqrt{1 - \beta_t}x_{t - 1} = \sqrt{1 - \beta_t}x_{t - 1} + \sqrt{\beta_t}\epsilon\)
·即:已知\(q(x_t | x_0), q(x_{t - 1}|x_0), q(x_t|x_{t - 1})\),希望能用于计算\(q(x_{t - 1} | x_t, x_0)\)
·经过条件概率展开与化简,得到容易计算的目标表达式:\(q(x_{t - 1} | x_t, x_0) = \frac{q(x_t | x_{t - 1})q(x_{t - 1}|x_0)}{q(x_t | x_0)}\)
6.\(q(x_{t - 1} | x_t, x_0)\)的分布
·经推导,该条件概率分布为高斯分布\(N(\frac{\sqrt{\bar{\alpha}_{t - 1}}\beta_t x_0 + \sqrt{\alpha_t}(1 - \bar{\alpha}_{t - 1})x_t}{1 - \bar{\alpha}_t},\frac{1 - \bar{\alpha}_{t - 1}}{1 - \bar{\alpha}_t}\beta_tI)\)
7.计算\(q(x_{t - 1}|x_t, x_0)\)\(P(x_{t - 1}|x_t)\)KL散度
·经过上述推导,两个分布均为高斯分布,并得到了它们的均值、方差,可以使用显式公式计算其KL散度。
·观察:\(q(x_{t - 1}|x_t, x_0)\)的均值、方差与神经网络无关;\(P(x_{t - 1}|x_t)\)均值由去噪模型决定,方差是固定的。
·故两个条件分布的KL散度最小化\(\Leftrightarrow\)二者均值尽量接近
·因此去噪模型的训练目的最终转化为:使得\(P(x_{t - 1}|x_t)\)的均值尽量接近\(q(x_{t - 1}| x_t, x_0)\),即给定噪声图\(x_t\)和时间步\(t\),预测分布的均值应向\(\frac{\sqrt{\bar{\alpha}_{t - 1}}\beta_t x_0 + \sqrt{\alpha_t}(1 - \bar{\alpha}_{t - 1})x_t}{1 - \bar{\alpha}_t}\)靠拢。
8.均值化简
·原始均值公式:\(\frac{\sqrt{\bar{\alpha}_{t - 1}}\beta_t x_0 + \sqrt{\alpha_t}(1 - \bar{\alpha}_{t - 1})x_t}{1 - \bar{\alpha}_t}\)
·由加噪公式得:\(x_0 = \frac{x_t - \sqrt{1 - \bar{\alpha}_t}\epsilon}{\sqrt{\alpha}_t}\)
·上式代入均值公式,化简得到均值的简化形式:\(\frac{1}{\sqrt{\alpha_t}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}}\epsilon)\)
9.网络预测的实质
·实质上,网络只需预测\(\frac{1}{\sqrt{\alpha_t}}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}}\epsilon)\)中的\(\epsilon\)
·采样公式中\(\epsilon_{\theta}(x_t, t)\)由神经网络进行参数化,恰好是网络的实际预测目标。
10.采样公式中新增噪声的目的
\(x_{t - 1} = \frac{1}{\sqrt{\alpha}_t}(x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}}\epsilon_{\theta}(x_t, t))\)
·语言模型中的结论:对于GPT-2,若每次仅进行最大似然估计,则产生的句子将是高度重复的。人类写文章,遣词造句并非总是选择概率最大的词汇;概率最大的生成结果未必是最好的结果。
·实际上,diffusion可能可以理解为N步到位的自回归模型,各步操作之间均融入了新增噪声。