首页 > 其他分享 >Diffusion 扩散模型

Diffusion 扩散模型

时间:2023-12-26 12:07:28浏览次数:33  
标签:Diffusion 训练 模型 噪声 生成 扩散 过程




Diffusion 扩散模型

  • 对比 GAN 和 VAE
  • 扩散原理
  • 扩散过程:加噪声,均匀分布到整个空间
  • 重参数:避免梯度消失、爆炸
  • 复原过程:去噪声,恢复原始图像
  • 损失函数:交叉熵损失,变分推断
  • 训练流程



 


对比 GAN 和 VAE

原先,图像生成领域最常见生成模型有 GAN 和 VAE。

后来,Diffusion 扩散模型也是生成模型,且在图像生成上,优于 GAN 和 VAE。

VAE 的一个主要缺点是生成的样本常常会模糊、失真,这是因为它在生成样本时可能存在一些不完美的地方。

GAN 因为需要同时训练生成器和判别器,并且很难找到一个平衡点。生成器有时候会通过一些“捷径”欺骗判别器,导致生成的效果不佳。此外,GAN生成的样本多样性有限,只适用于特定的判别器。

作者提出了一种改进的方法,即扩散模型(Diffusion Model)。

扩散模型在生成样本时采用了一种不同的方式,它通过在生成过程中逐渐扩散噪声来生成样本。

这种方法使得生成的样本更加清晰、真实,并且能够保持更好的多样性。

扩散模型的训练过程也更加稳定,不需要像GAN那样同时训练生成器和判别器。

相反,扩散模型只需要在生成过程中进行逐步的扩散操作,使生成的样本逐渐接近真实分布。

这种训练方式可以避免生成器通过“捷径”欺骗判别器的问题,提高了生成效果。

通过逐步扩散噪声的方式生成样本,提高了生成样本的质量和多样性,并且具有更稳定的训练过程

扩散原理

扩散模型的目的是什么?

  • 学习从纯噪声生成图片的方法。

扩散模型是怎么做的?

  • 训练一个 U-Net,接受一系列加了噪声的图片,学习预测所加的噪声。
  • 分为两个部分:前向过程(扩散过程)和反向过程(复原过程)。

前向过程在干啥?

  • 对于训练集中的每张图片,扩散模型可以生成一系列噪声程度不同的加噪图片。
  • 在训练时,这些不同程度的噪声图片以及生成它们所用的噪声被视为实际的训练样本,用于优化扩散模型的参数。
  • 前向过程如下图,墨水滴入一杯水中,最终会 均匀的分布 至整个水杯里,将噪声均匀分布到整个空间,变成纯噪声。
  • 如果有 2 个物质混合在一起,分别是高密度的和低密度的,那么高密度的物质就会扩散到低密度,比如喷了香水,随着时间的扩散,最后香水就会充斥着整个房间,最后趋向于平衡。

Diffusion 扩散模型_人工智能

反向过程在干啥?

  • 当扩散模型训练好之后,我们可以使用该模型来进行采样和生成图片。
  • 通过输入一段随机噪声,扩散模型可以生成对应的图像,这些生成的图像可以具有高质量和逼真度。

扩散模型的创新点是什么?

  • 先假设扩散、复原过程都符合高斯分布,沿着时间轴,均值和方差的迭代公式。
  • 之所以假设成高斯分布是正确的,因为ta可以作为一种近似描述扩散过程的分布,并且符合中心极限定理和大数定律的性质。
  • 之所以假设成高斯分布而不是其他分布,是因为ta是简单的分布,运算量小,使得扩散速度运算速度快。

扩散过程:加噪声,均匀分布到整个空间

前向过程:实现均匀的分布,直到稳定状态

Diffusion 扩散模型_人工智能_02

假设真实图像 Diffusion 扩散模型_深度学习_03 的分布是 Diffusion 扩散模型_生成器_04

前向传播过程,是把真实图像的分布,经过 Diffusion 扩散模型_深度学习_05

扩散过程公式Diffusion 扩散模型_生成模型_06

  • Diffusion 扩散模型_深度学习_07:每一步向图片添加噪声的过程,现在 Diffusion 扩散模型_生成器_08 与过去有关(上一个状态 Diffusion 扩散模型_深度学习_09),和过去的过去无关。每一个噪声都是在前一时刻增加噪声而来的。
  • Diffusion 扩散模型_深度学习_10
  • Diffusion 扩散模型_深度学习_11:控制每个时间步的状态转移的速度,是一个递减的序列,随着时间的推移,扩散过程的速度逐渐减慢。通过调整Diffusion 扩散模型_深度学习_11的值,我们可以控制生成样本的清晰度和细节。
重参数:避免梯度消失、爆炸

上述公式是一步步迭代过来的,求 Diffusion 扩散模型_生成器_13 需要用 Diffusion 扩散模型_深度学习_03Diffusion 扩散模型_深度学习_15,链条太长了。

这很容易导致梯度爆炸、消失。

而且有一个致命的缺陷,就是生成模型很慢。

因为每一次恢复都只能一步一步的向前恢复,而不像GAN,GAN只要训练好了这个模型,只要给他一个噪声,他就能恢复出图像,做一次的模型 forward 就够了。

可引入重参数化技巧解决这俩个问题。

重参数化:把随机变量变成,确定性的函数和独立性噪声项的和。

Diffusion 扩散模型_生成器_13 的分布转化为 Diffusion 扩散模型_人工智能_17Diffusion 扩散模型_人工智能_18 的分布,变成线性组合:Diffusion 扩散模型_深度学习_19

  • μ 是一个确定性的项,是高斯分布的均值
  • ε 是一个独立且随机的噪声项

这样一来,我们可以通过估计 μ 和 ε 的分布参数来间接地推断出 Diffusion 扩散模型_人工智能_20

Diffusion 扩散模型_生成器_21Diffusion 扩散模型_人工智能_22

  • Diffusion 扩散模型_人工智能_23
  • Diffusion 扩散模型_计算机视觉_24

因为每一步添加的噪声都独立,且服从正态分布,可得出:

  • 扩散公式Diffusion 扩散模型_生成模型_25

复原过程:去噪声,恢复原始图像

复原过程:

Diffusion 扩散模型_深度学习_26


复原公式:Diffusion 扩散模型_生成器_27

已知 Diffusion 扩散模型_生成器_13 推导 Diffusion 扩散模型_深度学习_15 的过程中,需要得到在 Diffusion 扩散模型_生成模型_30 时刻的噪声 Diffusion 扩散模型_深度学习_31,但这些目前都不知道。

如果给定了某个训练集输入 Diffusion 扩散模型_深度学习_03,多了一个限定条件后,该分布是可以用贝叶斯公式计算的。

而训练的时候已知真实图像 Diffusion 扩散模型_深度学习_03,可先求一个后验扩散条件概率,把反向过程全部变回前向过程:

Diffusion 扩散模型_生成器_34

  • Diffusion 扩散模型_人工智能_35
  • Diffusion 扩散模型_深度学习_36

损失函数:交叉熵损失,变分推断

只要定义好损失函数,就能学习这些均值、方差的参数了。

因为 Diffusion 扩散模型_深度学习_37 是一个常数,和输入没有关系,训练去噪网络只需要拟合 Diffusion 扩散模型_深度学习_05 个均值 Diffusion 扩散模型_计算机视觉_39

训练神经网络只差最后的问题了:该怎么设置训练的损失函数?

加噪声和去噪声操作都是正态分布,网络的训练目标应该是让每对正态分布更加接近。

那怎么用损失函数描述两个分布尽可能接近呢?

最直观的想法,肯定是让两个正态分布的均值尽可能接近,方差尽可能接近。

因为方差是常量,只用让均值尽可能接近就可以了。

损失函数:Diffusion 扩散模型_人工智能_40

  • Diffusion 扩散模型_深度学习_41 是原图分布,Diffusion 扩散模型_深度学习_42
  • Diffusion 扩散模型_人工智能_43 是复原的原图分布,Diffusion 扩散模型_生成模型_44
  • Diffusion 扩散模型_生成器_45

原图分布 Diffusion 扩散模型_生成器_46

  • 首先找出对数的上界:Diffusion 扩散模型_计算机视觉_47

最小化上界,就可以等价替换 Diffusion 扩散模型_人工智能_48

  • Diffusion 扩散模型_计算机视觉_49

