文章目录

  • 1.高斯网络总体介绍
  • 1.1 背景
  • 1.2 高斯马尔可夫随机场
  • 1.3 小结
  • 2.高斯贝叶斯网络
  • 2.1 背景
  • 2.2 贝叶斯网络图
  • 2.3 卡曼滤波-特殊的高斯贝叶斯网络
  • 2.4 高斯贝叶斯数学模型
  • 3.高斯马尔可夫随机场
  • 3.1 GMN 与 多维高斯分布关系
  • 3.2 目的
  • 3.3 解析多维高斯分布概率密度
  • 3.4 结论


1.高斯网络总体介绍

1.1 背景

高斯网络英文名为"Gaussian-network",也叫高斯图模型,概率图模型PGM(Probability Graphic Model)可以根据隐变量是离散还是连续进行分类;也可以根据概率图是有向图还是无向图进行分类。具体分类如下:如果概率图中的每一个节点都是离散型的变量,那么就有贝叶斯网络BN(Bayesian Network)和马尔可夫随机场MN(Markov Random Field);如果概率图中每个节点都是一维的连续型随机变量,那么就有高斯贝叶斯网络GBN(Gaussian Bayesian Network)和高斯马尔可夫随机场GMN(Gaussian Markov Random Field)。

  • 分类图解如下:

1.2 高斯马尔可夫随机场

现在我们举例一个高斯网络,假设每个节点都是一维的连续型随机变量,假设每个结点都服从高斯分布 python生成一组高斯分布数据 高斯分布代码_无向图,用随机变量 X 表示列向量, python生成一组高斯分布数据 高斯分布代码_无向图_02,那么 X 就是一个高维的高斯分布,其概率密度函数如下:

  • 联合高斯分布的概率密度
    python生成一组高斯分布数据 高斯分布代码_无向图_03
  • 高斯无向图网络图:
  • 小结:
    python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_04

那么我们可以把一个高斯无向图的研究映射导高维的高斯分布上去研究。而对于高维高斯分布来说,我们看重的是其分布对应的均值 (python生成一组高斯分布数据 高斯分布代码_无向图_05) 和 (python生成一组高斯分布数据 高斯分布代码_概率密度_06) 协方差;而我们用协方差来表示单个变量之间的关系,其表示如下:
python生成一组高斯分布数据 高斯分布代码_概率密度_07
python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_08

  • 注:由上式可以得出,python生成一组高斯分布数据 高斯分布代码_无向图_09能够表示结点在全局的独立性,但这个不是我们想要的,我们更希望得到的节点的条件独立性,而为了表示高斯图模型中的条件独立性,我们引入了精度矩阵的变量,也叫 信息矩阵。具体表示如下:
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_10
  • 注:当 python生成一组高斯分布数据 高斯分布代码_概率密度_11,这样我们就可以用精度矩阵的参数python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_12来表示条件概率;这样我们就可以用一个精度矩阵来表示概率图里面的相关独立性关系,这个真的太神奇了。

那我们来想想,如果没有条件独立性假设,那么每一个节点都与其他节点来连接,那么就势必导致计算量巨大,所以在某种程度上,条件独立性假设会使得计算简化。

1.3 小结

经过上述分析,我们可以把一个高斯网络和高维的高斯分布进行联合起来,用协方差矩阵来表示节点之间的全局独立性,用精度矩阵来表示节点之间的条件独立性,这样可以一一对应起来。就相当于初中几何里面的解析几何和图形几何的关系,用数学的方式解决图形问题。

2.高斯贝叶斯网络

2.1 背景

高斯网络一般就指的是连续性的概率图模型PGM,而这次我们介绍的是有向的高斯网络,全称"高斯贝叶斯网络",英文名"Gaussian Bayesian Network",

2.2 贝叶斯网络图

python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_13


我们定义每个节点都是连续型随机变量,且每个节点都是满足高斯分布的, python生成一组高斯分布数据 高斯分布代码_无向图,根据有向图贝叶斯网络的因子分解可得,对于每个节点的概率P(X)如下:

python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_15

  • python生成一组高斯分布数据 高斯分布代码_无向图_16指的是节点 python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_17

这里有句话可总结如下:
python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_18

  • 注:从全局来看,有向图就是一个高斯贝叶斯网络,从局部来看就是一个线性高斯模型;
  • python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_17python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_20组成了线性高斯模型

    我们来回顾下标准的线性高斯标准模型式:
  • 隐变量 X 满足高斯分布 python生成一组高斯分布数据 高斯分布代码_概率密度_21
    python生成一组高斯分布数据 高斯分布代码_概率密度_22
    python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_23
    由于高斯分布的共轭性可得,如果隐变量满足高斯分布,那么其线性表达式也满足高斯分布。线性模型的线性表示 y 与 x 为线性关系。

2.3 卡曼滤波-特殊的高斯贝叶斯网络

我们知道卡曼滤波是一个有向图的高斯网络,满足隐变量X满足高斯分布,具体公式如下:
python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_24
python生成一组高斯分布数据 高斯分布代码_无向图_25
且满足如下线性高斯关系:
python生成一组高斯分布数据 高斯分布代码_无向图_26
python生成一组高斯分布数据 高斯分布代码_概率密度_27

  • 参数为: python生成一组高斯分布数据 高斯分布代码_概率密度_28

python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_29

由此可见,小结如下:
python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_30

2.4 高斯贝叶斯数学模型

现在我们分析下通用的高斯贝叶斯网络模型,为了方便说明,我们假设有如下一个高斯贝叶斯网络图。

