和 Koller 的 video 最大的不同莫过于书上讲 LBP 的角度不是 procedural 的,而是原理性的。我们先看个 procedural 的,在一般的 cluster graph 上的 BP 改进版即 loopy belief propagation 先将所有的 message 初始化为 1,然后依照原先的策略进行消息传递,直到收敛为止。这里面收敛很可能不是所有的消息都能收敛,同时传递消息的顺序一般比较 tricky,过去认为有效的同步传递方式已经被搞清楚很多情况下不能收敛到合理的解了。另外一旦收敛了,我们可以证明得到的结果是 calibrated。问题是我们就算了解了这些过程性的东西,仍然无法弄清楚 LBP 究竟在干啥,有的 margin 似乎能收敛到正确的,有的却不行。

为此我们需要换一个角度来理解 LBP,这也就是这部分我们讨论的重点。值得注意的是很多方法上的东西的确在历史上出现在前,但是“换思路”有时候才能揭示一些更深层的东西。这里的思路就是把 inference 通过 optimization 的形式表述出来,这样我们就得到了 LBP 的另外一种 interpretation:使用 fixed point 优化这个近似的目标函数。这也提供给我们了一些其他的思路,比如 expectation propagation 使用的仍然是精确的目标函数,但是传递的是近似的消息。又比如 mean field approximation,这也是用的精确的目标函数,但是将约束松弛到一族给定了分解形式的分布上。

那么问题就来了,如何能把 inference 转换到 optimization 上来呢?这就要借助前面讨论的 I-projection 和 M-projection 了。咋一看似乎前面的讨论偏向 M-projection,但实际上却不是,因为 需要计算在 下的矩,这意味着我们仍然得回答这个分布下的 inference 问题,因此 I-projection 实际用的反而更多。有了目标函数以后,第二个问题是我们找到的分布 需要满足什么条件。假设我们根据一个 clique tree(满足 RIP 和 family preserving property)存在一个 belief 参数化的 ,即

这势必要求我们找到的 满足类似的 consistency 约束,

一个要求 的确是边际分布,一个要求具有 consistency。有了这几点我们就可以得到一个 constrained optimization:我们希望找到对应的 使得对真实分布 I-projection 最小,同时满足以上两个约束的 。事实上,上篇里面的 BP 算法找到的就是这个优化问题的唯一最优解。

我们进一步讨论关于能量函数 ,容易证明它等价于 ,即最大化 Helmholtz free energy,其中自由能 ,注意这里由于 可以利用其分解拆成每个 factor 上的期望,计算可望得以简化。而如果 存在类似的分解,我们也可以想象 也是容易计算的。我们一般称这个自由能为 energy functional,容易看出来其值被 所 bound。由于这是一个函数优化问题,我们常使用变分方法求解(variational methods)。

为了进行求解,我们需要将 的具体形式代入以上目标函数,这样我们就获得(如果 是 calibrated,这样保证最后关于 sep set 的熵是合法的)

(注:对一般的 cluster graph 一般说来 并不相等,这里假定了是一个 calibrated clique tree 的 )在有约束的情况下我们一般使用 Lagrange multiplier 写出 Lagrange function,

这样我们分别计算对 的变分可以得到

如果令 这样我们就得到了 belief update 里面的参数,我们将其该写成 就得到了 message passing 里面的形式,但额外乘以某个常数。至此我们说明了,所得分布 是 stationary point 的充要条件,

这个条件由于对应的是 fixed point 方程的一个迭代解法,这导致了我们一般 LBP 算法的另一个 interpretation。对 tree 结构而言,迭代一次后 message 就收敛了(没有 loop 的原因)。事实上,在 cluster graph 上沿袭 clique tree 的算法,也可以类似的应用到 的参数化(belief update)上,我们可以证明它仍然保证了分布的不变性(cluster graph invariance),从这个角度来说它就是试图使用另外的方式组织 factor 使得该表示更加有用。

为了研究 LBP 的近似程度,我们可以在 cluster graph 选择一个子树,如果原图是 calibrated,我们的这棵子树也将是 calibrated,我们可以检查其上的 belief 是否和其上的 marginal 一致,事实上存在一致的也存在不一致的情形。对收敛性的分析一般在 synchronous 更新上比较容易做(但是 synchronous 效果很差,不建议使用),使用的技巧是 contraction。

和 clique tree 类似,选择合理的 cluster graph 意味着对计算精度和效率的 tradeoff,常用的一种选择是 Bethe cluster graph,这似乎就是 Frey 所说的 factor graph:每个 对应一个顶点,每个变对应一个顶点,然后按照关联关系加边,这个二分图上做 LBP 就是 Frey 同志所说的 factor graph 上做 inference 的策略了。我们可以说明一下为什么这是一个 cluster graph(验证一下比如 family preserving,RIP 等)。Bethe cluster graph 比较容易 missing 的是两个变量的相互作用,因为 cluster 之间的关系只能通过单个变量来进行。

那么从算法上对 BP 的修正意味着对目标函数如何的变化呢?注意前面的目标函数(自由能)虽然并不方便(计算难),我们仍然可以使用 factorized 的版本 (因为已经不是 calibrated cluster tree,两者并不相等)近似,因此此时的 也不再是和原先的 margin 一一对应,而是所谓的 pseudo margin(我们把前面那些约束统称为 local consistency polytope), 这样,尽管我们求解的形式完全一样,但是优化的目标出现了近似,这也导致我们的选择的 belief 变成了 pseudo margin。

