DDPM论文解读

news/2024/12/15 16:00:19/文章来源:https://www.cnblogs.com/Sun-Wind/p/18608076

DDPM(Denoising Diffusion Probabilistic Models)

论文研究背景

  • 扩散概率模型(Denoising Diffusion Probabilistic Models, 简称DDPM)是近年来生成建模领域的重要发展之一。
  • 生成模型的目标是学习数据分布并能够从中采样,生成与真实数据相似的新样本。
  • 以往的生成模型主要有变分自编码器(VAE),生成对抗网络(GAN),自回归模型,正则化流(Normalizing Flows)等等。
  • DDPM提供了一种全新的概率生成方法,结合了扩散过程的理论和深度学习的表达能力。

DDPM(Denoising Diffusion Probalistic Models)是扩散模型的基石

扩散模型的研究并不始于DDPM,但DDPM的成功对扩散模型的发展起到至关重要的作用。
img

可以看到两边的图像都是DDPM所生成的图像,质量都非常不错,左边是清晰度较高的图像,右边是清晰度较低的图像

研究方法

img

可以把DDPM的扩散过程比喻为一滴墨水滴到水杯的过程,墨水逐渐扩散直到完全扩散到整个水杯
img
DDPM的过程如上图所示,刚开始对原始图像进行前向加噪,噪声都是从高斯分布N(0,1)随机采样的噪声,最后直到原始图像完全变成了高斯噪声
然后再反向去噪,预测过程中所加的噪声,反向还原原始图像
img
上图是扩散模型的数学模型,可以看到原始图像的加噪过程是从\(x_{t-1}\)转移到\(x_t\)的概率分布,这是一个马尔可夫过程。马尔可夫分布具有无后效性。
反向去噪过程是一个参数化的马尔可夫链

研究方法

前向加噪

img
如图所示是论文中所提出的前向加噪过程部分公式,其中\(β_𝑡\) 随着𝑡增大是递增的,即\(β_1\)<\(β_2\)<…<\(β_𝑇\)\(β_𝑡\) 是由0.0001到0.02线性插值(以𝑇=1000为基准,𝑇增加,\(β_𝑡\) 对应增大)。

我们可以发现从\(x_{t-1}\)转移到\(x_t\)的概率分布是一个高斯分布,最后可以推出\(q(x_t \mid x_0) = \mathcal{N}(x_t; \sqrt{\bar{\alpha}_t} x_0, (1 - \bar{\alpha}_t) I)\)
推导过程如下所示:
img
从公式1我们可以发现从前一张图片转移到后一张图片是一个线性加噪的过程,把\(β_t\)代换成\(α_t\)就可以得到公式2,紧接着我们可以把\(x_{t-1}\)展开成\(x_{t-2}\)的形式

公式4的推导是最为重要的,其中\(ϵ_(𝑡−1)\)\(ϵ_𝑡\)都是独立的高斯噪声,根据高斯噪声的独立可加性和重参数化的技巧,最后可以合成公式4,然后继续迭代可以得到\(x_t\)\(x_0\)的关系,可以发现它的均值和方差和论文最后所推出来的高斯分布相吻合。

反向过程

img
如图所示是反向过程所提出的部分公式,第一个公式根据马尔可夫的性质可以很容易得出来。
第二个公式可以看出来是一个带参数得高斯分布
img
推导过程如上图所示,第一步主要使用了贝叶斯公式完成近似后验概率分布的推导,第二步为了简化引入了x0方便计算

可以看到第二步中的三个变量都是已知的,都是下面的三个已知分布,代入后可以得到论文中所得到的公式

最后可以得到\(\tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \epsilon_t \right)\)
这就是我们需要去近似的参数,其中\(x_t\)是由\(x_0\)反代换出来的。

训练和采样过程

img
我们可以看到在训练过程中,每一次采样一个标准高斯分布的epsilon并将它和x0做前向加噪,最终的结果再变成输入进行后向去噪,其中\(\nabla_{\theta} \left\| \epsilon - \epsilon_{\theta} \left( \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, t \right) \right\|^2\)是需要去优化的参数

在采样过程中,从\(x_t\)\(x_{t-1}\)进行反向的去噪,其中的引入的z是为了引入随机化,使得最后生成的结果具有多样性。

