一篇理解Message passing算法 | 贝叶斯推断

​Message Passing

Introduction

我们前面介绍了概率论的基础和基本的贝叶斯网络的基础。这一节我们会给你一个黑盒子,它能在你提供一些信息的情况下回答你的问题。而这个黑盒子就是参数确定了的贝叶斯网络啦,而这个根据事实回答文题的功能被称为 Inference

Inference

定义:计算事件 Si 在定义一些结点 Sj 的信息后的概率 P(Si | {Sj = x}),其中 {sj=x} 这个集合被称为证据 (evidence),Sj 就是被观测的变量.

Inference 分类

所有的 inference 方法可以分成大的两类:

  1. 确定性推断

    Message Passing (1988)

    Junction Tree (1990)

    Shafer-Shenoy (1990)

  2. 近似推断

    Sampling (包括MCMC, Gibbis, Slice)

    Variational methods

今天我们就来介绍一下最简单的 Message Passing 啦

Message Passing

先给严肃正儿八经的定义

基本的规则

1. 该算法只适用于 Polytree (有向无环图),当所有的方向去掉后就是一个树结构
2. 每个节点都会给自己的父节点和子节点发信息


基本定义

  1. 证据节点 ε = Nx  Dx,其中 Nx 是 X 的非子孙节点 (绿色虚框中的所有节点),Dx 是 X 的子孙节点 (蓝色虚框中的所有节点)

  2. 对于 X 而言有两种信息与它相关,从自身传到子孙节点的 λ 信息,从非子孙节点传过来的 π 信息,我们可以证明 P(X|ε=e) ∝ λ(X)π(X),此时 λ(X) ∝ P(Dx|X) π(X) ∝ P(X|Nx).

    证明

    由于 P(X) 和 P(Dx) 是贝叶斯网络中的参数,所以已知,我们可以把红框内的概率当做常数,从而P(X|ε=e) ∝ P(X|Nx) P(Dx|X), 然后结论得证

    由此我们可以计算出 P(X|ε=e) 在每个取值 Xi 关于 λ(Xi)π(Xi) 成比例的值,然后根据这些值做归一化就得到 P(X|ε=e)

    那么我下一步就具体讲讲怎么求传递到我们的 X 节点的 λ(X) 和 π(X) 信息啦~ ~ ~


从子孙节点传递过来的 λ信息 λ(X)∝ P(Dx|X )

  1. 初始节点的λ信息

    如果 X 是没有被观测到的叶子节点:λ(X) = [1 . . . 1]

    如果 X 是被观测了的节点:λ(X) = [001 . . . 0]

    λ(X) 的维度是 X 所有可能取值的大小

    EXP:比如X是天气,假定我们有阴天,晴天,雨天,下雪天。

    如果 X 是第一种情况 λ(X) = [1, 1, 1, 1];若 X 是第二种情况比如 X=雨天 λ(X) = 0, 0, 1, 0

  2. λ信息的传递和收集

    从孩子节点 Y 传递到当前节点 X 的 λ信息:

    收集所有孩子节点 Y 传递到 **X ** 的 λ信息:


从非子孙节点传递过来的 π信息 π(X) ∝ P(X|Nx )

  1. 初始节点的π信息

    如果 X 是没有被观测到的根节点:π(X) = P(X)

    如果 X 是被观测了的节点:π(X) = [001 . . . 0]

  2. π信息的传递和收集

    从父节点 Z 传递到当前节点 X 的 π信息

    收集所有父节点 Z 传递到 X 的 π信息

    注意:从某一父节点传递过来的信息是从 Z 的除 X 外的子节点传递过来的 λ 信息

Inference Example

新版踢猫效应

如图是踢猫效应的贝叶斯模型和初始参数,假设只有儿子会踢猫 (Message Passage 只适用于有向无环图)

F 节点代表爸爸今天上班有没有被批评,F=0 代表没有被批评;F=1 代表被批评

被批评的概率为0.2,没有被批评的概率为0.8.

S 节点表示儿子是否被骂,S=0 代表儿子没有被骂,S=1 代表儿子被骂

当 F=0 时,儿子被骂可能性为0.8,没被骂的可能性为 0.2;当F=1时,儿子被骂可能性为0.5,没被骂的可能性为0.5. 有 P(S=0|F=0)=0.5, P(S=1|F=0)=0.5, P(S=0|F=1)=0.2, P(S=1|F=1)=0.8

D 节点代表女儿是否被骂,D=0 代表女儿没有被骂,D=1 代表女儿被骂

类似的,P(D=0|F=0)=1, P(D=1|F=0)=0, P(D=0|F=1)=0.5, P(D=1|F=1)=0.5

(对比两组数量来看,整体来看爸爸对儿子没那么友好 ~ ~ ~)

C 节点代表猫是否被踢,C=0 (猫没事儿),C=1(猫挨踢了)

P(C=0|S=0)=0.8, P(C=1|S=0)=0.2,P(C=0|S=1)=0.2,P(C=1|S=1)=0.8

基于以上贝叶斯模型,我们来提两个问题:

  1. 当爸爸今天上班挨批了,猫咪挨踢的概率是多少?

  2. 这种情况下,女儿挨骂的概率是多少?

OK,run起我们的 Message Passing Reference,看看这两个事件发生的概率

λ信息

 

π信息

最终根据爸爸上班挨批的信息,所有的 λ信息和 π信息如下图所示:

根据此前的 P(X|ε=e) ∝ λ(X)π(X)

P(猫咪挨踢|爸爸上班挨批) = P(C=1|F=1) ∝  λ(C=1)π(C=1) = 1*0.68

P(猫咪没事儿|爸爸上班挨批) = P(C=0|F=1) ∝  λ(C=0)π(C=0) = 1*0.32

所以 P(猫咪挨踢|爸爸上班挨批) = 0.68/(.68+0.32) = 0.68

P(女儿挨骂|爸爸上班挨批) = P(D=1|F=1)  ∝  λ(D=1)π(D=1) = 1*0.5

P(女儿没事儿|爸爸上班挨批) = P(D=0|F=1)  ∝  λ(D=0)π(D=0) = 1*0.5

所以 P(女儿挨骂|爸爸上班挨批) = 0.5 / (0.5+0.5) = 0.5

大家感兴趣的话,可以自己推一下女儿挨批的情况下,猫咪被踢的概率,以及儿子被骂的概率是怎么样的,这个问题可能会更有趣!

Reference

[南特大学概率图模型] by Philippe LERAY & Hoel LE CAPITAINE

因为微信限制 gif 大小,如果感情趣的同学留言,我可以把完整的动画PPT分享给你,那各位今天就是这样啦,假期快乐!

  • 23
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值