python生成一组高斯分布数据 高斯分布代码_概率密度_31


有上图可得,对于节点python生成一组高斯分布数据 高斯分布代码_概率密度_32来说,其父节点为python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_33,则 python生成一组高斯分布数据 高斯分布代码_无向图_34,那么我们对于有向图模型来说,其概率图概率密度为如下:

python生成一组高斯分布数据 高斯分布代码_概率密度_35

因为我们不知道节点 python生成一组高斯分布数据 高斯分布代码_概率密度_32 有多少个父节点,所以我们向量加权重的形式表达。我们假设父节点如下:
python生成一组高斯分布数据 高斯分布代码_概率密度_37
那么我们可得得到概率python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_38如下:
python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_39

  • python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_40一维的随机变量

我们把上述式子转换成等式形式如下:
python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_41

  • python生成一组高斯分布数据 高斯分布代码_概率密度_42

整理上式可得如下:
python生成一组高斯分布数据 高斯分布代码_无向图_43

  • 注:写成 python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_44是为了数据归一化处理,将整个数据的均值移动至零点,方便后期模型的学习。

为了后续计算机的计算的,我们需要将上述公式进行矩阵化处理,为此我们定义如下变量:
python生成一组高斯分布数据 高斯分布代码_概率密度_45
python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_46

  • 公式 16 矩阵化表示:
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_47
    python生成一组高斯分布数据 高斯分布代码_无向图_48
  • 注:假设python生成一组高斯分布数据 高斯分布代码_概率密度_49可逆:
    python生成一组高斯分布数据 高斯分布代码_无向图_50
    我们再需要求解python生成一组高斯分布数据 高斯分布代码_无向图_51:
    python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_52
  • 注:python生成一组高斯分布数据 高斯分布代码_概率密度_53在这里为确定的常数
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_54

3.高斯马尔可夫随机场

3.1 GMN 与 多维高斯分布关系

我们现在就需要将高斯马尔可夫随机场,即高斯无向图与多维的高斯分布对应起来,因为我们知道,对于一个高斯无向图来说,我们希望用计算机的思维去解读相关知识。

  • 多维高斯的概率密度函数如下:
    python生成一组高斯分布数据 高斯分布代码_无向图_55
  • 无向图的因子分解如下:
    python生成一组高斯分布数据 高斯分布代码_无向图_56
  • python生成一组高斯分布数据 高斯分布代码_无向图_57都是表示的势函数;
  • python生成一组高斯分布数据 高斯分布代码_无向图_58:一般表示:node-potential;
  • python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_59:一般表示:edge-potential

3.2 目的

现在我们的目的是:如何通过解析多维高斯的概率密度函数,进行拆分后得到跟无向图的因子分解一样的结构
现在我们来解析下公式24,可得:

  • 因为 python生成一组高斯分布数据 高斯分布代码_无向图_60 与 X 无关,所以P(X)正比于如下:
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_61
  • 我们定义 python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_62,并展开得到如下:
    python生成一组高斯分布数据 高斯分布代码_概率密度_63
  • 因为 python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_64 与 X 无关,故可忽略,且python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_65,故可得如下:
    python生成一组高斯分布数据 高斯分布代码_概率密度_66
  • 定义 python生成一组高斯分布数据 高斯分布代码_概率密度_67可得如下:
    python生成一组高斯分布数据 高斯分布代码_概率密度_68
    对于上述公式,我们可以得到python生成一组高斯分布数据 高斯分布代码_无向图_69为关于 X 的二次式,python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_70为关于 X 的一次式。我们常称 python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_71:precision-matrix精度矩阵;python生成一组高斯分布数据 高斯分布代码_无向图_72:potential-vector 势向量

3.3 解析多维高斯分布概率密度

我们知道了多维高斯分布概率密度的简化形式公式29,现在我们的目标式如何将此概率密度函数与高斯无向图结合对应起来。为了方便起见,我们定义如下变量:
python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_73

  • 展开公式29,我们可以得到关于 python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_17 的项
    python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_75
  • 关于python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_76的项目
    python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_77
    由此我们得到如下结论:
    我们可以把与 python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_78 相关的项目看作 python生成一组高斯分布数据 高斯分布代码_无向图_79
    我们可以把与 python生成一组高斯分布数据 高斯分布代码_概率密度_80 相关的项目看作 python生成一组高斯分布数据 高斯分布代码_无向图_81
    如果 python生成一组高斯分布数据 高斯分布代码_概率密度_82,那么 python生成一组高斯分布数据 高斯分布代码_概率密度_80 所代表的势函数 python生成一组高斯分布数据 高斯分布代码_贝叶斯网络_84,,也就意味着在概率图模型中,节点 python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_78python生成一组高斯分布数据 高斯分布代码_无向图_86
  • 概率图如下:
  • 多维高斯分布概率密度函数与高斯无向图之间联系
    python生成一组高斯分布数据 高斯分布代码_无向图_87
    python生成一组高斯分布数据 高斯分布代码_概率密度_88

3.4 结论

对于高斯无向图模型来说,我们通过训练模型,不仅仅要学习到模型的参数,还需要学习到模型的结构。

  • 结论1(Marginal-Independence)
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_89
  • 结论2(Condition-Independence)
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_90
  • 结论3(Distribution)
    python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_91
    注:python生成一组高斯分布数据 高斯分布代码_python生成一组高斯分布数据_78可以看做其他与其相连的python生成一组高斯分布数据 高斯分布代码_无向图_86的线性组合