深度学习读书笔记之RBM
声明:
1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西
2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。
3)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的利益,还望海涵,并联系老衲删除或修改,直到相关人士满意为止。
4)本人才疏学浅,整理总结的时候难免出错,还望各位前辈不吝指正,谢谢。
5)阅读本文需要机器学习、统计学、神经网络等等基础(如果没有也没关系了,没有就看看,当做跟同学们吹牛的本钱)。
6)此属于第一版本,若有错误,还需继续修正与增删。还望大家多多指点。请直接回帖,本人来想办法处理。
7)由于本人第一次发博客,连编辑工具都不会用,很多公式就走样了,只好截图,格式实在不堪入目,各位前辈有会用发帖工具的可以指点一下。
8)本人手上有word版的和pdf版的,不知道怎么上传,所以需要的话可以直接到DeepLearning高质量交流群里要,群号由于未取得群主同意不敢公布,需要的同学可以联系群主@tornadomeet
前言
本文较长,请注意要耐心读。
如果实在不愿意耐心读,起码看完红色标志的句子,不然还得很多问题不清楚。
本文组织的结构比较散,下面是大体过程:
RBM使用方法-->一般用途-->用能量模型的原因-->为什么要概率以及概率的定义-->求解目标和极大似然的关系-->怎么求解-->其他的一些补充
一.限制波尔兹曼机
1.1限制波尔兹曼机(RBM)使用方法
1.1.1 RBM的使用说明
——现在假如找不到这样的不均匀的硬币,就拿随机数生成器来代替(生成的数是0-1之间的浮点数);因为随机数生成器取值小于0.6的概率也是0.6,大于0.6的概率是0.4。
1.1.2 RBM的用途
RBM的用途主要是两种,一是对数据进行编码,然后交给监督学习方法去进行分类或回归,二是得到了权重矩阵和偏移量,供BP神经网络初始化训练。
第一种可以说是把它当做一个降维的方法来使用。
第二种就用途比较奇怪。其中的原因就是神经网络也是要训练一个权重矩阵和偏移量,但是如果直接用BP神经网络,初始值选得不好的话,往往会陷入局部极小值。根据实际应用结果表明,直接把RBM训练得到的权重矩阵和偏移量作为BP神经网络初始值,得到的结果会非常地好。
这就类似爬山,如果一个风景点里面有很多个山峰,如果让你随便选个山就爬,希望你能爬上最高那个山的山顶,但是你的精力是有限的,只能爬一座山,而你也不知道哪座山最高,这样,你就很容易爬到一座不是最高的山上。但是,如果用直升机把你送到最高的那个山上的靠近山顶处,那你就能很容易地爬上最高的那座山。这个时候,RBM就的角色就是那个直升机。
其实还有两种用途的,下面说说。
第三种,RBM可以估计联合概率p(v,h),如果把v当做训练样本,h当成类别标签(隐藏节点只有一个的情况,能得到一个隐藏节点取值为1的概率),就可以利用利用贝叶斯公式求p(h|v),然后就可以进行分类,类似朴素贝叶斯、LDA、HMM。说得专业点,RBM可以作为一个生成模型(Generative model)使用。
第四种,RBM可以直接计算条件概率p(h|v),如果把v当做训练样本,h当成类别标签(隐藏节点只有一个的情况,能得到一个隐藏节点取值为1的概率),RBM就可以用来进行分类。说得专业点,RBM可以作为一个判别模型(Discriminative model)使用。
1.2限制波尔兹曼机(RBM)能量模型
1.2.1 能量模型定义
波尔兹曼网络是一种随机网络。描述一个随机网络,总结起来主要有两点。
第一,概率分布函数。由于网络节点的取值状态是随机的,从贝叶斯网的观点来看,要描述整个网络,需要用三种概率分布来描述系统。即联合概率分布,边缘概率分布和条件概率分布。要搞清楚这三种不同的概率分布,是理解随机网络的关键,这里向大家推荐的书籍是张连文所著的《贝叶斯网引论》。很多文献上说受限波尔兹曼是一个无向图,从贝叶斯网的观点看,受限波尔兹曼网络也可以看作一个双向的有向图,即从输入层节点可以计算隐层节点取某一种状态值的概率,反之亦然。
1.2.2 能量模型作用
第一、RBM网络是一种无监督学习的方法,无监督学习的目的是最大可能的拟合输入数据,所以学习RBM网络的目的是让RBM网络最大可能地拟合输入数据。
换句话说,就是——使用能量模型使得学习一个数据的分布变得容易可行了。
RBM作为一种概率图模型,引入了概率就可以使用采样技术求解,在CD(contrastive divergence)算法中采样部分扮演着模拟求解梯度的角色。
能量模型需要两个东西,一个是能量函数,另一个是概率,有了概率才能跟要求解的问题联合起来。
1.3从能量模型到概率
1.3.1 从能量函数到概率
为了引入概率,需要定义概率分布。根据能量模型,有了能量函数,就可以定义一个可视节点和隐藏节点的联合概率
也就是一个可视节点的一组取值(一个状态)和一个隐藏节点的一组取值(一个状态)发生的概率p(v,h)是由能量函数来定义的。
这个概率不是随便定义的,而是有统计热力学的解释的——在统计热力学上,当系统和它周围的环境处于热平衡时,一个基本的结果是状态i发生的概率如下面的公式
其中表示系统在状态i时的能量,T为开尔文绝对温度,为Boltzmann常数,Z为与状态无关的常数。
现在我们得到了一个概率,其实也得到了一个分布,其实这个分布还有一个好听点的名字,可以叫做Gibbs分布,当然不是一个标准的Gibbs分布,而是一个特殊的Gibbs分布,这个分布是有一组参数的,就是能量函数的那几个参数w,b,c。
有了这个联合概率,就可以得到一些条件概率,是用积分去掉一些不想要的量得到的。
1.3.2 从概率到极大似然
上面得到了一个样本和其对应编码的联合概率,也就是得到了RBM网络的Gibbs分布的概率密度函数,引入能量模型的目的是为了方便求解的。
现在回到求解的目标——让RBM网络的表示Gibbs分布最大可能的拟合输入数据。
其实求解的目标也可以认为是让RBM网络表示的Gibbs分布与输入样本的分布尽可能地接近。
如果输入样本表示的分布与RBM表示的Gibbs分布完全符合,这个KL距离就是0,否则就是一个大于0的数。
结论就是求解输入样本的极大似然,就能让RBM网络表示的Gibbs分布和样本本身表示的分布最接近。
这样就保证了,在反编码(从隐藏节点到可视节点的编码过程)过程中,能使训练样本出现的概率最大,也就是使得反编码的误差尽最大的可能最小。
例如一个样本(1,0,1,0,1)编码到(0,1,1),那么,(0,1,1)从隐藏节点反编码到可视节点的时候也要大概率地编码到(1,0,1,0,1)。
到这,能量模型到极大似然的关系说清楚了,,可能有点不太对,大家看到有什么不对的提一下,我把它改了。
之前想过用似然函数最大的时候,RBM网络的能量最小这种思路去解释,结果看了很多的资料,都实在没有办法把那两个极值联系起来。这个冤枉路走了好久,希望大家在学习的时候多注意,尽量避免走这个路。
下面就说怎么求解了。求解的意思就是求RBM网络里面的几个参数w,b,c的值,这个就是解,而似然函数(对数似然函数)是目标函数。最优化问题里面的最优解和目标函数的关系大家务必先弄清楚。
1.4求解极大似然
求解的过程就是对参数就导,然后用梯度上升法不断地把目标函数提升,最终到达停机条件(在这里看不懂的同学就去看参考文献中的《从极大似然到EM》),
然后就可以对它的对数进行求导了(因为直接求一个连乘的导数太复杂,所以变成对数来求)
可以看到,是对每个p(v)求导后再加和,然后就有了下面的推导了。
还有论文是这么解释的,上面的公式,对w求偏导,还可以再进一步转化
注意:从第二个“=”号到第三个“=”号的时候,第二个“=”号的方括号里面的第一项是把蒙特卡罗抽样的用法反过来了,从抽样回到了积分,所以得到了一个期望;第二项就是因为对每个训练样本,第二项的值算出来都一样,所以累加以后的结果除以l,相当于没有变化,还是那个期望,只是表达的形式换了。
这样的话,这个梯度还可以这么理解,第一项等于输入样本数据的自由能量函数偏导在样本本身的那个分布下的期望值(q(v,h)=p(h|v)q(v),q表示输入样本和他们对应的隐藏增状态表示的分布),而第二项是自由能量函数的偏导在RBM网络表示的Gibbs分布下的期望值。
第一项是可以求的,因为训练样本有了,也就是使用蒙特卡罗估算期望的时候需要的样本已经抽好了,只要求个均值就可以了。
第二项也是可以求的,但是要对v和h的组合的所有可能的取值都遍历一趟,这就可能没法算了;想偷懒的话,悲剧就在于,现在是没有RBM网络表示的Gibbs分布下的样本的(当然后面会介绍这些怎么抽)。
为了进行下面的讨论,把这个梯度再进一步化简,看看能得到什么。根据能量函数的公式,是有三个参数的w,b和c,就分别对这三个参数求导
到了这一步,来分析一下,从上面的联合概率那一堆,我们可以得到下面的
要求第二项,就要遍历所有可能的v的值,然后根据公式去计算几个梯度的值,那样够麻烦的了,还好蒙特卡罗给出了一个偷懒的方法,见后面的章。
只要抽取一堆样本,这些样本符合RBM网络表示的Gibbs分布的(也就是符合参数确定的Gibbs分布p(x)的),就可以把上面的三个偏导数估算出来。
这样,梯度出来了,这个极大似然问题可以解了,最终经过若干论迭代,就能得到那几个参数w,b,c的解。
式子中的v是指{x1,x2,…xl}中的一个样本,因为,对样本进行累加时,第一项是对所有样本进行累加,而第二项都是一样的(是一个积分的结果,与被积变量无关,是一个标量),所以累加后1/l就没有了,只有对l项y进行累加,到了下面CD-k算法的时候,每次只对一个x和一个y进行处理,最外层对x做L次循环后得到的累加结果是一样的.
上面提到的“某种抽样方法”,现在一般就用Gibbs抽样,然后hinton教授还根据这个弄出了一个CD-k算法,就是用来解决RBM的抽样的。下面一章就介绍这个吧。
1.5用到的抽样方法
一般来说,在hinton教授还没弄出CD-k之前,解决RBM的抽样问题是用Gibbs抽样的。
Gibbs抽样其实就是可以让我们可以在位置联合概率分布p(v)的情况下对其进行抽样。
在抽样步数n足够大的情况下,就可以得到RBM所定义的分布的样本(即符合参数确定的Gibbs分布的样本)了,得到这些样本我们就可以拿去计算梯度的第二项了。
可以看到,上面进行了k步的抽样,这个k一般还要比较大,所以是比较费时间的,尤其是在训练样本的特征数比较多(可视节点数大)的时候,所以hinton教授就弄一个简化的版本,叫做CD-k,也就对比散度。
1.6马尔科夫蒙特卡罗简介
然后剩下的就是怎么样能够采样到符合分布p(x)的样本了,这个简单来说就是一个随机的初始样本,通过马尔科夫链进行多次转移,最终就能得到符合分布p(x)的样本。上面介绍的Gibbs是一种比较常用的抽样算法。
有关Gibbs抽样的相关内容可以参看文献【12】。
致谢
Deep Learning高质量交流群里的多位同学:@zeonsunlight,@marvin,@tornadomeet,@好久不见,@zouxy09
他们在我写这个笔记的过程中提供了多方面的资料。
特别是:@ zeonsunlight,帮助我弄清楚了很多概念;@好久不见,帮我改正了博客中的符号的错误。
本人愚钝,多数问题都需要各位同学的多次点拨,在此向他们表示衷心的感谢。
这个笔记的其他方面介绍,我觉得都算清楚,唯独在说能量模型的时候,感觉是没把能量模型介绍清楚,有懂的前辈希望能指导一下。
最后,还是得说,本人才疏学浅,肯定有大量的错误,希望大家能多多包涵并且指出,让我能及时改正。
参考文献
[1] An Introduction to Restricted Boltzmann Machines.Asja Fischer andChristian Igel
[2] 受限波尔兹曼机简介 张春霞,姬楠楠,王冠伟
[3] LearningDeep Architectures for AI Yoshua Bengio
[4] http://blog.csdn.net/cuoqu/article/details/8886971 DeepLearning(深度学习)原理与实现(一)@marvin521
[5] http://blog.csdn.net/zouxy09/article/details/8775360 Deep Learning(深度学习)学习笔记整理系列 @zouxy09
[6] http://www.cnblogs.com/tornadomeet/archive/2013/03/27/2984725.html Deep learning:十九(RBM简单理解) @tornadomeet
[7] http://blog.csdn.net/celerychen2009/article/details/8984316 受限波尔兹曼机 @celerychen2009
[8] http://blog.csdn.net/zouxy09/article/details/8537620 从最大似然到EM算法浅解 @zouxy09
[9] http://www.sigvc.org/bbs/thread-513-1-3.html 《RBM 和DBN 的训练》 王颖
[10] 神经网络原理叶[M] 叶世伟,史忠植:机械工业出版社
[11] http://www.sigvc.org/bbs/thread-512-1-1.html 《Restricted BoltzmannMachine (RBM) 推导》朱飞云
[12] http://www.52nlp.cn/lda-math-mcmc-%E5%92%8C-gibbs-sampling1gibbs抽样相关
深度学习读书笔记之RBM相关推荐
- 深度学习读书笔记之RBM(限制波尔兹曼机)
深度学习读书笔记之RBM 声明: 1)看到其他博客如@zouxy09都有个声明,老衲也抄袭一下这个东西 2)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的 ...
- 深度学习读书笔记之AE(自动编码)
深度学习读书笔记之AE 声明: 1)该博文是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的 ...
- 吴恩达深度学习——读书笔记
神经网络和深度学习 深度学习概述 深度学习(Deep Learning)是更复杂的神经网络(Neural Network). 这是一个基本的神经网络模型结构.在训练的过程中,只要有足够的输入x和输出y ...
- AI圣经-深度学习-读书笔记(一)-引言
引言 机器学习:AI系统需要具备自己***获取自己获取知识的能力***,即从原始数据中提取模式的能力. 许多人工智能任务都可以通过以下方式解决:先提取一个合适的特征集,然后将这几个特征提供给简单的机器 ...
- AI圣经-深度学习-读书笔记(四)-数值计算
数值计算 机器学习算法通常需要大量的数值计算,这通常是指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法.常见的操作包括优化和线性方程组的求解. 对上溢和 ...
- AI圣经-深度学习-读书笔记(七)-深度学习中的正则化
深度学习中的正则化 0 简介 机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化好的算法.采用显式减少测试误差(可能会增加训练误差)的策略称为正则化. 在深度学习的背景下,大多 ...
- [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning
- 通常机器学习,目的是,找到一个函数,针对任何输入:语音,图片,文字,都能够自动输出正确的结果. - 而我们可以弄一个函数集合,这个集合针对同一个猫的图片的输入,可能有多种输出,比如猫,狗,猴子等, ...
- 【089】深度学习读书笔记:P29证明迹Tr(AB)=Tr(BA)
已知m行n列矩阵A,n行m列矩阵B.Tr表示迹运算.求证 Tr(AB)=Tr(BA) . 证明: 令 Ax,y 表示矩阵A的第x行y列元素.令C=AB. D=BA.C是m阶方阵.D是n阶方阵.我们可以 ...
- 大数据架构详解从数据获取到深度学习读书笔记
我们将大数据按处理时间的跨度要求可以分为以下几类: 1 基于实时数据流的数据处理(streaming Data processing),通常的是假跨度在数百毫秒到数秒之间 2 基于历史数据的交互式查询 ...
最新文章
- 转载的spring cloud的全家桶,有空学习下
- HTML怎么编写可关闭广告,JS实现关闭小广告特效
- 从零开始单排学设计模式「策略模式」黑铁 II
- Python列表以及列表的处理方法
- php eclipse 版本_PHPEclipse官方下载
- ffmpeg视频切片方案
- mac如何使用命令行删除文件
- Wireshark 用户使用手册 ———— 自定义 Wireshark
- js 基础词汇及方法整理
- 概率论得学习整理--番外3:二项式定理和 二项式系数
- 邮箱容量满了怎么办?我的邮箱容量快满了如何解决?
- 2. linux默认的系统管理员账号是,2019.10第二周 王俊懿_Linux
- UNP学习第十一章总结, 百度的www.a.shifen.com域名,getaddrinfo小发现
- 【浏览器兼容】火狐浏览器滚动条不出现问题
- 设计模式——结构型模式
- Python实现用户输入国家名称,打印出所输入的国家名称和首都。
- AutoDL 算力云 服务器租用教程
- 企业 Saltstack安装配置及远程推送
- 波恩大学癫痫脑电和波士顿儿童医院脑电信号数据集下载
- 用c语言编写代码:统计一个文本中出现次数最多的字符,写一个程序,统计一段文本中,出现次数最多的英文字母的数量,同字母大小写视为同字母 例子: wq...