Deconstructing Denoising Diffusion Models for Self-Supervised Learning解读(超详细)

论文题目:Deconstructing Denoising Diffusion Models for Self-Supervised Learning

原文链接:https://arxiv.org/html/2401.14404v1
本文是对何凯明老师的新作进行的详细解读,其中穿插了一些思考,将从以下四个方面对这篇工作进行一个详细的介绍:
在这里插入图片描述

对早期工作的概括

在这里插入图片描述

AE

为了更加清楚全面的介绍扩散模型,我们首先要从自编码器谈起,自编码器由一个编码器和一个解码器组成,通过编码器对图像进行编码,然后通过解码器再解码成原来的图像,优化目标也非常简单:编码再解码后的重建图像应该和原图像尽可能一致,即二者的均方误差应该尽可能小。我们不需要给图片打上标签,整个训练过程是自监督的。所以我们说,整套模型是一个自编码器(Autoencoder,AE)

VAE

但是,AE生成效果并不好,会有过拟合现象,这导致AE的解码器只认得训练集里的图片经编码器解码出来的压缩数据,而不认得随机生成的压缩数据,进而也无法达到图像生成的要求。于是尝试着对AE进行改进,变分自编码器(Variational Autoencoder, VAE) 就是其中的代表。第一点改进是VAE让编码器的输出不再是一个确定的数据,而是一个数据的分布。这样的话,VAE就不能死记硬背了,必须要找出数据中的规律。VAE的第二项改动是多添加一个学习目标,让编码器的输出和标准正态分布尽可能相似,相当于对学习到的分布增加了一个约束,让编码器学习到的分布更加接近于标准正态分布。这样,VAE的误差函数由两部分组成:原图像和重建图像的重建误差、编码器输出和标准正态分布之间的误差。

VQVAE

但是问题又来了,VAE生成的图像还是比较模糊。也诞生了许多对VAE进行改进的模型,其中一条改进路径是VQVAE,由于VAE的编码器得到的分布不是很好学,而是一个codebook代替了,codebook可以理解为一个聚类的中心(通常为8192),这样就把特征量化了,而不是从分布里采样的一个随机的东西,优化起来就相对容易。

VQGAN

VQGAN是一个改进版的VQVAE,它将感知误差和GAN引入了图像压缩模型,把压缩图像生成模型替换成了更强大的Transformer。凭借这些改动,VQGAN方法能够生成高质量的高清图片。并且,通过把额外的约束条件(如语义分割图像、文字)输入进Transformer,VQGAN方法能够实现带约束的图像生成。(回过头来看看,之前的研究者们一直在可控和多样性的图像生成之间做权衡,一直没能找到一种可控生成而又保证多样性的图像生成方法)。

DDPM

另一条路径就是我们今天要讲的主角扩散模型 Diffusion Model,VAE之所以效果不好,很可能是因为它的约束太少了。VAE的编码和解码都是用神经网络表示的。神经网络是一个黑盒,我们不好对神经网络的中间步骤施加约束,只好在编码器的输出(某个正态分布)和解码器的输出(重建图像)上施加约束。**能不能让VAE的编码和解码过程更可控一点呢?**于是DDPM就诞生了,相当于对神经网络进行细致的分解,拆分成了1000步加噪和去噪的过程,相比只有两个约束条件的VAE,DDPM增加了更多的约束条件

扩散模型的发展

在这里插入图片描述

DDPM

至此,向大家简单的介绍了一下扩散模型是如何诞生的,当然介绍的只是最原始的扩散模型DDPM,下面我同样按照这种时间线的方式介绍一下扩散模型是如何发展的。同时由于时间和空间的原因,我只介绍几个具有代表性的工作。最开始的扩散模型是刚才我们提到的发表在NeurIPS 2020的DDPM,它需要一千步的加噪和去噪的过程,加噪的过程加的是噪声,去噪的过程预测的也是噪声。

DDIM

而后发表在ICLR2021上的DDIM是一种更有效的迭代隐式概率模型,但相比DDPM,将diffusion model 提速了50倍!

Diffusion Models Beat GANs on Image Synthesis

