国内知名网站建设伺,做企业网站设计方案,仿制型模板网站,杭州多语言网站建设这篇文章将尝试推导扩散模型 DDPM 中涉及公式#xff0c;主要参考两个 B 站视频#xff1a;
大白话AI狗中赤兔
本文所用 PPT 元素均来自 UP 主#xff0c;狗中赤兔和大白兔AI#xff0c;特此感谢。 在证明开始#xff0c;我们需要先对扩散模型有一个整体的认知。扩散模型…这篇文章将尝试推导扩散模型 DDPM 中涉及公式主要参考两个 B 站视频
大白话AI狗中赤兔
本文所用 PPT 元素均来自 UP 主狗中赤兔和大白兔AI特此感谢。 在证明开始我们需要先对扩散模型有一个整体的认知。扩散模型通常由①前向的加噪过程②逆向的去噪过程构成。如下图所示 从左到右是 加噪过程从右到左是 去噪过程。 我们在上一篇文章中已经像大家介绍了扩散模型的基本原理这篇
我们通过简单的表征模块搭建简单的去噪模型在 MNIST 手写体数据集上搭建了多步去噪模型。相信上述 demo 可以帮助大家理解扩散模型主要工作流程。这篇文章我们将尝试证明其背后的数学原理。 文章目录 加噪过程证明什么证明过程 去噪过程证明什么证明过程 训练过程 加噪过程
证明什么
扩散模型加噪过程就是从原始图片开始逐步向其中添加噪声直至图片完全模糊。我们首先使用数学公式表述这一过程。 汇总一下已知的条件
扩散过程符合马尔科夫随机过程每一步均仅和上一步有关 q ( x t ∣ x t − 1 ) N ( 1 − β t x t − 1 , β t I ) q(x_t|x_{t-1})\mathcal{N}(\sqrt{1-\beta_t}x_{t-1},\beta_t I) q(xt∣xt−1)N(1−βt xt−1,βtI)每一步中添加的噪声均是从高斯分布中抽取的随机数即 x t 1 − β t x t − 1 β t ⋅ ϵ x_t\sqrt{1-\beta_t}x_{t-1}\sqrt{\beta_t}\cdot\epsilon xt1−βt xt−1βt ⋅ϵ
注意噪声和源图片是掺杂的状态掺杂比例平方和是 1大家可以到 这个网站 感受一下。
我们已经知道了前向过程是一个马尔科夫链并知道了每一步添加的噪声服从高斯分布。那么是否有可能从最开始原始状态直接加噪到特定时间步所处状态呢即证明 q ( x t ∣ x 0 ) N ( C t 2 x 0 , C t 1 I ) q(x_t|x_{0})\mathcal{N}(C_{t2}x_{0},C_{t1} I) q(xt∣x0)N(Ct2x0,Ct1I) x t C t 2 x 0 C t 1 ⋅ ϵ x_tC_{t2}x_{0}C_{t1}\cdot\epsilon xtCt2x0Ct1⋅ϵ
证明过程
首先我们定义两个马尔科夫链然后将式2带入式1并进行化简。注意到两个随机噪声可以进行合并这里运用了高斯分布两个特殊性质
一个随机数是从标准高斯分布中采样得到的对这个随机数乘以一个不为零的常数相乘结果依然是高斯分布 两个随机数分别从两个独立高斯分布中抽取得到两数相加所得结果依然服从高斯分布 详细证明过程如下 上述证明结果表示任一时间步的加噪状态可以由初始照片通过一步加噪得到。注意到加噪过程是不涉及神经网络的不需要进行网络训练。此外我们的 α ‾ t \overline{\alpha}_{t} αt 是由 α 1 α 2 … α t \alpha_{1}\alpha_{2}\dots\alpha_{t} α1α2…αt 连乘得到的。这些数均是小于 1 的正数所以当扩散步数足够多时 x t x_t xt 将被噪声淹没变成一张完全遵从高斯分布的噪声。
去噪过程
证明什么
在上一篇文章中我们实现了多步迭代去噪模型。该模型可看作扩散模型的原型简单直接的展示了扩散模型的主要工作原理。但是在真实的扩散模型设计中逆向去噪会更加复杂一些。如下图所示 我们希望以加噪图片为输入让模型预测所加噪声或者去噪后的图像用数学表达式表示则为 p θ ( x t − 1 ∣ x t ) p_{\theta}(x_{t-1}|x_{t}) pθ(xt−1∣xt) 既然要训练神经网络拟合这一分布那么一个很自然的问题是这一分布的表达式是什么 为了回答这一问题我们首先汇总一下已知条件
去噪过程遵循马尔科夫过程每一步去噪只与当前状态有关由上一小节可得每一步加噪状态均可由原始图像通过一步加噪得到
下面我们将尝试回答神经网络需要拟合的表达式是什么
证明过程
在开始之前我们先来复习下贝叶斯定理 贝叶斯定理的好处是可以将复杂概率问题拆分成已知的简单概率问题的组合。 上述将要求解的 p ( x t − 1 ∣ x t ) p(x_{t-1}|x_{t}) p(xt−1∣xt)可以使用贝叶斯定理进行化简 进一步的我们可以给式中各项添加 x 0 x_0 x0 此处左式和右式左上方中的 x 0 x_0 x0 可以近似忽略现在我们将注意力放在等式右边的三个表达式上。 在上一节中我们证明了①任意时间步的带噪图像均可由原始图像一步加噪得到这一噪声符合高斯分布②任意时间步的带噪图像可由前一步图像加噪得到这一噪声也符合高斯分布。这两点用公式表示如下 等式右边的三个表达式可通过上述两个公式及其一个拓展得到因为理论上上两式是对一个来自高斯分布的随机数进行线性变换所以变换结果也应遵从高斯分布 下面就是将右式中的三个表达式代入高斯分布下的表达并进行合并化简。 化简过程十分复杂我们只需要知道能化简而且化简结果也是一个高斯分布 再回头看 我们的逆向过程是希望在已知 x T x_T xTwhich is a 高斯噪声的情况下通过去噪神经网络一步步倒推回去得到 x 0 x_0 x0 我们经过复杂推导得到了神经网络的表达式 但该表达式中含有我们想要求解的 x 0 x_0 x0所以我们需要进一步将 x 0 x_0 x0 替换掉 我们对上一节证明的 x 0 x_0 x0 和 x T x_T xT 之间的关系式进行变形代入主表达式 化简得到最终结果 此时我们终于有了一个 “知道 x t x_t xt 值即可求得 x t − 1 x_{t-1} xt−1 值的关系式” 了。这个关系式就是我们所谓的去噪网络
但是注意到该关系式并不是一个确定的概率分布其中还有一个随机数 ϵ \epsilon ϵ 。当这个随机数确定的时候我们才能真正敲定该概率分布。 众所周知神经网络是黑箱拟合一切难题的法宝所以我们将预测随机数的任务就交给神经网络。
公式推导到这里所谓去噪网络的功能发生了一点点变化。一开始我们的想法是输入带噪图像输出干净图片 现在变成了输入带噪图像预测噪声 ϵ \epsilon ϵ 将该噪声代入表达式 得到基于带噪图片向前推理的概率分布最后我们再从该分布中抽取一张图片。逻辑链如下所示 最后遗留的小问题去噪过程最开始如何拿到 x T x_T xT 呢在上一小节末尾我们提到当一个照片加噪次数足够多时带噪图片将变成一张高斯噪声。因此我们将随机高斯噪声作为 x T x_T xT 即可。
训练过程
写到这里相信大多数读者都和我一样感到疲惫但事实上扩散模型最难的理论部分才刚刚开始。这一部分在下面两个视频中有讲解
狗中赤兔梗直哥
此处仅放出训练神经网络的误差函数
其中 ϵ θ \epsilon_{\theta} ϵθ 是神经网络预测的噪声 ϵ \epsilon ϵ 是服从高斯分布的随机噪声真实噪声t 是时间步 将上述几个变量代入误差函数即可得到神经网络真正的优化目标。
希望读到这里的读者能锲而不舍继续推导相关公式俺退了祝好