diffusion model最近在图像生成领域大红大紫,如何看待它的风头开始超过GAN?

链接:https://www.zhihu.com/question/536012286

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

作者:知乎用户 https://www.zhihu.com/question/536012286/answer/2516244624

首先说说我的背景。我从20年diffusion model刚出来就开始(花部分精力)做这个问题,到目前已经有了3篇相关paper (DiffWave, FastDPM, PDR), 之后也会将其作为我的主要方向之一。我算是这一领域比较早期的研究者,不过不太做methodology, 主要做应用,DiffWave 是语音领域 TTS 的应用, PDR是3d 领域点云补全的应用,FastDPM则是关于快速采样的算法。

我首先简短给出我所理解的diffusion model 和 GAN 的比较:GAN 能更灵活处理不同任务,应用层面部署比较容易,需要的资源小,不过学术上竞争激烈,有时生成的样本质量比较一般。Diffusion model 相对不太灵活,缺少良好的 latent space 性质,资源消耗极大,但生成效率略高于auto-regressive model, 主要优点质量好,学术上容易出论文。

接下来我们从几个方面比较这两个模型。

1 任务的灵活性

GAN有一个良好的latent space, 可以寻找meaningful vector (如DCGAN) 从而实现 attribute generation, 比如给人带上墨镜,甚至能像cycleGAN那样做两个domain之间的转化,而diffusion没有meaningful latent space, 因为reverse process每一步都加很多噪音,以至于同样的latent 会生成完全不同的东西,目前我认为有可能突破的是研究DDIM的fixed latent space, 但好像没有什么相关文章。

GAN能很容易处理离散数据,比如seqGAN. 但是目前diffusion model很难处理离散数据,这是因为连续模型用的Gaussian noise而离散模型只能用binomial noise, 效果差了很多。Max Welling 组写了离散的diffusion model但是效果仅限于character level generation. 当然,Flow based model 也都只有这个水平。因此,diffusion 目前好用的都是continuous domain, 如 image, audio, point cloud 目前也有人在做video. 至于离散的 language 甚至其它的数据结构比如graph, 3d mesh 都比较难做。

很多实际的 GAN 模型,在超分辨率这种广义上的 regression 任务中,都不是原始的 GAN 而是 regression model + GAN loss. 可以将generator理解为regressor, 只不过 loss 在 distance loss的基础上加了 adversarial loss. 这就使得几乎所有的regression (比如auto encoder ) 能做的任务 GAN (以及VAE) 都能做。但是 diffusion model做这一类任务的形式完全不同。因为input space = Gaussian 不能改,想做超分辨率这种 regression 问题,只能用conditional generation 的方式,额外在网络中加 conditional info. 但是我们知道,conditional info 加进去的效率很低,我们连step embedding 都要在每一层加,那更复杂的conditional info 也需要在每一层加,比如我在DiffWave 中 Mel spectrogram要加30遍,在PDR中incomplete 3d point cloud不仅每一层要加,还要extract global feature加到每一层。因此 diffusion model 做这一类任务效果会差一些。当然,现在有文章通过在input时double一下channel来做,一半输入latent另一半输入input data.

2 生成效果

Diffusion model 在它能做的任务上效果好于 GAN. 当然,效果不好于 GAN 的也发不出paper, 所以这句话堪比废话。我们可以说,目前 diffusion model 在 image, audio 等主流领域中的更接近于纯生成模型 (unconditional generation, text to image, text to speech) 而非regression模型的问题上,上限高于 GAN. 这有多方面的原因。

Diffusion model 模型更大,一方面其使用大模型如 UNet, wavenet, PointNet 的时候训练稳定,所以可以上大模型。至于为什么比 GAN和VAE稳定,这可以写很多,简单来说 GAN 和 VAE 都要训练两个网络,比较难平衡,因此有mode collapse 和 posterior collapse. 至于flow based model 因为是likelihood模型,容易被noisy training data 影响,且其invertible architecture 比较受限制。相比之下,diffusion model只有一个网络,且用ELBO 训练,因此比较容易捕捉到数据的major variation. 另一方面,我们在模型加了大量的step/conditional embedding 进一步增大了模型,并且使得对于不同step 的模型不完全一样,类似于share weight 的多个模型,而每一个模型只需要去除一点点噪音,因此更容易生成。

最近的text to image等模型都使用了 classifier guidance或者non-classifier guidance,意思是在p(x|c) 的基础上增加 p(c|x) 的信息,进一步通过label info 强化生成的效果。GAN和 VAE都不能这么操作,因为其 generator 是固定的,所以人们都通过减少 latent variance 的方式来增加质量。至于为什么 diffusion model 能加入这个信息,这是因为 score based EBM 中我们拟合likelihood gradient的时候可以加入classifier guidance, 而diffusion model又与 denoising score based model 具有类似的形式,因此能直接使用这一套方法。

3 计算资源

GAN 的话,学术界还能调一调,有4个卡的话搞个bigGAN实验还是没问题的,diffusion model就别想了,只有大公司玩得起。哪怕最小的cifar 得弄8个卡,训练两个星期。所以最近diffusion model的大模型文章都是 google/openai/nvidia搞出来的。至于学术界,热衷于without retraining的文章,比如 DDIM和我写的FastDPM 都是直接用pretrained model 研究如何快速sampling 的。