接下来就是NeurIPS 2021的这篇Diffusion Models Beat GANs on Image Synthesis ,这篇文章看题目就知道是第一次扩散模型打败GAN的图像生成方法,其主要思想是把模型加大加宽,变得又大又复杂,同时提出一种根据步数做归一化的方式,最重要的是在这篇工作中提出了一种classifier guidance的方法去引导模型的训练,classifier guidance相当于增加了一个分类的分支,利用分类的梯度,去引导扩散模型的训练。

Stable Diffusion

随后呢就是发表在cvpr2022的大名鼎鼎的Stable Diffusion,它提出了一种叫做隐扩散模型(latent diffusion model, LDM)的图像生成模型。这篇工作相当于集成了前面一些列模型的优点,它首先用编码器把图像压缩,再用DDPM生成压缩图像,同时保留了VQGAN的一些基本的结构。这样在保证图像生成质量的同时,降低了模型的复杂度。

DiT & sora

而后来发表在CVPR2023上的DiT在Stable Diffusion的基础上进行改进,是第一个完全基于transformer架构的扩散模型,而不再使用U-net架构,同时也是现在大火的sora模型的核心技术。

Motivation

在这里插入图片描述

本文的Motivation很简单,目的就是探索扩散模型的表征能力,为了实现这一目标,本文的核心思想是对扩散模型进行解构,通过大量的娓娓道来的实验,将他一步一步的朝着经典的去噪自编码器的方向前进。而这个经典的去噪自编码器的是2008年的一篇技术报告,就是为了探索去噪自编码器的表征能力。

方法和实验

在这里插入图片描述

DDM -> DAE

在这里插入图片描述

下面是本文的方法和实验部分,具体的重构过程分为三个阶段,第一阶段是让扩散模型朝着自监督学习的方向迈进,第二阶段是重构了扩散模型的Tokenizer,尝试了不同的映射结构,而第三呢就是通过一系列的模型修改,让现在的扩散模型更像经典的去噪自编码器。
同时本文的Baseline选取的是应用比较广泛的DiT结构,因为DiT是基于Transformer的扩散模型结构,可以与其他的基于自监督的Transformer模型进行公平的比较,比如MOCO和MAE,同时DiT是干净的encoder和decoder的结构,而U-Net存在encoder和decoder之间的skip connections,不方便对网络进行修改。同时DiT的训练速度比基于U-Net的扩散模型方法更快,泛化性更好。

Reorienting DDM for Self-supervised Learning

在这里插入图片描述
第一阶段是让扩散模型朝着自监督学习的目标迈进,本文在这里做了三点改动,第一由于类别标签的使用违背了自监督学习的规则,所以去掉了类别条件
第二是由于DiT的基本结构是延续VQGAN设计的,他的感知loss是有监督的,所以去掉了感知loss,同时为了简化模型,也去掉了对抗loss
第三点由于本文的目的是探究扩散模型的表征能力,作者认为不需要对图像加过多的噪声,于是简化了加噪的策略。可以从Table1的结果看出,随着对扩散模型的改进,模型的表征能力得到了提升,而模型的生成能力降低的比较明显。同时也是得出了一个非常重要的结论:扩散模型的表征能力和生成能力是没有一个必要性的关系的。也就是说模型的表征能力强,并不意味着模型的生成能力强,反之亦然。

Deconstructing the Tokenizer

在这里插入图片描述

第二阶段是对Tokenizer的重构,作者在这里尝试了不同的Tokenizer,其中包括基于卷积的VAE,基于Patch的只用一个线性层的VAE,基于patch的只用一个线性层的AE,以及基于patch的PCA的方式去实现Tokenizer。最后也是尝试了像素级别的Tokenizer,只是对patch内的所有像素进行一个恒等映射之后flatten一个向量。同时作者也是发现了两个比较有趣的结论: 第一是Tokenizer映射到的潜在维度对扩散模型的表征能力是至关重要的,而且他们遵循一个基本的变化趋势。第二是基于像素的Tokenizer的方式不如基于patch的效果好。

Toward Classical Denoising Autoencoders

在这里插入图片描述

第三个阶段是朝着经典的去噪自编码器的方向迈进,同样也是在扩散模型的基础上进行了一系列的操作,包括预测原始的数据而不是噪声,去除对input的 scaling操作等等,都会对扩散模型的表达能力产生一定的影响,其中比较有趣的一点是作者出于好奇,彻底改变了加噪策略,只加一步的single-level噪声,与之前的multi-level noise相比只降低了3%的准确率,由此证明了扩散模型的表征能力主要是由去噪的过程决定的,并不是加噪的过程。作者分析multi-level noise就相当于一个数据增强,并不是扩散模型表征能力的关键因素。

分析和比较

下面是本文的一些分析和比较。
在这里插入图片描述

去噪效果可视化

在这里插入图片描述
首先是对去噪的定性结果的一个可视化效果图,可以发现本文只用简单的PCA作为Tokenizer,同时去掉了大量的冗余的组件之后,依然能达到比较好的一个去噪的效果。

实验对比

在这里插入图片描述

接下来是与其他的自监督模型的一个定量的比较,第一是作者发现去噪自编码器与MAE一样,对数据增强并不敏感,这一点与基于对比学习的自监督模型有很大的区别。
第二是对模型尺度的一个消融实验,展现出了与MAE类似的结果,都是模型越大性能越好
第三是发现基于自编码器的自监督模型不如基于对比学习的自监督模型的效果好,尤其是在模型比较小的时候差距最为明显。
第四是对预训练之后的模型进行微调,展现了DAE的强大的表征能力

我的一点思考和启发

在这里插入图片描述

问题1:MAE和DAE之间有什么区别?

在这里插入图片描述
他们之间有相同点也有不同点相同点都是采用自监督的方式去学习图像的表征,都采用patch的方式对图像进行处理,都是将遮挡或者加噪的图像恢复成原始的图像,同时展现出了相似的性能。区别在于一个是遮挡整个的patch,一个是在每个patch上加噪。(比较有意思的是,在Transformer如火如荼的时候有了MAE,在扩散模型如火如荼的时候有了DAE)同时在这里推荐何恺明老师加入MiT的第一堂课,他的第一堂课的主题刚好就叫做,学习深度表征。

问题2:这篇文章的idea是从哪里来的?

在这里插入图片描述
当我初次看到这篇工作的时候,实际上我觉得本文所做的工作跟新加坡国立大学的颜水成老师发表在CVPE2022的那篇 metaformer 的基本思想是非常类似的。本文是对扩散模型的解构,而metaformer是对transformer的解构,证明了一些组件是至关重要的同时也证明了一些组件是冗余的。他们本质上都是对模型各个组件的娓娓道来的消融实验,两篇文章的写作风格非常值得借鉴。

问题3:扩散模型的表征能力和生成能力之间的关系是什么?

在这里插入图片描述

最后一个问题是比较开放性的问题,扩散模型的表征能力和生成能力之间的关系是什么?
通过本文的大量实现发现,似乎模型的表征能力和生成能力并没有直接关系,甚至二者之间是相互排斥的,这有点不符合我们通常的认知。也就是说,现在大火的一类的扩散模型(比如sora),可能并不理解图像的语义,仍然能生成逼真的、多样性的图像。那么是不是说,机器生成图像的方式与人类所理解的生成图像的方式或许是相差甚远的?所以,**sora真的理解了现实世界吗?**我们该如何解释扩散模型呢?扩散模型的滥用会不会存在潜在的风险?是值得我们进一步深究的。
(最后分享一下本文的作图风格,本文的作图风格与谢赛宁大神的ConvNet中画图风格是一致的,我觉得很漂亮).

参考资料:

https://mp.weixin.qq.com/s/AGsMelnrHxI1cv9lmabxEg 对扩散模型的详细介绍
https://www.spaces.ac.cn/archives/6760 VQ-VAE的简明介绍:量子化自编码器
https://mp.weixin.qq.com/s?__biz=MzkyMTM0Mjc3NA==&mid=2247485628&idx=1&sn=f0d5b9e6aad411b5a8f9979936aa1327&chksm=c1844ee5f6f3c7f3c8f69a080bb35d9c37a695dbb057b7418a9325844ed91491a44ea2fb568a&scene=21#wechat_redirect 轻松理解 VQ-VAE:首个提出 codebook 机制的生成模型
https://mp.weixin.qq.com/s/5nYdRg7G-mKGXfNxV5_WZQ 对VQGAN的介绍,代码讲解非常好 。
https://mp.weixin.qq.com/s/3fqLktVA2MIsjB7a0eM0sg 一文弄懂 Diffusion Model
https://spaces.ac.cn/archives/9119 生成扩散模型漫谈,是一个系列。(苏神的文章)
https://mp.weixin.qq.com/s/AGsMelnrHxI1cv9lmabxEg 对Stable Diffusion 的解读,包络原理和代码,是一个系列的文章。
https://zhuanlan.zhihu.com/p/639540034 对DDIM的原理性分析。
https://zhuanlan.zhihu.com/p/641013157 对DiT的介绍。
https://blog.csdn.net/u012193416/article/details/126108145 对DALLE的介绍。
https://mp.weixin.qq.com/s/ScHjSd_JtcZKD2cJxWuavg 对sora的介绍。

参考文献:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3723. 字符串查询:做题笔记

目录 思路 代码 注意点 3723. 字符串查询 思路 这道题感觉和常见的前缀和问题不太一样,前缀和的另一种应用:可以统计次数。 这道题我们想判断一个单词的其中一段子序列A是否可以通过重新排列得到另一段子序列B。 我看到这道题的时候想着可能要判…

Gitlab 实现仓库完全迁移,包括所有提交记录、分支、标签

1 方案一&#xff1a;命令 cd <项目目录> git fetch --all git fetch --tags git remote rename origin old-origin #可以不保留 git remote add origin http://***(项目的新仓库地址) #git remote set-url origin <项目的新仓库地址> git push origin --all git…

Qt 多线程QThread的四种形式

重点&#xff1a; 1.互斥量&#xff1a;QMutex配套使用&#xff0c;lock(),unlock(),如果一个线程准备读取另一个线程数据时候采用tryLock()去锁定互斥量&#xff0c;保证数据完整性。 QMutexLocker简化版的QMutex,在范围区域内使用。 QMutex mutex QMutexLocker locker(&…

达梦数据库新手上路排坑

数据库安装 这个没啥说的&#xff0c;按照官网教程操作&#xff0c;我使用的是docker进行安装 下载文件docker文件 官方下载地址- load -i dm8****.tar (注意修改为当前下载的文件)达梦官方文档注意修改为当前版本 docker run -d -p 5236:5236 --name dm8 --privilegedtrue -…

程序员口才提升技巧:从技术到沟通的进阶之路

程序员口才提升技巧&#xff1a;从技术到沟通的进阶之路 在数字化时代&#xff0c;程序员作为推动技术发展的关键角色&#xff0c;其专业能力的重要性不言而喻。然而&#xff0c;除了编程技能外&#xff0c;良好的口才同样是程序员职业生涯中不可或缺的一部分。本文将探讨程序…

学透Spring Boot — [二] Spring 和 Spring Boot的比较

欢迎关注我们的专栏 学透 Spring Boot 一、创建一个简单Web应用 本篇文章&#xff0c;我们将会比较 Spring 框架和 Spring Boot 的区别。 什么是 Spring? 也许你在项目中已经可以很熟练的使用 Spring 了&#xff0c;但是当被问到这个问题时&#xff0c;会不会犹豫一下&#…

2024-3-28 市场情绪强修复

这一轮退潮负反馈都修复了&#xff0c; 艾艾精工 博信股份 安奈尔 永悦科技 大理药业 &#xff0c;高新发展 也补跌了&#xff0c;收尸队也干活了&#xff0c;情绪不修复不接力得最好写照。这轮周期 宁科生物 已经7板&#xff0c;已经追平了 博信股份7板&#xff0c;看明天溢…

永磁同步电机速度环滑膜控制(SMC)

文章目录 1、前言2、滑膜控制基本原理2.1 滑膜控制的定义2.2 趋近率 3、滑膜控制器的设计与参数4、二阶滑膜速度控制器的设计5、二阶速度环滑膜控制仿真5.1 模型总览5.2 电机及系统参数5.3 滑膜控制模块5.4 控制效果对比 参考 写在前面&#xff1a;本人能力、时间、技术有限&am…

广场舞团系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文&#xff08;设计&#xff09;学生选题参考合集推荐收藏&#xff08;包含Springboot、jsp、ssmvue等技术项目合集&#xff09; 目录 1. 系…

