如何入坑 Diffusion 方向?
创建时间:2024-06-04 14:54:44
最后编辑:2024-06-04 14:54:44
2 个回答
首先可以先看看普渡大学Stanley Chan老师写给本科生和研究生初学者的tutorial,通俗易懂。
然后可以看看Diffusion model的原论文,一共有三篇,再加上一篇总结:
- 加州伯克利的Johnathan Ho写了一篇Denoising Diffusion Probabilistic Model(DDPM),是第一篇把diffusion调出较好效果的论文,搞CV一般指搞懂DDPM就差不多。
- 同时期斯坦福的Yang Song写了Noise Conditional Score Network(NCSN),通过score matching的方式来估计数据分布概率密度的梯度。
- 然后Yang Song在这两篇的基础上用随机微分方程把Diffusion Model的理论框架统一,提出了Score-SDE。
- 对这几篇很好的总结是谷歌Calvin Luo的工作,作者不仅对各种公式进行了汇总,还阐明了和VAE的关系。
再进一步是后面的人针对前面出现的问题进行的改进:
- 和Yang Song同一个组的Jiaming Song提出了DDIM,加速了diffusion采样速度。
- Yang Song针对NCSN的各种问题提出了各种tricks,在这篇Improved Techniques for Training Score-Based Generative Models当中
- Nvidia在noise schedule上做改进,提出了EDM,很多人都用这篇的代码
再然后可以看看具体应用领域了!
比如解反问题:改进diffusion sample算法来进行后验采样。
比如Diffusion可解释性相关的问题:
比如Latent Diffusion: 把encoder-decoder与diffusion process结合,在latent space上做文章
比如工业界最火的Stable Diffuison, Sora背后的原理DiT, 这里就不具体贴论文了。
除此之外我个人对diffusion的loss的各种形式很感兴趣,读了一部分这方面的论文:
- Yang Song证明了score-matching loss和DDPM用的ELBO loss在某种意义上等价
- 谷歌的Ruiqi Gao和Kingma(就是VAE和Adam的作者)深入研究了ELBO加weighting的问题
与此同时代码Huggingface提供专门的Diffusers库,各种模型各种scheduler集成得很到位,可以跑来玩玩。
在这里还可以分享一个网站https://scorebasedgenerativemodeling.github.io/。这个网站列出了所有与Diffusion Model相关论文,是Diffusion Schrödinger Bridge作者整理的。
加油!Diffusion Model看着理论框架很复杂,但实际上就是条件概率来回推。说了这么多我感觉初学可以只看看DDPM当中的算法,然后直接上手代码实践。具体推导啥的略过,回头需要的时候慢慢来补也行。如果想了解全貌的话,就看看第一篇tutorial。每个人都有自己的学习历程,我在这里仅仅是分享了自己的供参考,希望能帮助你少走弯路。
祝idea都work,paper多多。
入坑强烈推荐Jia-Bin Huang的How I Understand Diffusion Models。
我的recipe:
先看这个视频感觉一下。然后再去看论文。看了论文之后成功脑袋成为浆糊更加似懂非懂之后,之后再去看视频洗洗脑子。