置信传播(Belief Propagation)与链式有向图模型前向后向算法——CVMLI Prince读书随笔第11章

这本书把置信传播算法讲的非常清楚。所以这里mark一下。以下阅读请先知道链式有向图前后向算法的原理。

前向后向算法

记链式有向图隐变量为 w 1.... N w_{1.... N} w1....N,已知的观测值为 x 1... N x_{1...N} x1...N.
其中,前向函数 f n ( w n ) = P ( x 1... n , w n ) f_n(w_n)=P(x_{1...n}, w_n) fn(wn)=P(x1...n,wn),后向函数 b n ( w n ) = P ( x n + 1... N ∣ w n ) b_n(w_n) = P(x_{n+1...N}|w_n) bn(wn)=P(xn+1...Nwn). 进而:
P ( w n ∣ x 1... N ) ∝ P ( w n , x 1... n ) P ( x x n + 1... N ∣ w n ) = f n ( w n ) b n ( w n ) P(w_n|x_{1... N}) \propto P(w_n, x_{1...n})P(x_{x_{n+1...N}|w_n}) = f_n(w_n)b_n(w_n) P(wnx1...N)P(wn,x1...n)P(xxn+1...Nwn)=fn(wn)bn(wn)

置信传播

前向后向算法是置信传播的一个特例, f n , b n f_n,b_n fn,bn被视为传达关于变量信息。
和积算法是一种置信传播算法,可以很容易地从链式模型扩展到树模型。该算法在因子图上进行。因子图属于二部图(Bipartite Graph)。存在两类节点:

  • 变量节点 z z z,如 w i w_i wi, x i x_i xi
  • 函数节点 g g g ,如有向图中 P ( w 1 ∣ w 2 , w 3 ) P(w_1|w_2, w_3) P(w1w2,w3)或无向图中 ϕ ( w 1 , w 2 , w 3 ) \phi(w_1, w_2, w_3) ϕ(w1,w2,w3)

变量节点所代表的变量是函数节点的自变量。同类节点之间没有边直接相连。
和积算法分两个过程,前向过程通过图分发信息,后向过程对信息进行校验。每一条边准确连接到一个变量节点,“消息”在变量的域上定义。
有三种类型的消息:

  1. 从一个未观测变量 z p z_p zp到一个函数节点 g q g_q gq,消息为:
    m z p → g q = ∏ r ∈ n e [ p ] \ q m g r → z p (1) m_{z_p \rightarrow g_q} = \prod_{r \in ne[p] \backslash q} m_{g_r \rightarrow z_p} \tag{1} mzpgq=rne[p]\qmgrzp(1)
    其中 n e [ p ] ne[p] ne[p] z p z_p zp的邻居节点集合。
    从未观测变量传到函数的消息是该变量的所有其他邻居传来消息的点乘,是其他置信度的组合。

  2. 从一个已观测变量 z p = z p ∗ z_p=z_p^* zp=zp到一个函数节点 g q g_q gq,消息为:
    m z p → g q = δ ( z p ∗ ) (2) m_{z_p \rightarrow g_q} = \delta(z_p^*) \tag{2} mzpgq=δ(zp)(2)
    从观测变量到函数的消息是该变量观测值的置信度。

  3. 从函数节点 g p g_p gp到接收变量 z q z_q zq,消息为:
    m g p → z q = ∑ n e [ p ] \ q g p ( n e [ p ] ) ∏ r ∈ n e [ p ] \ q m z r → g p (3) m_{g_p \rightarrow z_q} = \sum_{ne[p] \backslash q}g_p(ne[p]) \prod_{r\in ne[p] \backslash q}m_{z_r \rightarrow g_p} \tag{3} mgpzq=ne[p]\qgp(ne[p])rne[p]\qmzrgp(3)
    需要该函数节点的其他邻居节点传来的置信度,并用函数 g p g_p gp转换为 z q z_q zq的置信度

最后,节点 z p z_p zp的边缘分布可用所有同时从前向过程和后向过程传入的消息乘积
P ( z p ) ∝ ∏ r ∈ n e [ p ] m g r → z p (4) P(z_p) \propto \prod_{r \in ne[p]} m_{g_r \rightarrow z_p} \tag{4} P(zp)rne[p]mgrzp(4)

链式有向图

在这里插入图片描述

前向过程

