对于扩散模型的理解

PS:我跟扩散模型打交道比较久了,下面是我一些对扩散模型的理解,为防止日后遗忘,也为了互相学习,故写下此篇文章,如果有误欢迎在评论区中指出,咱们互相进步。

什么是扩散生成模型(扩散生成模型的目的)

扩散生成模型就是将训练数据的数据分布映射到高斯噪声上,然后在将随机采样获得的高斯噪声逆映射成新的数据

扩散生成模型的原理

扩散生成模型包含两个阶段,第一个阶段是前向扩散阶段,即逐步向输入的图片添加随机的高斯噪声直至获得纯噪声。第二个阶段是通过训练一个神经网络来预测出第一阶段中第T步中添加的随机高斯噪音然后将该噪音去除从而获得第T-1步的图片,重复这个过程直至获得原始输入图像。

扩散生成模型中第一阶段的作用是什么

第一个作用是为第二阶段的神经网络的训练提供每个时间步中加入的随机高斯噪声和每步加噪后的图片,作为训练的标签。

第二个作用是,直接从高斯噪声中重建清晰的图像是一个极端困难的任务,因此,扩散模型将这一任务分解为多个较小的子任务,即在多个时间步长上逐步去除噪声,极大降低了模型的训练难度

扩散模型的优缺点

优点:

  • 生成的图像质量高:扩散模型能够生成高度逼真的图像。
  • 灵活性:模型可以灵活地调整生成过程中的参数,以控制生成样本的多样性。
  • 训练稳定性:相比其他生成模型,如生成对抗网络(GANs),扩散模型的训练通常更为稳定,因为扩散模型直接使用MSE损失,这种损失函数直接衡量模型输出与真实数据之间的差异,而无需依赖于另一个网络。

缺点:

  • 计算成本高:扩散模型不能够一步去生成图像,而是需要执行大量的迭代步骤,因此计算成本比较高
  • 显存需求大:扩散模型的参数量比较大,需要比较大的显存才能装得下。

如何对扩散模型的优化/改进

1、使用采样速度更快的采样方法,如DDIM、DPM等

2、在扩散模型的两端分别套上VAE的编码器和VAE的解码器,将扩散模型从像素空间的计算变成潜在空间中的计算,极大的节省了计算成本。

3、将扩散模型的主体架构Unet替换为Transformer

扩散模型和GAN的区别

扩散模型和GANs都是生成模型,但它们的工作方式不同。GANs使用两个神经网络------生成器和判别器,通过对抗的方式学习数据分布。而扩散模型则通过前向扩散过程和反向去噪过程来学习数据分布,没有直接的对抗机制。扩散模型使用MSE(均方误差)损失函数比GAN使用的对抗损失函数更稳定,更容易训练

相关推荐
蹦蹦跳跳真可爱5898 分钟前
Python----循环神经网络(Transformer ----注意力机制)
人工智能·深度学习·nlp·transformer·循环神经网络
课堂剪切板2 小时前
ch03 部分题目思路
算法
空中湖2 小时前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
lishaoan772 小时前
使用tensorflow的线性回归的例子(七)
人工智能·tensorflow·线性回归
山登绝顶我为峰 3(^v^)33 小时前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
Two_brushes.4 小时前
【算法】宽度优先遍历BFS
算法·leetcode·哈希算法·宽度优先
千宇宙航5 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
IT古董5 小时前
【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(4)模型评价与调整(Model Evaluation & Tuning)
神经网络·机器学习·回归
onceco6 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
森焱森6 小时前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机