这部分讨论 MAP 估计。从某个角度上来说,我们可以将这个问题转换成为前面讨论过的:

这样一来我们只需要将原先的 sum-product 换成 max-sum 即可。话虽这么说,我们还是看看 Koller 同学给大家准备了些什么东西。

首先是一些复杂性方面的结论,如给定一个 BN 和常数 ,问是否存在 。这个 decision 问题(BN-MAP-DP)是 NP-hard 的,这导致 marginal 版本也是 NP-hard 的,事实上 marginal 版本在某种意义上更难一些,即是 -complete(这个大概的意思可以从这个 wiki page 上推测出来),更直接的证据是,即便是对 polytree,对应的 decision problem 仍然是 NP-hard 的。

为了更好地说明一些算法,我们可以先为一些这类问题里面的对应概念起个名字,比如 margin 可以对应于 max-margin:对应于给定部分变量后最大的概率(可以对一般的函数类似的定义)。利用 max-margin,我们也可以为 MAP 导出 variable elimination 算法(每次乘几个 factor,然后对某个变量取 max),这个流程和求 margin 的 VE 是完全一样的,影响该算法效率的也是对应 clique tree 的 width。MAP 里面需要的很多时候并不是“最大后验概率的数值”本身,而是随机变量的值,这个过程一般称为 decoding,如信息论/编码理论里面比较强调的解码就可以看成 MAP 的一种特例。decoding 一般有一个回溯的过程,也就是获得了最大值之后一个变量一个变量带回求得所有的赋值的过程。

对于 marginal MAP 我们往往需要先做求和获得 margin,然后在 margin 上重复以上过程。但事实上即便是形如 HMM 但是将生成观测部分的依赖关系反过来获得的 polytree 也会有 exponential time 求解 marginal MAP 问题的时间开销。

除了 belief propagation 可以沿用以外,belief update 的参数化也可以用在这里。为此我们首先引入 max-calibrated 概念,即两个 cluster graph 中 node 的 max-margin 在 sep set 部分的 max-margin 是 agree 的。事实上我们也只需要对原来的算法稍加修改(将 换掉,原先 sum 变成 max 即可),同时令人吃惊的是此时的 belief update 仍然能保证这个 parameterization 和原分布的 factor 乘积一致。这个地方我们知道其实是 tree 上做 dynamic programming 的一个例子,那么它也满足所谓的全局最优导致的局部最优,即 MAP 的解也能最大化每个 max-belief。

类似 BP 在有环的 cluster graph 上的应用,这里我们也可以将这类算法应用到该情况下的 MAP,这时收敛的解称为 pseudo-max-marginals。一般来说,尽管获得的解并非全局最优,但可以是 strong local maxima,因此仍然有较高概率(仍然是比较合理的解)。类似 Bethe energy approximation,这个算法也可以看成是某个自由能最大化对应 stationary point 求解 fixed point equation 的过程。

另一个有意思的视角是将 MAP 转换成为整数线性优化问题(integer linear programming),这个可以简单的将目标后验取 log,变成几个 factor 对数之和,那么为每个 factor 对应的表构造一个取值乘以 log 概率的和就能得到最原始的线性规划目标函数了,只是我们还需要 local 的赋值与其他的要 compatible,这就是约束,或者我们直接用无约束的形式也可以。这个 ILP 仍然是难的,常见的 relaxation 是将取值这个 函数变成 取值的,这就得到了 linear programming。往往在这种松弛下,我们需要额外的信息帮助我们剔出掉一些不合理的解。一种是在 energy 中的熵上乘以温度,当温度足够低的时候的解是我们需要的(可以理解成为一种 regularizer?)这个解释如果从 log 域转换回来,对应的是将 max-product 当做 sum-product 在温度足够低时的极限。

