| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 概率图模型--变量消元法与团树传播算法 -> 正文阅读 |
|
[人工智能]概率图模型--变量消元法与团树传播算法 |
概率图模型–变量消元法与团树传播算法 – 潘登同学的Machine Learning笔记文章目录简单回顾概率图模型的推理任务
概率推理是核心问题, 概率推理相当于模型求解; 变量消元算法
(就是最基础的 P ( A , B ) = ∑ C 、 D P ( A , B , C , D ) P(A, B)=\sum_{C、D}P(A,B,C,D) P(A,B)=∑C、D?P(A,B,C,D) 的形式) 我们从例子来理解变量消元算法 MRF应用变量消元算法考虑这样一个链式MRF P ( E ) ∝ ∑ D ∑ C ∑ B ∑ A P ~ ( A , B , C , D , E ) = ∑ D ∑ C ∑ B ∑ A ? 1 ( A , B ) ? 2 ( B , C ) ? 3 ( C , D ) ? 4 ( D , E ) = ∑ D ∑ C ∑ B ? 2 ( B , C ) ? 3 ( C , D ) ? 4 ( D , E ) ( ∑ A ? 1 ( A , B ) ) 注意 = ∑ D ∑ C ∑ B ? 2 ( B , C ) ? 3 ( C , D ) ? 4 ( D , E ) τ 1 ( B ) = ∑ D ∑ C ? 3 ( C , D ) ? 4 ( D , E ) ∑ B ? 2 ( B , C ) τ 1 ( B ) = ? = τ 4 ( E ) ? 归 一 化 ? 概 率 值 \begin{aligned} P(E) &\propto \sum_D \sum_C \sum_B \sum_A \tilde{P}(A,B,C,D,E)\\ &= \sum_D \sum_C \sum_B \sum_A \phi_1(A,B) \phi_2(B,C) \phi_3(C,D) \phi_4(D,E) \\ &= \sum_D \sum_C \sum_B \phi_2(B,C) \phi_3(C,D) \phi_4(D,E)(\sum_A \phi_1(A,B)) & \text {注意}\\ &= \sum_D \sum_C \sum_B \phi_2(B,C) \phi_3(C,D) \phi_4(D,E)\tau_1(B) \\ &= \sum_D \sum_C \phi_3(C,D) \phi_4(D,E) \sum_B \phi_2(B,C)\tau_1(B) \\ &= \cdots \\ &= \tau_4(E) \\ &\Rightarrow 归一化 \Rightarrow 概率值 \end{aligned} P(E)?∝D∑?C∑?B∑?A∑?P~(A,B,C,D,E)=D∑?C∑?B∑?A∑??1?(A,B)?2?(B,C)?3?(C,D)?4?(D,E)=D∑?C∑?B∑??2?(B,C)?3?(C,D)?4?(D,E)(A∑??1?(A,B))=D∑?C∑?B∑??2?(B,C)?3?(C,D)?4?(D,E)τ1?(B)=D∑?C∑??3?(C,D)?4?(D,E)B∑??2?(B,C)τ1?(B)=?=τ4?(E)?归一化?概率值?注意
贝叶斯网络应用变量消元算法考虑这样一个贝叶斯网络
消元顺序1(没有固定的说法, 一般从少的开始消)
消元顺序2
这里就不再写公式了, 直接用表格展示
可以看到, 这种消元方法:在前面几步的时候运算量很大, 就有可能增加算法的复杂度, 但是具体增加还是减少要具体分析, 下面会分析算法复杂度;
|
步骤 | 消元变量 | 涉及因子 | 涉及变量 | 新因子 |
---|---|---|---|---|
1 | C | ? C ( C ) ? D ( C , D ) \phi_C(C)\phi_D(C,D) ?C?(C)?D?(C,D) | C,D | τ 1 ( D ) \tau_1(D) τ1?(D) |
2 | D | τ 1 ( D ) ? G ( G , I , D ) \tau_1(D)\phi_G(G,I,D) τ1?(D)?G?(G,I,D) | G,I,D | τ 2 ( G , I ) \tau_2(G,I) τ2?(G,I) |
3 | I | τ 2 ( G , I ) ? I ( I ) ? S ( S , I ) \tau_2(G,I)\phi_I(I)\phi_S(S,I) τ2?(G,I)?I?(I)?S?(S,I) | G,S,I | τ 3 ( G , S ) \tau_3(G,S) τ3?(G,S) |
4 | H | ? H ( H , G , J ) \phi_H(H,G,J) ?H?(H,G,J) | H,G,J | τ 4 ( G , J ) \tau_4(G,J) τ4?(G,J) |
5 | G | τ 3 ( G , S ) τ 4 ( G , J ) ? L ( L , G ) \tau_3(G,S)\tau_4(G,J)\phi_L(L,G) τ3?(G,S)τ4?(G,J)?L?(L,G) | S,G,J,L | τ 5 ( S , L , J ) \tau_5(S,L,J) τ5?(S,L,J) |
6 | S | τ 5 ( S , L , J ) ? J ( J , L , S ) \tau_5(S,L,J)\phi_J(J,L,S) τ5?(S,L,J)?J?(J,L,S) | S,L,J | τ 6 ( L , J ) \tau_6(L,J) τ6?(L,J) |
7 | L | τ 6 ( L , J ) \tau_6(L,J) τ6?(L,J) | L,J | τ 7 ( J ) \tau_7(J) τ7?(J) |
由变量消元构造团树
注意:
节点1虽然看上去是C、D, 但是C、D本身没有含义, 节点其实是
?
C
(
C
)
?
D
(
C
,
D
)
\phi_C(C)\phi_D(C,D)
?C?(C)?D?(C,D)
每个节点 i i i是变量集的子集, 即 C i ? χ C_i\subseteq\chi Ci??χ
对应回上图发现, 每个节点都是变量集 { C , D , I , H , G , S , L } \{C,D,I,H,G,S,L\} {C,D,I,H,G,S,L}的子集
即每个因子 ? \phi ?必须与一个节点 C i C_i Ci?关联, 使得 S c o p e [ ? ] ? C i Scope[\phi]\subseteq C_i Scope[?]?Ci?
以
3:G、I、S
为例, 因子 ? I ( I ) 、 ? S ( S , I ) \phi_I(I)、\phi_S(S,I) ?I?(I)、?S?(S,I)与该节点关联
一对节点 C i C_i Ci?和 C j C_j Cj?之间的每条边与一个割集 S i , j S_{i,j} Si,j?关联, 其中 S i , j ? C i ∩ C j S_{i,j}\subseteq C_i\cap C_j Si,j??Ci?∩Cj?
以
1:C、D
和2:D、I、G
为例, 边是 D D D,而 D ? { C 、 D } ∩ { D 、 I 、 G } D\subseteq \{C、D\}\cap \{D、I、G\} D?{C、D}∩{D、I、G}
回想变量消元法的过程, 如第一步:消去变量C, 那就对涉及C、D的因子做乘积求和, 然后C的信息就蕴含在新因子 τ 1 ( D ) \tau_1(D) τ1?(D)中了;
那么后续第二步, 当想消去变量D的时候, 因为与变量C有关的那部分D的信息蕴含在
τ
1
(
D
)
\tau_1(D)
τ1?(D)中了, 所以这个因子就作为一个消息传递到2:D、I、G
中;
关键还是要理解前面的注意
:
进而:
1:C、D
也可以属于2:D、I、G
(根据定义判断即可), 所以这个新因子就充当了消息传递的边出现;又因为:
性质1: 树状图, 在变量消元过程中, 每个中间因子被使用一次, 每个聚类图的节点传递一个消息给唯一的另一个节点, 因此整个变量消元的过程产生的聚类图为一个树状图(因为树的特点就是: N个点的树有N-1条边, 就是连接N个点的最小边数);
性质2: 族保持(每个因子 ? \phi ?必须与一个节点 C i C_i Ci?关联, 使得 S c o p e [ ? ] ? C i Scope[\phi]\subseteq C_i Scope[?]?Ci?), 概率图模型的每个因子必须出现在某个消元步骤, 所以满足族保持性质;
性质3:执行交叉性质(对于聚类图, 如果对于任意变量 X ∈ C i , X ∈ C j X\in C_i, X\in C_j X∈Ci?,X∈Cj?, 若 X X X也出现在两个节点之间唯一路径上的两个节点, 则该聚类图满足执行交叉性质)
团树
如果聚类图满足上述三个性质, 则聚类图定义为团树;
显然, 由变量消元法得到的聚类图为团树;
(算法)
团树传播算法
计算变量X的边缘概率
输入: 变量消元法的结果(包括消元顺序, 涉及变量, 涉及因子, 新因子)
输出: X的边缘概率
- 利用变量消元构造团树, 团树节点势函数初始化
- 选取变量X所在的节点作为根节点
- 计算叶子节点到根节点的消息
- 根节点的势函数乘以来自邻接点的消息
- 计算变量X所在节点的边缘概率
注意
之所以能把X作为根节点, 是因为树就是有这个特性, 树的任意一个节点都能作为根节点;
利用变量消元构造团树
团树节点势函数初始化
选取最右边那个空的节点作为根节点
计算叶节点到根节点的消息
δ
i
→
j
=
∑
C
i
?
S
i
,
j
∏
k
∈
(
N
b
C
r
?
{
j
}
)
δ
k
→
i
\delta_{i \rightarrow j} = \sum_{C_i-S_{i,j}}\prod_{k\in(Nb_{C_r}-\{j\})}\delta_{k \rightarrow i}
δi→j?=Ci??Si,j?∑?k∈(NbCr???{j})∏?δk→i?
δ 1 → 2 ( D ) = ∑ C ψ 1 ( C 1 ) \delta_{1 \rightarrow 2}(D) = \sum_{C}\psi_1(C_1) δ1→2?(D)=∑C?ψ1?(C1?)
δ 2 → 3 ( G , I ) = ∑ D ψ 2 ( C 2 ) × δ 1 → 2 \delta_{2 \rightarrow 3}(G,I) = \sum_{D}\psi_2(C_2)\times\delta_{1 \rightarrow 2} δ2→3?(G,I)=∑D?ψ2?(C2?)×δ1→2?
δ 3 → 5 ( G , S ) = ∑ I ψ 3 ( C 3 ) × δ 2 → 3 \delta_{3 \rightarrow 5}(G,S) = \sum_{I}\psi_3(C_3)\times\delta_{2 \rightarrow 3} δ3→5?(G,S)=∑I?ψ3?(C3?)×δ2→3?
δ 4 → 5 ( G , J ) = ∑ H ψ 4 ( C 4 ) × δ 2 → 3 \delta_{4 \rightarrow 5}(G,J) = \sum_{H}\psi_4(C_4)\times\delta_{2 \rightarrow 3} δ4→5?(G,J)=∑H?ψ4?(C4?)×δ2→3?
δ 5 → 6 ( J , S , L ) = ∑ G ψ 5 ( C 5 ) × δ 4 → 5 × δ 3 → 5 \delta_{5 \rightarrow 6}(J,S,L) = \sum_{G}\psi_5(C_5)\times\delta_{4 \rightarrow 5}\times\delta_{3 \rightarrow 5} δ5→6?(J,S,L)=∑G?ψ5?(C5?)×δ4→5?×δ3→5?
δ 6 → 7 ( J , L ) = ∑ S ψ 6 ( C 6 ) × δ 5 → 6 \delta_{6 \rightarrow 7}(J,L) = \sum_{S}\psi_6(C_6)\times\delta_{5 \rightarrow 6} δ6→7?(J,L)=∑S?ψ6?(C6?)×δ5→6?
P ( J ) = ∑ L δ 5 → 6 P(J) = \sum_{L}\delta_{5 \rightarrow 6} P(J)=∑L?δ5→6?
说白了就是变量消元法的程序实现罢了;
一种很自然的想法就是, 对所有节点作为根节点, 多次计算边缘概率;
但是有更好的方法, 基于树的特性:
画图来说明:
变量消元法与团树传播算法就是这样了, 继续下一章吧!pd的Machine Learning
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:29:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |