关于扩散模型的思考
扩散模型的过程
扩散模型的核心思想就是先加噪,再去噪。在这个过程中,让模型学习从被破坏的信息结构中找回原始信息,从而对图片内容进行重建。
扩散模型的架构
最早是使用 UNet, 后来加上了 VAE 来提供一个潜空间。但是这里之所以要添加 VAE,是因为潜空间计算量比较小。
TODO: 为什么要添加潜空间?
后来,DiT 把其中的 UNet 换成了 ViT 模型,提升了模型的能力。
TODO: 为什么 DiT 效果比单纯的 UNet 要更好?
UNet 既然已经被去掉了,人们看 VAE 就越看越不爽了。
RAE(Representative AutoEncoder) 打响了替换 VAE 的第一枪。它们通过实验证明了,只需要提高宽度,就可以解决 ViT 取代 VAE 效果不好的问题。
TODO: RAE 介绍
条件扩散模型
条件扩散模型接收一个条件,然后指引纯噪声降噪,最终生成图像。
这里我有一些疑问:为什么要用纯噪声呢?
扩散模型的输出结果
v-pred, x-pred, $\epsilon$-pred.
最开始的扩散模型输出的是 $\epsion$,也就是噪声,但是后来,人们提出了流匹配(Flow matching)。
预测噪声,预测的是变化量 $\delta x$,预测流,预测的是速度 v。
JiT 中回归了本质:直接预测图像本身,也就是 x。
TODO: 为什么一开始大家不直接预测 x 呢?
扩散模型的损失函数
v-loss, x-loss, $\epsilon$-loss.
根据 JiT 的研究,最好的组合是 v-loss 配 x-pred.
扩散、自注意力、自回归
直觉上来说,我觉得人的思维过程更接近于扩散过程。从一个想法出发,得到一个粗略的思路,然后再慢慢打磨这个思路。
但是人在输出自己思维时,则更接近于一个自回归过程,需要串行地输出。
这两个过程都会使用到注意力。