一种神奇情况下的解(精确解!),是对 pairwise Markov network 且变量取 0-1 值的情况,这时的 MAP 还能转换成为 graph cut从而可以被诸如 min-cut 算法获得精确解。这种情况可以用所谓的 submodular energy function 来定义,如果 ,这时每条边的 loss 其实是 log-linear model 的系数(诡异,后面看文献吧)。非 binary 的情况一般就变成难的问题了,常用的技术是 alpha-expansion 和 alpha-beta-swap。这块 mm 应该最熟悉了!

最后一系列解决方案是暴力的搜索,说是暴力其实也有一定的技巧比如 branch and bound、beam search 等等。下面是需要察看的文献:

——————
For Sarah conceived, and bore Abraham a son in his old age, at the set time of which God had spoken to him.

pgm10的更多相关文章

  1. ebe2

    Email:kefu007@vip.qq.com 软件每天有更新.请用Ctrl+F键搜索您需要的软件..如果你找不到你需要的软件可以联系客户服务人员帮您找! 海拉之光LucidShape光学设计仿真分 ...

随机推荐

  1. $\rm{NOIP}$前的模拟题整理·菜鸡互啄篇

    嗯,打算整理一下我们机房菜鸡互啄中比较不错的题-- 大概情况就是每个人出三道题,然后互测这种感觉-- 至于某些Y姓基佬.Z姓基佬偷偷出原题--就不说了233 嗯,剩下的就先\(magpie\)着吧23 ...

  2. opencv7-ml之统计模型

    在opencv的ml模块中有个统计模型类,而其他的比如朴素贝叶斯分类器.knn.svm等等其他模型都是基于该模型上派生出来的.所以先介绍下该模型. 该类的定义在文件"opencv\sourc ...

  3. 带您详细解读分布式文件系统HDFS

    一.HDFS的由来: 本地系统:一个节点作为系统,以前数据是存放在本地文件系统上的,但本地文件系统存在两个问题:1.本地节点存储容量不够大:2.本地节点会坏,数据不够安全.这时,人们开始利用闲置的计算 ...

  4. git reset之后找回本地未提交的代码

    头脑发热使用了git reset命令回退到了之前的一个版本,结果把本地没有提交的代码给覆盖掉了..... 作为一个bug员自然是想恢复,毕竟重新写还得再测一遍,本着能懒一点是一点的原则,开始了恢复代码 ...

  5. MB_SELECT_GR_BLOCKED_STOCK 读取物料收货冻结库存

    MMBE 查询物料的当前库存,有一列是收货冻结库存(GR Blocked Stock),但是没有明细. 通过函数 MB_SELECT_GR_BLOCKED_STOCK 可以查询物料收货冻结库存的明细. ...

  6. Scala_方法和函数

    方法的定义 def functionName([参数列表]) : [return type] = { function body return [] } 如果没有=和{}包裹的方法体,那么该方法被隐式 ...

  7. EZ 2018 05 13 NOIP2018 模拟赛(十三)

    这次的比赛真心水,考时估分240,然后各种悠闲乱逛 然后测完T1数组开小了炸成40,T2,T3都没开long long,T2炸成20,T3爆0 掉回1600+的深渊,但是还有CJJ dalao比我更惨 ...

  8. Java 多线程(二)之 Thread 优先级

    目录 Thread 中线程优先级相关属性 相关函数 优先级初始化 设置优先级 获取优先级 默认优先级 指定优先级 注意事项 优先级继承 @ Thread 中线程优先级相关属性 每个线程均有优先级,在 ...

  9. 委托、多播委托(MulticastDelegate)

    委托.多播委托(MulticastDelegate) 多播委托(MulticastDelegate)继承自 Delegate ,表示多路广播委托:即,其调用列表中可以拥有多个元素的委托.实际上,我们自 ...

  10. EF查询百万级数据的性能测试--单表查询

    一.起因  个人还是比较喜欢EF的,毕竟不用写Sql,开发效率高,操作简单,不过总是听人说EF的性能不是很好,也看过别人做的测试,但是看了就以为真的是那样.但是实际上到底是怎么样,说实话我真的不知道. ...