明天线上见!DPU构建高性能云算力底座——DPU技术开放日最新议程公布!

算力&#xff0c;是数字经济时代的新质生产力。随着人工智能、智算中心建设等需求不断拓展&#xff0c;DPU在各行各业数据中心的应用逐步深入。异构算力代表DPU在新质生产力建设中&#xff0c;能否给出别开生面的答案&#xff0c;应战算力难题&#xff1f;DPU技术在不同行业中的…

详细解析记忆泊车的顶层技术原理

详细解析记忆泊车的顶层技术原理 附赠自动驾驶学习资料和量产经验&#xff1a;链接 相对于记忆行车而言&#xff0c;记忆泊车 MPA&#xff08;Memory Parking Assist&#xff09;可以看成是停车场区域内的一个自动驾驶功能&#xff0c;可帮助用户按记忆的路线自动巡航并泊入车…

Vue2 与 Vue3的面试题

1.Promise有几种状态 pending(进行中) fulfilled(已成功) rejected(已失败) data(){return{}},create(){const result this.ganaretor()result.next.value.then((res)>{console.log(res);}) // 解决一直.then()方法问题},methods:{* ganaretor(){yield axios.get(httpts)…

vulnhub靶场之driftingblues-3

一.环境搭建 1.靶场描述 get flags difficulty: easy about vm: tested and exported from virtualbox. dhcp and nested vtx/amdv enabled. you can contact me by email for troubleshooting or questions. This works better with VirtualBox rather than VMware 2.靶场…

【前端面试3+1】01闭包、跨域、路由模式

一、对闭包的理解 定义&#xff1a; 闭包是指在一个函数内部定义的函数&#xff0c;并且该内部函数可以访问外部函数的变量。闭包使得函数内部的变量在函数执行完后仍然可以被访问和操作。 特点&#xff1a; 闭包可以访问外部函数的变量&#xff0c;即使外部函数已经执行完毕。…

天锐绿盾|公司如何防止员工拷贝电脑资料?

#天锐绿盾# 天锐绿盾是一款针对企业数据安全设计的终端安全管理软件&#xff0c;用来防止员工拷贝电脑资料的具体措施包括&#xff1a; www.drhchina.com PC地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 1. **文件透明加密…

10.对象的使用,遍历

什么是对象 其实就是map那种键值对的存储形式&#xff0c;别的语言也有&#xff0c;老规矩&#xff0c;和别的语言差不多的就在给pink老师打一波广告。 常见的对象操作&#xff0c;其实没啥直接上代码吧 <!DOCTYPE html> <html> <head><meta charset&…

网络套接字补充——UDP网络编程

五、UDP网络编程 ​ 1.对于服务器使用智能指针维护生命周期&#xff1b;2.创建UDP套接字&#xff1b;3.绑定端口号&#xff0c;包括设置服务器端口号和IP地址&#xff0c;端口号一般是2字节使用uint16_t&#xff0c;而IP地址用户习惯使用点分十进制格式所以传入的是string类型…

【常见面试题】JS 发布者、订阅者模式

面试中经常出现问到如何实现JS 发布者、订阅者模式。下面是ES5实现发布订阅模式。 1、直接上代码。 function EventEmitter() {this.events {}; }; // 订阅者 EventEmitter.prototype.on function(ename, callback) {if (!this.events[ename]) {// 初始化创建订阅&#xff…

C++ 控制语句(二)

一 break continue和goto语句 1 break语句 在switch语句中&#xff0c;分隔case子句&#xff0c;跳出switch语句。 在循环语句中可以立即终止循环语句的执行。 2 continue语句 功能:在一次循环过程中,跳过continue语句以下的语句,直 接进入下一次循环操作。 3 goto语句 …

软考98-上午题-【信息安全】-防火墙

一、考试概述 该内容与计算机网络关联。 分值&#xff1a;2分 二、防火墙 防火墙 (Firewall) 是建立在内外网络边界上的过滤封锁机制&#xff0c;它认为内部网络是安全和可信赖的&#xff0c;而外部网络是不安全和不可信赖的。 防火墙的作用是防止不希望的、未经授权地进出…