上一节介绍了信念传播算法(Belief Propagation,BP)的思想以及具体算法过程,本节将介绍精确推断中的最大乘积算法(Max-Product Algorithm)。
已知数据集合
X
\mathcal X
X共包含
p
p
p维特征,并且假设每个特征都是离散型随机变量:
X
=
{
x
1
,
x
2
,
⋯
,
x
p
}
\mathcal X = \{x_1,x_2,\cdots,x_p\}
X={x1,x2,⋯,xp}
根据概率图的性质,这
p
p
p维特征并非存在
p
p
p个结点,而是每个结点可能包含一个/多个特征,这里假定共存在
n
n
n个结点。我们关心的重点并不在结点的数量,而在于边的信息。假设随机变量
X
\mathcal X
X表示的概率图中存在
K
\mathcal K
K条边,即:
每一条边
e
i
(
i
=
1
,
2
,
⋯
,
K
)
e_{i}(i=1,2,\cdots,\mathcal K)
ei(i=1,2,⋯,K)表示某两个结点之间的关联关系。概率图给定的条件下,将其理解成‘已知信息’。
E
=
{
e
1
,
e
2
,
⋯
,
e
K
}
\mathcal E = \{e_1,e_2,\cdots,e_{\mathcal K}\}
E={e1,e2,⋯,eK}
在推断基本介绍中提到,推断的本质即变量/特征概率的计算。如:
概率的加法/积分运算~,这里
x
i
(
i
=
1
,
2
,
⋯
,
n
)
x_i(i=1,2,\cdots,n)
xi(i=1,2,⋯,n)并非表示维度特征,而表示结点所包含的特征集合。不同于‘有向图’中
e
i
e_i
ei的有向性,无向图中
x
i
→
s
t
a
r
t
,
x
i
→
e
n
d
x_{i \to start},x_{i \to end}
xi→start,xi→end没有顺序性,只是借用上述符号而已。概率的乘法运算~在介绍隐马尔可夫模型的解码问题中介绍了维特比算法(Viterbi Algorithm)。解码问题的本质即给定观测序列
O
=
{
o
1
,
⋯
,
o
T
}
\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∣λ)的最优解在相邻时刻间的关联关系:
其中
I
t
\mathcal I_t
It表示状态序列
{
i
1
,
⋯
,
i
t
}
\{i_1,\cdots,i_t\}
{i1,⋯,it},其他符号
I
t
+
1
,
O
t
,
O
t
+
1
\mathcal I_{t+1},\mathcal O_t,\mathcal O_{t+1}
It+1,Ot,Ot+1同理。
δ
t
=
max
I
t
−
1
P
(
I
t
∣
O
t
,
λ
)
∝
max
I
t
−
1
P
(
I
t
,
O
t
∣
λ
)
δ
t
+
1
=
max
I
t
P
(
I
t
+
1
∣
O
t
+
1
,
λ
)
∝
max
I
t
P
(
I
t
+
1
,
O
t
+
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
从初始时刻开始,将迭代过程的中间步骤记录下来,从而找出一条最优状态序列
I
T
^
\hat {\mathcal I_T}
IT^。由于最优序列的子集同样是最优的,因此任意两个时刻之间的状态序列均可以通过记录查找的方式获取,从而减少运算时间(动态规划问题)。
这明显是两步操作;
1. 本质上是描述
max
I
t
−
1
P
(
I
t
∣
O
t
,
λ
)
\mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t \mid \mathcal O_t,\lambda)
It−1maxP(It∣Ot,λ)和
max
I
t
P
(
I
t
+
1
∣
O
t
+
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的操作转化为
max
I
t
−
1
P
(
I
t
,
O
t
∣
λ
)
\mathop{\max}\limits_{\mathcal I_{t-1}} \mathcal P(\mathcal I_t,\mathcal O_t \mid \lambda)
It−1maxP(It,Ot∣λ)和
max
I
t
P
(
I
t
+
1
,
O
t
+
1
∣
λ
)
\mathop{\max}\limits_{\mathcal I_{t}} \mathcal P(\mathcal I_{t+1},\mathcal O_{t+1} \mid \lambda)
ItmaxP(It+1,Ot+1∣λ)之间的关联关系。
信念传播的算法思想中,结点间的消息传递方式只是其中一部分,在 消息传递的过程中,将结点之间的消息记录下来并进行存储。一旦需要计算其他结点的边缘概率分布时,可以直接通过消息查找的方式进行计算,从而节省大量运算时间。
由于‘概率图结构’是给定不变的,因此无论从哪个结点作为根结点进行迭代,任意存在关联关系的‘结点对’
x
j
,
x
k
x_j,x_k
xj,xk之间消息传递的结果
m
j
→
k
(
x
k
)
m_{j \to k}(x_k)
mj→k(xk)都不会发生变化。
x
j
,
x
k
x_j,x_k
xj,xk之间的 消息传递结果
m
j
→
k
(
x
k
)
m_{j \to k}(x_k)
mj→k(xk) 表示如下:
{
m
j
→
k
(
x
k
)
=
∑
x
j
ψ
j
k
(
x
j
,
x
k
)
⋅
∏
l
∈
n
(
i
)
,
l
≠
k
m
l
→
j
(
x
j
)
P
(
x
i
)
∝
∏
k
∈
n
(
i
)
m
k
→
i
(
x
i
)
{mj→k(xk)=∑xjψjk(xj,xk)⋅∏l∈n(i),l≠kml→j(xj)P(xi)∝∏k∈n(i)mk→i(xi)
{mj→k(xk)=∑xjψjk(xj,xk)⋅∏l∈n(i),l=kml→j(xj)P(xi)∝∏k∈n(i)mk→i(xi)
联合概率分布并非某一具体数值,而是在变量取不同结果过程中,联合概率分布也会发生相应变化:
例如存在一枚质地不均匀的硬币,其正面朝上的概率 P ( u p ) = 0.3 \mathcal P(up) = 0.3 P(up)=0.3,反面朝上的概率 P ( d o w n ) = 0.7 \mathcal P(down)=0.7 P(down)=0.7,投掷两次该硬币,第一次变量结果记作 x 1 x_1 x1,第二次变量结果记作 x 2 x_2 x2,针对四种情况:(正,正),(正,反),(反,正),(反,反) 对应的概率结果表示如下:
| 正 | 反 | |
|---|---|---|
| 正 | 0.09 0.09 0.09 | 0.21 0.21 0.21 |
| 反 | 0.21 0.21 0.21 | 0.49 0.49 0.49 |
那么对应联合概率结果存在 3 3 3种情况: 0.09 , 0.21 , 0.49 0.09,0.21,0.49 0.09,0.21,0.49
由于设定数据集合
X
\mathcal X
X中的各特征是离散型随机变量,因此 各特征内存在对应取值,并且每个取值对应相应概率结果。从而对应的联合概率分布结果也会存在多种情况。
这里并不局限于‘离散型随机变量’,连续型随机变量同样也会存在多种情况。
最大乘积算法既可以求解某结点变量的边缘概率分布,也可以求解多个结点变量的联合概率分布。
与信念传播算法之间不同的是,它求解的均是最大概率分布。而具体的迭代方式依然使用信念传播方法。
已知一个马尔可夫随机场表示如下:

求解目标包含两个阶段:
具体传播过程如上述蓝色箭头所示,逐步推导迭代过程:
需要注意的问题:
m
9
→
2
(
i
2
)
m_{9 \to 2}(i_2)
m9→2(i2)中的变量只包含
i
2
i_2
i2,因为
i
9
i_9
i9已经选择了‘使
ψ
92
(
i
9
,
i
2
)
\psi_{92}(i_9,i_2)
ψ92(i9,i2)达到最大所对应的取值。下面同理。这里将
i
2
,
i
8
,
i
9
i_2,i_8,i_9
i2,i8,i9看成一个独立的子图,后续同理。后面省略了~相比于子集合
{
i
2
,
i
8
,
i
9
}
,
{
i
1
,
i
6
,
i
7
}
\{i_2,i_8,i_9\},\{i_1,i_6,i_7\}
{i2,i8,i9},{i1,i6,i7},随着迭代的加深,子集合扩张了~至此,整个概率图全部遍历结束,对上述结果进行整理,该概率图的最大联合概率分布 表示如下:
max
i
1
,
i
2
,
i
3
,
i
4
,
i
6
,
i
7
,
i
8
,
i
9
P
(
i
1
,
i
2
,
i
3
,
i
4
,
i
6
,
i
7
,
i
8
,
i
9
)
=
max
i
4
m
3
→
4
(
i
4
)
=
max
i
4
max
i
3
ψ
34
(
i
3
,
i
4
)
⋅
m
1
→
3
(
i
3
)
⋅
m
2
→
3
(
i
3
)
=
max
i
4
max
i
3
ψ
34
(
i
3
,
i
4
)
⋅
(
max
i
1
ψ
13
(
i
1
,
i
3
)
⋅
m
7
→
1
(
i
1
)
⋅
m
6
→
1
(
i
1
)
)
⋅
(
max
i
2
ψ
23
(
i
2
,
i
3
)
⋅
m
9
→
2
(
i
2
)
⋅
m
8
→
2
(
i
2
)
)
=
max
i
4
max
i
3
ψ
34
(
i
3
,
i
4
)
⋅
[
max
i
1
ψ
13
(
i
1
,
i
3
)
⋅
(
max
i
7
ψ
71
(
i
7
,
i
1
)
)
⋅
(
max
i
6
ψ
61
(
i
6
,
i
1
)
)
]
⋅
[
max
i
2
ψ
23
(
i
2
,
i
3
)
⋅
(
max
i
9
ψ
92
(
i
9
,
i
2
)
)
⋅
(
max
i
8
ψ
82
(
i
8
,
i
2
)
)
]
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))]
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))]
由于知道了各阶段的联合概率分布,边缘概率分布的计算变得非常简单。以
i
4
i_4
i4结点为例。现在已知联合概率分布
P
(
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)
P(i1,i2,i3,i4,i6,i7,i8,i9)和概率分布
P
(
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(i1,i2,i3,i6,i7,i8,i9),
i
4
i_4
i4的边缘概率分布直接做除法即可:
P
(
i
4
∗
)
=
max
i
1
,
i
2
,
i
3
,
i
4
,
i
6
,
i
7
,
i
8
,
i
9
P
(
i
1
,
i
2
,
i
3
,
i
4
,
i
6
,
i
7
,
i
8
,
i
9
)
max
i
1
,
i
2
,
i
3
,
i
6
,
i
7
,
i
8
,
i
9
P
(
i
1
,
i
2
,
i
3
,
i
6
,
i
7
,
i
8
,
i
9
)
\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)