探索无法写出的后验
后验往往只能写到相差一个常数,即先验乘似然,既无法求和,也没法用代数求均值。Metropolis-Hastings 构造一个随机游走,访问各处的频率与后验成正比。在当前点 θ,提出一个附近的点 θ′,比如 θ 加一点正态噪声。用比值 r=p(θ′)/p(θ) 比较后验高度:若 r≥1,新点至少一样好,就移动;否则以概率 r 移动。若不移动,就把当前点再记一次。未知的常数在两个高度中相同,所以在比值中抵消,这就是方法成立的原因。
r=p(θ)p(θ′),α=min(1,r),lnα=min(0, lnp(θ′)−lnp(θ))(1) 访问过的点的列表就是链。经过称为 burn-in 的预热之后,它的表现就像来自后验的样本,所以均值和区间可以直接由链的平均值和分位数得到。步长是最主要的旋钮:太小,几乎每次移动都被接受,但链爬得很慢;太大,大多数提议落在差的位置而被拒绝,链就原地不动。好的链大约接受四分之一到一半的提议。一定要看链本身:画出来,并从不同起点开始,看它们是否一致。
手算一次提议设后验高度为
p(θ)∝θ18(1−θ)10,即
Beta(19,11) 的形状。从
θ=0.6 提出
θ′=0.7:比值为
(0.7/0.6)18(0.3/0.4)10=0.903,以概率
0.90 接受。若改提
θ′=0.55:比值为
0.678,以概率
0.68 接受。两个计算都不需要使密度总和为
1 的那个常数。
- 提议与比值:提出附近的点并比较后验高度,未知常数被抵消。
- 链:访问过的点,移动被拒时重复记录。丢掉 burn-in 后再求平均。
- 步长:太小爬得慢,太大会卡住,目标接受率约四分之一到一半。
实验:评分内容
- 一个好的提议15 分
- 更差的提议15 分
- 对数比值10 分
- 对链求平均10 分
- 步长太大10 分
- 一次迭代10 分
- 配对术语15 分
- 为什么不需要常数15 分