GAN 的生成只需要一个forward pass. Diffusion model 需要很多个(原始模型可能要上千个)forward pass, 因此特别慢。最近至少有10篇文章关于 fast sampling 的算法,目前最少可以加速到4~6个 forward pass. 这样效率就比较高,但还是明显慢于 GAN.

4 潜力

不同模型潜力都很大。其实不同的模型本身就擅长不同领域不同任务,没有必要一定说一个好于另一个。比如说,speech synthesis 天生更适合用auto regressive, data compression 天生适合用 (variational) auto encoder, 图像编辑就很适合用 GAN. 我们或许也能说 大数据集,高分辨率图像生成可能更适合用 Diffusion model. 至于学术潜力,diffusion model 完胜,毕竟GAN的坑都差不多了。

作者:Baof https://www.zhihu.com/question/536012286/answer/2520595220

关于我自己:从21年6月份开始做diffusion model,在很多角度对diffusion model做过探索,包括理论和应用。目前有五篇paper(1 ICLR, 2 ICML, 2 Neurips在投)。其中一篇一作的Analytic-DPM揭示了diffusion model一个很漂亮的性质,然后拿了个ICLR 2022的outstanding paper award(似乎是目前唯一一篇大陆单位独立完成的获奖论文)。

先说一下diffusion model这个领域给我的感觉。目前正在变得非常卷,今年的NeurIPS应该会迎来一轮爆发,在bidding的时候数了一下,保守超过100篇。在许多领域都有非常有趣的文章,甚至有拿diffusion model做组合优化和因数分解的(没看到论文内容,不知道咋做的)。传统的方向就更多数不胜数,图像补全、视频生成、分子构象生成。在实际应用方面,随着diffusion model的加速做的越来越好,估计也能慢慢在更多场景落地(我们组做了很多diffusion model加速的工作,Analytic-DPM和它的扩展版本将生成步数降到25-50,再后面的DPM-Solver将步数降到10左右)。

再说说diffusion model这个模型本身给我的感觉。它的训练真的太简单了,就是一个回归的loss,代码写起来三四行搞定。diffusion model稳定背后的直觉应该就是这种简单的训练。因此也很少有关于diffusion model训练的工作,它的工作基本上集中在提速和应用上。另外它的训练收敛速度也挺快,在cifar10上10w轮fid就能降到5以下(2张RTX 2080大概需要半天到一天)。

然后说说我认为diffusion model的美妙之处。它把困难的数据生成,拆分成了若干个相对简单的任务,每个任务即对应一次去噪。这种拆分有坏处(即推断慢,但我们的工作一定程度上解决了这个问题),也有好处(更加可控的生成)。Diffusion model上的可控生成能将模型和约束解耦开来,有相当多的工作都是基于这种解耦完成的(比如beats GAN用分类器作为约束,我们Neurips的一篇投稿则设计了更为巧妙的约束,使得diffusion model在一些图像翻译任务上达到了SoTA)。

如果想要入坑diffusion model的,可以参考下我做的一个ppt,比较全面的介绍了diffusion model的核心理论和应用。

作者:知乎用户
https://www.zhihu.com/question/536012286/answer/2517508852

一直在做GAN,最近看了一下Diffusion模型。第一个感受就是,相对于GAN,它对数学的要求还挺高。不像GAN,应用时很多改进可以凭“直觉”加,感觉有道理就可以试试,尤其是做类似于图片翻译的任务的时候,GAN更多是一个辅助型的损失函数,可以和其它损失函数纳入同一个框架,一起凭“直觉”调参,比如L1损失让图片更接近,GAN损失让图片更真实...,但是Diffusion模型每一步似乎都是有对应的数学基础的。调整其细节时,必须仔细思考背后的数学基础。如果它火起来,成为生成模型的主流,对我这种数学基础很差的人肯定是巨大打击 。

另外,目前现存的相关论文和博客感觉都是数学很扎实的人写的,上来就推公式,没有细讲为什么要推这步。我假期专门写了一个博客文章,尽力去详细介绍DDPM里面主要的步骤背后的数学推导,主要考虑如何让没什么“数学直觉”的人也能看得懂,知道每一步怎么推出来,以及为什么要推这一步。有兴趣可以看一下:

什么是Diffusion模型?https://wrong.wang/blog/20220605-%25E4%25BB%2580%25E4%25B9%2588%25E6%2598%25AFdiffusion%25E6%25A8%25A1%25E5%259E%258B

至于前面回答提到的训练慢,推理慢这些问题,我觉得如果Diffusion真的在生成质量上能超过GAN,这些问题很快都有人能解决。比如NeRF,最开始大家也都是嫌弃很慢,最近已经被优化的很快了。关键还是在于能不能解决GAN解决不了的问题。至少现在Diffusion模型还是不能和GAN一样,很简单地同其它约束结合在一起。

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

77b55005ddf91ee6b5aaaaa76364104f.png

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值