跳到主内容
快讯直播
AI智模界
AI 词典

重参数化技巧:让随机采样也能反向传播

一句话定义

重参数化技巧(Reparameterization Trick)是把「从某个分布里随机采样一个值」这一步,改写成「一个与待训练参数无关的随机数,经过一次确定性的、可求导的运算」,这样梯度就能顺利穿过采样操作,继续往回传。

它到底做了什么

先看它要解决的问题。在AI 词典:变分自编码器">变分自编码器(VAE)里,编码器不会直接输出一个编码向量,而是输出一个正态分布的均值 μ 和标准差 σ,然后从这个分布里采一个 z 出来:z ~ N(μ, σ²)。

麻烦在于:采样这个动作本身是「掷骰子」,掷出来的结果和 μ、σ 之间没有一条可以求导的连续关系。反向传播走到这里就断了——你没法回答「如果 μ 稍微大一点,z 会怎么变」,因为 z 是抽出来的,不是算出来的。编码器于是拿不到梯度,整个模型训不起来。

重参数化做的事情只有一行改写:

```

z = μ + σ · ε ,其中 ε ~ N(0, I)

```

关键在于,ε 是一个与模型参数完全无关的标准正态噪声。随机性并没有消失,它只是被「搬」到了模型的输入侧:ε 是外面掷的骰子,μ 和 σ 是模型自己算的。当 ε 固定住,z 就是 μ 和 σ 的确定性函数,偏导数清清楚楚:∂z/∂μ = 1,∂z/∂σ = ε。梯度可以一路回传到编码器,μ 和 σ 都能被训练。

打个生活化的比方。假设你在定年终奖,公式本来是「从某个均值附近随机抽一个数」,抽签箱的机关和你的参数焊死在一起,你改参数也没法预判结果。重参数化相当于换了个流程:总部先公开摇出一个标准号码 ε(比如 0.3),然后规定奖金 z = 基础值 μ + 浮动系数 σ × 0.3。这样你一眼就能看出「μ 加一百,奖金加一百」「σ 翻倍,随机的波动也跟着放大」。随机性还在,但它变成了一个可预期、可求导的外生输入。

数学上这叫「位置—尺度变换」:从 N(μ, σ²) 采样,等价于先从 N(0, 1) 采一个数,再乘 σ 加 μ。

和相邻概念的区别

对比项直接采样 z ~ N(μ, σ²)重参数化 z = μ + σ·ε
梯度能否回传不能,随机节点阻断能,μ、σ 有明确偏导
随机性位置藏在参数相关的分布里外置成独立的 ε
训练时的角色不可用标准做法

要区分几类容易混淆的思路:REINFORCE(得分函数估计器)走的是另一条路,不改造采样,而是用 log 导数的技巧直接估梯度,代价是方差大、训练慢;Gumbel-Softmax 针对的是离散分布,因为离散采样没法直接重参数化,只能用 Gumbel 噪声加连续松弛来近似;直通估计器(straight-through estimator)也是绕开不可导,但它属于前向反向不一致的近似手法,和重参数化的「严格等价改写」不是一回事。

对从业者的意义

第一,它是 VAE 能端到端训练的关键,也是变分推断、贝叶斯神经网络这类隐变量模型的通用工具。第二,扩散模型的正向加噪公式本质上也是同一个套路——把「加噪后的图」写成原始图和标准噪声的确定性组合,网络才能去学习预测那个噪声。第三,落到代码上,区别往往只是一行:采样步骤不能直接调用分布对象的采样方法,而要写成 mu + sigma * eps,其中 eps 用标准正态随机数生成。写错这一行,loss 照样能算,但梯度传不进编码器,模型只是看起来在跑。

需要注意的是,重参数化要求分布本身能写成「标准分布 + 确定性变换」的形式,正态分布、均匀分布可以,一般的离散分布不行。至于具体框架里可用的分布类型和 API,以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。