使用贝叶斯公式,展开 KL 散度:

  • Diffusion 扩散模型_计算机视觉_50

使用 log 运算,把乘法变成加法,把除法变成减法:

  • Diffusion 扩散模型_深度学习_51

因为与 q(预测分布) 无关,所以 Diffusion 扩散模型_人工智能_52 不受 Diffusion 扩散模型_人工智能_53 影响,可以移项到括号外,和括号外的 Diffusion 扩散模型_人工智能_48

  • Diffusion 扩散模型_深度学习_55

对不等式左右,求 Diffusion 扩散模型_生成模型_56

  • Diffusion 扩散模型_人工智能_57

 


假设条件概率分布 Diffusion 扩散模型_人工智能_58 可以分解为 Diffusion 扩散模型_人工智能_59

将原始表达式展开:

  • Diffusion 扩散模型_生成器_60

根据条件独立性假设,可以将每个条件概率 Diffusion 扩散模型_深度学习_61

  • Diffusion 扩散模型_深度学习_62

将这个表达式重新组织,将内层的期望写在外层的期望中,得到:

  • Diffusion 扩散模型_生成器_63

Diffusion 扩散模型_计算机视觉_64 进行重命名,我们得到了最终的形式 Diffusion 扩散模型_深度学习_65

完整变形过程:

  • Diffusion 扩散模型_生成器_66
  • Diffusion 扩散模型_计算机视觉_67
  • Diffusion 扩散模型_生成模型_68

 


展开 Diffusion 扩散模型_深度学习_65

Diffusion 扩散模型_计算机视觉_70

第二行:利用马尔科夫性质,展开第一行,变成连乘的形式 Diffusion 扩散模型_人工智能_71

第三行:利用 log 运算,把连乘变成求和 Diffusion 扩散模型_人工智能_72

第四行:把 Diffusion 扩散模型_人工智能_73

第五行:用条件概率的链式法则引入 Diffusion 扩散模型_深度学习_03

第六行:log 展开

第七行:反向 log 展开,把求和移动 log 内变成乘积,约掉分子分母简化

第八行:整理

第九行:得到 3 个 KL 散度:Diffusion 扩散模型_深度学习_75Diffusion 扩散模型_生成模型_76Diffusion 扩散模型_计算机视觉_77

Diffusion 扩散模型_深度学习_75

  • Diffusion 扩散模型_计算机视觉_79Diffusion 扩散模型_生成模型_80 是前向传播,从 Diffusion 扩散模型_生成器_81Diffusion 扩散模型_生成器_08,没有可学习的参数,可直接推导
  • Diffusion 扩散模型_计算机视觉_79Diffusion 扩散模型_生成模型_84
  • 因此,Diffusion 扩散模型_计算机视觉_79

Diffusion 扩散模型_生成模型_76:俩个高斯分布的 KL 散度

Diffusion 扩散模型_计算机视觉_77:相当于 Diffusion 扩散模型_生成模型_76Diffusion 扩散模型_人工智能_73

 


Diffusion 扩散模型_人工智能_90

第一行:多元高斯分布的 KL 散度形式

第二行:

  • 中间项:把复原过程中的 Diffusion 扩散模型_生成模型_91
  • 最右项:把扩散过程中的 Diffusion 扩散模型_生成模型_91

第三行:

  • 学习噪声Diffusion 扩散模型_生成模型_93、噪声 Diffusion 扩散模型_深度学习_94

第四行:

  • 合并同类项,变成线性组合 Diffusion 扩散模型_人工智能_95

第五、六行:

  • 发现第四行前面的权重项影响不大,直接求后面的 线性组合 形式即可
  • 线性组合:Diffusion 扩散模型_生成器_96

训练流程

ewricas:

Diffusion 扩散模型_生成模型_97


补充:

  1. 回到 第1步 继续迭代,直到 第3步 的损失函数收敛

每一轮的迭代,通过向后扩散噪声序列,将俩个时刻噪声之间的差异,作为当前梯度,更新模型参数。


标签:Diffusion,训练,模型,噪声,生成,扩散,过程
From: https://blog.51cto.com/u_13937572/8980999

