扩散模型

机器学习中,扩散模型()或扩散概率模型是一类潜变量模型,是用变分估计训练的马尔可夫链。扩散模型的目标是通过对数据点在潜空间中的扩散方式进行建模,来学习数据集的潜结构。计算机视觉中,这意味着通过学习逆扩散过程训练神经网络,使其能对叠加了高斯噪声的图像进行去噪。计算机视觉中使用通用扩散模型框架的3个例子是去噪扩散概率模型、噪声条件得分网络和随机微分方程。

扩散模型是在2015年提出的,其动机来自非平衡态热力学。

扩散模型可以应用于各种任务,如图像去噪、图像修复、超分辨率成像、图像生成等等。例如,一个图像生成模型,经过对自然图像的扩散过程的反转训练之后,可从一张完全随机的噪声图像开始逐步生成新的自然图像。比较近的例子有2022年4月13日OpenAI公布的文生图模型DALL-E。它将扩散模型用于模型的先验解释器和产生最终图像的解码器。

数学原理
于所有图像的空间中生成一张图像
考虑图像生成问题。令x代表一张图,令p(x)为在所有可能图像上的機率分布。若有p(x)本身,便可以肯定地说给定的一张图的機率有多大。但这在一般情况下是难以解决的。

大多数时候,我们并不想知道某个图像的绝对機率,相反,我们通常只想知道某个图像与它的周围相比,機率有多大:一张猫的图像与它的小变体相比,機率哪个大?如果图像里有一根、两根或三根胡须,或者加入了一些高斯噪声,機率会更大吗?

因此,我们实际上对p(x)本身不感兴趣,而对\nabla_x \ln p(x)感兴趣。这有两个效果:

  • 其一,我们不再需要标准化p(x),而是可以用任何\tilde p(x) = Cp(x),其中C = \int \tilde p(x) dx > 0是任意常数,我们不需要去关心它。
  • 其二,我们正在比较p(x)的邻居p(x + dx),通过\frac{p(x)}{p(x+dx)} =e^{-\langle \nabla_x \ln p, dx \rangle}

令分数函数为s(x) := \nabla_x \ln p(x),然后考虑我们能对s(x)做什么。

实际上,s(x)允许我们用随机梯度朗之万动力学从p(x)中取样,这本质上是马尔可夫链蒙特卡洛的无限小版本。

这可以简单地通过SGLD实现,即\nabla_x \ln p_\beta(x|y) = \beta\nabla_x \ln p(y|x) + \nabla_x \ln p(x)

无分类指导器
如果我们没有分类器p(y|x),我们仍可以从图像模型本身提取一个:\nabla_x \ln p_\beta(x|y) = (1-\beta) \nabla_x \ln p(x) + \beta \nabla_x \ln p(x|y) 这样的模型通常要在训练时提供(x, y) 和(x, None) ,这样才能让它同时为\nabla_x\ln p(x|y) 和\nabla_x\ln p(x) 建模。

这是GLIDE、DALL-E和Google Imagen等系统的重要组成部分。

另见

  • 扩散过程
  • 马尔可夫链
  • 变分贝叶斯方法
  • 变分自编码器

阅读更多

参考文献

评论 (0)

  • 还没有评论,来抢沙发吧。