PRML学习总结(11)——Sampling Methods
对于⼤多数实际应⽤中的概率模型来说,精确推断是不可⾏的,因此我们不得不借助与某种形式的近似。在第10章中,我们讨论了基于确定性近似的推断⽅法,它包括诸如变分贝叶斯⽅法以及期望传播。这⾥,我们考虑基于数值采样的近似推断⽅法,也被称为蒙特卡罗(Monte Carlo)⽅法。
在预测时,我们往往需要计算
E
[
f
]
=
∫
f
(
z
)
p
(
z
)
d
z
\mathbb{E}[f]=\int f(\mathbf{z}) p(\mathbf{z}) \mathrm{d} \mathbf{z}
E[f]=∫f(z)p(z)dz这个积分往往太复杂,无法计算。
计算上面的期望,可以从分布
p
(
z
)
p(\mathbf{z})
p(z)中独立抽样
z
(
l
)
\mathbf{z}^{(l)}
z(l),
l
=
1
,
…
,
L
l=1, \ldots, L
l=1,…,L,则
f
^
=
1
L
∑
l
=
1
L
f
(
z
(
l
)
)
\widehat{f}=\frac{1}{L} \sum_{l=1}^{L} f\left(\mathbf{z}^{(l)}\right)
f
=L1l=1∑Lf(z(l))使得
E
[
f
^
]
=
E
[
f
]
\mathbb{E}[\widehat{f}]=\mathbb{E}[f]
E[f
]=E[f],这样估计的方差为
var
[
f
^
]
=
1
L
E
[
(
f
−
E
[
f
]
)
2
]
\operatorname{var}[\widehat{f}]=\frac{1}{L} \mathbb{E}\left[(f-\mathbb{E}[f])^{2}\right]
var[f
]=L1E[(f−E[f])2]值得强调的⼀点是,估计的精度不依赖于
z
\mathbf z
z的维度,并且原则上,对于数量相对较少的样本
z
(
l
)
\mathbf z^{(l)}
z(l),可能会达到较⾼的精度。在实际应⽤中,10个或者20个独⽴的样本就能够以⾜够⾼的精度对期望做出估计。
有时,
z
(
l
)
\mathbf z^{(l)}
z(l)不是独立的,从而导致有效样本⼤⼩可能远远⼩于表⾯上的样本⼤⼩。在上图中,我们还发现如果
f
(
z
)
f(\mathbf z)
f(z)在
p
(
z
)
p(\mathbf z)
p(z)很大的地方值很小,反之亦然,那么期望可能由⼩概率的区域控制,表明为了达到⾜够的精度,需要相对较⼤的样本⼤⼩。
11.1 Basic Sampling Algorithms
11.1.1 Standard distributions
首先考虑如何从均匀分布产生一些简单的分布,假设
z
z
z为(0,1)均匀分布,通过
y
=
f
(
z
)
y=f(z)
y=f(z)得到
y
y
y的分布
p
(
y
)
=
p
(
z
)
∣
d
z
d
y
∣
p(y)=p(z)\left|\frac{d z}{d y}\right|
p(y)=p(z)∣∣∣∣dydz∣∣∣∣由于
p
(
z
)
=
1
p(z)=1
p(z)=1,则
z
=
h
(
y
)
≡
∫
−
∞
y
p
(
y
^
)
d
y
^
z=h(y) \equiv \int_{-\infty}^{y} p(\widehat{y}) \mathrm{d} \widehat{y}
z=h(y)≡∫−∞yp(y
)dy
则
y
=
h
−
1
(
z
)
y=h^{-1}(z)
y=h−1(z),如下图所示
下面举两个具体的例子,指数分布
p
(
y
)
=
λ
exp
(
−
λ
y
)
p(y)=\lambda \exp (-\lambda y)
p(y)=λexp(−λy)和柯西分布
p
(
y
)
=
1
π
1
1
+
y
2
p(y)=\frac{1}{\pi} \frac{1}{1+y^{2}}
p(y)=π11+y21对于多元变量,则有
p
(
y
1
,
…
,
y
M
)
=
p
(
z
1
,
…
,
z
M
)
∣
∂
(
z
1
,
…
,
z
M
)
∂
(
y
1
,
…
,
y
M
)
∣
p\left(y_{1}, \ldots, y_{M}\right)=p\left(z_{1}, \ldots, z_{M}\right)\left|\frac{\partial\left(z_{1}, \ldots, z_{M}\right)}{\partial\left(y_{1}, \ldots, y_{M}\right)}\right|
p(y1,…,yM)=p(z1,…,zM)∣∣∣∣∂(y1,…,yM)∂(z1,…,zM)∣∣∣∣作为变换⽅法的最后⼀个例⼦,我们考虑Box-Muller⽅法,⽤于⽣成⾼斯概率分布的样本。⾸先,假设我们⽣成⼀对均匀分布的随机变量
z
1
,
z
2
∈
(
−
1
,
1
)
z_{1}, z_{2} \in(-1,1)
z1,z2∈(−1,1),我们可以这样⽣成:对
(
0
,
1
)
(0, 1)
(0,1)上的均匀分布的变量使⽤
z
→
2
z
−
1
z \rightarrow 2 z-1
z→2z−1的⽅式进⾏变换。接下来,我们丢弃那些不满⾜
z
1
2
+
z
˙
2
2
⩽
1
z_{1}^{2}+\dot{z}_{2}^{2} \leqslant 1
z12+z˙22⩽1的点对。这产⽣出单位圆内部的⼀个均匀分布,且
p
(
z
1
,
z
2
)
=
1
/
π
p\left(z_{1}, z_{2}\right)=1 / \pi
p(z1,z2)=1/π ,然后,对于每对
z
1
,
z
2
z_{1}, z_{2}
z1,z2,我们计算
y
1
=
z
1
(
−
2
ln
z
1
r
2
)
1
/
2
y
2
=
z
2
(
−
2
ln
z
2
r
2
)
1
/
2
\begin{aligned} y_{1} &=z_{1}\left(\frac{-2 \ln z_{1}}{r^{2}}\right)^{1 / 2} \\ y_{2} &=z_{2}\left(\frac{-2 \ln z_{2}}{r^{2}}\right)^{1 / 2} \end{aligned}
y1y2=z1(r2−2lnz1)1/2=z2(r2−2lnz2)1/2其中
r
2
=
z
1
2
+
z
2
2
r^{2}=z_{1}^{2}+z_{2}^{2}
r2=z12+z22则
p
(
y
1
,
y
2
)
=
p
(
z
1
,
z
2
)
∣
∂
(
z
1
,
z
2
)
∂
(
y
1
,
y
2
)
∣
=
[
1
2
π
exp
(
−
y
1
2
/
2
)
]
[
1
2
π
exp
(
−
y
2
2
/
2
)
]
\begin{aligned} p\left(y_{1}, y_{2}\right) &=p\left(z_{1}, z_{2}\right)\left|\frac{\partial\left(z_{1}, z_{2}\right)}{\partial\left(y_{1}, y_{2}\right)}\right| \\ &=\left[\frac{1}{\sqrt{2 \pi}} \exp \left(-y_{1}^{2} / 2\right)\right]\left[\frac{1}{\sqrt{2 \pi}} \exp \left(-y_{2}^{2} / 2\right)\right] \end{aligned}
p(y1,y2)=p(z1,z2)∣∣∣∣∂(y1,y2)∂(z1,z2)∣∣∣∣=[2π1exp(−y12/2)][2π1exp(−y22/2)]得到标准高斯后,如重参数那样直接得到一般的高斯分布,对于多元高斯来说,先进行分解
Σ
=
L
L
T
\boldsymbol{\Sigma}=\mathbf{L} \mathbf{L}^{\mathrm{T}}
Σ=LLT则
y
=
μ
+
L
z
\mathbf{y}=\boldsymbol{\mu}+\mathbf{L} \mathbf{z}
y=μ+Lz就会得到均值为
μ
\boldsymbol{\mu}
μ,方差为
Σ
\boldsymbol{\Sigma}
Σ的多元高斯,其中
z
\mathbf{z}
z为标准多元高斯分布。
显然,变换⽅法依赖于它能够进⾏计算所需的概率分布,并且能够求所需的概率分布的不定积分的反函数。这样的计算只对于⼀些⾮常有限的简单的概率分布可⾏,因此我们必须寻找⼀些更加⼀般的⽅法。
11.1.2 Rejection sampling
拒绝采样框架使得我们能够在满⾜某些限制条件的情况下,从相对复杂的概率分布中采样。⾸先,我们考虑单变量分布,然后接下来讨论对于多维情形的推⼴。
考虑分布
p
(
z
)
p(\mathbf{z})
p(z),直接对它进行采样无从下手。进一步考虑
p
(
z
)
=
1
Z
p
p
~
(
z
)
p(z)=\frac{1}{Z_{p}} \widetilde{p}(z)
p(z)=Zp1p
(z)我们可以很轻易计算
p
~
(
z
)
\tilde{p}(z)
p~(z),但
Z
p
Z_p
Zp不知道。为了使用拒绝采样,我们引入一个简单的可采样的分布
q
(
z
)
q(z)
q(z),被叫做proposal distribution。然后使得常数
k
k
k,有
k
q
(
z
)
⩾
p
~
(
z
)
k q(z) \geqslant \widetilde{p}(z)
kq(z)⩾p
(z)
计算可得接受概率为
p
(
accept
)
=
∫
{
p
~
(
z
)
/
k
q
(
z
)
}
q
(
z
)
d
z
=
1
k
∫
p
~
(
z
)
d
z
\begin{aligned} p(\text { accept }) &=\int\{\widetilde{p}(z) / k q(z)\} q(z) \mathrm{d} z \\ &=\frac{1}{k} \int \widetilde{p}(z) \mathrm{d} z \end{aligned}
p( accept )=∫{p
(z)/kq(z)}q(z)dz=k1∫p
(z)dz为了让接受率大,就必须保证
k
k
k尽可能小,但又必须满足上面的约束。
11.1.3 Adaptive rejection sampling
在许多我们希望应⽤拒绝采样的情形中,确定概率分布
q
(
z
)
q(z)
q(z)的⼀个合适的解析形式是很困难的。另⼀种确定其函数形式的⽅法是基于概率分布
p
(
z
)
p(z)
p(z)的值直接构建函数形式.对于
p
(
z
)
p(z)
p(z)是对数凹函数的情形,即
l
n
p
(
z
)
ln p(z)
lnp(z)的导数是
z
z
z的单调⾮增函数时,界限函数的构建是相当简单的。下图给出了⼀个合适的界限函数的构建的例⼦。
ln
p
(
z
)
\ln p(z)
lnp(z)和它的梯度在预先设定的一些点上计算得到,从而可以确定该直线的方程式子,则取exp后得到分段分布刚好为指数分布
q
(
z
)
=
k
i
λ
i
exp
{
−
λ
i
(
z
−
z
i
−
1
)
}
z
i
−
1
<
z
⩽
z
i
q(z)=k_{i} \lambda_{i} \exp \left\{-\lambda_{i}\left(z-z_{i-1}\right)\right\} \quad z_{i-1}<z \leqslant z_{i}
q(z)=kiλiexp{−λi(z−zi−1)}zi−1<z⩽zi采样可以采取之前的inverse CDF方法即可。
11.1.4 Importance sampling
之所以进行采样,是为了计算期望,重要采样(importance sampling)的⽅法提供了直接近似期望的框架,但是它本⾝并没有提供从概率分布
p
(
z
)
p(\mathbf z)
p(z)中采样的⽅法。
一般来说
p
(
z
)
p(\mathbf z)
p(z)的PDF是知道的,就是很难进行采样,一个很简单的策略是将
z
\mathbf z
z空间网格化,则
E
[
f
]
≃
∑
l
=
1
L
p
(
z
(
l
)
)
f
(
z
(
l
)
)
\mathbb{E}[f] \simeq \sum_{l=1}^{L} p\left(\mathbf{z}^{(l)}\right) f\left(\mathbf{z}^{(l)}\right)
E[f]≃l=1∑Lp(z(l))f(z(l))但是这个方法对于维度高的数据来说就很费时,而且很大部分分布其实是仅仅集中在
z
\mathbf z
z空间的一部分,那么所有空间均匀网格化十分没必要,因此如果能采样到这些集中的区域,或者更理想的是
p
(
z
)
f
(
z
)
p(\mathbf{z}) f(\mathbf{z})
p(z)f(z)大的区域,那么效率将会提升!
因此可以考虑一个易于采样的proposal 分布
q
(
z
)
q(\mathbf z)
q(z),则
E
[
f
]
=
∫
f
(
z
)
p
(
z
)
d
z
=
∫
f
(
z
)
p
(
z
)
q
(
z
)
q
(
z
)
d
z
≃
1
L
∑
l
=
1
L
p
(
z
(
l
)
)
q
(
z
(
l
)
)
f
(
z
(
l
)
)
\begin{aligned} \mathbb{E}[f] &=\int f(\mathbf{z}) p(\mathbf{z}) \mathrm{d} \mathbf{z} \\ &=\int f(\mathbf{z}) \frac{p(\mathbf{z})}{q(\mathbf{z})} q(\mathbf{z}) \mathrm{d} \mathbf{z} \\ & \simeq \frac{1}{L} \sum_{l=1}^{L} \frac{p\left(\mathbf{z}^{(l)}\right)}{q\left(\mathbf{z}^{(l)}\right)} f\left(\mathbf{z}^{(l)}\right) \end{aligned}
E[f]=∫f(z)p(z)dz=∫f(z)q(z)p(z)q(z)dz≃L1l=1∑Lq(z(l))p(z(l))f(z(l))其中
r
l
=
p
(
z
(
l
)
)
/
q
(
z
(
l
)
)
r_{l}=p\left(\mathbf{z}^{(l)}\right) / q\left(\mathbf{z}^{(l)}\right)
rl=p(z(l))/q(z(l))为importance weights。修正了由于从错误的概率分布中采样引⼊的偏差。注意,与拒绝采样不同,所有⽣成的样本都被保留。
同样地对于非归一化的分布
p
(
z
)
=
p
~
(
z
)
/
Z
p
p(\mathbf{z})=\widetilde{p}(\mathbf{z}) / Z_{p}
p(z)=p
(z)/Zp,其中
Z
p
Z_{p}
Zp未知
E
[
f
]
=
∫
f
(
z
)
p
(
z
)
d
z
=
Z
q
Z
p
∫
f
(
z
)
p
~
(
z
)
q
~
(
z
)
q
(
z
)
d
z
≃
Z
q
Z
p
1
L
∑
l
=
1
L
r
~
l
f
(
z
(
l
)
)
\begin{aligned} \mathbb{E}[f] &=\int f(\mathbf{z}) p(\mathbf{z}) \mathrm{d} \mathbf{z} \\ &=\frac{Z_{q}}{Z_{p}} \int f(\mathbf{z}) \frac{\widetilde{p}(\mathbf{z})}{\widetilde{q}(\mathbf{z})} q(\mathbf{z}) \mathrm{d} \mathbf{z} \\ & \simeq \frac{Z_{q}}{Z_{p}} \frac{1}{L} \sum_{l=1}^{L} \widetilde{r}_{l} f\left(\mathbf{z}^{(l)}\right) \end{aligned}
E[f]=∫f(z)p(z)dz=ZpZq∫f(z)q
(z)p
(z)q(z)dz≃ZpZqL1l=1∑Lr
lf(z(l))其中
r
~
l
=
p
~
(
z
(
l
)
)
/
q
~
(
z
(
l
)
)
\widetilde{r}_{l}=\widetilde{p}\left(\mathbf{z}^{(l)}\right) / \widetilde{q}\left(\mathbf{z}^{(l)}\right)
r
l=p
(z(l))/q
(z(l)),用同样的采样点,可以得到
Z
p
Z
q
=
1
Z
q
∫
p
~
(
z
)
d
z
=
∫
p
~
(
z
)
q
~
(
z
)
q
(
z
)
d
z
≃
1
L
∑
l
=
1
L
r
~
l
\begin{aligned} \frac{Z_{p}}{Z_{q}} &=\frac{1}{Z_{q}} \int \widetilde{p}(\mathbf{z}) \mathrm{d} \mathbf{z}=\int \frac{\widetilde{p}(\mathbf{z})}{\widetilde{q}(\mathbf{z})} q(\mathbf{z}) \mathrm{d} \mathbf{z} \\ & \simeq \frac{1}{L} \sum_{l=1}^{L} \widetilde{r}_{l} \end{aligned}
ZqZp=Zq1∫p
(z)dz=∫q
(z)p
(z)q(z)dz≃L1l=1∑Lr
l因此
E
[
f
]
≃
∑
l
=
1
L
w
l
f
(
z
(
l
)
)
\mathbb{E}[f] \simeq \sum_{l=1}^{L} w_{l} f\left(\mathbf{z}^{(l)}\right)
E[f]≃l=1∑Lwlf(z(l))其中
w
l
=
r
~
l
∑
m
r
~
m
=
p
~
(
z
(
l
)
)
/
q
(
z
(
l
)
)
∑
m
p
~
(
z
(
m
)
)
/
q
(
z
(
m
)
)
w_{l}=\frac{\widetilde{r}_{l}}{\sum_{m} \widetilde{r}_{m}}=\frac{\widetilde{p}\left(\mathbf{z}^{(l)}\right) / q\left(\mathbf{z}^{(l)}\right)}{\sum_{m} \widetilde{p}\left(\mathbf{z}^{(m)}\right) / q\left(\mathbf{z}^{(m)}\right)}
wl=∑mr
mr
l=∑mp
(z(m))/q(z(m))p
(z(l))/q(z(l))与拒绝采样一样,其成功严重依赖proposal分布选择的合适程度。因此,重要性采样⽅法的⼀个主要的缺点是它具有产⽣任意错误的结果的可能性,并且这种错误⽆法检测。这也强调了采样分布
q
(
z
)
q(\mathbf{z})
q(z)的⼀个关键的要求,即它不应该在
p
(
z
)
p(\mathbf{z})
p(z)可能较⼤的区域中取得较⼩的值或者为零的值。
11.1.5 Sampling-importance-resampling
拒绝采样⽅法部分依赖于它能够成功确定常数
k
k
k的⼀个合适的值。对于许多对概率分布
p
(
z
)
p(\mathbf z)
p(z)和
q
(
z
)
q(\mathbf z)
q(z)来说,确定⼀个合适的
k
k
k值是不现实的,因为任意的⾜够⼤的
k
k
k值都能够保证产⽣所求的分布的上界,但是这会产⽣相当⼩的接受率。
sampling-importance-resampling (SIR)跟RS一样,利用
q
(
z
)
q(\mathbf{z})
q(z),但是不需要求
k
k
k值。首先从
q
(
z
)
q(\mathbf z)
q(z)抽样
z
(
1
)
,
…
,
z
(
L
)
\mathbf{z}^{(1)}, \ldots, \mathbf{z}^{(L)}
z(1),…,z(L),利用
w
l
=
r
~
l
∑
m
r
~
m
=
p
~
(
z
(
l
)
)
/
q
(
z
(
l
)
)
∑
m
p
~
(
z
(
m
)
)
/
q
(
z
(
m
)
)
w_{l}=\frac{\widetilde{r}_{l}}{\sum_{m} \widetilde{r}_{m}}=\frac{\widetilde{p}\left(\mathbf{z}^{(l)}\right) / q\left(\mathbf{z}^{(l)}\right)}{\sum_{m} \widetilde{p}\left(\mathbf{z}^{(m)}\right) / q\left(\mathbf{z}^{(m)}\right)}
wl=∑mr
mr
l=∑mp
(z(m))/q(z(m))p
(z(l))/q(z(l))得到
(
w
1
,
…
,
w
L
)
\left(w_{1}, \ldots, w_{L}\right)
(w1,…,wL)。最后,
L
L
L个样本的第⼆个集合从离散概率分布(
z
(
1
)
,
…
,
z
(
L
)
\mathbf{z}^{(1)}, \ldots, \mathbf{z}^{(L)}
z(1),…,z(L))中抽取,概率由权值
(
w
1
,
…
,
w
L
)
\left(w_{1}, \ldots, w_{L}\right)
(w1,…,wL)给定。⽣成的
L
L
L个样本只是近似地服从
p
(
z
)
p(\mathbf z)
p(z),但是在极限
L
→
∞
L \rightarrow \infty
L→∞的情况下,分布变为了正确的分布。为了说明这⼀点,考虑⼀元变量的情形,并且注意重新采样的值的累积分布为
p
(
z
⩽
a
)
=
∑
l
:
z
(
l
)
⩽
a
w
l
=
∑
l
I
(
z
(
l
)
⩽
a
)
p
~
(
z
(
l
)
)
/
q
(
z
(
l
)
)
∑
l
p
~
(
z
(
l
)
)
/
q
(
z
(
l
)
)
\begin{aligned} p(z \leqslant a) &=\sum_{l : z^{(l)} \leqslant a} w_{l} \\ &=\frac{\sum_{l} I\left(z^{(l)} \leqslant a\right) \widetilde{p}\left(z^{(l)}\right) / q\left(z^{(l)}\right)}{\sum_{l} \widetilde{p}\left(z^{(l)}\right) / q\left(z^{(l)}\right)} \end{aligned}
p(z⩽a)=l:z(l)⩽a∑wl=∑lp
(z(l))/q(z(l))∑lI(z(l)⩽a)p
(z(l))/q(z(l))当
L
→
∞
L \rightarrow \infty
L→∞,并且假设概率分布进⾏了适当的正则化,我们可以将求和替换为积分,权值为原始的采样分布
q
(
z
)
q(z)
q(z),即
p
(
z
⩽
a
)
=
∫
I
(
z
⩽
a
)
{
p
~
(
z
)
/
q
(
z
)
}
q
(
z
)
d
z
∫
{
p
~
(
z
)
/
q
(
z
)
}
q
(
z
)
d
z
=
∫
I
(
z
⩽
a
)
p
~
(
z
)
d
z
∫
p
~
(
z
)
d
z
=
∫
I
(
z
⩽
a
)
p
(
z
)
d
z
\begin{aligned} p(z \leqslant a) &=\frac{\int I(z \leqslant a)\{\widetilde{p}(z) / q(z)\} q(z) \mathrm{d} z}{\int\{\widetilde{p}(z) / q(z)\} q(z) \mathrm{d} z} \\ &=\frac{\int I(z \leqslant a) \widetilde{p}(z) \mathrm{d} z}{\int \widetilde{p}(z) \mathrm{d} z} \\ &=\int I(z \leqslant a) p(z) \mathrm{d} z \end{aligned}
p(z⩽a)=∫{p
(z)/q(z)}q(z)dz∫I(z⩽a){p
(z)/q(z)}q(z)dz=∫p
(z)dz∫I(z⩽a)p
(z)dz=∫I(z⩽a)p(z)dz这个跟拒绝采样一样,proposal分布越接近
p
(
z
)
p(z)
p(z),则越精确。利用此求各阶矩时,
E
[
f
(
z
)
]
=
∫
f
(
z
)
p
(
z
)
d
z
=
∫
f
(
z
)
[
p
~
(
z
)
/
q
(
z
)
]
q
(
z
)
d
z
∫
[
p
~
(
z
)
/
q
(
z
)
]
q
(
z
)
d
z
≃
∑
l
=
1
L
w
l
f
(
z
l
)
\begin{aligned} \mathbb{E}[f(\mathbf{z})] &=\int f(\mathbf{z}) p(\mathbf{z}) \mathrm{d} \mathbf{z} \\ &=\frac{\int f(\mathbf{z})[\widetilde{p}(\mathbf{z}) / q(\mathbf{z})] q(\mathbf{z}) \mathrm{d} \mathbf{z}}{\int[\widetilde{p}(\mathbf{z}) / q(\mathbf{z})] q(\mathbf{z}) \mathrm{d} \mathbf{z}} \\ & \simeq \sum_{l=1}^{L} w_{l} f\left(\mathbf{z}_{l}\right) \end{aligned}
E[f(z)]=∫f(z)p(z)dz=∫[p
(z)/q(z)]q(z)dz∫f(z)[p
(z)/q(z)]q(z)dz≃l=1∑Lwlf(zl)
11.1.6 Sampling and the EM algorithm
蒙特卡罗⽅法除了为贝叶斯框架的直接实现提供了原理,还在频率学家的框架内起着重要的作⽤,例如寻找最⼤似然解。特别地,对于EM算法中的E步骤⽆法解析地计算的模型,采样⽅法也可以⽤来近似E步骤。考虑⼀个模型,它的隐含变量为
Z
\mathbf Z
Z,可见(观测)变量为
X
\mathbf X
X,参数为
θ
\boldsymbol{\theta}
θ。在M步骤中关于
θ
\boldsymbol{\theta}
θ最⼤化的步骤为完整数据对数似然的期望,形式为
Q
(
θ
,
θ
o
l
d
)
=
∫
p
(
Z
∣
X
,
θ
o
l
d
)
ln
p
(
Z
,
X
∣
θ
)
d
Z
Q\left(\boldsymbol{\theta}, \boldsymbol{\theta}^{\mathrm{old}}\right)=\int p\left(\mathbf{Z} | \mathbf{X}, \boldsymbol{\theta}^{\mathrm{old}}\right) \ln p(\mathbf{Z}, \mathbf{X} | \boldsymbol{\theta}) \mathrm{d} \mathbf{Z}
Q(θ,θold)=∫p(Z∣X,θold)lnp(Z,X∣θ)dZ可以利用采样的方式去近似这个结果
Q
(
θ
,
θ
old
)
≃
1
L
∑
l
=
1
L
ln
p
(
Z
(
l
)
,
X
∣
θ
)
Q\left(\boldsymbol{\theta}, \boldsymbol{\theta}^{\text { old }}\right) \simeq \frac{1}{L} \sum_{l=1}^{L} \ln p\left(\mathbf{Z}^{(l)}, \mathbf{X} | \boldsymbol{\theta}\right)
Q(θ,θ old )≃L1l=1∑Llnp(Z(l),X∣θ)然后在最大化上式,这个方法称为Monte Carlo EM algorithm。跟之前一样,这个还可以引入
θ
\boldsymbol \theta
θ的先验,
Q
(
θ
,
θ
old
)
+
ln
p
(
θ
)
Q\left(\boldsymbol{\theta}, \boldsymbol{\theta}^{\text { old }}\right)+\ln p(\boldsymbol{\theta})
Q(θ,θ old )+lnp(θ)。
蒙特卡罗EM算法的⼀个特定的情形,被称为随机EM(stochastic EM)。如果我们考虑有限数量的概率分布组成的混合模型,并且在每个E步骤中只抽取⼀个样本时,我们就会⽤到这种算法。这⾥,潜在变量
Z
\mathbf Z
Z描述了
K
K
K个混合分量中的哪个分量被⽤于⽣成每个数据点。在E步骤中,
Z
\mathbf Z
Z的样本从后验概率分布
p
(
Z
∣
X
,
θ
o
l
d
)
p\left(\mathbf{Z} | \mathbf{X}, \boldsymbol{\theta}^{\mathrm{old}}\right)
p(Z∣X,θold)中抽取,其中
X
\mathbf X
X是数据集。这⾼效地将每个数据点硬性地分配到混合分布中的⼀个分量中。在M步骤中,对于后验概率分布的这个采样的近似被⽤于按照平常的⽅式更新模型的参数。
现在假设我们从最⼤似然的⽅法转移到纯粹的贝叶斯⽅法,其中我们希望从参数向量
θ
\boldsymbol{\theta}
θ上的后验概率分布中进⾏采样。原则上,我们希望从联合后验分布
p
(
θ
,
Z
∣
X
)
p(\boldsymbol{\theta}, \mathbf{Z} | \mathbf{X})
p(θ,Z∣X)中抽取样本,但是我们假设这个计算⼗分困难。进⼀步地,我们假设从完整数据参数的后验概率分布
p
(
θ
∣
Z
,
X
)
p(\boldsymbol{\theta} | \mathbf{Z}, \mathbf{X})
p(θ∣Z,X)中进⾏采样相对简单。这就产⽣了数据增⼴算法(data augmentation algorithm),它在两个步骤之间交替进⾏,这两个步骤被称为I步骤(归咎(imputation)步骤,类似于E步骤)和P步骤(后验(posterior)步骤,类似于M步骤)。
11.2 Markov Chain Monte Carlo
前⼀节中,我们讨论了计算函数期望的拒绝采样⽅法和重要采样⽅法,我们看到在⾼维空间中,这两种⽅法具有很⼤的局限性。因此,我们在本节中讨论⼀个⾮常⼀般的并且强⼤的框架,被称为马尔科夫链蒙特卡罗(Markov chain Monte Carlo, MCMC),它使得我们可以从⼀⼤类概率分布中进⾏采样,并且可以很好地应对样本空间维度的增长。
与拒绝采样和重要采样相同,我们再⼀次从提议分布中采样。但是这次我们记录下当前状态
z
(
τ
)
\mathbf{z}^{(\tau)}
z(τ),以及依赖于这个当前状态的提议分布
q
(
z
∣
z
(
τ
)
)
q\left(\mathbf{z} | \mathbf{z}^{(\tau)}\right)
q(z∣z(τ)),从⽽样本序列
z
(
1
)
,
z
(
2
)
,
…
\mathbf{z}^{(1)}, \mathbf{z}^{(2)}, \ldots
z(1),z(2),…组成了⼀个马尔科夫链。与之前⼀样,如果我们有
p
(
z
)
=
p
~
(
z
)
/
Z
p
p(\mathbf{z})=\widetilde{p}(\mathbf{z}) / Z_{p}
p(z)=p
(z)/Zp ,那么我们会假定对于任意的
z
\mathbf z
z值都可以计算
p
~
(
z
)
\widetilde{p}(\mathbf{z})
p
(z),虽然
Z
p
Z_{p}
Zp的值可能未知。提议分布本⾝被选择为⾜够简单,从⽽直接采样很容易。在算法的每次迭代中,我们从提议分布中⽣成⼀个候选样本
z
⋆
\mathbf{z}^{\star}
z⋆,然后根据⼀个恰当的准则接受这个样本。
在基本的Metropolis algorithm中,proposal分布为对称的
q
(
z
A
∣
z
B
)
=
q
(
z
B
∣
z
A
)
q\left(\mathbf{z}_{A} | \mathbf{z}_{B}\right)=q\left(\mathbf{z}_{B} | \mathbf{z}_{A}\right)
q(zA∣zB)=q(zB∣zA),则接受概率为
A
(
z
⋆
,
z
(
τ
)
)
=
min
(
1
,
p
~
(
z
⋆
)
p
~
(
z
(
τ
)
)
)
A\left(\mathbf{z}^{\star}, \mathbf{z}^{(\tau)}\right)=\min \left(1, \frac{\widetilde{p}\left(\mathbf{z}^{\star}\right)}{\widetilde{p}\left(\mathbf{z}^{(\tau)}\right)}\right)
A(z⋆,z(τ))=min(1,p
(z(τ))p
(z⋆))当接受时,
z
(
τ
+
1
)
=
z
⋆
\mathbf{z}^{(\tau+1)}=\mathbf{z}^{\star}
z(τ+1)=z⋆,否则
z
(
τ
+
1
)
=
z
τ
\mathbf{z}^{(\tau+1)}=\mathbf{z}^{\tau}
z(τ+1)=zτ,然后再抽样
q
(
z
∣
z
(
τ
+
1
)
)
q\left(\mathbf{z} | \mathbf{z}^{(\tau+1)}\right)
q(z∣z(τ+1)),可以看出,当⼀个候选点被拒绝时,前⼀个样本点会被包含到最终的样本的列表中,从⽽产⽣了样本点的多个副本。正如我们将看到的那样,只要对于任意的
z
A
\mathbf z_A
zA和
z
B
\mathbf z_B
zB都有
q
(
z
A
∣
z
B
)
q(\mathbf z_A | \mathbf z_B)
q(zA∣zB)为正(这是⼀个充分条件但不是必要条件),那么当
τ
→
∞
\tau \rightarrow \infty
τ→∞时,
z
(
τ
)
\mathbf{z}^{(\tau)}
z(τ)趋近于
p
(
z
)
p(\mathbf z)
p(z)。然⽽,应该强调的是,序列
z
(
1
)
,
z
(
2
)
,
…
\mathbf{z}^{(1)}, \mathbf{z}^{(2)}, \ldots
z(1),z(2),…不是来⾃
p
(
z
)
p(\mathbf z)
p(z)的⼀组独⽴的样本,因为连续的样本是⾼度相关的。如果我们希望得到独⽴的样本,那么我们可以丢弃序列中的⼤部分样本,每
M
M
M个样本中保留⼀个样本。对于充分⼤的
M
M
M,保留的样本点对于所有的实际⽤途来说都是独⽴的。下图给出了⼀个简单的例⼦,这个例⼦使⽤Metropolis算法从⼀个⼆维⾼斯分布中采样,其中提议分布是⼀个各向同性的⾼斯分布。
通过考察⼀个具体的例⼦,即简单的随机游⾛的例⼦,我们可以对马尔科夫链蒙特卡罗算法的本质得到更深刻的认识。考虑⼀个由整数组成的状态空间
z
z
z,概率为
p
(
z
(
τ
+
1
)
=
z
(
τ
)
)
=
0.5
p
(
z
(
τ
+
1
)
=
z
(
τ
)
+
1
)
=
0.25
p
(
z
(
τ
+
1
)
=
z
(
τ
)
−
1
)
=
0.25
\begin{aligned} p\left(z^{(\tau+1)}=z^{(\tau)}\right) &=0.5 \\ p\left(z^{(\tau+1)}=z^{(\tau)}+1\right) &=0.25 \\ p\left(z^{(\tau+1)}=z^{(\tau)}-1\right) &=0.25 \end{aligned}
p(z(τ+1)=z(τ))p(z(τ+1)=z(τ)+1)p(z(τ+1)=z(τ)−1)=0.5=0.25=0.25初始值为
z
(
1
)
=
0
z^{(1)}=0
z(1)=0,则
E
[
z
(
τ
)
]
=
0
\mathbb{E}\left[z^{(\tau)}\right]=0
E[z(τ)]=0,
E
[
(
z
(
τ
)
)
2
]
=
τ
/
2
\mathbb{E}\left[\left(z^{(\tau)}\right)^{2}\right]=\tau / 2
E[(z(τ))2]=τ/2。因此,在
τ
\tau
τ步骤之后,随机游⾛所经过的平均距离正⽐于
τ
\tau
τ的平⽅根。这个平⽅根依赖关系是随机游⾛⾏为的⼀个典型性质,表明了随机游⾛在探索状态空间时是很低效的。正如我们会看到的那样,设计马尔科夫链蒙特卡罗⽅法的⼀个中⼼⽬标就是避免随机游⾛⾏为。
11.2.1 Markov chains
在详细讨论马尔科夫链蒙特卡罗⽅法之前,仔细研究马尔科夫链的⼀些⼀般的性质是很有⽤的。特别地,我们考察在什么情况下马尔科夫链会收敛到所求的概率分布上。一阶马尔科夫链
p
(
z
(
m
+
1
)
∣
z
(
1
)
,
…
,
z
(
m
)
)
=
p
(
z
(
m
+
1
)
∣
z
(
m
)
)
p\left(\mathbf{z}^{(m+1)} | \mathbf{z}^{(1)}, \ldots, \mathbf{z}^{(m)}\right)=p\left(\mathbf{z}^{(m+1)} | \mathbf{z}^{(m)}\right)
p(z(m+1)∣z(1),…,z(m))=p(z(m+1)∣z(m))我们可以按照下⾯的⽅式具体化⼀个马尔科夫链:给定初始变量的概率分布
p
(
z
(
0
)
)
p\left(\mathbf{z}^{(0)}\right)
p(z(0)),以及后续变量的条件概率,⽤转移概率(transition probability)
T
m
(
z
(
m
)
,
z
(
m
+
1
)
)
≡
p
(
z
(
m
+
1
)
∣
z
(
m
)
)
T_{m}\left(\mathbf{z}^{(m)}, \mathbf{z}^{(m+1)}\right) \equiv p\left(\mathbf{z}^{(m+1)} | \mathbf{z}^{(m)}\right)
Tm(z(m),z(m+1))≡p(z(m+1)∣z(m))的形式表⽰。如果对于所有的
m
m
m,转移概率都相同,那么这个马尔科夫链被称为同质(homogeneous)。
边缘分布
p
(
z
(
m
+
1
)
)
=
∑
z
(
m
)
p
(
z
(
m
+
1
)
∣
z
(
m
)
)
p
(
z
(
m
)
)
p\left(\mathbf{z}^{(m+1)}\right)=\sum_{\mathbf{z}^{(m)}} p\left(\mathbf{z}^{(m+1)} | \mathbf{z}^{(m)}\right) p\left(\mathbf{z}^{(m)}\right)
p(z(m+1))=z(m)∑p(z(m+1)∣z(m))p(z(m))对于⼀个概率分布来说,如果马尔科夫链中的每⼀步都让这个概率分布保持不变,那么我们说这个概率分布关于这个马尔科夫链是不变的,或者静⽌的。因此,对于⼀个转移概率为
T
(
z
′
,
z
)
T\left(\mathbf{z}^{\prime}, \mathbf{z}\right)
T(z′,z)的同质的马尔科夫链来说,如果
p
⋆
(
z
)
=
∑
z
′
T
(
z
′
,
z
)
p
⋆
(
z
′
)
p^{\star}(\mathbf{z})=\sum_{\mathbf{z}^{\prime}} T\left(\mathbf{z}^{\prime}, \mathbf{z}\right) p^{\star}\left(\mathbf{z}^{\prime}\right)
p⋆(z)=z′∑T(z′,z)p⋆(z′)分布
p
⋆
(
z
)
p^{\star}(\mathbf{z})
p⋆(z)就是不变的。注意,⼀个给定的马尔科夫链可能有多个不变的概率分布。例如,如果转移概率由恒等变换给出,那么任意的概率分布都是不变的。
确保所求的概率分布
p
(
z
)
p(\mathbf z)
p(z)不变的⼀个充分(⾮必要)条件是令转移概率满⾜细节平衡(detailed balance)性质,定义为
p
⋆
(
z
)
T
(
z
,
z
′
)
=
p
⋆
(
z
′
)
T
(
z
′
,
z
)
p^{\star}(\mathbf{z}) T\left(\mathbf{z}, \mathbf{z}^{\prime}\right)=p^{\star}\left(\mathbf{z}^{\prime}\right) T\left(\mathbf{z}^{\prime}, \mathbf{z}\right)
p⋆(z)T(z,z′)=p⋆(z′)T(z′,z)很容易看到,满⾜关于特定概率分布的细节平衡性质的转移概率会使得那个概率分布具有不变性
∑
z
′
p
⋆
(
z
′
)
T
(
z
′
,
z
)
=
∑
z
′
p
⋆
(
z
)
T
(
z
,
z
′
)
=
p
⋆
(
z
)
∑
z
′
p
(
z
′
∣
z
)
=
p
⋆
(
z
)
\sum_{\mathbf{z}^{\prime}} p^{\star}\left(\mathbf{z}^{\prime}\right) T\left(\mathbf{z}^{\prime}, \mathbf{z}\right)=\sum_{\mathbf{z}^{\prime}} p^{\star}(\mathbf{z}) T\left(\mathbf{z}, \mathbf{z}^{\prime}\right)=p^{\star}(\mathbf{z}) \sum_{\mathbf{z}^{\prime}} p\left(\mathbf{z}^{\prime} | \mathbf{z}\right)=p^{\star}(\mathbf{z})
z′∑p⋆(z′)T(z′,z)=z′∑p⋆(z)T(z,z′)=p⋆(z)z′∑p(z′∣z)=p⋆(z)满⾜细节平衡性质的马尔科夫链被称为可翻转的(reversible)。我们的⽬标是使⽤马尔科夫链从⼀个给定的概率分布中采样。如果我们构造⼀个马尔科夫链使得所求的概率分布是不变的,那么我们就可以达到这个⽬标。然⽽,我们还要要求对于
m
→
∞
m \rightarrow \infty
m→∞,概率分布
p
(
z
(
m
)
)
p\left(\mathbf{z}^{(m)}\right)
p(z(m))收敛到所求的不变的概率分布
p
⋆
(
z
)
p^{\star}(\mathbf{z})
p⋆(z),与初始概率分布
p
(
z
(
0
)
)
p\left(\mathbf{z}^{(0)}\right)
p(z(0))⽆关。这种性质被称为各态历经性(ergodicity),这个不变的概率分布被称为均衡(equilibrium)分布。很明显,⼀个具有各态历经性的马尔科夫链只能有唯⼀的⼀个均衡分布。可以证明,同质的马尔科夫链具有各态历经性,只需对不变的概率分布和转移概率做出较弱的限制即可(Neal, 1993)。
在实际中,我们经常可以从⼀组“基”转移
B
1
,
…
,
B
K
B_{1}, \dots, B_{K}
B1,…,BK中构建转移概率,⽅法为:将各个“基”转移表⽰为混合概率分布,形式为
T
(
z
′
,
z
)
=
∑
k
=
1
K
α
k
B
k
(
z
′
,
z
)
T\left(\mathbf{z}^{\prime}, \mathbf{z}\right)=\sum_{k=1}^{K} \alpha_{k} B_{k}\left(\mathbf{z}^{\prime}, \mathbf{z}\right)
T(z′,z)=k=1∑KαkBk(z′,z)mixing coefficients
α
1
,
…
,
α
K
\alpha_{1}, \ldots, \alpha_{K}
α1,…,αK satisfying
α
k
⩾
0
\alpha_{k} \geqslant 0
αk⩾0 and
∑
k
α
k
=
1
\sum_{k} \alpha_{k}=1
∑kαk=1此外,基转移可以通过连续的应⽤组合到⼀起,
T
(
z
′
,
z
)
=
∑
z
1
…
∑
z
n
−
1
B
1
(
z
′
,
z
1
)
…
B
K
−
1
(
z
K
−
2
,
Z
K
−
1
)
B
K
(
z
K
−
1
,
z
)
T\left(\mathbf{z}^{\prime}, \mathbf{z}\right)=\sum_{\mathbf{z}_{1}} \ldots \sum_{\mathbf{z}_{n-1}} B_{1}\left(\mathbf{z}^{\prime}, \mathbf{z}_{1}\right) \ldots B_{K-1}\left(\mathbf{z}_{K-2}, \mathbf{Z}_{K-1}\right) B_{K}\left(\mathbf{z}_{K-1}, \mathbf{z}\right)
T(z′,z)=z1∑…zn−1∑B1(z′,z1)…BK−1(zK−2,ZK−1)BK(zK−1,z)如果⼀个概率分布关于每个基转移都是不变的,那么显然它关于公式(1)和(2)也是不变的。对于公式(1)的混合分布,如果每个基转移满⾜细节平衡,那么混合转移
T
T
T也满⾜细节平衡。这对于使⽤公式(2)构造的转移概率不成⽴,虽然通过将基转移的顺序对称化,即采⽤
B
1
,
B
2
,
…
,
B
K
,
B
K
,
…
,
B
2
,
B
1
B_{1}, B_{2}, \ldots, B_{K}, B_{K}, \ldots, B_{2}, B_{1}
B1,B2,…,BK,BK,…,B2,B1的形式,细节平衡的性质可以被恢复。使⽤组合转移概率的⼀个常见的例⼦是每个基转移只改变变量的⼀个⼦集的情形。
11.2.2 The Metropolis-Hastings algorithm
之前介绍了基本的Metropolis算法,现在说一个更加一般的方法,在当前得到状态
z
(
τ
)
\mathbf{z}^{(\tau)}
z(τ),从
q
k
(
z
∣
z
(
τ
)
)
q_{k}\left(\mathbf{z} | \mathbf{z}^{(\tau)}\right)
qk(z∣z(τ))抽样出
z
⋆
\mathbf{z}^{\star}
z⋆,则接受概率为
A
k
(
z
⋆
,
z
(
τ
)
)
=
min
(
1
,
p
~
(
z
⋆
)
q
k
(
z
(
τ
)
∣
z
⋆
)
p
~
(
z
(
τ
)
)
q
k
(
z
⋆
∣
z
(
τ
)
)
)
A_{k}\left(\mathbf{z}^{\star}, \mathbf{z}^{(\tau)}\right)=\min \left(1, \frac{\widetilde{p}\left(\mathbf{z}^{\star}\right) q_{k}\left(\mathbf{z}^{(\tau)} | \mathbf{z}^{\star}\right)}{\widetilde{p}\left(\mathbf{z}^{(\tau)}\right) q_{k}\left(\mathbf{z}^{\star} | \mathbf{z}^{(\tau)}\right)}\right)
Ak(z⋆,z(τ))=min(1,p
(z(τ))qk(z⋆∣z(τ))p
(z⋆)qk(z(τ)∣z⋆))与之前一样,也可不用归一化的
p
(
z
)
p(\mathbf z)
p(z)。而Metropolis算法,取的是对称的proposal分布。下面将证明
p
(
z
)
p(\mathbf z)
p(z)是构造出来的马尔科夫链的平稳分布。
p
(
z
)
q
k
(
z
′
∣
z
)
A
k
(
z
′
,
z
)
=
min
(
p
(
z
)
q
k
(
z
′
∣
z
)
,
p
(
z
′
)
q
k
(
z
∣
z
′
)
)
=
min
(
p
(
z
′
)
q
k
(
z
∣
z
′
)
,
p
(
z
)
q
k
(
z
′
∣
z
)
)
=
p
(
z
′
)
q
k
(
z
∣
z
′
)
A
k
(
z
,
z
′
)
\begin{aligned} p(\mathbf{z}) q_{k}\left(\mathbf{z}^{\prime} | \mathbf{z}\right) A_{k}\left(\mathbf{z}^{\prime}, \mathbf{z}\right) &=\min \left(p(\mathbf{z}) q_{k}\left(\mathbf{z}^{\prime} | \mathbf{z}\right), p\left(\mathbf{z}^{\prime}\right) q_{k}\left(\mathbf{z} | \mathbf{z}^{\prime}\right)\right) \\ &=\min \left(p(\mathbf{z}^{\prime}) q_{k}\left(\mathbf{z} | \mathbf{z}^{\prime}\right),p\left(\mathbf{z}\right) q_{k}\left(\mathbf{z}^{\prime} | \mathbf{z}\right)\right) \\ &=p\left(\mathbf{z}^{\prime}\right) q_{k}\left(\mathbf{z} | \mathbf{z}^{\prime}\right) A_{k}\left(\mathbf{z}, \mathbf{z}^{\prime}\right) \end{aligned}
p(z)qk(z′∣z)Ak(z′,z)=min(p(z)qk(z′∣z),p(z′)qk(z∣z′))=min(p(z′)qk(z∣z′),p(z)qk(z′∣z))=p(z′)qk(z∣z′)Ak(z,z′)
提议分布的具体的选择会对算法的表现产⽣重要的影响。对于连续状态空间来说,⼀个常见的选择是⼀个以当前状态为中⼼的⾼斯分布,这会在确定分布的⽅差参数时需要进⾏⼀个重要的折中。如果⽅差过⼩,那么接受的转移的⽐例会很⾼,但是遍历状态空间的形式是⼀个缓慢的随机游⾛过程,导致较长的时间开销。然⽽,如果⽅差过⼤,那么拒绝率会很⾼,因为在我们考虑的这种复杂问题中,许多的步骤会到达
p
(
z
)
p(\mathbf{z})
p(z)很低的状态。考虑⼀个多元概率分布
p
(
z
)
p(\mathbf{z})
p(z),它在
z
\mathbf z
z的元素之间具有很强的相关性,如图所⽰。提议分布的标度
ρ
\rho
ρ应该尽可能⼤,同时要避免达到较⾼的拒绝率。这表明,
ρ
\rho
ρ应该与最⼩的长度标度
σ
min
\sigma_{\min }
σmin是同⼀个量级的。然后,系统通过随机游⾛的⽅式探索伸长的⽅向,因此到达⼀个与原始状态或多或少独⽴的状态所需的步骤数量是
(
σ
max
/
σ
min
)
2
\left(\sigma_{\max } / \sigma_{\min }\right)^{2}
(σmax/σmin)2量级的。事实上,在⼆维的情形下,随着
ρ
\rho
ρ的增加,拒绝率的增加会被接收的转移步骤数的增加所抵消。更⼀般地,对于多元⾼斯分布,得到独⽴样本所需的步骤的数量的增长量级是
(
σ
max
/
σ
2
)
2
\left(\sigma_{\max } / \sigma_{2}\right)^{2}
(σmax/σ2)2的,其中
σ
2
\sigma_{2}
σ2是第⼆⼩的标准差(Neal, 1993)。抛开这些细节不谈,如果概率分布在不同的⽅向上的差异⾮常⼤,那么Metropolis-Hastings算法的收敛速度会⾮常慢。
11.3 Gibbs Sampling
我们需要从分布
p
(
z
)
=
p
(
z
1
,
…
,
z
M
)
p(\mathbf{z})=p\left(z_{1}, \ldots, z_{M}\right)
p(z)=p(z1,…,zM)中采样,假定我们已经初始化了马尔科夫链,Gibbs采样是每次从条件分布
p
(
z
i
∣
z
\
i
)
p\left(z_{i} | \mathbf{z}_{\backslash i}\right)
p(zi∣z\i)中采样代替
z
i
z_i
zi。
具体地,采样
p
(
z
1
,
z
2
,
z
3
)
p\left(z_{1}, z_{2}, z_{3}\right)
p(z1,z2,z3),在某步有
z
1
(
τ
)
,
z
2
(
τ
)
z_{1}^{(\tau)}, z_{2}^{(\tau)}
z1(τ),z2(τ) and
z
3
(
τ
)
z_{3}^{(\tau)}
z3(τ),从
p
(
z
1
∣
z
2
(
τ
)
,
z
3
(
τ
)
)
p\left(z_{1} | z_{2}^{(\tau)}, z_{3}^{(\tau)}\right)
p(z1∣z2(τ),z3(τ))中采出
z
1
(
τ
+
1
)
z_{1}^{(\tau+1)}
z1(τ+1)替代
z
1
(
τ
)
z_{1}^{(\tau)}
z1(τ);然后从
p
(
z
2
∣
z
1
(
τ
+
1
)
,
z
3
(
τ
)
)
p\left(z_{2} | z_{1}^{(\tau+1)}, z_{3}^{(\tau)}\right)
p(z2∣z1(τ+1),z3(τ))采出
z
2
(
τ
+
1
)
z_{2}^{(\tau+1)}
z2(τ+1)替代
z
2
(
τ
)
z_{2}^{(\tau)}
z2(τ);然后从
p
(
z
3
∣
z
1
(
τ
+
1
)
,
z
2
(
τ
+
1
)
)
p\left(z_{3} | z_{1}^{(\tau+1)}, z_{2}^{(\tau+1)}\right)
p(z3∣z1(τ+1),z2(τ+1))
采出
z
3
(
τ
+
1
)
z_{3}^{(\tau+1)}
z3(τ+1)。
只需要证明符合细致平稳过程即可,很容易。还需要说明这个过程为各态历经性。各态历经性的⼀个充分条件是没有条件概率分布处处为零。如果这个要求满⾜,那么
z
\mathbf z
z空间中的任意⼀点都可以从其他的任意⼀点经过有限步骤达到,这些步骤中每次对⼀个变量进⾏更新。如果这个要求没有满⾜,即某些条件概率分布为零,那么在这种情况下应⽤吉布斯采样时,必须显式地证明各态历经性。
为了完成算法,初始状态的概率分布也应该被指定,虽然在多轮迭代之后,样本与初始状态的分布⽆关。当然,马尔科夫链中的连续的样本是⾼度相关的,因此为了得到近似独⽴的样本,需要对序列进⾏下采样。
我们可以将吉布斯采样步骤看成Metropolis-Hastings算法的⼀个特定的情况,如下所述。取proposal分布为
q
k
(
z
⋆
∣
z
)
=
p
(
z
k
⋆
∣
z
\
k
)
q_{k}\left(\mathbf{z}^{\star} | \mathbf{z}\right)=p\left(z_{k}^{\star} | \mathbf{z} _{\backslash k}\right)
qk(z⋆∣z)=p(zk⋆∣z\k),其中
z
\
k
⋆
=
z
\
k
\mathbf{z}_{\backslash k}^{\star}=\mathbf{z}_{\backslash k}
z\k⋆=z\k。此时接受率为
A
(
z
⋆
,
z
)
=
p
(
z
⋆
)
q
k
(
z
∣
z
⋆
)
p
(
z
)
q
k
(
z
⋆
∣
z
)
=
p
(
z
k
⋆
∣
z
k
⋆
)
p
(
z
\
k
⋆
)
p
(
z
k
∣
z
\
k
⋆
)
p
(
z
k
∣
z
\
k
)
p
(
z
\
k
)
p
(
z
k
⋆
∣
z
\
k
)
=
1
A\left(\mathbf{z}^{\star}, \mathbf{z}\right)=\frac{p\left(\mathbf{z}^{\star}\right) q_{k}\left(\mathbf{z} | \mathbf{z}^{\star}\right)}{p(\mathbf{z}) q_{k}\left(\mathbf{z}^{\star} | \mathbf{z}\right)}=\frac{p\left(z_{k}^{\star} | \mathbf{z}_{k}^{\star}\right) p\left(\mathbf{z}_{\backslash k}^{\star}\right) p\left(z_{k} | \mathbf{z}_{\backslash k}^{\star}\right)}{p\left(z_{k} | \mathbf{z}_{\backslash k}\right) p\left(\mathbf{z}_{\backslash k}\right) p\left(z_{k}^{\star} | \mathbf{z}_{\backslash k}\right)}=1
A(z⋆,z)=p(z)qk(z⋆∣z)p(z⋆)qk(z∣z⋆)=p(zk∣z\k)p(z\k)p(zk⋆∣z\k)p(zk⋆∣zk⋆)p(z\k⋆)p(zk∣z\k⋆)=1此时接受率为1。与Metropolis算法⼀样,我们可以通过研究吉布斯采样算法在⾼斯分布上的应⽤,更深刻地认识算法的原理。考虑两个相关变量上的⼀个⾼斯分布,如图所⽰。这个⾼斯分布的条件概率分布的宽度为
l
l
l,边缘概率分布的宽度为
L
L
L。典型的步长由条件概率分布确定,从⽽量级为
l
l
l。由于状态按照随机游⾛的⽅式进⾏转移,因此得到这个分布中的独⽴样本所需的步骤数量的量级为
(
L
/
l
)
2
(L/l)^2
(L/l)2。当然,如果⾼斯分布不是相关的,那么吉布斯采样的效率是最⾼的。对于这个简单的问题,我们可以将坐标系旋转,从⽽解除变量之间的相关关系。然⽽,在实际应⽤中,通常找到这种变换是不可⾏的。
⼀种减⼩吉布斯采样过程中的随机游⾛⾏为的⽅法被称为过松弛(over-relaxation)(Adler,1981)。在这种⽅法的最初的形式中,它被⽤于处理条件概率分布是⾼斯分布的情形,这种情形要⽐多元⾼斯分布更⼀般,因为诸如⾮⾼斯分布
p
(
z
,
y
)
∝
exp
(
−
z
2
y
2
)
p(z, y) \propto \exp \left(-z^{2} y^{2}\right)
p(z,y)∝exp(−z2y2)具有⾼斯条件分布的形式。在吉布斯采样算法的每个步骤中,对于⼀个特定的分量
z
i
z_{i}
zi,条件概率分布具有均值
μ
i
\mu_{i}
μi和⽅差
σ
i
2
\sigma_{i}^{2}
σi2。在过松弛框架中,
z
i
z_{i}
zi被替换为
z
i
′
=
μ
i
+
α
(
z
i
−
μ
i
)
+
σ
i
(
1
−
α
2
)
1
/
2
ν
z_{i}^{\prime}=\mu_{i}+\alpha\left(z_{i}-\mu_{i}\right)+\sigma_{i}\left(1-\alpha^{2}\right)^{1 / 2} \nu
zi′=μi+α(zi−μi)+σi(1−α2)1/2ν其中
ν
\nu
ν为标准高斯分布,
−
1
<
α
<
1
-1<\alpha<1
−1<α<1,当
α
=
0
\alpha=0
α=0时,此为标准的Gibbs采样,当
α
<
0
\alpha<0
α<0时,步骤会偏向于与均值相反的⼀侧。这个步骤使得所求的概率分布具有不变性,因为如果
z
i
z_i
zi的均值为
μ
i
\mu_{i}
μi,⽅差为
σ
i
2
\sigma_{i}^{2}
σi2 ,那么
z
i
′
z_{i}^{\prime}
zi′也是。过松弛的效果是当变量⾼度相关时,⿎励在状态空间中的直接移动。有序过松(ordered over-relaxation)框架(Neal, 1999)将这种⽅法推⼴到了⾮⾼斯分布的情形。
具体运用Gibbs采样在图模型中,都是从
p
(
z
k
∣
z
\
k
)
p\left(z_{k} | \mathbf{z}_{\backslash k}\right)
p(zk∣z\k)采样,对于剩下的节点主要就是马尔科夫毯,如图所示
对于有向图来说,以某个结点的⽗结点为条件,这个结点的⼀⼤类条件概率分布都会使得⽤于吉布斯采样的概率分布是对数凹函数。于是,11.1.3节讨论的可调节拒绝采样⽅法提供了有向图的蒙特卡罗采样⽅法的⼀个框架,这种⽅法具有⼴泛的适⽤性。
如果图是使⽤指数族分布构建的,并且⽗结点-⼦结点关系保持共轭,那么吉布斯采样中的完整的条件概率分布会与定义在每个结点的原始的条件概率分布(以⽗结点为条件)具有相同的函数形式,因此可以使⽤标准的采样⽅法。通常,完整的条件概率分布的形式会很复杂,从⽽⽆法使⽤标准的采样⽅法。然⽽,如果这些条件概率分布是对数凹函数,那么使⽤可调整的拒绝采样⽅法,采样可以⾼效地完成(假设对应的变量是标量)。
如果在吉布斯采样算法的每个阶段,我们不从对应的条件概率分布中抽取样本,⽽是对变量进⾏⼀个点估计,这个点估计由条件概率分布的最⼤值给出,那么我们就得到了8.3.3节讨论的迭代条件峰值(ICM)算法。因此,ICM可以看成是吉布斯采样的⼀种贪⼼近似。
由于基本的吉布斯采样⽅法每次只考虑⼀个变量,因此它在连续样本之间具有很强的依赖性。在另⼀个极端情况下,如果我们直接从联合概率分布中采样(我们⼀直假定这种操作⽆法完成),那么连续的样本点之间就是独⽴的。我们可以采⽤⼀种折中的⽅法来提升简单的吉布斯采样的效果,即我们连续地对⼀组变量进⾏采样,⽽不是对⼀个变量进⾏采样。这就是分块吉布斯(blocking Gibbs)采样算法。这种算法中,将变量集合分块(未必互斥),然后在每个块内部联合地采样,采样时以剩余的变量为条件(Jensen et al., 1995)。
11.4 Slice Sampling
我们已经看到,Metropolis算法的⼀个困难之处是它对于步长的敏感性。如果步长过⼩,那么由于随机游⾛⾏为,算法会很慢。⽽如果步长过⼤,那么由于较⾼的拒绝率,算法会很低效。切⽚采样(slice sampling)⽅法(Neal, 2003)提供了⼀个可以⾃动调节步长来匹配分布特征的⽅法。与之前⼀样,它需要我们能够计算未归⼀化的概率分布
p
~
(
z
)
\widetilde{p}(\mathbf{z})
p
(z)。
首先考虑单变量的情况,切片采样对
z
z
z进行增广,即从联合分布
(
z
,
u
)
(z, u)
(z,u)中采样。之后hybrid Monte Carlo也是采用这种形式。从该分布空间中均匀采样
p
^
(
z
,
u
)
=
{
1
/
Z
p
if
0
⩽
u
⩽
p
~
(
z
)
0
otherwise
\widehat{p}(z, u)=\left\{\begin{array}{ll}{1 / Z_{p}} & {\text { if } 0 \leqslant u \leqslant \widetilde{p}(z)} \\ {0} & {\text { otherwise }}\end{array}\right.
p
(z,u)={1/Zp0 if 0⩽u⩽p
(z) otherwise 其中
Z
p
=
∫
p
~
(
z
)
d
z
Z_{p}=\int \widetilde{p}(z) \mathrm{d} z
Zp=∫p
(z)dz,则边缘分布为
∫
p
^
(
z
,
u
)
d
u
=
∫
0
p
~
(
z
)
1
Z
p
d
u
=
p
~
(
z
)
Z
p
=
p
(
z
)
\int \widehat{p}(z, u) \mathrm{d} u=\int_{0}^{\widetilde{p}(z)} \frac{1}{Z_{p}} \mathrm{d} u=\frac{\widetilde{p}(z)}{Z_{p}}=p(z)
∫p
(z,u)du=∫0p
(z)Zp1du=Zpp
(z)=p(z)则我们可以从
p
^
(
z
,
u
)
\widehat{p}(z, u)
p
(z,u)采出
z
,
u
z,u
z,u并且忽略
u
u
u,则得到了
p
(
z
)
p(z)
p(z)采出的样本。具体来说,可以迭代地采样
z
,
u
z,u
z,u,首先给定
z
z
z,得到
p
~
(
z
)
\tilde{p}(z)
p~(z),然后从
[
0
,
p
~
(
z
)
]
[0,\tilde{p}(z)]
[0,p~(z)]中均匀采出
u
u
u;然后,我们固定
u
u
u,在由
{
z
:
p
~
(
z
)
>
u
}
\{z : \widetilde{p}(z)>u\}
{z:p
(z)>u}定义的分布的“切⽚”上,对
z
z
z进⾏均匀地采样。如下图(a)所示。
在实际应⽤中,直接从穿过概率分布的切⽚中采样很困难,因此我们定义了⼀个采样⽅法,它保持
p
^
(
z
,
u
)
\widehat{p}(z, u)
p
(z,u)下的均匀分布具有不变性,这可以通过确保满⾜细节平衡的条件来实现。假设
z
z
z的当前值记作
z
(
τ
)
z^{(\tau)}
z(τ),并且我们已经得到了⼀个对应的样本
u
u
u。
z
z
z的下⼀个值可以通过考察包含
z
(
τ
)
z^{(\tau)}
z(τ)的区域
z
min
⩽
z
⩽
z
max
z_{\min } \leqslant z \leqslant z_{\max }
zmin⩽z⩽zmax来获得。根据概率分布的特征长度标度来对步长进⾏的调节就发⽣在这⾥。我们希望区域包含尽可能多的切⽚,从⽽使得
z
z
z空间中能进⾏较⼤的移动,同时希望切⽚外的区域尽可能⼩,因为切⽚外的区域会使得采样变得低效。
⼀种选择区域的⽅法是,从⼀个包含
z
(
τ
)
z^{(\tau)}
z(τ)的具有某个宽度
w
w
w的区域开始,然后测试每个端点,看它们是否位于切⽚内部。如果有端点没在切⽚内部,那么区域在增加
w
w
w值的⽅向上进⾏扩展,直到端点位于区域外。然后,
z
′
z^′
z′的⼀个样本被从这个区域中均匀抽取。如果它位于切⽚内,那么它就构成了
z
(
τ
+
1
)
z^{(\tau+1)}
z(τ+1)。如果它位于切⽚外,那么区域收缩,使得
z
′
z^′
z′组成⼀个端点,并且区域仍然包含
z
(
τ
)
z^{(\tau)}
z(τ)。然后,另⼀个样本点从这个缩⼩的区域中均匀抽取,以此类推,直到找到位于切⽚内部的⼀个
z
z
z值。
切⽚采样可以应⽤于多元分布中,⽅法是按照吉布斯采样的⽅式重复地对每个变量进⾏采样。这要求对于每个元素
z
i
z_i
zi,我们能够计算⼀个正⽐于
p
(
z
i
∣
z
\
i
)
p\left(z_{i} | \mathbf{z}_{\backslash i}\right)
p(zi∣z\i)的函数。
11.5 The Hybrid Monte Carlo Algorithm
正如我们已经注意到的那样,Metropolis算法的⼀个主要的局限是它具有随机游⾛的⾏为,⽽在状态空间中遍历的距离与步骤数量只是平⽅根的关系。仅仅通过增⼤步长的⽅式是⽆法解决这个问题的,因为这会使得拒绝率变⾼。
本节中,我们介绍⼀类更加复杂的转移⽅法。这些⽅法基于对物理系统的⼀个类⽐,能够让系统状态发⽣较⼤的改变,同时让拒绝的概率较低。它适⽤于连续变量上的概率分布,对于连续变量,我们已经能够计算对数概率关于状态变量的梯度。我们会在11.5.1节讨论动态系统框架,然后在11.5.2节,我们会解释这个框架如何与Metropolis算法结合,产⽣出⼀个强⼤的混合蒙特卡罗算法。这⾥不需要物理学的背景,因为本节是⾃洽的,并且关键的结果全部从基本的原理中推导出。
11.5.1 Dynamical systems
我们考虑的动⼒学对应于在连续时刻(记作
τ
\tau
τ)下的状态变量
z
=
{
z
i
}
\mathbf{z}=\left\{z_{i}\right\}
z={zi}的演化。经典的动⼒学由⽜顿第⼆定律描述,即物体的加速度正⽐于施加的⼒,对应于关于时间的⼆阶微分⽅程。我们可以将⼀个⼆阶微分⽅程分解为两个相互偶合的⼀阶⽅程,⽅法是引⼊中间的动量(momentum)变量
r
\mathbf r
r,对应于状态变量
z
\mathbf z
z的变化率,元素为
r
i
=
d
z
i
d
τ
r_{i}=\frac{\mathrm{d} z_{i}}{\mathrm{d} \tau}
ri=dτdzi其中
z
i
z_i
zi看作位置变量,对于每个位置有个动量变量,这两个变量组成了相空间(phase space)。不失一般性,我们可以将概率分布
p
(
z
)
p(\mathbf z)
p(z)写成下⾯的形式
p
(
z
)
=
1
Z
p
exp
(
−
E
(
z
)
)
p(\mathbf{z})=\frac{1}{Z_{p}} \exp (-E(\mathbf{z}))
p(z)=Zp1exp(−E(z))其中
E
(
z
)
E(\mathbf z)
E(z)称为势能量,系统的加速度是动量的变化率,通过施
加⼒(force)的⽅式确定,它本⾝是势能的负梯度,即
d
r
i
d
τ
=
−
∂
E
(
z
)
∂
z
i
\frac{\mathrm{d} r_{i}}{\mathrm{d} \tau}=-\frac{\partial E(\mathbf{z})}{\partial z_{i}}
dτdri=−∂zi∂E(z)使⽤哈密顿框架重新写出这个动态系统的公式是⽐较⽅便的。为了完成这⼀点,我们⾸先将动能(kinetic energy)定义为
K
(
r
)
=
1
2
∥
r
∥
2
=
1
2
∑
i
r
i
2
K(\mathbf{r})=\frac{1}{2}\|\mathbf{r}\|^{2}=\frac{1}{2} \sum_{i} r_{i}^{2}
K(r)=21∥r∥2=21i∑ri2系统的总能量是势能和动能之和,即
H
(
z
,
r
)
=
E
(
z
)
+
K
(
r
)
H(\mathbf{z}, \mathbf{r})=E(\mathbf{z})+K(\mathbf{r})
H(z,r)=E(z)+K(r)其中
H
H
H为汉密尔顿函数,我们现在可以将系统的动⼒学⽤哈密顿⽅程的形式表⽰出来,形式为
d
z
i
d
τ
=
∂
H
∂
r
i
d
r
i
d
τ
=
−
∂
H
∂
z
i
\begin{aligned} \frac{\mathrm{d} z_{i}}{\mathrm{d} \tau} &=\frac{\partial H}{\partial r_{i}} \\ \frac{\mathrm{d} r_{i}}{\mathrm{d} \tau} &=-\frac{\partial H}{\partial z_{i}} \end{aligned}
dτdzidτdri=∂ri∂H=−∂zi∂H在动态系统的变化过程中,哈密顿函数
H
H
H的值是⼀个常数,这⼀点通过求微分的⽅式很容易看出来。
d
H
d
τ
=
∑
i
{
∂
H
∂
z
i
d
z
i
d
τ
+
∂
H
∂
r
i
d
r
i
d
τ
}
=
∑
i
{
∂
H
∂
z
i
∂
H
∂
r
i
−
∂
H
∂
r
i
∂
H
∂
z
i
}
=
0
\begin{aligned} \frac{\mathrm{d} H}{\mathrm{d} \tau} &=\sum_{i}\left\{\frac{\partial H}{\partial z_{i}} \frac{\mathrm{d} z_{i}}{\mathrm{d} \tau}+\frac{\partial H}{\partial r_{i}} \frac{\mathrm{d} r_{i}}{\mathrm{d} \tau}\right\} \\ &=\sum_{i}\left\{\frac{\partial H}{\partial z_{i}} \frac{\partial H}{\partial r_{i}}-\frac{\partial H}{\partial r_{i}} \frac{\partial H}{\partial z_{i}}\right\}=0 \end{aligned}
dτdH=i∑{∂zi∂Hdτdzi+∂ri∂Hdτdri}=i∑{∂zi∂H∂ri∂H−∂ri∂H∂zi∂H}=0哈密顿动态系统的第⼆个重要性质是动态系统在相空间中体积不变,这被称为Liouville定理(Liouville’s Theorem)。换句话说,如果我们考虑变量
(
z
,
r
)
(\mathbf{z}, \mathbf{r})
(z,r)空间中的⼀个区域,那么当这个区域在哈密顿动态⽅程下的变化时,它的形状可能会改变,但是它的体积不会改变。可以这样证明:我们注意到流场(位置在相空间的变化率)为
V
=
(
d
z
d
τ
,
d
r
d
τ
)
\mathbf{V}=\left(\frac{\mathrm{d} \mathbf{z}}{\mathrm{d} \tau}, \frac{\mathrm{d} \mathbf{r}}{\mathrm{d} \tau}\right)
V=(dτdz,dτdr)这个场的散度为零,即
div
V
=
∑
i
{
∂
∂
z
i
d
z
i
d
τ
+
∂
∂
r
i
d
r
i
d
τ
}
=
∑
i
{
−
∂
∂
z
i
∂
H
∂
r
i
+
∂
∂
r
i
∂
H
∂
z
i
}
=
0
\begin{aligned} \operatorname{div} \mathbf{V} &=\sum_{i}\left\{\frac{\partial}{\partial z_{i}} \frac{\mathrm{d} z_{i}}{\mathrm{d} \tau}+\frac{\partial}{\partial r_{i}} \frac{\mathrm{d} r_{i}}{\mathrm{d} \tau}\right\} \\ &=\sum_{i}\left\{-\frac{\partial}{\partial z_{i}} \frac{\partial H}{\partial r_{i}}+\frac{\partial}{\partial r_{i}} \frac{\partial H}{\partial z_{i}}\right\}=0 \end{aligned}
divV=i∑{∂zi∂dτdzi+∂ri∂dτdri}=i∑{−∂zi∂∂ri∂H+∂ri∂∂zi∂H}=0现在考虑相空间上的联合概率分布,它的总能量是哈密顿函数,即概率分布的形式为
p
(
z
,
r
)
=
1
Z
H
exp
(
−
H
(
z
,
r
)
)
p(\mathbf{z}, \mathbf{r})=\frac{1}{Z_{H}} \exp (-H(\mathbf{z}, \mathbf{r}))
p(z,r)=ZH1exp(−H(z,r))使⽤体系的不变性和
H
H
H的守恒性,可以看到哈密顿动态系统会使得
p
(
z
,
r
)
p(\mathbf z, \mathbf r)
p(z,r)保持不变。可以这样证明:考虑相空间的⼀个⼩区域,区域中
H
H
H近似为常数。如果我们跟踪⼀段有限时间内的哈密顿⽅程的变化,那么这个区域的体积不会发⽣改变,从⽽这个区域的
H
H
H的值不会发⽣改变,因此概率密度(只是
H
H
H的函数)也不会改变。
虽然
H
H
H是不变的,但是
z
\mathbf z
z和
r
\mathbf r
r会发⽣变换,因此通过在⼀个有限的时间间隔上对哈密顿动态系统积分,我们就可以让
z
\mathbf z
z以⼀种系统化的⽅式发⽣较⼤的变化,避免了随机游⾛的⾏为。
然⽽,哈密顿动态系统的变化对
p
(
z
,
r
)
p(\mathbf{z}, \mathbf{r})
p(z,r)的采样不具有各态历经性,因为
H
H
H的值是⼀个常数。为了得到⼀个具有各态历经性的采样⽅法,我们可以在相空间中引⼊额外的移动,这些移动会改变
H
H
H的值,同时也保持了概率分布
p
(
z
,
r
)
p(\mathbf{z}, \mathbf{r})
p(z,r)的不变性。达到这个⽬标的最简单的⽅式是将
r
\mathbf r
r的值替换为⼀个从以
z
\mathbf z
z为条件的概率分布中抽取的样本。这可以被看成吉布斯采样的步骤,因此根据11.3节,我们看到这也使得所求的概率分布保持了不变性。注意,
z
\mathbf z
z和
r
\mathbf r
r在概率分布
p
(
z
,
r
)
p(\mathbf{z}, \mathbf{r})
p(z,r)中是独⽴(根据定义可以分解)的,我们看到条件概率分布
p
(
r
∣
z
)
p(\mathbf{r}|\mathbf{z})
p(r∣z)是⾼斯分布,从中我们可以很容易地进⾏采样。
在这种⽅法的⼀个实际应⽤中,我们必须解决计算哈密顿⽅程的数值积分的问题。这会引⼊⼀些数值的误差,因此我们要设计⼀种⽅法来最⼩化这些误差产⽣的影响。事实上,可以证明,能够在Liouville定理仍然精确成⽴的条件下,对积分⽅法进⾏修改。这个性质在11.5.2节讨论混合蒙特卡罗算法时很重要。完成这件事的⼀种⽅法是蛙跳(leapfrog)离散化。这种⽅法使⽤下⾯的公式对位置变量和动量变量的离散时间近似
z
^
\widehat{\mathbf{z}}
z
and
r
^
\widehat{\mathbf{r}}
r
进⾏交替地更新。
r
^
i
(
τ
+
ϵ
/
2
)
=
r
^
i
(
τ
)
−
ϵ
2
∂
E
∂
z
i
(
z
^
(
τ
)
)
z
^
i
(
τ
+
ϵ
)
=
z
^
i
(
τ
)
+
ϵ
r
^
i
(
τ
+
ϵ
/
2
)
r
^
i
(
τ
+
ϵ
)
=
r
^
i
(
τ
+
ϵ
/
2
)
−
ϵ
2
∂
E
∂
z
i
(
z
^
(
τ
+
ϵ
)
)
\begin{aligned} \widehat{r}_{i}(\tau+\epsilon / 2) &=\widehat{r}_{i}(\tau)-\frac{\epsilon}{2} \frac{\partial E}{\partial z_{i}}(\widehat{\mathbf{z}}(\tau)) \\ \widehat{z}_{i}(\tau+\epsilon) &=\widehat{z}_{i}(\tau)+\epsilon \widehat{r}_{i}(\tau+\epsilon / 2) \\ \widehat{r}_{i}(\tau+\epsilon) &=\widehat{r}_{i}(\tau+\epsilon / 2)-\frac{\epsilon}{2} \frac{\partial E}{\partial z_{i}}(\widehat{\mathbf{z}}(\tau+\epsilon)) \end{aligned}
r
i(τ+ϵ/2)z
i(τ+ϵ)r
i(τ+ϵ)=r
i(τ)−2ϵ∂zi∂E(z
(τ))=z
i(τ)+ϵr
i(τ+ϵ/2)=r
i(τ+ϵ/2)−2ϵ∂zi∂E(z
(τ+ϵ))我们看到,这种⽅法对动量变量的更新形式是半步更新,步长为
ϵ
/
2
\epsilon / 2
ϵ/2,接着是对位置变量的整步更新,步长为
ϵ
\epsilon
ϵ,然后是对动量变量的第⼆个半步更新。如果我们连续地使⽤⼏次蛙跳,那么可以看到,对动量变量的半步更新可以结合到步长为
ϵ
\epsilon
ϵ的整步更新中。于是,位置变量的更新和动量变量的更新互相之间以蛙跳的形式结合。为了将动态系统推进进⼀个时间间隔
τ
\tau
τ,我们需要进⾏
τ
/
ϵ
\tau / \epsilon
τ/ϵ个步骤。对连续时间动态系统的离散化近似引⼊的误差会在极限
ϵ
→
0
\epsilon \rightarrow 0
ϵ→0的情况下趋于零,假设函数
E
(
z
)
E(\mathbf z)
E(z)是光滑的。然⽽,对于实际应⽤中使⽤的⼀个⾮零的
ϵ
\epsilon
ϵ,⼀些保留的误差仍然会存在。我们会在11.5.2节看到在混合蒙特卡罗算法中,这些误差的影响如何被消除。
总结⼀下,哈密顿动⼒学⽅法涉及到交替地进⾏⼀系列蛙跳更新以及根据动量变量的边缘分布进⾏重新采样。
注意,与基本的Metropolis⽅法不同,哈密顿动⼒学⽅法能够利⽤对数概率分布的梯度信息以及概率分布本⾝的信息。在函数最优化领域有⼀个类似的情形。⼤多数可以得到梯度信息的情况下,使⽤哈密顿动⼒学⽅法是很有优势的。⾮形式化地说,这种现象是由于下⾯的事实造成的:在
D
D
D维空间中,与计算函数本⾝的代价相⽐,计算梯度所带来的额外的计算代价通常是⼀个与
D
D
D⽆关的固定因⼦。⽽与函数本⾝只能传递⼀条信息相⽐,
D
D
D维梯度向量可以传递
D
D
D条信息。
11.5.2 Hybrid Monte Carlo
正如我们在前⼀节讨论的那样,对于⼀个⾮零的步长
ϵ
\epsilon
ϵ,蛙跳算法的离散化会在哈密顿动⼒学⽅程的积分过程中引⼊误差。混合蒙特卡罗(hybrid Monte Carlo)(Duane et al., 1987; Neal,1996)将哈密顿动态系统与Metropolis算法结合在⼀起,因此消除了与离散化过程关联的任何偏差。
具体来说,算法使⽤了⼀个马尔科夫链,它由对动量变量
r
\mathbf r
r的随机更新以及使⽤蛙跳算法对哈密顿动态系统的更新交替组成。在每次应⽤蛙跳算法之后,基于哈密顿函数
H
H
H的值,确定Metropolis准则,确定⽣成的候选状态被接受或者拒绝。因此,如果
(
z
,
r
)
(\mathbf z,\mathbf r)
(z,r)是初始状态,
(
z
⋆
,
r
⋆
)
(\mathbf z^{\star},\mathbf r^{\star})
(z⋆,r⋆)是蛙跳积分后的状态,那么候选状态被接受的概率为
min
(
1
,
exp
{
H
(
z
,
r
)
−
H
(
z
⋆
,
r
⋆
)
}
)
\min(1,\exp\{ H(\mathbf z,\mathbf r)-H(\mathbf z^{\star},\mathbf r^{\star})\})
min(1,exp{H(z,r)−H(z⋆,r⋆)})如果蛙跳积分完美地模拟了哈密顿动态系统,那么每个这种候选状态都会⾃动地被接受,因为
H
H
H的值会保持不变。由于数值误差,
H
H
H的值有时可能会减⼩,因此我们希望Metropolis准则将这种效果引发的任何偏差都消除,并且确保得到的样本确实是从所需的概率分布中抽取的。为了完成这件事,我们需要确保对应于蛙跳积分的更新⽅程满⾜细节平衡。通过按照下⾯的⽅式修改蛙跳⽅法,这个⽬标很容易实现。
在开始蛙跳积分序列之前,我们等概率地随机选择是沿着时间向前的⽅向积分(步长为
ϵ
\epsilon
ϵ)还是沿着时间向后的⽅向积分(步长为
−
ϵ
-\epsilon
−ϵ)。我们⾸先注意到,蛙跳积分⽅法(三个步骤,如上一节)是时间可翻转的,即
L
L
L步使⽤步长为
−
ϵ
-\epsilon
−ϵ的积分会抵消
L
L
L步使⽤步长为
ϵ
\epsilon
ϵ的积分。接下来我们证明蛙跳积分精确地保持了相空间的体积不变性。这是因为,蛙跳⽅法中的每⼀步对
z
i
z_i
zi或者
r
i
r_i
ri的更新都只是另⼀个变量的函数。如图所⽰,这个现象产⽣的效果是将相空间的⼀个区域进⾏形变⽽不改变它的体积。
11.6 Estimating the Partition Function
p
E
(
z
)
=
1
Z
E
exp
(
−
E
(
z
)
)
p_E(\mathbf z)=\frac{1}{Z_E}\exp(-E(\mathbf z))
pE(z)=ZE1exp(−E(z))
之前我们都没考虑归一化常数,因为采样并不需要,但是这一项对于模型对比十分重要,也称为model evidence,因此十分有必要得到该值,一般来说直接求和积分是不现实的。
对于模型⽐较来说,我们所需的实际是两个模型的划分函数的⽐值。将这个⽐值与先验概率的⽐值相乘可以得到后验概率的⽐值。之后可以⽤这个⽐值来进⾏模型选择或者模型平均。
⼀种估计划分函数⽐值的⽅法是使⽤概率分布的重要采样,这个概率分布的能量函数为
G
(
z
)
G(\mathbf z)
G(z),即
Z
E
Z
G
=
∑
z
exp
(
−
E
(
z
)
)
∑
z
exp
(
−
G
(
z
)
)
=
∑
z
exp
(
−
E
(
z
)
+
G
(
z
)
)
exp
(
G
(
z
)
)
∑
z
exp
(
−
G
(
z
)
)
=
E
G
(
z
)
[
exp
(
−
E
(
z
)
+
G
(
z
)
)
]
≃
∑
l
exp
(
−
E
(
z
(
l
)
)
+
G
(
z
(
l
)
)
)
\begin{aligned} \frac{Z_E}{Z_G}&=\frac{\sum_{\mathbf z}\exp(-E(\mathbf z))}{\sum_{\mathbf z}\exp(-G(\mathbf z))}\\ &=\frac{\sum_{\mathbf z}^{}{\exp(-E(\mathbf z)+G(\mathbf z))\exp(G(\mathbf z))}}{\sum_{\mathbf z}\exp(-G(\mathbf z))}\\ &=\mathbb E_{G(\mathbf z)}[\exp(-E(\mathbf z)+G(\mathbf z))]\\ &\simeq \sum_l^{}{\exp(-E(\mathbf z^{(l)})+G(\mathbf z^{(l)}))} \end{aligned}
ZGZE=∑zexp(−G(z))∑zexp(−E(z))=∑zexp(−G(z))∑zexp(−E(z)+G(z))exp(G(z))=EG(z)[exp(−E(z)+G(z))]≃l∑exp(−E(z(l))+G(z(l)))其中
{
z
(
l
)
}
\{\mathbf z^{(l)}\}
{z(l)}采样于
p
G
(
z
)
p_G(\mathbf z)
pG(z),如果
p
G
(
z
)
p_G(\mathbf z)
pG(z)为一个简单的分布,那么可以将
Z
G
Z_G
ZG得到,从而得到
Z
E
Z_E
ZE。
这个方法的前提也是
p
G
p_G
pG能够很接近
p
E
p_E
pE,即⽐值
p
E
/
p
G
{p_E}/{p_G}
pE/pG变化不⼤,那么这种⽅法会产⽣准确的结果。在实际应⽤中,对于本书中考察的复杂的模型,我们⽆法找到⼀个可以很容易地解析计算的重要采样分布。
于是,另⼀种⽅法是使⽤从马尔科夫链中得到的样本来定义重要采样分布。如果马尔科夫链的转移概率为
T
(
z
,
z
′
)
T(\mathbf z, \mathbf z^′)
T(z,z′),样本集合为
z
(
1
)
,
…
,
z
(
L
)
\mathbf z^{(1)},\dots , \mathbf z^{(L)}
z(1),…,z(L),那么采样分布可以写成
1
Z
G
exp
(
−
G
(
z
)
)
=
∑
l
=
1
L
T
(
z
(
l
)
,
z
)
\frac{1}{Z_G}\exp(-G(\mathbf z))=\sum_{l=1}^L{T(\mathbf z^{(l)}, \mathbf z)}
ZG1exp(−G(z))=l=1∑LT(z(l),z)然后将上式运用到刚刚提到的地方。