1、扩散模型是什么?
diffusion模型是生成模型的一种,其余的类型有GAN/VAE/flow模型,GAN是对抗学习网络,由一个编码器和描述器构成,编码器是生成分布,而描述器是为了判断生成的是否是真实分布。
VAE是变量自编码器,是x——>Z——>x’的过程,x是真实数据的分布,Z是编码器生成的分布,而x’是预测生成的分布。
Flow是另一种生成模型。
diffusion是以VAE模型为基础,建立在马尔科夫链的前项传播过程中,将x——>Z 和 Z——>x’的过程拆解为了多个小步骤,一步步的完成,这样就可以在每一小步中,通过加入一些噪声,到最终完成拟合最终的分布。
在训练过程中, GAN的训练难度似乎很大,不确定性很大,而DDPM建模的是一个回归函数,需要计算每一项的均值和方差。但是DDPM拆解的步数很多,这可能导致训练起来速度会减慢。
哪个模型在做概率拟合分布时,几乎都会考虑贝叶斯分布。
贝叶斯分布公式:前向概率和后验概率,p(θ)是参数的概率分布,p(x)是观测数据的边际概率分布,p(x|θ)是后验分布。
边际概率分布是:
边际概率分布是指在联合概率分布中,针对某一个或某几个随机变量,将其他随机变量积分或求和得到的概率分布函数。简而言之,边际概率分布就是从联合概率分布中抽取出一个或几个随机变量的概率分布。
例如,假设有两个随机变量X和Y,它们的联合概率分布为f(x,y),则X的边际概率分布为:
P(X=x) = ∫ f(x,y) dy
其中,积分变量y在所有可能取值的范围内积分。类似地,Y的边际概率分布为:
P(Y=y) = ∫ f(x,y) dx
边际概率分布在概率论和统计学中有广泛的应用,可以帮助我们更好地理解随机变量的性质和行为,并对一些问题进行建模和分析。
2、扩散模型中的参数有哪些?
无条件控制下的扩散模型;
条件控制生成结果。——事前控制(在训练出事初始阶段中,加入条件控制信号,用于控制生成结果)和事后修改 (是在生成结果之后,采用类似于prompt的方式对结果进行调整,达到控制生成结果的目的。)
3、生成模型有哪些?
VAE本质是一个基于梯度的encoder-decoder架构,encoder用来学高斯分布的均值和方差,decoder用变分后验来学习生成能力,而将标准高斯映射到数据样本是自己定义的。而扩散模型本质是一个SDE/Markov架构,虽然也借鉴了神经网络的前向传播/反向传播概念,但是并不基于可微的梯度,属于数学层面上的创新。两者都定义了高斯分布
Z作为隐变量,但是VAE将 Z
作为先验条件(变分先验),而diffusion将 Z
作为类似于变分后验的马尔可夫链的平稳分布。
3.1 VAE (变量自编码器)
VAE,是利用的全概率公式计算的,X是原始数据的分布,是不知道的,Z是假设的正态分布,p(X|Z)是在后验分布,在假设中,P(X|Z)也是正态分布的形式,但是是属于加了噪声之后的近似与正态分布的分布。
参考文献:https://zhuanlan.zhihu.com/p/563543020
4、实验上的前车之鉴
看了苏剑林老师的实验过程,提到了损失函数,正则化的选择问题,损失函数在值很小的情况下,可能导致反向传播的梯度趋近于0。
而归一化中batchnorm的方式存在训练和推理阶段不一致的问题,这些可能都是要通过实践才能得到这些结论。
5、总结
昨天对扩散模型有了初步的了解,觉得很妙,
每一步中加噪声,最终的问题是回归问题,将模型回归到正态分布的均值和方差上。
逐步加噪声,不在使用生成器。
扩散模型的公式需要跟进。
这一篇是基础的了解,知道大概是什么东西,怎么做的?
它的前后左右时什么?