StableDiffusion随机采样后可微方法

author:张一极

daTE:2024年08月01日14:31:1

随机采样过程不可微的原因在于它涉及随机性和不确定性,而梯度计算依赖于确定的、连续的函数。

具体来说,有以下几个原因:

为了应对这个问题,重参数技巧将采样过程中的随机性从不可微的随机变量中分离出来,并将其转化为从固定分布(通常是标准正态分布)中采样,然后通过一个可微的变换得到最终的样本。

例如,在从高斯分布 N(μ,σ2) 中采样时,我们通过以下变换实现可微性:

(1)1.从标准正态分布中采样一个噪声ϵ∼N(0,1)。2.使用可微变换z=μ+σ⋅ϵ得到最终样本z。

通过这种方法,采样过程变得可微,因为变换函数 $ \mu + \sigma \cdot \epsilon $$ 是可微的。这样我们就可以通过反向传播来计算梯度,从而优化模型参数。

(2)q(xt|xt−1)=N(xt;1−βtxt−1,βtI),q(x1:T|x0)=∏t=1Tq(xt|xt−1).

 

重参数技巧(Reparameterization Trick)在很多机器学习模型中确实扮演了重要角色,尤其是在变分自编码器(Variational Autoencoder,VAE)和扩散模型(Diffusion Model)中。这个技巧的核心思想是将不可微的随机采样过程转换为一个可微的过程,从而使得我们能够通过梯度下降法来训练模型。

具体来说,以从高斯分布 ( N(μ,σ2) ) 中采样为例:

(3)1.传统的采样方法:•直接从高斯分布(z∼N(μ,σ2))中采样,这个过程是不可微的。2.使用重参数技巧:•首先从标准正态分布中采样一个噪声(ϵ∼N(0,1))。•然后通过以下变换得到目标分布的样本:

z=μ+σ⋅ϵ

(4)•这种方式将随机性从z中移到了ϵ中,而ϵ是从固定分布中采样的,因此该过程是可微的。

在扩散模型中,我们需要通过重参数技巧来处理大量的噪声采样过程。假设我们有一个扩散模型,其目标是通过若干步骤将数据逐步从噪声恢复到原始数据。每一步的更新过程都需要从高斯分布中采样噪声,因此需要重参数技巧来确保每一步都是可微的,从而可以使用反向传播来优化模型参数。

通过这种方式,我们可以确保模型的训练过程是可微的,从而能够通过梯度下降法来优化目标函数。

SD 内部的推导

有了这个先验信息,我们可以把 Xt表示为 N 个迭代前的 X0 的某个表达式(z 代表): αt=1−βt ,并且α―t=∏i=1Tαi ,展开xt可以得到: xt=atxt−1+1−αtz1wherez1,z2,…∼N(0,I);=at(at−1xt−2+1−αt−1z2)+1−αtz1=atat−1xt−2+(at(1−αt−1)z2+1−αtz1)=atat−1xt−2+1−αtαt−1z―2wherez―2∼N(0,I);=…=αtx0+1−α―tz―t.

即:xt=αtαt−1⋯α1x0+1−αtαt−1⋯α1z¯t

由于独立高斯分布可加性,即N(0,σ12I)+N(0,σ22I)∼N(0,(σ12+σ22)I) ,所以 at(1−αt−1)z2∼N(0,at(1−αt−1)I)1−αtz1∼N(0,(1−αt)I)at(1−αt−1)z2+1−αtz1∼N(0,[αt(1−αt−1)+(1−αt)]I)=N(0,(1−αtαt−1)I).