重参数技巧 详解

3,054 阅读2分钟

正态分布标准化

对于一个服从高斯分布的随机变量xN(μ,σ2)x \sim \mathcal N(\mu,\sigma^2),计算其均值μ\mu和标准差σ\sigma

其概率密度函数:

f(x)=12πσ2e(xμ)22σ2f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\mu)^2}{2 \sigma^2}}

所谓“标准正态分布”,就是取 μ=0\mu=0 一般 σ2=1\sigma^2=1 正态分布给出的。

其概率密度函数:

f(x)=12πex22f(x) =\frac{1}{\sqrt{2 \pi}} e^{\frac{-x^2} 2}

对于任意一个正态分布的概率密度函数积分:

f(x)dx=12πσ2e(xμ)22σ2dx=1σ2πe12(xμσ)2dx=12πe12(xμσ)2d(xμσ)\begin{aligned} \int f(x) \mathrm d x &= \int \frac{1}{\sqrt{2 \pi \sigma^2}} e^{-\frac{(x-\mu)^2}{2 \sigma^2}} \mathrm dx \\ &= \int \frac {1}{\sigma \sqrt {2\pi}}e^{-\frac 1 2 \left( \frac{x-\mu}{\sigma} \right)^2} \mathrm d x \\ &= \int \frac{1}{\sqrt{2 \pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2} \mathrm d\left(\frac{x-\mu}{\sigma}\right) \end{aligned}

z=xμσz = \frac{x-\mu}{\sigma},上边公式就变成了:

12πez22dz\int \frac{1}{\sqrt{2 \pi}} e^{-\frac{z^2}{2}} \mathrm dz

所以我们可以得到新的随机变量z=xμσz = \frac{x-\mu}{\sigma},符合标准正态分布。

所以对于一个服从高斯分布的随机变量xN(μ,σ2)x \sim \mathcal N(\mu,\sigma^2),取z=xμσz = \frac{x - \mu}{\sigma}即可将其转化为标准高斯分布zN(0,1)z \sim \mathcal N(0,1)

VAE中的参数重整化

VAE原文:Thesis.pdf (uva.nl)

image.png

原来我们要从潜变量空间上随机采样一个值,就相当于从qϕ(zx)=N(μ,σ2)\mathrm{q}_\phi(\mathbf{z} | \mathbf{x}) = \mathcal{N}\left(\mu, \sigma^2\right)中直接取z\mathbf z

这样在反向传播过程中,“随机”这个过程是不可微的,因此无法使用梯度下降更新网络参数。因此我们需要将z\mathbf z的产生变成一个确定过程。

借助正态分布标准化,取ϵ=zμσ\epsilon = \frac{\mathbf z-\mu}{\sigma},我们可以知道ϵN(0,I)\epsilon \sim \mathcal{N}(0, \boldsymbol{I}),现在z=μ+ϵ×σ\mathbf z=\mu+\epsilon \times \sigma

标准化之后,还是用的qϕ(zx)\mathrm{q}_\phi(\mathbf{z} | \mathbf{x})μ\muσ\sigma,但是z\mathbf zqϕ(zx)=N(μ,σ2)\mathrm{q}_\phi(\mathbf{z} | \mathbf{x}) = \mathcal{N}\left(\mu, \sigma^2\right)中直接采样,变成了通过确定性方程g(ϕ,x,ϵ)=μ+ϵ×σ\mathrm g( \phi, \mathbf{x}, \epsilon) =\mu+\epsilon \times \sigma得到的。

采样z\mathbf z变成从标准正态分布中采样一个ϵ\epsilon,将随机性转嫁到了ϵ\epsilon上,不影响整体的梯度传导。

也就是 Reparameterization Trick

DDPM中的参数重整化

Given a data point sampled from a real data distribution x0q(x)\mathbf{x}_0 \sim q(\mathbf{x}), let us define a forward diffusion process in which we add small amount of Gaussian noise to the sample in TT steps, producing a sequence of noisy samples x1,,xT\mathbf{x}_1, \ldots, \mathbf{x}_T. The step sizes are controlled by a variance schedule {βt(0,1)}t=1T\left\{\beta_t \in(0,1)\right\}_{t=1}^T

潜变量的后验分布为:

q(x1:Tx0)=t=1Tq(xtxt1)q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_0\right)=\prod_{t=1}^T q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)

拆开看xt\mathbf x_t的后验分布如下:

q(xtxt1)=N(xt;1βtxt1,βtI)q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}\right)

然后我们就可以认为每个时间步tt的图像是从均值为μt=1βtxt1{\mu}_t = \sqrt{1 - \beta_t} \mathbf {x}_{t-1}、方差为σt2=βt\sigma^2_t = \beta_t的高斯分布中画出来的。

借助参数重整化可以写成:

xt=1βtxt1+βtϵ\mathbf {x}_t = \sqrt{1 - \beta_t}\mathbf {x}_{t-1} + \sqrt{\beta_t} \mathbf{\epsilon}

其中ϵ  N(0, I)\mathbf{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}),是从标准高斯分布中采样的噪声。


本文正在参加「金石计划」