在这里插入图片描述

  • 对于 m x 1 → g 1 m_{x_1\rightarrow g_1} mx1g1,使用规则2
    m x 1 → g 1 = δ ( x 1 ∗ ) m_{x_1\rightarrow g_1} = \delta (x_1^*) mx1g1=δ(x1)
  • 对于 m g 1 → w 1 m_{g_1\rightarrow w_1} mg1w1,使用规则3
    m g 1 → w 1 = ∫ P ( x 1 ∣ w 1 ) δ ( x 1 ∗ ) d x 1 = P ( x 1 = x 1 ∗ ∣ w 1 ) m_{g_1\rightarrow w_1}=\int P(x_1|w_1)\delta(x_1^*) dx_1 = P(x_1 = x_1^*|w_1) mg1w1=P(x1w1)δ(x1)dx1=P(x1=x1w1)
  • 对于 m w 1 → g 1 , 2 m_{w_1\rightarrow g_{1,2}} mw1g1,2,使用规则1
    m w 1 → g 1 , 2 = P ( x 1 = x 1 ∗ ∣ w 1 ) m_{w_1\rightarrow g_{1,2}} = P(x_1=x_1^*|w_1) mw1g1,2=P(x1=x1w1)
  • 对于 m g 1 , 2 → w 2 m_{g_{1,2}\rightarrow w_{2}} mg1,2w2,使用规则3
    m g 1 , 2 → w 2 = ∑ w 1 P ( w 2 ∣ w 1 ) P ( x 1 = x 1 ∗ ∣ w 1 ) m_{g_{1,2}\rightarrow w_{2}}=\sum_{w_1} P(w_2|w_1)P(x_1 = x_1^*|w_1) mg1,2w2=w1P(w2w1)P(x1=x1w1)

对于 m x 2 → g 2 m_{x_2\rightarrow g_2} mx2g2 m g 2 → w 2 m_{g_2\rightarrow w_2} mg2w2与上述第1、2条类似

  • 对于 m w 2 → g 2 , 3 m_{w_2 \rightarrow g_{2, 3}} mw2g2,3,使用规则1
    m w 2 → g 2 , 3 = P ( x 2 = x 2 ∗ ∣ w 2 ) ∑ w 1 P ( w 2 ∣ w 1 ) P ( x 1 = x 1 ∗ ∣ w 1 ) m_{w_2 \rightarrow g_{2, 3}}=P(x_2=x_2^*|w_2)\sum_{w_1} P(w_2|w_1)P(x_1=x_1^*|w_1) mw2g2,3=P(x2=x2w2)w1P(w2w1)P(x1=x1w1)
    注意, m w n → g n , n + 1 m_{w_n \rightarrow g_{n, n+1}} mwngn,n+1 f n ( w n ) = P ( x 1... n , w n ) f_n(w_n)=P(x_{1...n, w_n}) fn(wn)=P(x1...n,wn)

反向过程

m w N → g N , N − 1 = P ( x N = x N ∗ ∣ w N ) m_{w_N \rightarrow g_{N, N-1}}=P(x_N=x_N^*|w_N) mwNgN,N1=P(xN=xNwN)
m g N , N − 1 → w N − 1 = ∑ w N P ( w N ∣ w N − 1 ) P ( x N = x N ∗ ∣ w N ) m_{g_{N, N-1} \rightarrow w_{N-1}}=\sum_{w_N} P(w_N|w_{N-1})P(x_N = x_N^*|w_N) mgN,N1wN1=wNP(wNwN1)P(xN=xNwN)
通常情况下有
m g n , n − 1 → w n − 1 = ∑ w n P ( w n ∣ w n − 1 ) P ( x n ∣ w n ) m g n + 1 , n → w n = b n − 1 ( w n − 1 ) m_{g_{n, n-1}\rightarrow w_{n-1}}=\sum_{w_n} P(w_n|w_{n-1})P(x_n|w_n)m_{g_{n+1,n} \rightarrow w_n} =b_{n-1}(w_{n-1}) mgn,n1wn1=wnP(wnwn1)P(xnwn)mgn+1,nwn=bn1(wn1)

计算边缘

利用式(4),
P ( w n ∣ x 1... N ) ∝ ∏ m ∈ n e [ n ] m g m → w n = m g n − 1 , n → w n m g n → w n m g n , n + 1 → w n = m w n → g n , n + 1 m g n , n + 1 → w n = f n ( w n ) b n ( w n ) \begin{aligned} P(w_n|x_{1...N}) & \propto \prod_{m \in ne[n]} m_{g_m \rightarrow w_n} \\ &=m_{g_{n-1, n}\rightarrow w_n} m_{g_{n}\rightarrow w_n}m_{g_{n, n+1}\rightarrow w_n} \\ &=m_{w_{n}\rightarrow g_{n, n+1}}m_{g_{n, n+1}\rightarrow w_n} \\ &= f_n(w_n)b_n(w_n) \end{aligned} P(wnx1...N)mne[n]mgmwn=mgn1,nwnmgnwnmgn,n+1wn=mwngn,n+1mgn,n+1wn=fn(wn)bn(wn)
上式第3行利用了规则1。

树模型

在这里插入图片描述
对于该树模型,注意 w 2 , w 4 , w 5 w_2, w_4, w_5 w2,w4,w5之间的关系。
在这里插入图片描述

无向图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值