概率图模型课堂笔记:2.4 取样方法
从前一章可知,用精确推理来获得系统的整体或局部概率分布(比如某些选定变量的边缘分布,比如某种条件分布),往往计算量过于庞大,而采样往往是一种代价更低的近似方法。
1.1 简单取样
1. 用独立等概率取样的方式取M个样本D,$E_p[f]\approx \frac1M \sum_{m=1}^{M}f(x[m])$
2. 对离散分布生成采样的方法,设$X\in {x_1,x_2,\cdots,x_M}, P(X=X_i)=\theta_i$, 把$[0,1]$分成M个区间, $I_1=[0,\theta_1), I_2=[\theta_1, \theta_1+\theta_2),\cdots$,生成$[0,1]$随机数,落在$I_k$表示抽样$x_k$
3. 大数定律两个Bound
(1) 取样落在$[p-\epsilon, p+\epsilon]$之外的概率小于等于$2e^{-2M\epsilon^2}$
若要取样落在$[p-\epsilon, p+\epsilon]$之外的概率小于$\delta$,则$M\ge=\frac{ln(2/\delta)}{2\epsilon^2}$
(2) 取样落在$[p(1-\epsilon), p(1+\epsilon)]$之外的概率小于等于$2e^{-2Mp\epsilon^2/3}$
若要取样落在$[p(1-\epsilon), p(1+\epsilon)]$之外的概率小于$\delta$,则$M\ge=\frac{3ln(2/\delta)}{p\epsilon^2}$
所以对于p很小的情况,都会造成需要大量样本。
4. 采样生成方法:对于贝叶斯图来说,生成样本自顶向下就可以了。
(1)对root结点$X$,直接根据$X$的概率分布$P(X)$来生成
(2)对于非root结点$X$,因为其父亲结点已经生成,所以在条件概率$P(X|Pa_X)$中选择相应的行来生成。
(3)所有变量生成完成后,一个样本就生成出来了。
(4)重复(1)-(3), 生成M个样本
(5)要估算$P(Y=y)$,用所有样本中$Y=y$样本个数除以M。注意M要满足大数定律的Bound
(6)要估算$P(Y=y|E=e)$,方法和(5)一样,遇到$E\ne e$的样本,直接抛弃。这样生成的样本都是$E=e$的。如果$E=e$的概率很小,那么生成会很费时间。因为最后能保留的样本只有$MP(e)$个。
5. 对马尔科夫图来说,4这个方法不能用。因为没有根节点。
1.2 马尔可夫链蒙特卡洛
思想是:$\mathbf X$每个可能的取值$\mathbf x$都是一个状态,状态之间以一定的概率转移。一开始每个状态的分布率(可以认为是一个概率向量)目标概率P很可能是不相等的,但是粒子在马尔科夫网络中进行不断地转移,概率会逼近目标概率,达到稳态(stationary),在此之后,再取样,就是符合P的分布了。
1. 马尔可夫链定义了:
(1)每个变量的初始概率$P^0$
(2)状态之间互相转换的概率$T(x\to x')$。且$\sum_{x'}T(x\to x')=1$
2. 转移等式(Temporal Dynamics):$P^{(t+1)}(X^{(t+1)}=x')=\sum_P^{(t)}(X^{(t)}=x)T(x\to x')$
3. 马尔可夫链收敛的条件:对任意的$x'$,有:$P^{(t+1)}(x')=P^{(t)}(x')=\sum_xP^{(t)}(x)T(x\to x')$,达到这个状态后的概率我们称为收敛概率。
所以,如果要证明构造出来的某个马尔科夫链的收敛概率为P,只要把P代入上面的式子,证明$P(x')=\sum_xP(x)T(x\to x')$
4. 正则马尔可夫链
(1)如果存在一个$k$(先选定$k$),通过$k$步,能从任意状态到另一任意状态,我们称这个马尔可夫链是正则(regular)的
(2)一个正则的马尔可夫链一定可以收敛
(3)正则的一个充分条件是:任意两个状态之间都有路径,且任意一个状态都有回路。
1.3马尔科夫链的使用
1. 假设已经针对某分布$P$(如某马尔科夫网表示的分布)生成了一个收敛概率为$P$的马尔科夫链
2. 通过一个初始分布$P^{(0)}$生成C个样本$x^{(c,0)}$
3. 对每个样本$x^{(c,0)}$,同步生成各自的样本序列。直到认为已经收敛。判断收敛的方法:
(1)针对同一个样本序列,在不同时间段的窗口中,得出来的分布接近一致的
(2)针对不同的样本序列,在同一个窗口中,它们的分布已经接近一致。
这个通常更好,因为有可能状态集分为两个区域,跨区的转移可能性很小。
用多图来描述,C个序列在同一个评价概率(比如选定一个$P(x_i)$)上趋向相等,可以认为收敛
用单图描述,建立C维坐标,如果发现所有序列的评价概率收拢在对角线上,可以认为收敛
4. 收敛之后,继续各个样本序列的生成,再生成M个样本(M的大小参照前一节)。拿这M个样本计算概率
1.4 吉布斯采样
1. 目标分布:$P_{\phi}(X_1,X_2,\cdots,X_n)$。步骤:
(1)初始状态:$\mathbf{x}=\{x_1,x_2,...,x_n\}$
(2)单次迭代过程:for i=1 to n: Sample $x_i$ by $P_{\phi}(X_i|x_{-i})$
2. 这个过程实际上是运行在一个马尔可夫链上,链中各个状态就是目标分布中的$\mathbf{X}_i$各个可能的取值,可转移的两个状态之间只有一个变量$x_i$不同,转移概率是$P_{\phi}(X_i|x_{-i})$。当然,每个状态向自己也是可以转移的。这个就符合正则马尔科夫链的两个充分条件。
同时,可以证明这个网络的收敛概率是$P_{\phi}$(???)
3. 这个过程中取样的代价也很低,为$P_{\phi}(X_i|x_{-i})=\frac{P_{\phi}(X_i,x_{-i})}{P_{\phi}(x_{-i})}\propto \prod_{j:X_i\in Scope[C_j]}\phi_j(X_i,x_{j,-i})$,也就是不用计算整体的联合分布,只要把和$X_i$有关的factor乘起来再代入其他变量。
4. 对于XOR吉布斯很难收敛,因为给定$Y$的情况下,${x_1,x_2}$从一个状态跳到另外一个状态,不可能像迭代中描述的那样,只改变其中一个变量的值。
5. 对于图分块来说,也很难,因为很多块都是和相邻块有强相关性,比如某片区域全是水块或者全是天空块的可能性都不小,但如果只改变其中一个,就会导致一块水被天包围,这个联合概率很小,很难取样到。因此一次只改变其中一个变量的值,来把一整片水块变成天空块,也是接近不可能。
1.5
1. 可逆链:对于任何一对状态来说,如果互相迁移的“量”是相等的$P(x)T(x\to x')=P(x')T(x'\to x)$,则称为可逆链。因为“往来”等量,所以可逆链一定已经收敛,用数学描述:两边对$x$进行求和,就得到了收敛式。
但是收敛链不一定可逆。考虑一个$A\to B\to C\to A$的顺向转移概率为0.8,反向为0.2的环。
2. 令$\pi(\mathbf X)$表示收敛概率,可逆状态用$\pi(x)T(x\to x')=\pi(x')T(x'\to x)$表示。
我们把$T(x\to x')$拆为两部分:$Q(x\to x')$和$A(x\to x')$。$Q$表示提议概率,$A$表示接受度。系统以$Q(x\to x')$的概率提出转移,被接受的概率有$A(x\to x')$,如果被接受,则转移,否则,留在原地。
(1)若$x\ne x'$,则$T(x\to x')=Q(x\to x')A(x\to x')$
(2)若$x=x'$,则$T(x\to x)=Q(x\to x)+\sum_{y\ne x}Q(x\to y)(1-A(x\to y))$
3. 现在考虑$x\ne x'$的情形。对可逆链来说,平衡时我们会达到$\pi(x)Q(x\to x')A(x\to x')=\pi(x')Q(x'\to x)A(x'\to x)$,也就是
$\frac{A(x\to x')}{A(x'\to x)}=\frac{\pi(x')Q(x'\to x)}{\pi(x)Q(x\to x')}$
现在假设$A(x\to x')<A(x'\to x)$,$\frac{A(x\to x')}{A(x'\to x)}=\rho<1$。
那么对$A(x\to x')$和$A(x'\to x)$来说,只要满足比例$\rho$的任意取值对都是合法的。我们令$A(x\to x')=\rho,A(x'\to x)=1$
对于这种取值方式,我们可以扩展到一般的情况,定义$A(x\to x')=\min[1, \frac{\pi(x')Q(x'\to x)}{\pi(x)Q(x\to x')}]$
4. Q的取值准则
(1) Q不能为0,否则计算A会除0
(2) Q必须广泛分布,这样才能远程跳转。但是对一些不太可能的跳转,A通常会低
5. 考虑一个最小距离和的二部图匹配问题,每个左侧点$X_i$都要指派唯一的右侧点$v_i=Y_j$,
(1)如果指派合法,系统概率是$e^(-\sum_i dist(i,v_i))$,即总距离越大,概率越小。
(2)如果指派不合法,概率为0
一个状态转移算法是:
(1)为$X_i$随机指派一个$v_i$
(2)如果$v_i$原来指派给了$X_j$,则原$X_j$执行(1),否则完成。
对比:
如果用上一节的吉布斯采样,很难收敛。
2.1 时间模型的推导
1. 预备知识:
(1)贝叶斯定理:$P(A|B)=\frac{P(B|A)P(A)}{P(B)}$
(2)条件贝叶斯定理:$P(A|B,C)=\frac{P(B|A,C)P(A|C)}{P(B|C)}$
条件贝叶斯定理就是在(1)的每个式子的竖线右边都加上C。
2. 对时间模型来说,我们希望做推断的时候不需要追溯太久之前的状态和数据,否则要维护巨大的状态空间。所幸的是这是可以做到的。考虑一个通用的时间状态模型。
(1) 标准状态方程:$\sigma^{(t)}(S^{(t)})=P(S^{(t)}|o^{(1:t)})$
(2) 现在要基于$\sigma^{(t)}$计算$\sigma^{(t+1)}$
(3) $\sigma^{(t+1)}=P(S^{(t+1)}|o^{(1:t)},o^{(t+1)})$
$=\frac{P(o^{(t+1)}|S^{(t+1)})P(S^{(t+1)}|o^{(1:t)})}{P(o^{(t+1)}|o^{(1:t)})}$ // 条件贝叶斯定理
$=\frac{P(o^{(t+1)}|S^{(t+1)})\sum_{s^{(t)}}P(S^{(t+1)}|s^{(t)})P(s^{(t)}|o^{(1:t)})}{P(o^{(t+1)}|o^{(1:t)})}$
$=\frac{P(o^{(t+1)}|S^{(t+1)})\sum_{s^{(t)}}P(S^{(t+1)}|s^{(t)})\sigma^{(t)}(s^{(t)})}{P(o^{(t+1)}|o^{(1:t)})}$
其中分母只是用来normalize的。
看到所有运算步骤只是用到前一个状态,说明可以用较少的状态空间来实现推断。
3. 观察机器人的状态模型。以及这个思想的应用
4. 对时间模型来说,在同一个时间t里,不同的状态变量并不是独立的,通过追溯到t,t-1或更早,往往能找到它们之间的active trail,所以往往只能对时间t所有的状态变量做一个完全的联合分布。状态空间随着状态数量指数增长。因此精确推导的计算量还是很大。
5. 对碟子模型来说,也是一样,同一个碟子里不同个体之间也是相关的,往往只能把它们当作一个整体作联合分布。
6. 考虑一个网页分类的模型,传统机器学习算法一般是根据网页本身内容来,但是用概率图来说,可以定义相互连接的网页之间类别的factor。比如学生和院系之间的连接更多,而学生之间的连接则很少。运用这个可以显著提高性能。