\(\mathbf{X}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{X}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_{\theta}(\mathbf{X}_t, t) \right) + \sigma_t \mathbf{Z}\)仔细观察公式,可以发现前半部分就是之前所推导出来的均值公式。

结果和分析

img
img
如图所示是该实验的实验结果,\(L_{simple}\)是最后所推出的损失函数,主要使用了变分推断下界,以及KL散度等,由于过于复杂,所以这里不再进行阐述

最后一行是实验的结果,其中IS分数越大越好,可以看到模型的IS分数仅次于倒数第三个模型,FID分数越低越好,模型的FID取得了显著的成果。

IS分数的解释

IS主要通过两个点衡量生成图片的质量

  • 生成图像的单一标签分布清晰,说明图像质量高
  • 生成图像在不同类别上分布多样,生成结果具有多样性。

Inception Score 的定义为:
\(IS(G) = \exp \left( \mathbb{E}_{x \sim p_g} \left[ D_{KL} ( p(y|x) \| p(y) ) \right] \right)\)

x~pg:生成图像样本来自生成模型的分布 。

p(y|x):通过预训练分类器(如 Inception 网络)对生成图像的类别预测概率分布。

p(y):预测类别的边缘分布。类别可以是猫,狗,猪等诸如此类的动物。

\(D_{KL}\):KL 散度,衡量两个分布的差异。

从公式出发有
\(\ln(IS(G)) = \mathbb{E}_{x \sim p_g} D_{KL}(p(y|x) \| p(y))\),KL散度公式为\(D_{KL}(p(y|x) \| p(y)) = \sum_y p(y|x) \ln \frac{p(y|x)}{p(y)}\)

代入后有\(\ln(IS(G)) = \sum_x p(x) \sum_y p(y|x) \ln \frac{p(y|x)}{p(y)}\),进行联合分布的替换,有\(\ln(IS(G)) = \sum_x \sum_y p(x, y) \ln \frac{p(y|x)}{p(y)}\)

互信息的公式为
\(I(y; x) = \sum_x \sum_y p(x, y) \ln \frac{p(x, y)}{p(x)p(y)}\)
\(I(y; x) = \sum_x \sum_y p(x, y) \ln \frac{p(y|x)}{p(y)}\)

所以有
\(\ln(IS(G)) = I(y; x)\)

\(I(y; x) = H(y) - H(y|x)\)

H(y)越高,则表明整体分布p(Y)多样,会更加接近均匀分布
H(y|x)越小,则表明生成图像x具有更高的置信度(分类器的确定性更高)。

IS分数的计算如下:

  • 从生成图像G中进行采样大量图像
  • 使用Inception预训练网络对生成图像进行分类,得到每个图像的类别概率分布p(y|x)
  • 计算IS分数

FID分数的解释

主要是计算生成图像分布和真实图像分布在特征空间中的距离
公式\(\text{FID} = \| \mu_r - \mu_g \|_2^2 + \text{Tr}(\Sigma_r + \Sigma_g - 2 (\Sigma_r \Sigma_g)^{\frac{1}{2}})\)

\(\mu_r,\Sigma_r\):真实图像分布的均值和协方差矩阵。

\(\mu_g,\Sigma_g\):生成图像分布的均值和协方差矩阵。

\(\| \mu_r - \mu_g \|_2^2\):欧几里得距离的平方。

\(\text{Tr}\):矩阵的迹。

\((\Sigma_r \Sigma_g)^{\frac{1}{2}}\):协方差矩阵的乘积的平方根。

两个分布的均值和协方差越低,FID越低,生成图像质量越接近生成的图像

计算过程:

  • 使用预训练的Inception v3网络,将真实图像和生成图像输入到网络中
  • 提取某一层的特征向量(通常是倒数第二层),标记为高维特征表示
  • 拟合高斯分布,分别计算均值和协方差矩阵
  • 计算FID分数

插值

