何恺明新作 l-DAE:解构扩散模型
- 提出背景
- 扩散模型步骤
- 如何在不影响数据表征能力的同时简化模型?
- 如何进一步推动模型向经典DAE靠拢?
- 如何去除对生成任务设计的DDM中不适用于自监督学习的部分?
- 如何改进DDM以专注于清晰图像表示的学习?
提出背景
论文:https://arxiv.org/pdf/2401.14404.pdf
我们有一堆带噪声的照片,我们的任务是清理这些照片上的噪声,让它们看起来更清晰。
去噪扩散模型(DDM)就像是一个清洁工,它不仅能把照片清理得非常干净,还能通过这个清洁过程学会识别照片中的内容。
但是,这个清洁工原本是被设计来做清洁工作的,人们开始好奇它是怎么学会识别照片内容的。
是因为它清理照片的方式特别(去噪过程),还是因为它在清理时用的一些特殊工具(扩散过程)?
我们的研究就是要探究这个问题。
我们尝试了各种方法,最后发现,关键其实在于这个清洁工如何看待照片中的每一小块内容,把它们转换成更简单的形式来理解。
这有点像是给它一副眼镜,让它能更好地看清楚照片的细节。
通过这个过程,我们设计出了一种简单的方法,让清洁工不仅能清理照片,还能更好地理解照片内容。
我们的方法虽然不是最顶尖的,但比之前的方法有了很大的进步,也让我们看到了未来有更多可能性去改进这个过程。
图是一种被称为“潜在去噪自编码器”(L-DAE)的技术。它是一种图像处理方法,用于从带有噪声的图片中恢复出清晰的图片。
- 原始图像:左下角是一个没有噪声的原始图像,这是一张蝴蝶停在黄色花朵上的照片。
- 噪声添加:通过一种技术叫做“片段式主成分分析”(patch-wise PCA),原始图像被转化到一个叫做“潜在空间”的地方,在这个过程中添加了噪声。
这就是中下角的图像,你可以看到图像变得模糊和杂乱,就像被随机的色块覆盖了一样。 - 自编码器:在噪声图像的基础上,一个自编码器开始工作,包括一个编码器和一个解码器。
编码器的作用是将噪声图像转换为一个更简洁的内部表示,而解码器则尝试从这个表示中重建原始图像。 - 去噪图像:最终,自编码器输出了一个去除噪声的图像,这是右下角的图像。
尽管噪声被去除,图像中的细节和蝴蝶的特征都得以保留。
这个技术的目标是模仿和简化更复杂的去噪扩散模型(DDM),同时尝试保持与经典去噪自编码器(DAE)相似的学习性能。
这张图上方的流程图解释了整个过程:从原始图像开始,通过PCA添加噪声,然后通过自编码器进行编码和解码,最终得到去噪图像。
这种方法是自监督学习的一种形式,这意味着它可以通过观察大量的例子自己学习去噪,而不需要人为指定噪声和去噪之间的关系。
这幅图是两种不同的机器学习模型,用于处理图像的去噪任务:
- 经典的去噪自编码器(DAE):这个模型包括三个部分:
- 噪声:在输入图像上添加噪声。
- 编码器:编码器接收带噪声的图像,将其编码到某种内部表示。
- 解码器:解码器尝试从内部表示中恢复去噪后的图像。
- 现代去噪扩散模型(DDM):这个模型是在潜在空间上操作的去噪模型,它包括四个部分:
- tokenizer:这个组件将原始图像转换成潜在的表示形式。
- 噪声:就像经典DAE一样,它在潜在表示上添加噪声。
- 编码器:编码器学习如何处理带噪声的潜在表示。
- 解码器:解码器从编码器输出的表示中恢复出去噪后的潜在表示,然后可以转换回去噪后的图像。
图中的(a)部分展示的是传统方法,直接在图像空间上添加和预测噪声
而(b)部分展示的是现代方法,如LDM(潜在扩散模型)和DIT(扩散变换器),它们在潜在空间上添加和预测噪声,而不是直接在图像空间上操作。
这种现代方法通常能够更有效地处理高维数据,如图像,因为潜在空间的维度通常远小于原始图像空间的维度,这可以提高处理速度并提升去噪效果。
扩散模型步骤
扩散模型是一类深度生成模型,它们通过模拟数据的扩散过程(即逐渐引入噪声到数据中)来学习数据的分布。
在去噪扩散模型(Denoising Diffusion Models, DDM)中,这一过程被逆转用来生成数据:模型学习如何逐步从噪声中恢复出干净的数据。
下面是解构现代去噪扩散模型的步骤和方法:
- Tokenizer(向量化):
- 这一步是将高维的图像数据映射到一个低维的潜在空间(latent space)。
潜在空间中的向量可以捕捉到图像的重要特征,但是维度更低,这使得处理起来更高效。
- 添加噪声:
- 在潜在空间中,这些低维的表示(latent representations)会被逐渐添加噪声,这个过程称为扩散过程。
添加噪声是一个逐步的过程,在每一步中都会引入一些噪声,直到数据完全变成噪声。
- 训练去噪模型:
- 训练一个去噪模型来预测每一步扩散过程中添加的噪声。
这个模型的目标是学习如何从带噪声的潜在表示中恢复出原始的潜在表示。
- 采样(生成)过程:
- 通过逆向运行扩散过程来生成新的数据。
- 从纯噪声开始,模型逐步减少噪声,逐步恢复出清晰的数据。
解构这个模型的关键点在于理解如何在潜在空间上进行扩散和去噪过程,而不是直接在原始的数据空间上进行。
如何在不影响数据表征能力的同时简化模型?
在扩散模型中,到底哪个步骤最重要?
实验发现,让 DAE 得到好表征的是低维隐空间,而不是Tokenizer(向量化)。
- 说明复杂的tokenizer可能不是学习好的数据表示所必需的
- 简化tokenizer相当于使用更简单的厨具来达到相同的烹饪效果
如何在不影响数据表征能力的同时简化模型?
- 实验发现,可通过替换复杂的VQGAN tokenizer为更简单的PCA tokenizer
不同的图像处理方法:
- TA们被用于将图像分解成较小的片段,进而进行深入的特征提取。
- Patch-wise VAE 分词器: 这是一种处理图像的方法,使用了一种称为自编码器的技术,但去掉了一些复杂的数学限制,让它变得更简单。
- Patch-wise AE 分词器: 这个方法更简单,只是在图像的小块上应用基本的编码和解码过程。
- Patch-wise PCA 分词器: 这是最基本的方法,用一种称为主成分分析的技术来处理图像的小块。PCA 是一种不需要复杂训练就能找到图像主要特征的方法。
即使是最基本的PCA方法也表现出色,甚至简单的图像块处理方法有时候比复杂的方法效果更好。
所以,完全可以用简单的代替复杂的。
- 把复杂的VQGAN tokenizer 换为 更简单的PCA tokenizer。
如何进一步推动模型向经典DAE靠拢?
直接在图像空间操作有助于理解和提高模型的直观性和可解释性。
使用逆PCA直接在图像空间操作,而非仅在隐空间。
如何去除对生成任务设计的DDM中不适用于自监督学习的部分?
因为类别条件化处理会限制模型学习更普遍的数据表示。
移除DDM的类别条件化处理。
如何改进DDM以专注于清晰图像表示的学习?
原始噪声调度太侧重于噪声图像,不利于学习清晰图像表示。
替换噪声调度,让模型更多地关注清晰的图像。
如果将这个过程比作学习做菜的过程,那么:
- 去除类别条件化处理就像是摒弃菜谱中不必要的复杂步骤,专注于基本的烹饪技巧。
- 简化tokenizer相当于使用更简单的厨具来达到相同的烹饪效果。
- 改进噪声调度类似于调整烤箱温度,更加关注食物烹饪的质量而非速度。
- 直接在图像空间操作就像是直接在炉子上(图像上)调整火候,而不是依赖定时器(隐空间)的间接指示。