从概率译码到置信传播,一个采用了校验集合树的概念,一个运用了Tanner图。然而我们实际上还是计算的公式,具体来说是
加法和乘法的运用构成了整个概率模型。但为何在这些算法中都引入了图?图在这里面起到了什么作用?《Pattern Recognition and Machine Learning》在图模型章节的开篇是这样说的
However, we shall find it highly advantageous to augment the analysis using diagrammatic representations of probability distributions, called probabilistic graphical models. These offer several useful properties:
1. They provide a simple way to visualize the structure of a probabilistic model and can be used to design and motivate new models.
2. Insights into the properties of the model, including conditional independence properties, can be obtained by inspection of the graph.
3. Complex computations, required to perform inference and learning in sophisticated models, can be expressed in terms of graphical manipulations, in which underlying mathematical expressions are carried along implicitly.
很多时候我们更关注问题的表示而非其本身。就像LDPC关注校验矩阵的形式,以及数据的各种变换。概率模型也一样,三种图模型被用来表示概率模型,包括有向图模型、无向图模型(马尔可夫随机场)和因子图。三种模型各有优点,本节将介绍因子图。
对于多项式而言,我们有因式分解。譬如在解高次方程的时候,我们非常希望方程能够分解为多个低次方程的乘积。那么,对于概率分布函数而言,我们也希望能够这样做,即
其中 是 中变量的子集,至于到底能够如何分解是取决于问题的,就好象多项式的分解取决于其具体形式。对于一个实际的问题,如果有以下关系
那么这一个式子的因子图表示如下
图 3 因子图
从这个例子,我们总结一下因子图是什么?因子图有两类节点,一是变量节点,另一个成为因子节点。这两类节点的内部没有边直接相连,变量的概率密度可以因式分解为因子节点的函数的乘积,因子节点的函数变量包括与其直接相连的变量节点。
写到这里忽然发现了一个很严重的问题,因子图这一表示是用来干什么的?不是我不想写,是我也不知道。如果从和积算法来说,因子图可以用来计算边缘概率分布。这也是《Pattern Recognition and Machine Learning》中引入因子图的理由。置信传播算法可以看作是和积算法的一个特例。
目的:计算边缘概率
手段:和积算法(要求两个节点之间只有一条路径,即多项式树结构)
实现方式:
- 边缘概率
表示除 之外的变量集合。
- 因子分解
图 4 因子图的分解
这里为何要这样做呢?一个算法要尽可能多的利用已知的结构和信息,和积算法的一个假设是图无环。同时我们发现,对于一个最简单的只有一个变量节点和因子节点的图来说(这时实际上没有意义了),我们已经达到我们要的结果。如果图无环的话,意味着只要我断开一条边,那么这个大的因子图就变成了两个小的因子图。
如果我们将节点 取出,那么因子图变成了 个小因子图,这几个小因子图通过节点 相连,故因子图的概率分布可以写成
其中 代表和 相连的因子节点, 代表在这一个小因子图上的所有因子节点的乘积。
- 将2代入1,得
我们设 如下
我们可以将其看作是因子节点 传递的信息(也就是小因子图传递的)。
- 计算
或许,我们将"计算"改为"表示"更为合适。上文中一直提到"小因子图"显然是可以因子化的,也就是说可以表示为
那么 可以表示为
也就是说,实际上这个过程是小因子图的继续划分的过程,具体可以表示为下图
图 5 因子图的分解(续)
同理可设 ,可将其看作变量节点向因子节点传递的信息。
- 因子图的继续分解
如果我们继续将其分解下去,那么将再次计算到因子节点向变量节点传递的信息,而我们的目的正是如此,希望能够得到 , 之间相对简单的公式,这样我们就能够计算出边缘概率分布了。
图 6因子图的分解(续2)
由图 6 易知
也就是说
- 总结
和积和积,何为和积?变量节点的信息传递是求乘积的过程,因子节点传递的过程是对求乘积后的结果进行求和的过程(依据该因子节点的方程)。
我们注意到实际上都有一个连接的其他节点求乘积的过程,这也就意味着如果一个节点只和一个节点相连,那么其传递的消息是(和1相乘值不变)
- 对应变量节点;
,对应因子节点
到这里,因子图和和积算法已经写完了,要把因子图和和积算法和LDPC译码算法对应起来,我们要解决的问题实际上有两个
- 在译码过程中观测量如何处理?上述因子图的所有变量节点都可以看作是隐藏节点,如何对观测到的结果进行处理,计算条件概率?
- 如何处理因子节点和校验节点之间的关系?
这两个问题还有待进一步思考……
|