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)