Belief Propagation
一个图模型包含 N 个随机变量 x=(x1,…,xN),从有限字母表 X 中取值. 需要解决一些问题,例如:
- 给定一些条件,求另一些变量的边缘分布;
- 一些后验估计相关
但是我们不会去直接计算联合分布 p(x),因为它的状态空间是指数级别 ∣X∣N 个取值. BP 将这个问题转化为局部计算,利用图的稀疏性/特殊结构来避免指数级别的计算.
Example 1: Ising chain
Ferromagnetic Ising model has σ=(σ1,…,σN),σi∈{1,−1} with joint distribution
μβ(σ)=Z1exp(βi=1∑N−1σiσi+1+βBi=1∑Nσi)
where Z is the partition function.
我们计算 σj 的 marginal distribution, 这里用 ∝ 来省略归一化因子:
μ(σj)∝σ1,…,σj−1,σj+1,…,σN∑exp(βi=1∑N−1σiσi+1+βBi=1∑Nσi)=σ1,…,σj−1,σj+1,…,σN∑exp(βi=1∑j−1σiσi+1+βBi=1∑j−1σi)exp(βi=j∑N−1σiσi+1+βBi=j+1∑Nσi)exp(βBσj)
分配拆开即可,是两个和的乘积. 定义 "message":

This decomposition is interesting because the various messages can be computed iteratively.
而这两个部分都是 local 信息,左边的求和和右边无关. 例如 ν^→1(σ1) 和 ν^←n(σn) 就是均匀二项分布. 这样就可以递推求出各个分布了.
ν^→i(σi)∝σi−1∑ν^→(i−1)(σi−1)exp(βσi−1σi+βBσi−1)
ν^←i(σi)∝σi+1∑ν^←(i+1)(σi+1)exp(βσiσi+1+βBσi+1)
Example 2. a tree-parity-check code
We start from a concrete example.

左图是这个方程组的 factor graph.
已知纠错矩阵,将一个 x 通过 BSC(p) 信道传输(每一 bit 以 p 的概率翻转),接收方得到 y. 考虑 distribution conditioned on y,令 Q(i∣i)=1−p,Q(i∣j)=p,∀i=j.

我们可以逐 bit 分析,需要在给定 y 的情况下计算每个 xi 的 marginal distribution. 假设 y=(1000010).
μ(x1)∝x0x2,…,x6∑I(x0⊕x1⊕x2=0)I(x0⊕x3⊕x4=0)I(x0⊕x5⊕x6=0)i=0∏6Q(yi∣xi)=x0,x2∑I(x0⊕x1⊕x2=0)Q(y0∣x0)Q(y2∣x2)×x3,x4∑I(x0⊕x3⊕x4=0)Q(y3∣x3)Q(y4∣x4)×x5,x6∑I(x0⊕x5⊕x6=0)Q(y5∣x5)Q(y6∣x6)×Q(y1∣x1)=Q(y1∣x1)x0,x2∑I(x0⊕x1⊕x2=0)Q(y0∣x0)Q(y2∣x2)ν^b→0(x0)ν^c→0(x0)
μ(x0)∝x1,…,x6∑I(x0⊕x1⊕x2=0)I(x0⊕x3⊕x4=0)I(x0⊕x5⊕x6=0)i=0∏6Q(yi∣xi)=x1,x2∑I(x0⊕x1⊕x2=0)Q(y1∣x1)Q(y2∣x2)×x3,x4∑I(x0⊕x3⊕x4=0)Q(y3∣x3)Q(y4∣x4)×x5,x6∑I(x0⊕x5⊕x6=0)Q(y5∣x5)Q(y6∣x6)×Q(y0∣x0)
乘积的第一项,就是指 x0 在 {0,a,1,2} 子图中的 marginal distribution, 它和其他节点无关. 可以引入 ν^a→0(x0)∝∑x1,x2I(x0⊕x1⊕x2=0)Q(y1∣x1)Q(y2∣x2) 等等,得到
μ(x1)∝Q(y1∣x1)ν^a→1(x1)
μ(x0)∝Q(y0∣x0)ν^a→0(x0)ν^b→0(x0)ν^c→0(x0)
Belief Propagation on Trees
In this section,
μ(x)=Z1ψa(x∂a)
where ψa has input in {xi:i∈∂a}, i.e. the neighborhood of a. Similar sets are defined for notation ∂i.
We have BP rules:
νj→a(xj)≅b∈∂j∖a∏ν^b→j(xj)ν^a→j(xj)≅x∂a∖j∑ψa(x∂a)k∈∂a∖j∏νk→a(xk).
Simple computation is able to show that the example of parity check code is consistent with the equations above.
If j has only 1 neighbor a, then νj→a(xj)∝1, thus uniform.
Let us verify ν^a→0(x0)∝∑x1,x2I(x0⊕x1⊕x2=0)Q(y1∣x1)Q(y2∣x2):
LHS=∑x1,x2I(x0⊕x1⊕x2=0)Q(y1∣x1)Q(y2∣x2)∏k=1,2νk→a(xk)
A graph:
and a clarifying lecnote:

实际上,以上的 BP 应该按照迭代的方式理解.

这个有点像 Bellmann-ford, 明明我们要对整体进行分析(比如计算边缘分布)但是我们可以对局部(也就是每一条边)进行迭代得到结果.
We have converging theorem:

Correlations and Energy
现在我们更进一步,想要计算某两个变量的联合边缘分布 μij(xi,xj). 因为我们可以计算 μ(xi), 只需计算 Px∼μ(xj=xj∣xi=xi) 即可. (注意这里稍微有点符号混用,你可以将 x 看成一个随机变量). 可以定义
μ(x∣xi=b)∝a=1∏Mψ(x∂a)I(xi=b).
其实相当于加一条约束 xi=b, 在 factor graph 中的体现为 i 号节点挂出去了一个方块节点.
记 FR 是某个由方块节点构成的集合(也就是由约束节点构成),VR=∂FR 是和 FR 相连的变量节点,其中 R 代表诱导子图. 令 xR 代表 R 中变量构成的联合向量. 不妨设 R 是连通图.
根据 message 的物理意义,可以计算 xR 的边缘联合分布,它由内部因子 ϕa(a∈FR) 和外部 message (相当于对子树代表的变量积分) 构成:
μ(xR)∝a∈FR∏ψa(x∂a)a∈∂R∏ν^a→i(a)(xi(a))
其中 i(a) 表示 a 在 R 中的唯一邻居(如果有两个邻居就总会成环,可以对连通图 R 证明这一点).
Internal Energy
In physics problems, the compatibility functions ψa take the form ψa(x∂a)=e−βEa(x∂a).
The internal Energy is defined to be the expectation of total energy among all possible configurations x.
U=⟨E⟩=x∑μ(x)a=1∑MEa(x∂a)=−β1x∑μ(x)a=1∑Mlogψa(x∂a)
Exchange the summing order, with fixed a our aim is to compute
x∑μ(x)logψa(x∂a)=x∂a∑xi∈/∂a∑μ(x)logψa(x∂a)=x∂a∑μ(x∂a)logψa(x∂a)
这里我们要算 μ(x∂a), 相当于在上一节中我们取 FR={a}, 得到最终结果
U=−a=1∑MZa1x∂a∑(ψa(x∂a)logψa(x∂a)i∈∂a∏νi→a(xi))
Entropy
First, a surprising Thm:

这样一来就可以算 H(x)=⟨logμ(x)⟩μ 了.

有自由熵 Φ=H−U.(第一眼量纲不对;在热统中,有定义 Helmholtz 自由能 F=U−TS,实际上这个差了一个负号和一些因数:Φ=−βF=kBS−βU=H−βU, 用 β=1 简化).

参考资料