深度学习中的结构化概率模型

  2019-10-11 


本文为 Deep Learning Ch.16 学习后整理的笔记

结构化概率模型

概率图模型(PGM)描述概率有助于减少表示概率分布,学习和推断的成本。间接表示间接关系而不是直接表示

有向图模型=信念网络=贝叶斯网络

方向仅表示依赖关系而不表明如何依赖

通过有向无环图和一系列局部条件概率分布定义

其中$P(x_i)$表示结点$x_i$的所有父节点。

无向图模型=马尔可夫随机场=马尔科夫网络

对无向模型$M$中的一个团$C$称为一个因子$\phi(C)$,也叫团势能势能函数

它们一起定义了未归一化概率函数

(图的一个团是图中结点的一个子集,并且其中的点是全连接的)

为了使得未归一化概率函数归一化,我们需要使用对应的归一化概率分布

其中$Z$是使得所有概率之和或者积分为1的常数,且满足

归一化常数$Z$被称为配分函数。计算$Z$需要对$x$的所有可能状态求联合概率分布,所以通常非常难计算,于是可以用一些近似方法求得。

但有时候积分是发散的,不存在一个$F(x)$,这时候$Z$就不存在

但注意如果指定发散函数的某定义域内是收敛的,那是OK的

无向图在表示上存在模糊性,即“多大的团?”,这时候可以引入因子图解决,它将随机变量绘为圆形,将未归一化概率函数因子$\phi$绘为方形,仅当随机变量对应该函数因子的时候存在连接,连接该函数的随机变量构成一个团

基于能量的模型(Energy-Based model,EBM)

无向模型依赖一个假设$\forall x,\hat{p}(x)>0$,使得这个条件满足的一个简单方式是使用EBM

服从该形式的任意分布都是玻尔兹曼分布的一个实例,也因此我们把许多基于能量的模型成为玻尔兹曼机

$E(x)$被称作能量函数(energy function)

由于$e^{(a+b)}=e^a·e^b$,于是可以发现无向模型中不同的团对应于能量函数的不同项,也就是说EBM只是一种特殊的马尔科夫网络,这种网络满足求幂使能量函数中的每项对应于不同团的一个影子。

比如对于一个MAP d-a-b-e,b-e,e-f(只写了连接关系),通过为每个团选择适当的能量函数$E(a,b,c,d,e,f)$可以写成$E_{a,b}(a,b)+E_{b,c}(b,c)+E_{a,d}(a,d)+E_{b,e}(b,e)+E_{e,f}(e,f)$

能量函数可以视为专家之积,其中每一项看作决定一个特定的软约束是否满足的“专家”

公式中幂的负号只是为了保持机器学习文献与物理学文献之间的兼容性(能量无符号),对于机器学习来说可以自由决定符号

很多对概率模型进行操作的算法是计算$\log p(x)$的,于是对于具有潜变量$h$的EBM,这些算法有时会将该量的负数称为自由能(free energy):

分离与d-分离—条件独立

无向图中隐含的条件独立性称为分离,有向图中则被称为d-分离。(d代表依赖)

如何判断哪些变量子集(d-)分离/彼此条件独立?

①两个随机变量之间没有路径,或

②两个随机变量之间所有路径都包含可观测变量

举个例子:一个房子的好坏(C)是由大小(A)和装潢(B)决定的,此时的图结构为A->C,B->C,如果我们知道了这个房子是好房子,也就是C为可观测变量(条件),那么A和B是C条件下的独立随机变量

记$a⊥b|c$表示给定$c$条件下$a$与$b$条件独立

关于图模型条件独立的推导可以看这篇文章 https://my.oschina.net/liyangke/blog/2986515

有向图和无向图的转化

  1. 有向模型和无向模型的一个重要区别在于有向模型是通过从起始点的概率分布直接定义的,而无向模型的定义显得更加宽松,通过$\phi$函数转化为概率分布定义

  2. 有向图可以使用不道德图结构而无向图不行

    将有向模型图转换为无向模型图:①有向边变无向边 ②对于不道德(immorality)情况(a$\to$c,b$\to$c)需要在不道德的节点互相连线,变成道德图。由于道德化的过程中会加入很多边,因而会损失一些独立性条件

  3. 无向图可以使用结构而有向图不行

    将环结构的无向图转化为有向图需要添加(环序列中任意两个非连续变量的连接),转化后的图称为弦图三角形化图。但如果存在长度大于3的环,则转化过来会损失独立性条件。(注意不能出现有向环,否则无法定义有效的有向概率模型)

从图模型中采样

  1. 有向图:原始采样,根据拓扑排序顺序采样。

    缺点:不是每次采样都是条件采样操作

  2. 无向图:①转化为有向图作原始采样

    ​ ②Gibbs采样


有已知值的变量被称为显变量,而值未被观察到的变量被称为隐变量

深度学习模型可以看作一类特殊的图概率模型,拥有大量的潜变量,且在设计的时候不表示任何特定含义;而传统模型大多使用高阶项和结构学习来捕获变量之间复杂的非线性作用,即使有潜变量,数量也通常很少,且会被赋予特定的含义

潜变量=隐变量=未观测变量


且听风吟