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

一文理解扩散模型(生成式AI模型)(1)

图片扩散模型运作的大致流程如下:

1.加噪过程:给定一张原始图片,一步步地在这张图片中添加噪声,图片在加噪过程中逐渐失去所有信息,变成无法辨识的白噪声(用物理现象来理解这个过程的话可以理解为在清水中加入墨汁,墨汁不断在水中扩散开来)。

2.去噪过程:在白噪声图片的基础上,模型逐渐对数据进行去噪,可辨识的信息越来越多,直到所有噪声全部被去除,最终产生新的图片数据。而在去噪过程中最重要的就是分数函数(score function),即当前数据对数似然的梯度,它指向拥有更大似然(更少噪声)的数据分布,去噪的每一步都需要计算当前数据的分数函数,然后根据分数函数对数据进行去噪(与神经网络反向传播的思想类似)。

一般的生成模型可以分为两类:一类可以直接对数据分布进行建模,比如自回归模型和能量模型;另一类是基于潜在变量(latent variable)的模型,它们先假设了潜在变量的分布,然后通过学习将潜在变量进行转换,使转换后的分布逼近真实数据的分布,其中代表性模型有变分自编码器,生成对抗网络(GAN),归一化流。

与其他基于潜在变量的生成模型类似,扩散模型也是在对潜在变量进行变换,使变换后的数据分布逼近真实数据的分布,并且扩散模型在综合了上述模型的优点的同时也避免了上述模型的缺点(比如熟悉GAN网络的同学知道GAN网络的总体思路是生成器先生成数据,然后交由判别器打分,而这个判别器通常会导致训练难,不稳定等问题;扩散模型只需训练生成器即可)。

总结:扩散模型的损失函数形式简单且容易训练,不需要额外的辅助网络,比如判别器;表达能力也是其他模型中最出色的。

当前对扩散模型的研究大多基于3个主要框架:去噪扩散概率模型(Denoising Diffusion Probabilistic Model,DDPM),基于分数的生成模型(Score-Based Generative Model,SGM),随机微分方程(Stochastic Differential Equation,SDE)。

去噪扩散概率模型

去噪扩散概率模型(DDPM)定义了一个马尔可夫链(Markov Chain),并缓慢地向数据添加随机噪声,然后学习逆向扩散过程,从噪声中构建所需的数据样本(与文章开头的流程一致)。一个DDPM由两个马尔可夫链组成,一个正向马尔科夫链将数据转化为噪声,其通常是预先设计好的,逐步将数据分布转化为简单的先验分布(标准高斯分布)。一个逆向马尔科夫链将噪声转化为数据,其每一步的转换核(Transition Kernel)是由深度神经网络学习得到的,其目标是逆向链转正项链从而生成数据。新数据的生成需要从先验分布中抽取随机向量,然后将此随机向量输入逆向链并使用Ancestral Sampling(祖先采样法)生成新数据。

基于分数的生成模型

基于分数的生成模型(SGM)的核心思想是用一系列逐渐增强的高斯噪声来扰动数据,并训练一个深度神经网络来联合地估计所有噪声数据分布的分布函数。这个深度神经网络可以接受噪声强度作为辅助信息,以估计在该噪声强度下加噪后数据的分数函数,这个网络是噪声条件分数网络(Noise Conditional Score Network,NCSN)。样本的生成是使用噪声强度逐渐减小的分数函数和基于分数的采样方法。在基于分数的生成模型中,训练和抽样是完全解耦的,因此可以估计分数函数之后使用各种采样技术来生成新样本。

随机微分方程

DDPM和SGM可以进一步推广到无限时间步长或噪声强度的情况,其中扰动过程和去噪过程是随机微分方程(SDE)的解,并将这种形式称为"Score SDE",它利用SDE进行噪声扰动和样本生成,去噪过程需要估计噪声数据分布的分数函数。其中扩散模型的加噪过程可以视作“特定SDE的解”,逆向SDE的解是逐渐将噪声转换为数据的扩散过程,去噪过程可以视作“基于分数匹配学习到的逆向SDE的解”。

理论分析表明,只要分数估计足够精确,并且前向扩散的时间足够长,那么扩散模型就可以以多项式复杂度逼近任何满足较弱条件的连续型分布,而对于流形上的分布,只需进行“早期停止”,扩散模型就仍然具有多项式的收敛复杂度。

下一文我们将学习扩散模型的架构U-Net,Transformer。

http://www.xdnf.cn/news/5428.html

相关文章:

  • 【工具记录分享】提取bilibili视频字幕
  • Activity动态切换Fragment
  • 医疗信息化江湖风云再起!金仓数据库亮相CHIMA 2025
  • Linux `ifconfig` 指令深度解析与替代方案指南
  • 基于ESP32控制的机器人摄像头车
  • 最小循环子数组 - 华为OD统一考试(Python题解)
  • 重力场模型、球谐函数以及重力异常
  • python3环境安装
  • 【ESP32+vscode】问题记录
  • visual studio 2015 安装闪退问题
  • [CLS] 向量是 BERT 类模型中一个特别重要的输出向量,它代表整个句子或文本的全局语义信息
  • Github 2025-05-10 Rust开源项目日报 Top10
  • TransmittableThreadLocal:穿透线程边界的上下文传递艺术
  • 数据库事务
  • GD32H7复位后程序调用函数时间增加
  • Linux 下 Java 部署环境搭建与项目部署详细步骤
  • 质数和约数
  • LabVIEW电涡流传感器自动校准系统
  • 【编译原理】总结
  • 由反激电源引起的一点儿分析
  • project从入门到精通(五)
  • Java ClassLoader双亲委派机制
  • 亿级流量系统架构设计与实战(六)
  • Python pip安装conan(在线)
  • Block Styler——字符串控件
  • Cell | 大规模 单细胞图谱 揭示非小细胞肺癌抗PD-1治疗后的免疫微环境异质性
  • 47.电压跌落与瞬时中断干扰的防护改善措施
  • JDBC执行sql过程
  • 技术视角解析:哈达斯无醇气泡葡萄汁的双重风味密码​
  • GLPK(GNU线性规划工具包)介绍