Diffusion扩散模型介绍
介绍 模型 Diffusion 扩散
2023-06-13 09:15:24 时间
在之前的GAN的时候,有一个非常大的问题,那就是GAN生成的图像缺乏多样性,它是以生成器生成的图像能骗过判别器为目标的,而不是以生成丰富的图像为目标的。有关GAN的理论部分可以参考Tensorflow深度学习算法整理(三) 中的对抗神经网络。
而在Diffusion扩散模型中却并非如此,它没有一个所谓的判别器,而是有两个过程,一个是前向过程,一个是逆向过程。前向过程是将图像不断的加噪音,最后变成一个人看上去就是一个纯噪音的图像。而逆向过程则是将纯噪音图像不断还原成真实图像的过程,但是这个还原可能是对很多训练过的图像进行的还原,所以它并不是以还原出一副图像为目的的过程。
我们先看第一步,前向过程:
上图中的每一时刻都要添加高斯噪声,后一时刻都是由前一刻增加噪声得到。
第一个重要公式
β要越来越大,论文中0.0001到0.002,从而α也就要越来越小。这个可以使用一个衰减函数在代码中完成。
上式表示\(x_t\)时刻的图像和\(x_{t-1}\)时刻图像的关系。\(\sqrt {α_t}\)和\(\sqrt {1-α_t}\)都是权重,\(z_1\)是满足高斯分布的噪声。越往后,\(α_t\)越小,噪声所占的比例越来越大;而越靠前,加一点点噪声就有效果,而越往后得加噪越多才有效果。
现在我们知道后一时刻分布是由前一时刻加噪得到,但是整个序列的步骤非常多,如果一步步计算则会非常慢,这里使用的是一步计算得到的,也就是\(x_t\)时刻是由\(x_0\)时刻通过一个公式直接算出来的。
\(\sqrt {\prod_{i=0}^tα_i}x_0+\sqrt {1-\prod_{i=0}^tα_i}z\)
相关文章
- 图神经网络的可解释性方法介绍和GNNExplainer解释预测的代码示例(附代码)
- 数据库之关系模型介绍「建议收藏」
- 【说站】css盒子模型的属性介绍
- 【说站】css怪异盒模型的介绍
- SVTR文字识别模型介绍
- SAP UI5 OData 模型(V2) 的使用方法介绍
- serviceManager介绍
- 代码的表示学习:CodeBERT及其他相关模型介绍
- JMM内存模型介绍「建议收藏」
- eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具
- php number_format() 函数介绍与使用方法
- RNN 模型介绍
- pr2020软件下载免费下载及介绍
- Oracle的RBO和CBO详细介绍和优化模式设置方法
- 服务掌握Linux服务:NSCD介绍(nscdlinux)
- Stackstorm 入门介绍
- JavaScript中的匀速运动和变速(缓冲)运动详细介绍
- Asp.netTextBox的TextChanged事件使用介绍
- PHP读取xml方法介绍
- 基于TCP异步Socket模型的介绍
- JavaScript的模块化:封装(闭包),继承(原型)介绍
- PHP文件锁函数flock()详细介绍