Skip to content

重参数化技巧

1. 核心思想

重参数化(Reparameterization) 是一种处理含随机采样目标函数的梯度估计技巧。考虑如下形式的期望:

Lθ=Ezpθ(z)[f(z)]

这类目标函数广泛出现在变分自编码器(VAE)、文本 GAN 以及强化学习中(此时 f(z) 对应奖励函数)。当分布 pθ(z) 本身依赖待优化参数 θ 时,直接对 θ 求导会遇到困难:采样操作的随机性会阻断梯度回传。

重参数化技巧的核心思想是:将随机变量 z 表示为一个与参数 θ 无关的随机噪声 ϵ 经过一个确定性变换 gθ 得到,即

ϵp(ϵ),z=gθ(ϵ,x).

这样,期望对 θ 的梯度可以写成:

θEpθ(z)[f(z(i))]=θEp(ϵ)[f(gθ(ϵ,x(i)))]=Ep(ϵ)[θf(gθ(ϵ,x(i)))].

只要 gθ 可微,就可以通过蒙特卡洛采样估计梯度,从而使用标准梯度下降方法优化 θ

2. 连续情形:正态分布

以正态分布为例,假设隐变量服从:

zN(z;μθ,σθ2).

直接从中采样得到 z 后,z 与参数 μθ,σθ 之间的梯度关系被采样操作切断。重参数化将其改写为:

z=μθ+σθε,εN(0,1).

此时随机性完全来自与参数无关的 ε,而 z 关于 θ 的依赖以确定性方式显式表达,梯度可以正常传播。

对应的伪代码如下:

python
def reparameterize(z_mean, z_log_var):
    epsilon = K.random_normal(shape=K.shape(z_mean))
    return z_mean + K.exp(0.5 * z_log_var) * epsilon

补充说明:上述代码中 z_log_var 表示对数方差,取指数后得到标准差 σθ,这种参数化方式可避免方差为负,并改善数值稳定性。

3. 在 VAE 中的应用

变分自编码器的证据下界(ELBO)包含如下期望项:

Eqϕ(zx)[logpθ(xz)].

为计算该期望,需要从近似后验 qϕ(zx) 中采样隐变量 z。通常假设 qϕ 为对角高斯分布:

qϕ(zx)=N(z;μϕ(x),σϕ2(x)I).

利用重参数化技巧,采样过程可写为:

z=μϕ(x)+σϕ(x)ϵ,ϵN(0,I),

其中 表示逐元素乘法。于是 ELBO 可以写成:

LB=DKL[qϕ(zx(i))pθ(z)]+1Ll=1Llogpθ(x(i)z(l)).

第一项 KL 散度有解析解,可直接计算;第二项重建似然则通过重参数化采样后进行蒙特卡洛估计。编码器输出均值与方差,解码器从采样的 z 重建输入,二者端到端联合训练。

4. 小结

  • 重参数化技巧将“从参数化分布中采样”转换为“对无参数噪声进行确定性变换”,从而保留梯度信息。
  • 在连续分布中,最常见的形式是 z=μθ+σθε
  • 该技巧是 VAE 能够进行端到端梯度训练的关键:它使得隐变量采样过程可导,同时随机性仍来自外部噪声变量。

Maintained by Robin