当我们选择 Bethe cluster graph 时对应的 energy functional 也称为 Bethe free energy,其中熵的部分可以写成

其中 出现在 factor 中的次数。那么一种可能的近似是将 r.v.s 放在 region 里面,然后也有对应的数数,,这称为 weighted approximate entropy。另一种策略就是通过调整前面的 weight 使得最后这部分是一个“凹函数”(因为是 maximize free energy),这种策略看起来不错但是实际操作上如果 LBP 收敛了其效果和性能都不如 LBP,而如果 LBP 失败了则会有一定的优势。从划分 region 的想法还会导致所谓的 region graph(抛弃 cluster graph 的 idea,这是一个 nested 结构)。region graph 是个有向图,每个 node 表示一个 r.v.s 的子集,而边表示子集的包含关系(父节点也是父集),每个 region 都有自己的 counting number,一般记为 (不见得是正整数),这个可以类似的定义 family preserving property,也可以定义 energy functional,

类似我们也能定义 calibration,另外我们为了在合适的 region graph 上导出对应的 message passing 以及对应的 fixed point equations,还需要

  • variable connectedness:一个 r.v. 对应的顶点形成一个联通分支
  • factor connected ness:对每个 factor 也形成联通分支
  • factor preservation:
  • RIP,对每个变量

关于 LBP 一个很重要的应用是 turbocodes 里面,我们知道解码往往就是通过观测到被污染的编码后的信息解析出来生成这个编码的数据(因为我们知道原始数据和编码方式,我们可以简单的用这个手段分析一个编码的优劣,并且 Shannon 同志已经搞定了理论下界,我们只需要想办法接近它就行),turbocodes 通过两个 codec 并且在两部分 inference 进行 LBP 这获得了非常接近理论界的 codec。这个发现也使得本来已经停滞不前的 approximate inference 研究重新审视 LBP。

从 Koller 的 video 里面我们还知道下面几个东西:

  • LBP 很可能出现问题的情况是 tight loop,strong potential 且 conflicting message
  • LBP 的 convergence 是 local property,有的就是不会收敛,通常实现的时候达到迭代次数后就会停止
  • LBP 的 message passing order 很重要,常用的有 tree reparameterization(TRP),选择一个树,然后在该结构上做一次(因为收敛了),然后不停的重复,尽量选大的树(如 expanding tree);residual belief prpagation(RBP),选择在 sepset 上 disagree 最多的 cluster 进行消息传递
  • 加速 LBP 的策略还有 damping:和上次的 message 凸组合。

后面我们讨论另外两种 approximate inference 的策略。

——————
And yet indeed she is my sister; she is the daughter of my father, but not the daughter of my mother; and she became my wife.

pgm7的更多相关文章

  1. Moodle插件之Filters(过滤器)

    Moodle插件之Filters(过滤器) 过滤器是一种在输出之前自动转换内容的方法. 目的: 创建名为helloworld的过滤器,实现将预输出的“world”字符串替换成“hello world” ...

随机推荐

  1. cloudstack secondary vm starting

    等1个小时,差不多可以进入虚拟机,看日志/var/log/cloud.log

  2. memcpy、memmove、memset、memchr、memcmp、strstr详解

    第一部分 综述 memcpy.memmove.memset.memchr.memcmp都是C语言中的库函数,在头文件string.h中.memcpy和memmove的作用是拷贝一定长度的内存的内容,m ...

  3. 【js】某字符串多次替换

    eg:  var str="icon icon-1chkedchkedchked"; var strNew=str.replace(new RegExp("chked&q ...

  4. map的综合例子

    #include<iostream> #include<string> #include<map> #include<fstream> #include ...

  5. [SPOJ2939]Qtree5

    [SPOJ2939]Qtree5 Tags:题解 题意 链接 给你\(n\)个节点的黑白树,初始全黑.每次可以翻转某点颜色,或查询距离某点最近的白点的距离.\(n\le 10^5\).强制LCT,不准 ...

  6. C++中的this和Python的self对比

    Python,当实例对象调用函数(函数其实都是属于类空间的)的时候,系统会自动将对象本身传入 函数在定义时的第一个变量一般是self.(但self并不是关键字,用其他名字也可以)         定义 ...

  7. CS229笔记:线性回归

    线性回归问题 首先做一些符号上的说明: \(x^{(i)}\):特征(feature) \(y^{(i)}\):目标变量(target variables) \(\mathcal{X}\):特征空间 ...

  8. SQL调优日志--内存问题排查入门篇

    概述 很多系统的性能问题,是由内存导致的.内存不够会导致页面频繁换入换出,IO队列高,进而影响数据库整体性能. 排查 内存对数据库性能非常重要.那么我当出现问题的时候,我们怎么排查性能问题呢? 存在问 ...

  9. Flutter - 创建侧滑菜单(不使用navigatior,仅改变content)

    之前写过一篇文章,Flutter - 创建横跨所有页面的侧滑菜单.这个里面中使用了Navigator.of(context).push来导航到新的页面. 这次介绍一种不使用导航,仅仅改变content ...

  10. (幼儿园毕业)Javascript小学级随机生成四则运算

    软件工程第二次结对作业四则运算自动生成器网页版 一.题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. ...