(一)马尔可夫随机场
1.概率图模型:1)用图的形式来表示概率分布;2)用图的方法来求解概率分布问题;3)可分为概率有向图模型跟概率无向图模型;
2.马尔可夫随机场定义(又叫概率无向图模型):
(1)G = (V,E)其中结点V表示随机变量,无向边E表示随机变量之间的概率依赖关系;P(X)表示联合概率分布;
(2)成对马尔可夫性:任意两个没有边连接的结点条件独立
其中u,v表示任意两个没有边连接的结点,O表示图中剩余的其他结点集合;
(3)局部马尔科夫性:任意一个结点与没有跟其连接的所有结点的集合条件独立
其中v表示任意结点,O表示与v无边连接的结点集合,W表示与v有边连接的结点集合;
(4)全局马尔科夫性:任意两个没有边连接的结点集合条件独立
其中结点集合A,B是被结点集合C分开的任意结点集合;
3.马尔可夫随机场的因子分解
(1)团与最大团:无向图G中任意两个结点均有边连接的结点子集称为团;若不能再加进任何一个G的结点使其成为一个更大的团则称为最大团;
(2)因子分解:可以将马尔科夫随机场的联合概率分布函数分解为最大团上的随机变量的函数的乘积的形式
其中C是最大团,Xc是C的结点对应的随机变量,是C上定义的严格正函数,称为势函数,乘积是在无向图上所有的最大团上进行的,E是能量函数;
(3)由于马尔科夫随机场的因子分解,其联合概率分布可以化成Gibbs分布的形式;
(二)带隐含变量的马尔科夫随机场
1.假设马尔科夫随机场中变量可以分为两种,一种是visible的,也就是观测值;另外一种是hidden的,描述visible变量之间的关系的;则称该马尔科夫随机场为带有隐含变量的马尔科夫随机场;
2.带隐含变量的马尔科夫随机场的联合概率分布函数如下:
3.极大似然法求解分布函数:
(1)似然函数如下:
(2)最大化似然函数采用梯度上升算法,其梯度计算如下:
PS:该梯度可以看成是两个期望值的相减,第一项是关于条件分布的期望,容易求解;第二项是关于模型分布的期望,直接计算比较困难,一般使用采样的方法进行近似计算;
(三)MCMC与Gibbs采样
1.MCMC(Markov Chain Monte Carlo)
(1)根据马尔科夫链的性质可以知道,当马尔科夫链非周期,不可约且正常返的情况下,存在平稳分布:
也就是说经过一段时间迭代后,马尔科夫链的极限分布总能收敛于平稳分布;
(2)MCMC方法的基本思想就是通过建立一个平稳分布为的马尔科夫链来得到的样本,基于这些样本做各种统计推断,概括起来可以分为以下三步:
1)在观测样本上选一个合适的马尔科夫链,使其概率转移矩阵为p,“合适”的含义是指是其相应的平稳分布;
2)由观测样本上的某一点出发,用1)中的马尔科夫链产生点序列:
3)对某个m和足够大的n,任意函数的期望值估计如下:
(3)基于MCMC的算法有很多,Metropolis-Hasting算法是比较流行的一种,而Gibbs采样是Metropolis-Hasting的一种特殊情况;
2.Gibbs采样
(1)Gibbs采样其实就是利用条件概率产生样本,当Gibbs采样算法执行多次后,即相当于直接从联合分布中采样;采集的符合联合分布的样本可以用于估计分布的期望等;
(2)Gibbs采样是简单MCMC算法,其基本思想是基于给定其他变量的条件概率下逐个更新变量;
(3)算法流程:
2)根据以下条件概率更新第一个变量:
3)根据以下条件概率更新第二个变量:
4)根据上述的思想依次更新每个变量;
(四)受限波尔兹曼机(RBM)
1.RBM是如下的马尔科夫随机场,其具有n个隐藏单元,记为h;m个可视单元,记为v;其中b,c,w是模型参数;v与h只取{ 0,1 };
2.模型的能量函数:
3.模型的联合概率分布记为:
4.模型的条件概率分布记为:
5.为求解模型中的参数,采用梯度上升算法优化最大似然函数,梯度记为:
PS:由于梯度求解过程中第二项存在关于模型分布p(v)的期望,直接计算比较困难,因此实际中采用采样的方法近似求解;
6.k-step contrastive divergence(CD-k)算法
(3)算法步骤如下:
(五)RBM的实现
1.在实际应用中,输入数据经常是连续变化的,因此需要对RBM对适当的修正;通常的做法是对输入数据做0到1之间的归一化,表示概率p(vi=1|h)那么输出就是p(hi=1|v);
2,RBM模型的似然函数的梯度可以表示如下:
3.实现代码细节如下(来自DeepLearningToolbox):
%%Gibbs采样
v1 = data;
h1 = sigmoid(repmat(c', data_size, 1) + v1 * W');
v2 = sigmoid(repmat(b', data_size, 1) + h1 * W);
h2 = sigmoid(repmat(c', data_size, 1) + v2 * W');
%%求梯度
c1 =h1' * v1
c2 =h2' * v2
rbm.vW = (c1 - c2)/ data_size ;
rbm.vb = sum(v1 - v2)'/ data_size ;
rbm.vc = sum(h1 - h2)'/ data_size ;
%%梯度上升
rbm.W = rbm.W + rbm.vW;
rbm.b = rbm.b + rbm.vb;
rbm.c = rbm.c + rbm.vc;
%%求重构误差
err = err + sum(sum((v1 - v2) .^ 2)) / data_size;
(六)DBN模型
1.深度信念网络 (Deep Belief Network, DBN) 是由多层 RBM 组成的一个神经网络;
2.训练DBN的过程与训练DNN的过程一致,预先训练每一层RBM作为初始权值,然后再对网络进行fine-tune;
PS:相关公式推导
PS:参考文献
An Introduction to Restricted Boltzmann Machines