Administrator
Administrator
发布于 2025-03-31 / 67 阅读
1
0

重参数化技巧(Reparameterization Trick)

1. 问题背景

在生成模型(如VAE)中,潜在变量 z 通常从参数化分布(如高斯分布 z \sim \mathcal{N}(\mu, \sigma^2) )中采样。直接采样会导致梯度无法通过随机节点回传,因为**采样操作本身不可导**。

核心目标

使分布参数(如均值\mu 和方差\sigma^2)能够通过梯度下降优化。

2. 重参数化原理

将随机性转移至独立噪声变量,解耦采样过程的随机性与参数依赖性:

z = \mu + \sigma \cdot \epsilon \quad \text{其中} \quad \epsilon \sim \mathcal{N}(0,1)

关键步骤:

1. ​确定性参数: \mu\sigma 由神经网络生成。

2. ​独立噪声:从标准正态分布采样\epsilon

3. ​可导计算:z 的生成过程对\mu\sigma 可导。

3. 数学推导

原始期望计算

对损失函数求期望时需对 z 采样:

\mathbb{E}_{z \sim q(z|x)}[f(z)], \quad q(z|x) = \mathcal{N}(\mu, \sigma^2)

重参数化后

将期望转换为对独立噪声\epsilon 的计算:

\mathbb{E}_{\epsilon \sim \mathcal{N}(0,1)}[f(\mu + \sigma \cdot \epsilon)]

梯度传播

梯度可对\mu\sigma 直接求导:

\nabla_\mu \mathbb{E}[f(z)] = \mathbb{E}[\nabla_\mu f(\mu + \sigma \epsilon)] \\ \nabla_\sigma \mathbb{E}[f(z)] = \mathbb{E}[\nabla_\sigma f(\mu + \sigma \epsilon)]

4. 在VAE中的应用

流程步骤

1. ​编码器输出:生成\mu\log \sigma^2(对数方差提升数值稳定性)。

2. ​重参数化采样:

z = \mu + \sigma \cdot \epsilon, \quad \epsilon \sim \mathcal{N}(0,1)

3. ​解码器重构:输入 z 生成数据 x_{\text{recon}}

4. ​损失计算:包含重构损失和KL散度闭式解。

KL散度闭式解(高斯分布)

\text{KL} = -\frac{1}{2} \sum \left( 1 + \log \sigma^2 - \mu^2 - \sigma^2 \right)


评论