一句话:当你手上的样本不是从"你关心的那个分布"里抽出来的,给每个样本乘一个权重,就能拿它们去估计你关心的那个分布。
蒙特卡洛的基本逻辑是"用平均代替期望":想知道某个分布下的平均值,就从它里面抽样、求和、除以样本数。但这招有个前提——样本必须来自这个分布。现实中经常反过来:你只能从 A 分布里拿数据,却想估 B 分布下的结果。
重要性采样给出的等式是:E_{x~p}[f(x)] = E_{x~q}[ f(x) · p(x)/q(x) ]。那个比值 p(x)/q(x) 就是重要性权重。
打个比方:调研员只能站在写字楼门口发问卷,所以他采到的样本天然偏白领。想推断全城人的偏好,不能直接把问卷结果一平均了事,而要重新加权——退休老人、学生这类在写字楼门口很少出现的人,每个样本代表更多"全城普通人",权重要放大;白领被过度采样了,权重就调小。这个权重正是"在目标人群里出现的概率 ÷ 在实际采样点出现的概率"。
在强化学习里,这件事变得非常关键。策略梯度要估计的是"当前策略 π 下,各动作能带来多少回报"。可数据是用旧策略 π_old 和环境交互采出来的,而采一条轨迹往往很贵。如果每更新一次策略就得把数据全扔了重采,成本会高到不可接受。于是用权重 π_new(a|s) / π_old(a|s) 给每个动作样本重新加权,就能在旧数据上估计新策略的目标函数。这正是 PPO 能用同一批数据做多轮梯度更新的底层原因。
代价是权重会爆。某个动作旧策略几乎不会选,却恰好被采到、而新策略又特别喜欢它,权重就会变得极大,把估计拉偏——高方差,极端情况下直接发散。所以 PPO 会把这个比值裁剪(clip)在一个区间内,不让它离 1 太远。另外要注意:如果旧策略永远抽不到某类动作,重要性采样也救不回来,它只能重新加权,不能凭空造数据。
| 概念 | 一句话 | 对数据来源的要求 |
|---|---|---|
| 蒙特卡洛采样 | 从目标分布抽样再取平均 | 样本必须来自目标分布 |
| 拒绝采样 | 抽到不合格样本就丢弃重抽 | 需要找一个好用的辅助分布 |
| 重要性采样 | 不丢样本,改成给样本加权 | 采样分布要能覆盖目标分布,否则权重失控 |
| 离策略学习 | 用别的策略产生的数据来学习 | 常用重要性采样,也常配合价值函数 |
对从业者来说,重要性采样划定了"数据复用"的边界:同一批交互数据能反复更新多少次、训得多激进,本质上取决于权重会不会发散。对普通人来说,它其实是"用偏样本推总体"的一般思路——样本重加权、离线评估、拿现成问卷推断另一群人,背后都在算同一个比值。至于具体算法里裁剪区间这类超参数怎么设,各家实现不同,以官方页面和论文为准。
