上一节介绍了信念传播算法(Belief Propagation,BP)的思想以及具体算法过程,本节将介绍精确推断中的最大乘积算法(Max-Product Algorithm)。
已知数据集合X\mathcal XX共包含ppp维特征,并且假设每个特征都是离散型随机变量:
X={x1,x2,⋯,xp}\mathcal X = \{x_1,x_2,\cdots,x_p\}X={x1,x2,⋯,xp}
根据概率图的性质,这ppp维特征并非存在ppp个结点,而是每个结点可能包含一个/多个特征,这里假定共存在nnn个结点。我们关心的重点并不在结点的数量,而在于边的信息。假设随机变量X\mathcal XX表示的概率图中存在K\mathcal KK条边,即:
每一条边
ei(i=1,2,⋯,K)e_{i}(i=1,2,\cdots,\mathcal K)ei(i=1,2,⋯,K)表示某两个结点之间的关联关系。概率图给定的条件下,将其理解成‘已知信息’。
E={e1,e2,⋯,eK}\mathcal E = \{e_1,e_2,\cdots,e_{\mathcal K}\}E={e1,e2,⋯,eK}
在推断基本介绍中提到,推断的本质即变量/特征概率的计算。如:
概率的加法/积分运算~,这里
xi(i=1,2,⋯,n)x_i(i=1,2,\cdots,n)xi(i=1,2,⋯,n)并非表示维度特征,而表示结点所包含的特征集合。
不同于‘有向图’中
eie_iei的有向性,无向图中
xi→start,xi→endx_{i \to start},x_{i \to end}xi→start,xi→end没有顺序性,只是借用上述符号而已。
概率的乘法运算~
在介绍隐马尔可夫模型的解码问题中介绍了维特比算法(Viterbi Algorithm)。解码问题的本质即给定观测序列O={o1,⋯,oT}\mathcal O = \{o_1,\cdots,o_T\}O={o1,⋯,oT},求解对应状态序列的后验概率P(I∣O,λ)\mathcal P(\mathcal I \mid \mathcal O,\lambda)P(I∣O,λ)。
λ\lambdaλ表示隐马尔可夫模型的参数变量
→π,A,B\to \pi,\mathcal A,\mathcal B→π,A,B
但使用的方法并非直接求解P(I∣O,λ)\mathcal P(\mathcal I \mid \mathcal O,\lambda)P(I∣O,λ),而是通过找出 P(I,O∣λ)\mathcal P(\mathcal I,\mathcal O \mid \lambda)P(I,O∣λ)的最优解在相邻时刻间的关联关系:
其中
It\mathcal I_tIt表示状态序列
{i1,⋯,it}\{i_1,\cdots,i_t\}{i1,⋯,it},其他符号
It+1,Ot,Ot+1\mathcal I_{t+1},\mathcal O_t,\mathcal O_{t+1}It+1,Ot,Ot+1同理。
δt=maxIt−1P(It∣Ot,λ)∝maxIt−1P(It,Ot∣λ)δt+1=maxItP(It+1∣Ot+1,λ)∝maxItP(It+1,Ot+1∣λ)δt→δt+1\delta_t = \mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t \mid \mathcal O_t,\lambda) \propto \mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t,\mathcal O_t \mid \lambda) \\ \delta_{t+1} = \mathop{\max}\limits_{\mathcal I_t} \mathcal P(\mathcal I_{t+1} \mid \mathcal O_{t+1},\lambda) \propto \mathop{\max}\limits_{\mathcal I_t} \mathcal P(\mathcal I_{t+1},\mathcal O_{t+1} \mid \lambda) \\ \delta_t \to \delta_{t+1}δt=It−1maxP(It∣Ot,λ)∝It−1maxP(It,Ot∣λ)δt+1=ItmaxP(It+1∣Ot+1,λ)∝ItmaxP(It+1,Ot+1∣λ)δt→δt+1
从初始时刻开始,将迭代过程的中间步骤记录下来,从而找出一条最优状态序列IT^\hat {\mathcal I_T}IT^。由于最优序列的子集同样是最优的,因此任意两个时刻之间的状态序列均可以通过记录查找的方式获取,从而减少运算时间(动态规划问题)。
这明显是两步操作;
1. 本质上是描述
maxIt−1P(It∣Ot,λ)\mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t \mid \mathcal O_t,\lambda)It−1maxP(It∣Ot,λ)和
maxItP(It+1∣Ot+1,λ)\mathop{\max}\limits_{\mathcal I_t} \mathcal P(\mathcal I_{t+1} \mid \mathcal O_{t+1},\lambda)ItmaxP(It+1∣Ot+1,λ)之间的关联关系;
2. 通过‘最大后验概率推断’将步骤1的操作转化为
maxIt−1P(It,Ot∣λ)\mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t,\mathcal O_t \mid \lambda)It−1maxP(It,Ot∣λ)和
maxItP(It+1,Ot+1∣λ)\mathop{\max}\limits_{\mathcal I_{t}} \mathcal P(\mathcal I_{t+1},\mathcal O_{t+1} \mid \lambda)ItmaxP(It+1,Ot+1∣λ)之间的关联关系。
信念传播的算法思想中,结点间的消息传递方式只是其中一部分,在 消息传递的过程中,将结点之间的消息记录下来并进行存储。一旦需要计算其他结点的边缘概率分布时,可以直接通过消息查找的方式进行计算,从而节省大量运算时间。
由于‘概率图结构’是给定不变的,因此无论从哪个结点作为根结点进行迭代,任意存在关联关系的‘结点对’
xj,xkx_j,x_kxj,xk之间消息传递的结果
mj→k(xk)m_{j \to k}(x_k)mj→k(xk)都不会发生变化。
xj,xkx_j,x_kxj,xk之间的 消息传递结果mj→k(xk)m_{j \to k}(x_k)mj→k(xk) 表示如下:
{mj→k(xk)=∑xjψjk(xj,xk)⋅∏l∈n(i),l≠kml→j(xj)P(xi)∝∏k∈n(i)mk→i(xi)\begin{cases} m_{j \to k}(x_k) = \sum_{x_j} \psi_{jk}(x_j,x_k) \cdot \prod_{l \in n(i),l \neq k} m_{l \to j}(x_j) \\ \mathcal P(x_i) \propto \prod_{k \in n(i)} m_{k \to i}(x_i) \end{cases}{mj→k(xk)=∑xjψjk(xj,xk)⋅∏l∈n(i),l=kml→j(xj)P(xi)∝∏k∈n(i)mk→i(xi)
联合概率分布并非某一具体数值,而是在变量取不同结果过程中,联合概率分布也会发生相应变化:
例如存在一枚质地不均匀的硬币,其正面朝上的概率P(up)=0.3\mathcal P(up) = 0.3P(up)=0.3,反面朝上的概率P(down)=0.7\mathcal P(down)=0.7P(down)=0.7,投掷两次该硬币,第一次变量结果记作x1x_1x1,第二次变量结果记作x2x_2x2,针对四种情况:(正,正),(正,反),(反,正),(反,反) 对应的概率结果表示如下:
正 | 反 | |
---|---|---|
正 | 0.090.090.09 | 0.210.210.21 |
反 | 0.210.210.21 | 0.490.490.49 |
那么对应联合概率结果存在333种情况:0.09,0.21,0.490.09,0.21,0.490.09,0.21,0.49
由于设定数据集合X\mathcal XX中的各特征是离散型随机变量,因此 各特征内存在对应取值,并且每个取值对应相应概率结果。从而对应的联合概率分布结果也会存在多种情况。
这里并不局限于‘离散型随机变量’,连续型随机变量同样也会存在多种情况。
最大乘积算法既可以求解某结点变量的边缘概率分布,也可以求解多个结点变量的联合概率分布。
与信念传播算法之间不同的是,它求解的均是最大概率分布。而具体的迭代方式依然使用信念传播方法。
已知一个马尔可夫随机场表示如下:
求解目标包含两个阶段:
具体传播过程如上述蓝色箭头所示,逐步推导迭代过程:
需要注意的问题:
m9→2(i2)m_{9 \to 2}(i_2)m9→2(i2)中的变量只包含
i2i_2i2,因为
i9i_9i9已经选择了‘使
ψ92(i9,i2)\psi_{92}(i_9,i_2)ψ92(i9,i2)达到最大所对应的取值。下面同理。
这里将
i2,i8,i9i_2,i_8,i_9i2,i8,i9看成一个独立的子图,后续同理。
后面省略了~
相比于子集合
{i2,i8,i9},{i1,i6,i7}\{i_2,i_8,i_9\},\{i_1,i_6,i_7\}{i2,i8,i9},{i1,i6,i7},随着迭代的加深,子集合扩张了~
至此,整个概率图全部遍历结束,对上述结果进行整理,该概率图的最大联合概率分布 表示如下:
maxi1,i2,i3,i4,i6,i7,i8,i9P(i1,i2,i3,i4,i6,i7,i8,i9)=maxi4m3→4(i4)=maxi4maxi3ψ34(i3,i4)⋅m1→3(i3)⋅m2→3(i3)=maxi4maxi3ψ34(i3,i4)⋅(maxi1ψ13(i1,i3)⋅m7→1(i1)⋅m6→1(i1))⋅(maxi2ψ23(i2,i3)⋅m9→2(i2)⋅m8→2(i2))=maxi4maxi3ψ34(i3,i4)⋅[maxi1ψ13(i1,i3)⋅(maxi7ψ71(i7,i1))⋅(maxi6ψ61(i6,i1))]⋅[maxi2ψ23(i2,i3)⋅(maxi9ψ92(i9,i2))⋅(maxi8ψ82(i8,i2))]\begin{aligned} & \mathop{\max}\limits_{i_1,i_2,i_3,i_4,i_6,i_7,i_8,i_9}\mathcal P(i_1,i_2,i_3,i_4,i_6,i_7,i_8,i_9) \\ & = \mathop{\max}\limits_{i_4} m_{3 \to 4}(i_4) \\ & = \mathop{\max}\limits_{i_4} \mathop{\max}\limits_{i_3} \psi_{34}(i_3,i_4) \cdot m_{1 \to 3}(i_3) \cdot m_{2 \to 3}(i_3) \\ & = \mathop{\max}\limits_{i_4} \mathop{\max}\limits_{i_3} \psi_{34}(i_3,i_4) \cdot \left(\mathop{\max}\limits_{i_1} \psi_{13}(i_1,i_3) \cdot m_{7 \to 1}(i_1) \cdot m_{6 \to 1}(i_1)\right) \cdot \left(\mathop{\max}\limits_{i_2} \psi_{23}(i_2,i_3) \cdot m_{9 \to 2}(i_2) \cdot m_{8 \to 2}(i_2)\right) \\ & = \mathop{\max}\limits_{i_4} \mathop{\max}\limits_{i_3} \psi_{34}(i_3,i_4) \cdot \left[\mathop{\max}\limits_{i_1} \psi_{13}(i_1,i_3) \cdot \left(\mathop{\max}\limits_{i_7} \psi_{71}(i_7,i_1)\right) \cdot \left(\mathop{\max}\limits_{i_6} \psi_{61}(i_6,i_1)\right)\right] \cdot \left[\mathop{\max}\limits_{i_2} \psi_{23}(i_2,i_3) \cdot \left(\mathop{\max}\limits_{i_9} \psi_{92}(i_9,i_2)\right) \cdot \left(\mathop{\max}\limits_{i_8} \psi_{82}(i_8,i_2)\right)\right] \end{aligned}i1,i2,i3,i4,i6,i7,i8,i9maxP(i1,i2,i3,i4,i6,i7,i8,i9)=i4maxm3→4(i4)=i4maxi3maxψ34(i3,i4)⋅m1→3(i3)⋅m2→3(i3)=i4maxi3maxψ34(i3,i4)⋅(i1maxψ13(i1,i3)⋅m7→1(i1)⋅m6→1(i1))⋅(i2maxψ23(i2,i3)⋅m9→2(i2)⋅m8→2(i2))=i4maxi3maxψ34(i3,i4)⋅[i1maxψ13(i1,i3)⋅(i7maxψ71(i7,i1))⋅(i6maxψ61(i6,i1))]⋅[i2maxψ23(i2,i3)⋅(i9maxψ92(i9,i2))⋅(i8maxψ82(i8,i2))]
由于知道了各阶段的联合概率分布,边缘概率分布的计算变得非常简单。以i4i_4i4结点为例。现在已知联合概率分布P(i1,i2,i3,i4,i6,i7,i8,i9)\mathcal P(i_1,i_2,i_3,i_4,i_6,i_7,i_8,i_9)P(i1,i2,i3,i4,i6,i7,i8,i9)和概率分布P(i1,i2,i3,i6,i7,i8,i9)\mathcal P(i_1,i_2,i_3,i_6,i_7,i_8,i_9)P(i1,i2,i3,i6,i7,i8,i9),i4i_4i4的边缘概率分布直接做除法即可:
P(i4∗)=maxi1,i2,i3,i4,i6,i7,i8,i9P(i1,i2,i3,i4,i6,i7,i8,i9)maxi1,i2,i3,i6,i7,i8,i9P(i1,i2,i3,i6,i7,i8,i9)\mathcal P(i_4^*) = \frac{\mathop{\max}\limits_{i_1,i_2,i_3,i_4,i_6,i_7,i_8,i_9}\mathcal P(i_1,i_2,i_3,i_4,i_6,i_7,i_8,i_9)}{\mathop{\max}\limits_{i_1,i_2,i_3,i_6,i_7,i_8,i_9}\mathcal P(i_1,i_2,i_3,i_6,i_7,i_8,i_9)}P(i4∗)=i1,i2,i3,i6,i7,i8,i9maxP(i1,i2,i3,i6,i7,i8,i9)i1,i2,i3,i4,i6,i7,i8,i9maxP(i1,i2,i3,i4,i6,i7,i8,i9)
下一节将介绍针对环结构概率图的处理方法——因子图。
相关参考:
概率统计学习笔记(2):联合分布
机器学习-概率图模型11-推断Inference-Max Product(1)
下一篇:计算机网络【IP协议与以太网】