当前位置: 首页 > news >正文

深度学习——Diffusion Model学习,扩散模型

一、什么是扩散模型

针对一张图片有一个前向过程,也就是逐渐批次加噪,生成一张Noise图片,那么问题就是是不是有这样的一个反向的过程能够针对一个有噪点的数据,还原到清晰的图片

请添加图片描述

具体来说:通过加入0-1正态分布的高斯噪声生成Noise图片,而扩散模型需要完成的是去预测每个时间步的噪声,到达去噪的目的

请添加图片描述

二、加噪过程(Forward Diffusion Process)

加噪过程简单来讲就是,图片+噪声=Noise图片,但是需要注意的是,这个的相加是有系数的,可以从下图右下角中发现,图片的系数是逐渐减小的,而噪声的系数是逐渐增大的,那为什么要这样设计呢:

可以举个相对极端的例子,如果在每次加噪水平一致的情况下,比较第一次加噪和最后一次加噪,第一次相较于最后一次对原图的质量影响是比较明显的,为了使每次加噪对原图的质量影响尽可能一致,所以设计了这两个参数,让第一次加噪的图片权重要大噪声权重要小,然后逐渐降低图片的权重,增大噪声的权重,达到最后的加噪效果

请添加图片描述

从下图右侧第一个图看出,前面咱们针对加噪过程讲的是一步一步进行加噪,经过公式的迭代推导,从下图右侧第二个图可以发现,从x。到Noise图片可以一步完成:

请添加图片描述

三、去噪过程(Reverse Diffusion Process)

对于加噪过程是一步一步加入高斯噪声,所以是满足马尔可夫性质的,但是对于回溯过程,逐渐去噪是很难找到这样一个高斯分布q(Xt-1|Xt),针对去噪的目标就是找到一个从Xt到Xt-1的噪声高斯分布

请添加图片描述

这个时候就需要神经网络去拟合这样的一个高斯噪声pθ(Xt-1|Xt),也就是下图中Approximated Distribution逐渐逼近Targe Distributionde的过程

请添加图片描述

首先用一个神经网络去拟合我们观察到的数据分布,也就是生成一个参数能够让我们生成的数据相较于ground truth的概率最大,对应到数学中就是求一个最大自然估计

请添加图片描述

最大自然估计等价于min -logpθ(X0)

注:Dkl散度就是描述两个数据之间的距离,即恒大于等于0的值

ELBO是观测数据对数似然的一个下界,用于近似潜在变量在观测变量下的条件概率分布。在变分推断中,直接计算后验概率通常是困难的,因此引入了ELBO来作为一个可优化的目标函数。

请添加图片描述

这样loss函数就可以经过一系列的数学推导过程得出

请添加图片描述

四、训练过程(Illustration of training)

  1. 随机采样时间步并进行encode

在训练扩散模型时,为了让模型学会处理所有可能的噪声水平,不会每次都从 t=0 完整地加噪到 t=T ,再完整地去噪回去。这样太慢了,而且不高效。相反,他们会随机选择一个时间步 t(比如从 1 到 1000 中随机挑一个数字,比如 34),然后直接在那个时间步上操作。

而编码是为了让模型需要知道当前处理的是哪个时间步(比如 t=34),因为不同的时间步对应不同的噪声水平。为了让模型理解 t 的具体含义,t 通常会被“编码”成一种更容易被神经网络处理的形式。

请添加图片描述

  1. 加噪

通过前面提到的一步加噪,将原始图片加噪到t=34时的噪声数据

请添加图片描述

  1. 开始训练

将噪声和时间步输入到UNet网络,通过网路去预测一个噪声

请添加图片描述

  1. 最后计算loss

请添加图片描述

五、采样过程(Illustration of sampling)

  1. 初始化:从纯噪声开始

在 t=T (最大时间步,比如 T=1000 ) 时,我们从一个标准高斯分布中随机采样一个初始样本 XT∼N(0,I) 。这个 XT就是纯噪声,完全没有数据的信息,看起来就像电视上的“雪花屏”。然后和时间步输入到Unet中预测一个噪声ϵθ(xt,t),这里的ϵθ是训练好的模型。

利用预测的噪声,按照反向过程的公式,从 xt 去掉一部分噪声,生成下一步的样本 xt−1。

请添加图片描述

  1. 逐步去噪:从 t=T到 t=0
  2. 重复直到 t=0

这里需要注意的是,在最后一步是不加扰动项的

请添加图片描述

六、总结

总的来说,扩散模型是一种生成模型,它的工作原理是通过一个“加噪-去噪”的过程来学习数据的分布。训练时,先从真实数据开始,逐步添加噪声(称为正向过程),然后让模型学会从纯噪声反向恢复到原始数据(称为反向过程)。

七、Reference

一文理清 Diffusion Model 扩散模型 | 原理图解+公式推导

八、Think

扩散模型作为一个生成式模型,其训练数据是决定生成分布的,训练数据是猫的话,生成的结果只会是猫,那如果训练数据包括猫、狗、鸟等多种类别,模型则会学习所有这些类别的联合分布。采样时生成的 x0 可能是猫、狗或鸟中的一种(具体是什么取决于初始噪声的随机性)。

相关文章:

  • deepseek使用记录21——游击战略问题
  • python 中用到的文件操作
  • 从运营出发:打造更适配当下营商环境的一对一直播系统源码
  • MySQL(第3周)-database命令
  • Python自动点击器开发教程 - 支持键盘连按和鼠标连点
  • 多线程(二)
  • 蓝桥杯真题0团建dfs+哈希表/邻接表
  • 统计登录系统10秒内连续登录失败超过3次的用户
  • 看 MySQL InnoDB 和 BoltDB 如何写磁盘
  • Vivado IP核之定点数累加Accumulator使用说明
  • vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题
  • 向量数据库的选择与应用:AI工程实践
  • Android Retrofit 框架注解定义与解析模块深度剖析(一)
  • HarmonyOS NEXT开发实战:DevEco AI辅助编程工具(CodeGenie)的使用
  • requests中post中data=None, json=None两个参数区别
  • Git 的详细介绍及用法
  • JESD204B协议及IP仿真
  • 什么是进程线程
  • ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9
  • linux批量使用多个用户名登录脚本、为了给主机增加一个指定用户名的登录记录、无需root密码的主机切换到root方式
  • 南昌优易科 网站建设/网络营销的策略包括
  • 合肥外贸网站建设/推广赚钱的平台有哪些
  • 做自己的网站能赚钱吗/免费换友情链接
  • 佛山网站建设官网/app拉新推广接单平台
  • 做门户型网站/每日精选12条新闻
  • wordpress做社交网站吗/网站推广怎么优化