相关文章

  • 一. 什么是LLM(大语言模型)?
    1.发展历程语言建模的研究始于20世纪90年代,最初采用了统计学习方法,通过前面的词汇来预测下一个词汇。然而,这种方法在理解复杂语言规则方面存在一定局限性。随后,研究人员不断尝试改进,其中在2003年,深度学习先驱Bengio在他的经典论文《ANeuralProbabilisticLanguageModel》中,首次......
  • 机器学习——决策树模型
    谈起过年回家的年轻人最怕什么、最烦什么?无外乎就是面对那些七大姑、八大姨的催结婚、催生子、催相亲、催买房……说起这些亲戚们是如何判断催什么,不得不让我们想起经典的决策树模型。决策树是一个用于分类和回归的机器学习模型。通过对输入对象数据特征进行一系列条件划分构建一个......
  • 行业报告 | 中国AI大模型成长之路,披荆斩棘创佳绩
    原创|文BFT机器人前言:相信大家现在对于AI大模型这个概念都清楚,毕竟现在AI大模型渗入到了我们各个生活场景中,这股科技之风吹遍了中国大大小小的城市,近年来看,还有越吹越烈之势。今天小编带你们来了解一下我国这股AI模型之风到底如何起势,又将吹起怎么样的“风浪”。继ChatGPT发布后......
  • 利用地面控制点实现倾斜摄影三维模型数据的几何坐标纠正技术方法分析
    利用地面控制点实现倾斜摄影三维模型数据的几何坐标纠正技术方法分析 利用地面控制点实现倾斜摄影三维模型数据的几何坐标变换和纠正是提高模型数据精度和准确性的重要步骤。地面控制点是已知具有准确地理坐标的参考点,通过与倾斜摄影图像上的对应点进行匹配和校正,可以实现几何......
  • R语言估计多元标记的潜过程混合效应模型(lcmm)分析心理测试的认知过程|附代码数据
    全文链接:http://tecdat.cn/?p=24172 最近我们被客户要求撰写关于潜过程混合效应模型(lcmm)的研究报告,包括一些图形和统计输出。每个动态现象都可以用一个潜过程(Λ(t))来表征,这个潜过程在连续的时间t中演化。有时,这个潜过程是通过几个标志来衡量的,因此潜过程是它们的共同因素。多......
  • SUS-Chat-34B领先一步:高效双语AI模型的突破
    引言在人工智能领域,模型的规模和效能一直是衡量其先进性的关键指标。南方科技大学联合IDEA研究院CCNL团队最新开源的SUS-Chat-34B模型,以其340亿参数的庞大规模和卓越的双语处理能力,在AI界引起了广泛关注。模型概述SUS-Chat-34B是基于01-ai/Yi-34B预训练模型,经过数百万高质量多语言......
  • 近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营已拉开序幕
    您想成为AIGC大模型领域的佼佼者吗? 近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营已拉开序幕,上千名学员已经实现转行、跳槽、升职、加薪,还不赶快行动起来,这是专为您量身定制的AI大模型学习之旅! 一、现在0元报名,领取2天的试听课! 为了让更多的感兴趣的学员能够......
  • 自然语言处理的模型:从 Bag of Words 到 Transformer
    1.背景介绍自然语言处理(NLP)是计算机科学与人工智能的一个分支,研究如何让计算机理解、生成和处理人类语言。自然语言处理的主要任务包括文本分类、情感分析、命名实体识别、语义角色标注、语义解析、机器翻译等。随着大数据时代的到来,自然语言处理技术的发展得到了巨大的推动。在过......
  • 自然语言处理的新星:生成模型在语言理解中的突破
    1.背景介绍自然语言处理(NLP)是人工智能领域的一个重要分支,旨在让计算机理解、生成和处理人类语言。在过去的几十年里,NLP研究主要集中在语言模型、语义分析、情感分析、机器翻译等方面。然而,直到2010年代,随着深度学习技术的诞生,NLP领域遭到了深度学习技术的洗礼,这一时期被称为“深度......
  • 自然语言处理中的模型微调:实践与经验
    1.背景介绍自然语言处理(NLP)是人工智能的一个重要分支,旨在让计算机理解、生成和处理人类语言。随着深度学习技术的发展,NLP领域的研究取得了显著进展。在这篇文章中,我们将深入探讨自然语言处理中的模型微调的实践与经验。自然语言处理任务非常多样化,包括文本分类、情感分析、命名实......