img
论文中还提到了插值的实验,首先我们先从源样本中采样出两张图片x0,x0',把两张图片进行前向加噪过程,变成xt,xt',可以进行进一步的平滑\(\overline{x_t} = (1 - \lambda) x_t + \lambda x_t'\),然后再进行后向去噪生成图像

观察上图,我们发现图像在生成的过程中在很多特征(如鼻子,眉毛,眼睛)等进行了平滑的变化,当\(\lambda\)等于1或0时,图片和原始的两张图像非常接近。

结论

  • DDPM的损失函数采用了变分推导,优化过程更加稳定
  • 采用了前向加噪和后向去噪的概率分布建模,具有严谨的概率意义。
  • DDPM的反向去噪过程需要大量的计算,生成速度慢,且计算成本和采样成本更高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853320.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 384 Solution

AtCoder Beginner Contest 384 (A-E) 题解A - aaaadaa (abc384 A) 题目大意 给个长度为n的字符串,以及两个字母a和b,要求把字符串中不是a的字符全部都变成b。 解题思路 一个循环判断一下就行了。 代码 #include<bits/stdc++.h> using namespace std; int main() {int n…

vs编译cpp时设置排除项

cpp编译排除 一个c++文件不需要被编译但还保留在工程中(阅读),可使用ExcludedFromBuild,有两种方法实现:图形化操作 改vs的项目配置文件图形化操作 在vs的资源管理器选中文件 - 右键 - 属性 - 切到当前的编译配置项(debug/release),有个选项【从生成中排除】,选择为是…

纪念程云大侠

与程云兄的缘份,起始于Delphi大富翁论坛,因 “程云的一堆SQL”而结缘,在论坛发起的第二次(玉渊潭)和第三次(香山)大富翁聚会中逐渐相熟。自2002年5月3日那场坛友初聚起,加上中间各种小聚,至近年来的4年多共事时光,不经意间,二十余载岁月已悄然流逝,往昔匆匆,仿若弹…

css第三天案例练习

案例一:新闻详情 字体颜色:color 字体大小:font-size 段落开头空两行:font-indent:2em 水平居中:图片(出错点)/文字text-align:center 字体粗细:font-weight:400(取消加粗)案例二:css简介 超链接设置格式

DVR4 pg walkthrough Intermediate window

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A -sS 192.168.219.179 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 04:22 UTC Stats: 0:00:22 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 34.76% d…

计算机网络课程笔记

计算机网络课程 该笔记于 2024年12月15日15:14:02 编写 常用命令以及简写完整命令 简写形式 解释configure terminal conf t 进入全局配置模式enable en enableexit ex 退出当前模式hostname host 重启设备interface int 进入接口配置模式shutdown shut 禁用接口no shutdown no…

监测预警智能分析中心建设项目方案

随着科技的不断进步,地理信息与遥感技术在国家治理、环境保护、灾害预警等领域发挥着越来越重要的作用。监测预警智能分析中心的建设,旨在通过集成先进的遥感技术、地理信息系统(GIS)、大数据分析和人工智能(AI)技术,实现对环境变化、灾害风险的实时监测和智能预警。本文…

2024-2025-1 20241421《计算机基础与程序设计》第十二周学习总结

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计 这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十二周作业 这个作业的目标 复习巩固前面所学的内容 作业正文 https://www.cnblogs.com/118qa/p/18608015 教材学习内容总结 一、文件的基本概念 文件是存储在外…

Three.js案例-360全景房看

在 360 看房功能中,我们需要在浏览器中创建一个类似虚拟现实的场景,使得用户能够查看环境的每一个角落。这一功能的实现本质上是利用 球体映射技术,即通过将全景图作为纹理贴图映射到一个反向的球体上,用户可以通过旋转视角来“环顾四周”。 我们先来看一下效果 ![file](Ma…

性能测试-内存溢出时的分析工具使用

下载内存分析工具地址:https://eclipse.dev/mat/downloads.phphp)下载对应的版本,我这里使用的windows的就下载windows版本的包,下载完成后解压配置启动时的jdk的依赖,目前1.15.0版本的需要jdk17以上,我们在启动时需要手工修改MemoryAnalyzer.ini文件,添加指定的jdk的本地…

性能测试-jvm监控工具jivsualvm

官方网站下载:https://visualvm.github.io/download.html下载zip文件解压到本地后,需要修改启动对应的系统环境的jdk的地址,visualvm_2110\etc 的目录下的 visualvm.conf 文件,配置当前环境的jdkhome后保存visualvm_2110\bin目录下,点击 visualvm.exe 启动程序安装GC插件 …

鲜花:16。

又老了一岁了。 一下子就沧桑了许多。“低沉-狂喜-低沉-狂喜”的循环往复,终究是走向疯癫。 接连三次的挫败,几乎毁了我的一切。 终究是自己不够成熟导致的。 生日,很想哭。 失败,会更多。