ImageVerifierCode 换一换
格式:DOCX , 页数:74 ,大小:2.72MB ,
资源ID:8829565      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8829565.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(rbmdbnrnn资料综合.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

rbmdbnrnn资料综合.docx

1、rbmdbnrnn资料综合 RBM DBN RNN资料综合、Restricted Boltzmann Machine (RBM)限制波尔兹曼机 假设有一个二部图,每一层的节点之间没有链接,一层是可视层,即输入数据层(v),一层是隐藏层(h),如果假设所有的节点都是随机二值变量节点(只能取0或者1值),同时假设全概率分布p(v,h)满足Boltzmann分布,我们称这个模型是RestrictedBoltzmannMachine(RBM)。 下面我们来看看为什么它是Deep Learning方法。首先,这个模型因为是二部图,所以在已知v的情况下,所有的隐藏节点之间是条件独立的(因为节点之间不存在连

2、接),即p(h|v)=p(h1|v)p(hn|v)。同理,在已知隐藏层h的情况下,所有的可视节点都是条件独立的。同时又由于所有的v和h满足Boltzmann 分布,因此,当输入v的时候,通过p(h|v) 可以得到隐藏层h,而得到隐藏层h之后,通过p(v|h)又能得到可视层,通过调整参数,我们就是要使得从隐藏层得到的可视层v1与原来的可视层v如果一样,那么得到的隐藏层就是可视层另外一种表达,因此隐藏层可以作为可视层输入数据的特征,所以它就是一种Deep Learning方法。 如何训练呢也就是可视层节点和隐节点间的权值怎么确定呢我们需要做一些数学分析。也就是模型了。 联合组态(jointconf

3、iguration)的能量可以表示为: 而某个组态的联合概率分布可以通过Boltzmann 分布(和这个组态的能量)来确定: 因为隐藏节点之间是条件独立的(因为节点之间不存在连接),即: 然后我们可以比较容易(对上式进行因子分解Factorizes)得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率: 同理,在给定隐层h的基础上,可视层第i个节点为1或者为0的概率也可以容易得到: 给定一个满足独立同分布的样本集:D=v(1),v(2),v(N),我们需要学习参数=W,a,b。 我们最大化以下对数似然函数(最大似然估计:对于某个概率模型,我们需要选择一个参数,让我们当前的观测样本的概率

4、最大): 也就是对最大对数似然函数求导,就可以得到L最大时对应的参数W了。 如果,我们把隐藏层的层数增加,我们可以得到Deep Boltzmann Machine(DBM);如果我们在靠近可视层的部分使用贝叶斯信念网络(即有向图模型,当然这里依然限制层中节点之间没有链接),而在最远离可视层的部分使用Restricted Boltzmann Machine,我们可以得到DeepBelief Net(DBN)。、Deep Belief Networks深信度网络 DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation

5、|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。对于在深度神经网络应用传统的BP算法的时候,DBNs遇到了以下问题:(1)需要为训练提供一个有标签的样本集;(2)学习过程较慢;(3)不适当的参数选择会导致学习收敛于局部最优解。 DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图三所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。

6、首先,先不考虑最顶构成一个联想记忆(associative memory)的两层,一个DBN的连接是通过自顶向下的生成权值来指导确定的,RBMs就像一个建筑块一样,相比传统和深度分层的sigmoid信念网络,它能易于连接权值的学习。 最开始的时候,通过一个非监督贪婪逐层方法去预训练获得生成模型的权值,非监督贪婪逐层方法被Hinton证明是有效的,并被其称为对比分歧(contrastive divergence)。 在这个训练阶段,在可视层会产生一个向量v,通过它将值传递到隐层。反过来,可视层的输入会被随机的选择,以尝试去重构原始的输入信号。最后,这些新的可视的神经元激活单元将前向传递重构隐层激

7、活单元,获得h(在训练过程中,首先将可视向量值映射给隐单元;然后可视单元由隐层单元重建;这些新可视单元再次映射给隐单元,这样就获取新的隐单元。执行这种反复步骤叫做吉布斯采样)。这些后退和前进的步骤就是我们熟悉的Gibbs采样,而隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。 训练时间会显著的减少,因为只需要单个步骤就可以接近最大似然学习。增加进网络的每一层都会改进训练数据的对数概率,我们可以理解为越来越接近能量的真实表达。这个有意义的拓展,和无标签数据的使用,是任何一个深度学习应用的决定性的因素。 在最高两层,权值被连接到一起,这样更低层的输出将会提供一个参考的线索或者关联

8、给顶层,这样顶层就会将其联系到它的记忆内容。而我们最关心的,最后想得到的就是判别性能,例如分类任务里面。 在预训练后,DBN可以通过利用带标签数据用BP算法去对判别性能做调整。在这里,一个标签集将被附加到顶层(推广联想记忆),通过一个自下向上的,学习到的识别权值获得一个网络的分类面。这个性能会比单纯的BP算法训练的网络好。这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。 DBNs的灵活性使得它的拓展比较容易。一个拓展就是卷积DBNs(Convolutional Deep Belief Networks(CD

9、BNs))。DBNs并没有考虑到图像的2维结构信息,因为输入是简单的从一个图像矩阵一维向量化的。而CDBNs就是考虑到了这个问题,它利用邻域像素的空域关系,通过一个称为卷积RBMs的模型区达到生成模型的变换不变性,而且可以容易得变换到高维图像。DBNs并没有明确地处理对观察变量的时间联系的学习上,虽然目前已经有这方面的研究,例如堆叠时间RBMs,以此为推广,有序列学习的dubbed temporal convolutionmachines,这种序列学习的应用,给语音信号处理问题带来了一个让人激动的未来研究方向。 目前,和DBNs有关的研究包括堆叠自动编码器,它是通过用堆叠自动编码器来替换传统D

10、BNs里面的RBMs。这就使得可以通过同样的规则来训练产生深度多层神经网络架构,但它缺少层的参数化的严格要求。与DBNs不同,自动编码器使用判别模型,这样这个结构就很难采样输入采样空间,这就使得网络更难捕捉它的内部表达。但是,降噪自动编码器却能很好的避免这个问题,并且比传统的DBNs更优。它通过在训练过程添加随机的污染并堆叠产生场泛化性能。训练单一的降噪自动编码器的过程和RBMs训练生成模型的过程一样。限制波尔兹曼机(RestrictedBoltzmannMachines)能量模型的概念从统计力学中得来,它描述着整个系统的某种状态,系统越有序,系统能量波动越小,趋近于平衡状态,系统越无序,能量

11、波动越大。例如:一个孤立的物体,其内部各处的温度不尽相同,那么热就从温度较高的地方流向温度较低的地方,最后达到各处温度都相同的状态,也就是热平衡的状态。在统计力学中,系统处于某个状态的相对概率为,即玻尔兹曼因子,其中T表示温度,是玻尔兹曼常数,是状态的能量。玻尔兹曼因子本身并不是一个概率,因为它还没有归一化。为了把玻尔兹曼因子归一化,使其成为一个概率,我们把它除以系统所有可能的状态的玻尔兹曼因子之和Z,称为配分函数(partition function)。这便给出了玻尔兹曼分布。玻尔兹曼机(Boltzmann Machine,BM)是一种特殊形式的对数线性的马尔科夫随机场(Markov Ran

12、dom Field,MRF),即能量函数是自由变量的线性函数。 通过引入隐含单元,我们可以提升模型的表达能力,表示非常复杂的概率分布。限制性玻尔兹曼机(RBM)进一步加一些约束,在RBM中不存在可见单元与可见单元的链接,也不存在隐含单元与隐含单元的链接,如下图所示能量函数在限制玻尔兹曼机中定义为,b,c,W为模型的参数,b,c分别为可见层和隐含层的偏置,W为可见层与隐含层的链接权重有了上述三个公式我们可以使用最大似然估计来求解模型的参数:设。把概率p(x)改写为。由于可见单元V和不可见单元h条件独立,利用这一性质,我们可以得到:logistic回归估计v与h取一的概率:有了以上条件,我们可以推

13、导出参数变化的梯度值:使用基于马尔可夫链的gibbs抽样,对于一个d维的随机向量x=(x1,x2,xd),假设我们无法求得x的联合概率分布p(x),但我们知道给定x的其他分量是其第i个分量xi的条件分布,即p(xi|xi-),xi-=(x1,x2,xi-1,xi+1xd)。那么,我们可以从x的一个任意状态(如(x1(0),x2(0),xd(0))开始,利用条件分布p(xi|xi-),迭代地对这状态的每个分量进行抽样,随着抽样次数n的增加,随机变量(x1(n),x2(n),xd(n)的概率分布将以n的几何级数的速度收敛到x的联合概率分布p(v)。基于RBM模型的对称结构,以及其中节点的条件独立行

14、,我们可以使用Gibbs抽样方法得到服从RBM定义的分布的随机样本。在RBM中进行k步Gibbs抽样的具体算法为:用一个训练样本(或者可视节点的一个随机初始状态)初始化可视节点的状态v0,交替进行下面的抽样:理论上,参数的每次更新需要让上面的链条图形遍历一次,这样带来的性能损耗毫无疑问是不能承受的。Hinton教授提出一种改进方法叫做对比分歧(Contrastive Divergence),即CD-K。他指出CD没有必要等待链收敛,样本可以通过k步 的gibbs抽样完成,仅需要较少的抽样步数(实验中使用一步)就可以得到足够好的效果。下面给出RBM用到的CD-K算法伪代码。 关于deeplear

15、ning的c+实现放到了github上,由于时间关系只是实现了大致框架,细节方面有待改善,也欢迎大家的参与:loujiayu/deeplearning下面附上Geoff Hinton提供的关于RBM的matlab代码% Version % Code provided by Geoff Hinton and Ruslan Salakhutdinov % Permission is granted for anyone to copy, use, modify, or distribute this% program and accompanying programs and documents

16、for any purpose, provided% this copyright notice is retained and prominently displayed, along with% a note saying that the original programs are available from our% web page.% The programs and documents are distributed without any warranty, express or% implied. As the programs were written for resea

17、rch purposes only, they have% not been tested to the degree that would be advisable in any important% application. All use of these programs is entirely at the users own risk.% This program trains Restricted Boltzmann Machine in which% visible, binary, stochastic pixels are connected to% hidden, bin

18、ary, stochastic feature detectors using symmetrically% weighted connections. Learning is done with 1-step Contrastive Divergence. % The program assumes that the following variables are set externally:% maxepoch - maximum number of epochs% numhid - number of hidden units % batchdata - the data that i

19、s divided into batches (numcases numdims numbatches)% restart - set to 1 if learning starts from beginning epsilonw = ; % Learning rate for weights epsilonvb = ; % Learning rate for biases of visible units epsilonhb = ; % Learning rate for biases of hidden units weightcost = ; initialmomentum = ;fin

20、almomentum = ;numcases numdims numbatches=size(batchdata);if restart =1, restart=0; epoch=1;% Initializing symmetric weights and biases. vishid = *randn(numdims, numhid); hidbiases = zeros(1,numhid); visbiases = zeros(1,numdims); poshidprobs = zeros(numcases,numhid); neghidprobs = zeros(numcases,num

21、hid); posprods = zeros(numdims,numhid); negprods = zeros(numdims,numhid); vishidinc = zeros(numdims,numhid); hidbiasinc = zeros(1,numhid); visbiasinc = zeros(1,numdims); batchposhidprobs=zeros(numcases,numhid,numbatches);endfor epoch = epoch:maxepoch, fprintf(1,epoch %dr,epoch); errsum=0; for batch

22、= 1:numbatches, fprintf(1,epoch %d batch %dr,epoch,batch); % START POSITIVE PHASE % data = batchdata(:,:,batch); poshidprobs = 1./(1 + exp(-data*vishid - repmat(hidbiases,numcases,1); batchposhidprobs(:,:,batch)=poshidprobs; posprods = data * poshidprobs; poshidact = sum(poshidprobs); posvisact = su

23、m(data);% END OF POSITIVE PHASE % poshidstates = poshidprobs rand(numcases,numhid);% START NEGATIVE PHASE % negdata = 1./(1 + exp(-poshidstates*vishid - repmat(visbiases,numcases,1); neghidprobs = 1./(1 + exp(-negdata*vishid - repmat(hidbiases,numcases,1); negprods = negdata*neghidprobs; neghidact =

24、 sum(neghidprobs); negvisact = sum(negdata); % END OF NEGATIVE PHASE % err= sum(sum( (data-negdata).2 ); errsum = err + errsum; if epoch5, momentum=finalmomentum; else momentum=initialmomentum; end;% UPDATE WEIGHTS AND BIASES % vishidinc = momentum*vishidinc + . epsilonw*( (posprods-negprods)/numcas

25、es - weightcost*vishid); visbiasinc = momentum*visbiasinc + (epsilonvb/numcases)*(posvisact-negvisact); hidbiasinc = momentum*hidbiasinc + (epsilonhb/numcases)*(poshidact-neghidact); vishid = vishid + vishidinc; visbiases = visbiases + visbiasinc; hidbiases = hidbiases + hidbiasinc;% END OF UPDATES

26、% end fprintf(1, epoch %4i error % n, epoch, errsum); end;转自: 基于能量的模型和波尔兹曼机由于深度置信网络(Deep Belief Networks,DBN)是基于限制性玻尔兹曼机(Restricted Boltzmann Machines,RBM)的深层网络结构, 所以本文重点讨论一下玻尔兹曼机(BM),以及它的学习算法对比散度(Contrastive Divergence,CD)算法。在介绍BM前,我们首先介绍一下 基于能量的模型(Energy Based Model,EBM),因为BM是一种特殊的EBM。1. 基于能量的模型(E

27、BM)基于能量的模型是一种具有普适意义的模型,可以说它是一种模型框架,在它的框架下囊括传统的判别模型和生成模型,图变换网络(Graph-transformer Networks),条件随机场,最大化边界马尔科夫网络以及一些流形学习的方法等。EBM通过对变量的每个配置施加一个有范围限制的能量来捕获变量之间的依赖 关系。EBM有两个主要的任务,一个是推断(Inference),它主要是在给定观察变量的情况,找到使能量值最小的那些隐变量的配置;另一个是学习(Learning), 它主要是寻找一个恰当的能量函数,使得观察变量的能量比隐变量的能量低。基于能量的概率模型通过一个能量函数来定义概率分布,p(

28、x)=eE(x)Z. 其中Z为规整因子,Z=xeE(x). 基于能量的模型可以利用使用梯度下降或随机梯度下降的方法来学习,具体而言,就是以训练集的负对数作为损失函数,l(,D)=L(,D)=1Nx(i)Dlogp(x(i). 其中为模型的参数,将损失函数对求偏导,=l(,D)=1Nlogp(x(i). 即得到损失函数下降最快的方向。包含隐单元的EBMs在很多情况下,我们无法观察到样本的所有属性,或者我们需要引进一些没有观察到的变量,以增加模型的表达能力,这样得到的就是包含隐含变量的EBM,P(x)=hP(x,h)=heE(x,h)Z. 其中h表示隐含变量。在这种情况下,为了与不包含隐含变量的模

29、型进行统一,我们引入如下的自由能量函数,F(x)=logheE(x,h). 这样P(x)就可以写成,P(x)=eF(x)Z,whereZ=xeF(x). 此时,损失函数还是类似的定义,只是在进行梯度下降求解时稍微有些不同,=logp(x)=(F(x)logZ)=F(x)xp(x)F(x). 该梯度表达式中包含两项,他们都影响着模型所定义的分布密度:第一项增加训练数据的概率(通过减小对应的自由能量),而第二项则减小模型 生成的样本的概率。通常,我们很难精确计算这个梯度,因为式中第一项涉及到可见单元与隐含单元的联合分布,由于归一化因子Z()的存在,该分布很难获取3。 我们只能通过一些采样方法(如Gibbs采样)获取其近似值,其具体方法将在后文中详述。2. 限制性玻尔兹曼机玻尔兹曼机(Boltzmann Machine,BM)是一种特殊形式的对数线性的马尔科夫随机场(Markov Random Field,MRF),即能量函数是自由变量的线性函数。 通过引入隐含单元,我们可以提升模型的表达能力,表示非常复杂的概率分布。限制性玻尔兹曼机(RBM)进一步加一些约束,在RBM中不存在可见单元与可见单元的链接,也不存在隐含单元与隐含单元的链接,如下图所示RB

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1