继续阅读
从模拟里学到的后验能不能信 · 阅读路径
从先验里抽一个真值,生成数据,再从后验里抽样,数一数有几个样本比真值小。后验精确时,这个数(叫作秩)取每个可能值的机会都一样。把几千次模拟的秩画成直方图,应该是平的。中间鼓包说明后验太宽,两头翘起成凹槽说明太窄,整体倾斜说明后验偏到了一边。
本章接着 后验分布与 90% 可信区域到底保证什么,沿用同一个共轭高斯模型。新用到的工具是二项分布和卡方检验,用到时再介绍。文中数字都来自 方法教程 里保存的那次运行。
模拟校准(SBC)把下面四步重复 次。
这一对是从 抽出来的。由贝叶斯定理,它等于 ,所以给定 以后,真值本身就是从精确后验里抽的一个样本。如果 就是精确后验,那么 是同一个连续分布的 个独立样本,任何一种排列顺序都同样可能,真值排在 个位置中的哪一个,机会都相等:
这是 Talts 等人整套方法的核心结论。Talts 等,2018,第 4.1 节 论证里没用到后验必须是正态、参数必须只有一个;实际使用时一次检验一个参数。
保存的那次运行取 次模拟、 个样本,秩一共有 100 种可能。每五个秩并成一根柱子,就是 20 根。后验精确时,每次模拟落进某根柱子的概率是 ,各次互不相干,所以一根柱子的计数 服从 4000 次试验、成功概率 的二项分布,均值和标准差分别是
这个二项分布中间 99% 的范围是 到 。Talts 等人把这条带画在直方图后面。单单一根柱子出了带,并不说明什么:20 根柱子里,精确后验也有不小的机会偏出一根。要整体判断,可以算卡方统计量
是第 根柱子的计数。直方图平的时候, 服从自由度为 19 的卡方分布;尾部概率很小,就是警告。
警告也会碰巧出现。保存的那次运行里,精确后验自己就得到 ,尾部概率 ,有两根柱子出了带。这次结果原样保留,没有换随机种子重跑。另做了一项研究,把整个实验独立重复 200 次:在 1% 的门槛下,精确后验被标出 2 次,和门槛本身许诺的 1% 误报率差不多;下面每一种错误的后验,200 次全被标出。
保存的运行拿四种故意做错的后验和精确后验对比。错误的后验也都是正态分布,所以不必模拟,就能预先算出它们的秩直方图。令 ,即以精确后验的标准差为单位量出的真值, 服从标准正态分布;错误后验里比真值小的那部分比例,是 的一个已知函数。中心对、宽度乘了 的后验,这个比例是 ,秩就服从成功概率为 的二项分布。
| 后验 | 直方图形状 | 落在 99% 带外的柱子数 | 90% 中央区间覆盖率(模拟) | 90% 中央区间覆盖率(预测) |
|---|---|---|---|---|
| 精确 | 平 | |||
| 整体上移半个标准差 | 向右下降的斜坡 | |||
| 宽度乘 | 鼓包 | |||
| 宽度乘 | 凹槽 | |||
| 先验标准差取 | 凹槽 |
窄后验的预测覆盖率一行就能算出。它的 90% 区间离中心最远 个精确标准差,而 服从标准正态,所以覆盖率是 。宽后验换成 ,同样算得 。
每种形状都能直接读懂。后验太窄,真值常常落在所有样本之外,秩就堆到两头的柱子里,成了凹槽。后验太宽,几乎总把真值围在中间,秩聚到中部,成了鼓包。后验整体上移,大多数样本都比真值大,小的秩就多。后验用的先验比生成数据用的先验更窄,就会往零收缩得过头,结果也偏窄,同样给出凹槽。Talts 等人在一个用了过窄先验的回归模型里,看到的正是这种凹槽。Talts 等,2018,第 4.2 节和第 6.1 节
秩直方图一次只看一个参数。Hermans 等人定义的期望覆盖率改用后验自己的最高密度区域,因此能检验几个参数的联合分布。对每一对模拟出来的真值和数据,找出恰好把真值包进去的最高密度区域,记下它的可信水平 。后验校准时, 在零到一之间均匀分布,于是对任何水平, 低于它的模拟所占的比例就等于这个水平。曲线落在对角线下方,说明区域画得过于自信。Hermans 等,2022,第 2 节
Lab 里冻结的神经后验沿用 Papamakarios 和 Murray 的混合密度做法。它学习合成振铃的双参数后验:网络输出若干高斯分量之和,只用模拟出来的“源—记录”对训练。Papamakarios 与 Murray,2016 从先验里重新抽 2000 个源来考它,它的 90% 联合区域罩住真实源的比例是 ,和精确网格后验一样。秩检验的尾部概率,频率是 ,衰减时间是 。
上面每项检验,都是对从先验里抽出的源取平均。平均值里能藏住三种毛病。
第一种,一维的每一块都对,联合分布却错了。搭建 Lab 的时候,网络的抽样程序在控制频率与衰减时间相关性的那一项上写错了。秩检验照样通过,尾部概率是 和 。直接比较抽样结果的矩和密度函数本身的矩,才把它抓出来:两者相差 ,修好以后只差 。
第二种,后验根本不看数据。如果 直接交回先验,真值和样本又成了同一个分布的独立样本,秩完全是平的。秩检验查的是校准,不查后验够不够窄。
第三种,平均下来对,参数空间某个角落却不对。把 400 次模拟一组的检验按噪声水平分开,就能看出校准是不是在整个训练范围里都成立。
| 子集 | 网络 | 精确网格 |
|---|---|---|
| 噪声水平 到 | ||
| 噪声水平 到 | ||
| 噪声水平 到 | ||
| 衰减时间 到 毫秒 |
400 条记录时,覆盖率在 附近的标准误约为 。四行都和 相符,彼此之间也只差两三个标准误以内;而且每一行里,网络都紧跟着精确网格。
打开 神经后验 Lab,展开数据行下方的离线秩检验。
从模拟里学到的后验能不能信 · 阅读路径