您好,欢迎访问三七文档
一是对数据进行编码,然后交给监督学习方法去进行分类或回归;二是得到了权重矩阵和偏移量,供BP神经网络初始化训练。RBM的用途主要是两种:RBM的用途第一种可以说是把它当做一个降维的方法来使用;第二种用途是因为神经网络也是要训练一个权重矩阵和偏移量,但是如果直接用BP神经网络,初始值选得不好的话,往往会陷入局部极小值。根据实际应用结果表明,直接把RBM训练得到的权重矩阵和偏移量作为BP神经网络初始值,得到的结果会非常地好。RBM还可以作为一个生成模型(Generativemodel)和一个判别模型(Discriminativemodel)使用。RBM的编码假定所有节点的取值都是二值的。对于给定的输入样本,计算隐藏层第i个节点取值为1(编码后的样本的第i个特征的取值为1)的概率为:1(1|)()miijjijphvwvc然后产生一个0到1之间的随机数,如果它小于这个概率,对应编码后的样本的取值就是1,否则就是0。(假如p(hi=1|v)=0.6,这里就是因为编码样本的取值就是1的概率是,0.6,而这个随机数小于0.6的概率也是0.6;如果这个随机数小于0.6,就是这个事件发生了,那就可以认为编码样本的取值是1这个事件发生了,所以把对应编码样本取值为1)。解码过程也是类似,先计算概率:,1(1|)()njijijipvhwhb然后产生一个0到1之间的随机数,如果它小于这个概率,那么输入样本的的取值就是1,否则就是0。一个普通的RBM网络结构有m个可视节点和n个隐藏节点,其中每个可视节点只和n个隐藏节点相关,和其他可视节点是独立的,就是这个可视节点的状态只受n个隐藏节点的影响,对于每个隐藏节点也是,只受m个可视节点的影响,这个特点使得RBM的训练变得容易了。RBM网络有几个参数,一个是可视层与隐藏层之间的权重矩阵,一个是可视节点的偏移量,一个是隐藏节点的偏移量,这几个参数决定了RBM网络将一个m维的样本编码成一个什么样的n维的样本。RBM的网络结构可视节点的偏移量bRBM网络隐藏节点的偏移量权重矩阵定义能量模型的引入第一,概率分布函数。由于网络节点的取值状态是随机的,从贝叶斯网的观点来看,要描述整个网络,需要用三种概率分布来描述系统,即联合概率分布,边缘概率分布和条件概率分布。很多文献上说受限波尔兹曼是一个无向图,从贝叶斯网的观点看,受限波尔兹曼网络也可以看作一个双向的有向图,即从输入层节点可以计算隐层节点取某一种状态值的概率,反之亦然。第二,能量函数。随机神经网络是根植于统计力学的。受统计力学中能量泛函的启发,引入了能量函数。能量函数是描述整个系统状态的一种测度。系统越有序或者概率分布越集中,系统的能量越小。反之,系统越无序或者概率分布越趋于均匀分布,则系统的能量越大。能量函数的最小值,对应于系统的最稳定状态。波尔兹曼网络是一种随机网络,描述一个随机网络,总结起来主要有两点:能量模型可以类比为把一个小球扔到一个比较浅的碗里;把小球停在哪个地方定义为一种状态,每种状态都对应着一个能量,这个能量由能量函数来定义,小球处在某种状态的概率可以通过这种状态下小球具有的能量来定义如小球停在了碗口附近,这是一种状态,这个状态对应着一个能量E,而发生“小球停在碗口附近”这种状态的概率p,可以用E来表示,表示成p=f(E),其中f是能量函数。直观理解能量模型的作用首先,RBM网络是一种无监督学习的方法,无监督学习的目的是最大可能的拟合输入数据,所以学习RBM网络的目的是让RBM网络最大可能地拟合输入数据。那么对于一组输入数据来说,如果知道它符合高斯分布,那就可以写出似然函数,然后求解,就能求出这个是一个什么样个高斯分布;但要是不知道它符合一个什么分布,那可是连似然函数都没法写的,问题都没有,根本就无从下手。统计力学的结论表明,任何概率分布都可以转变成基于能量的模型,而且很多的分布都可以利用能量模型的特有的性质和学习过程,有些甚至从能量模型中找到了通用的学习方法。为什么要引入这个能量模型?其次,马尔科夫随机场(MRF)在能量模型发挥两个主要作用:一、全局解的度量(目标函数);二、能量最小时的解(各种变量对应的配置)为目标解。能量模型能为无监督学习方法提供目标函数和目标解。原因最后,RBM作为一种概率图模型,引入了概率就可以使用采样技术求解,在CD(contrastivedivergence)算法中采样部分扮演着模拟求解梯度的角色。专家乘积项POE能量模型的概率形式RBM的能量函数的定义如下:每个可视节点和隐藏节点之间的连接结构都有一个能量,通俗来说就是可视节点的每一组取值和隐藏节点的每一组取值都有一个能量,如果可视节点的一组取值(也就是一个训练样本的值)为(1,0,1,0,1,0),隐藏节点的一组取值(也就是这个训练样本编码后的值)为(1,0,1),然后分别代入上面的公式,就能得到这个连接结构之间的能量。可视节点和隐藏节点的联合概率:一个可视节点的一组取值(一个状态)和一个隐藏节点的一组取值发生的概率是由能量函数来定义的。(,)Pvh由联合概率得到边缘概率和条件概率相对熵上面得到了一个样本和其对应编码的联合概率,也就是得到了RBM网络的Gibbs分布的概率密度函数,现在回到求解的目标,即让RBM网络的表示Gibbs分布最大可能的拟合输入数据。假设表示样本空间,q是输入样本的分布,即q(x)表示训练样本x的概率,q其实就是要拟合的那个样本表示分布的概率;再假设p是RBM网络表示的Gibbs分布的边缘分布(只跟可视节点有关,隐藏节点是通过积分去掉了,可以理解为可视节点的各个状态的分布),输入样本的集合是S,那现在就可以定义样本表示的分布和RBM网络表示的边缘分布的KL距离(相对熵):输入样本的熵用蒙特卡罗抽样来估算第二项可以用来估计,其中的表示训练样本个数。由于KL的值肯定是不小于0,所以第一项肯定不小于第二项,让第二项取得最大值,就能让KL距离最小;最后,要使得最大化,相当于最大化,而这就是极大似然估计。l求解极大似然1.明确求解目标:求解输入样本的极大似然,就能让RBM网络表示的Gibbs分布和样本本身表示的分布最接近。RBM网络里面的几个参数w,b,c的值,这个就是解,而似然函数(对数似然函数)是目标函数。2.求解的过程就是对参数就导,然后用梯度上升法不断地把目标函数提升,最终到达停止条件。求解要注意的几个问题3.对求解的理解:对每一个样本,第二个等号后面的两项其实都像是在求一个期望。在条件概率下的期望(,)Evh(|)Phv在联合概率下的期望(,)Evh(,)Phv蒙特卡罗采样为什么要看成是一个函数在某个概率分布下的期望?最早的蒙特卡罗方法,是由物理学家发明的,旨在于通过随机化的方法计算积分。假设给定函数h(x),我们想计算积:()bahxdx但是又没有办法对区间内的所有x的取值都算一遍,我们可以将h(x)分解为某个函数f(x)和一个定义在(a,b)上的概率密度函数p(x)的乘积。这样整个积分就可以写成:()()()()[()]bbpxaahxdxfxpxdxEfx这样一来,原积分就等同于f(x)在p(x)这个分布上的均值(期望)。这时,如果我们从分布p(x)上采集大量的样本x1,x2,...,xn,这些样本符合分布p(x),即:,/(),iiiiixxpx那么,我们就可以通过这些样本来逼近这个均值:()11()[()]()nbpxiaihxdxEfxfxn这就是蒙特卡罗方法的基本思想。剩下的就是怎么样能够采样到符合分布p(x)的样本了,这个简单来说就是一个随机的初始样本,通过马尔科夫链进行多次转移,最终就能得到符合分布p(x)的样本。上面介绍的Gibbs是一种比较常用的抽样算法。求解极大似然根据能量函数的公式,就分别对w,b和c这三个参数求导:求解的结果圈出来的地方,要求遍历所有可能的v的值去计算概率,求解的过程比较麻烦,采用蒙卡特罗采样方法会大大简化计算过程。求解极大似然只要抽取一堆样本,这些样本符合RBM网络表示的Gibbs分布的(也就是符合参数确定的Gibbs分布p(x)的),就可以把上面的三个偏导数估算出来:其中xk表示第k个训练样本,yk表示第k个训练样本对应的RBM网络表示的Gibbs分布(不妨将这个分布称为R)的样本(yk是根据分布R抽取的样本,而且这个样本是从xk出发,用Gibbs抽样抽取出来的,也就是说yk服从分布R,可以用来估算第二项,同时yk跟xk有关),表示可视节点取值为yk的时候的状态,那么就表示yk的第j个特征的取值。ykVykjV这样一来就解决了比较棘手的问题!由于隐藏节点和可视节点在能量函数中位置对称性,和有类似结果。(1|)jPvh(1|)iPhv的计算结果如下:(1|)iPhv求解极大似然结合上面两个概率表达式,最终经过若干论迭代,就能得到参数w,b,c的解,这样极大似然的工作就完成了。采样方法Gibbs抽样其实就是在知道联合概率分布p(v)的情况下对其进行抽样。基于RBM模型的对称结构,以及其中节点的条件独立行,我们可以使用Gibbs抽样方法得到服从RBM定义的分布的随机样本。在RBM中进行k步Gibbs抽样的具体算法为:用一个训练样本(或者可视节点的一个随机初始状态)初始化可视节点的状态,交替进行下面的抽样:0V在抽样步数n足够大的情况下,就可以得到RBM所定义的分布的样本(即符合参数确定的Gibbs分布的样本)了,得到这些样本我们就可以拿去计算梯度的第二项了。Gibbs采样对于训练样本特征比较多时,需要大量时间采样方法与Gibbs抽样不同,Hinton教授指出当使用训练样本初始化的时候,仅需要较少的抽样步数(一般就一步)就可以得到足够好的近似了。在CD算法一开始,可见单元的状态就被设置为一个训练样本,并用上面的几个条件概率来对隐藏节点的每个单元都从{0,1}中抽取到相应的值,然后再利用来对可视节点的每个单元都从{0,1}中抽取相应的值,这样就得到了v1,一般v1就够了,就可以拿来估算梯度了。CD-K采样0V基于CD-K快速学习算法的主要步骤(1|)iphv(1|)jpvh
本文标题:RBM算法
链接地址:https://www.777doc.com/doc-5449649 .html