深度学习 之 玻尔兹曼机

1.玻尔兹曼 BM

首先BM中的神经元都是二值神经元,也就是要么是0要么是1
如何理解上图中的BM与一般神经网络的区别的呢?

  • 我们可以在图中看到,它是个无向完全图
  • 也就是说,每个节点与节点之间都相连, 并且 节点与节点之间是双向的关系

这与一般神经网络不同,正常的神经网络中都分输入层,隐藏层,输出层, 每次训练都是按着一定的顺序往后推进的*

  • 另外,在BM中,我们无法找到哪个是输入口,哪个是输出口,因为BM的作用是仅仅在自己内部训练,学习一组数据的内在表示

2.限制玻尔兹曼 RBM


**在图中我们可以看到 RBM相比于BM去掉了一些神经元直接的连接, 比如红色与红色之间 蓝色与蓝色之间, 不过同样的,神经元与神经元之间的连接是无向的 **
他的本质是无监督学习,如上图中所述,他是很多方法的基础,比如降维,自编码器,学习特征等等
下图给出了RBM的样子, 它只有输入层和隐藏层,并没有输出层的概念,而我们刚刚学习来看,他是层间全连接,层内无连接的

我们来看看RBM的训练过程

前向传播的过程其实和常见的神经网络是一样的,输入x
经过一层隐藏层之后得到a=sigmoid(w∗x+b)a = sigmoid(w*x+b)a=sigmoid(w∗x+b)
如果有多层隐藏层的话,如下图所说的,这里的RBM节点就起着自编码器的作用,也就是起到了降维的作用

重建的过程简单的说就是倒着训练,我们先看看上面那张图 结果是a=sigmoid(w∗x+b)a =sigmoid(w*x+b)a=sigmoid(w∗x+b)
现在在重建的过程中,我们的公式变成了r=sigmoid(v+w∗a)r = sigmoid(v + w*a)r=sigmoid(v+w∗a)
而RBM的目标就是在若干次训练后,让我们低纬度的a能跟r近似,也就是说在降维的同时保留了大部分原来的信息


前向传播预测的是 a的输出概率 已知 x 和 w的情况下
反向传播预测的是 x(也可以说r)的概率 ,在已知a 和 w的情况下
这就和刚刚的式子对应上了,这不过这里预测的是概率
而我们的目标是使得这两个p越接近越好

如下图所说,把两个概率结合起来写成p(x,a)p(x,a)p(x,a) 也就是输入x与激活值a的联合概率分布
如下图所说: 这里的重建被称为生成学习, 与我们之前所学的分类器是不一样的,下面我就举一个简单的例子
对于我们之前所学习的分类器, 比如我们给他一张猪的照片和一张戴眼镜的人的照片, 分类器返回的是 标签:(猪,人),而生成学习返回的是数据,他会返回一个戴眼镜的猪

而RBM的重建的目标就是是的输入数据和重建结果的曲线重合部分越多越好,简单画个图
比如黑色的正态曲线是原来的输入x的分布,而重建的结果是红线,他与原来代表x的黑线重叠部分越多越好,也就是说,我们通过重接得到的结果,越接近原来的值越好,这点我在之前已经提到过了,这不过现在我们把这个概念转化成了概率分布的重叠

下图的第一个函数表示的是一个RBM的能量 , 因为是双向连接的 所以 后面的两个公式 就是从头到尾与从尾到头的计算公式

这个能量函数的意思就是,每个可视节点和隐藏节点之间的连接结构都有一个能量,通俗来说就是可视节点的每一组取值和隐藏节点的每一组取值都有一个能 量,如果可视节点的一组取值(也就是一个训练样本的值)为(1,0,1,0,1,0),隐藏节点的一组取值(也就是这个训练样本编码后的值)为 (1,0,1),然后分别代入上面的公式,就能得到这个连接结构之间的能量。
能量函数的意义是有一个解释的,叫做专家乘积系统(POE,product of expert),这个理论也是hinton发明的,他把每个隐藏节点看做一个“专家”,每个“专家”都能对可视节点的状态分布产生影响,可能单个“专家” 对可视节点的状态分布不够强,但是所有的“专家”的观察结果连乘起来就够强了。

KL散度

之前已经说了,我们的目的是重建得到的目标分布跟输入数据的分布曲线接近, 也就是下图中的p(x)与q(x) 下面的右图是它们差的积分, 理解起来就是每一点p(x)与q(x)的差值所组成的函数,然后对它求积分

KL散度测量的就是两条曲线不重叠的部分, 而我们的目的就是使得KL散度越小越好
如下图说的,学习的过程就像两个概率分布在逐步重合,也就是两个曲线越来越接近

对于KL散度的通俗理解可以看这篇文章, 举了太空虫子为案例,蛮有趣的
多层受限玻尔兹曼机也很好理解.就是一层一层的学习,知道神经网络的话就十分好理解

之前将了玻尔兹曼机的实现原来,下面更加细节的介绍一下,中间迭代的过程

在我们之前回归训练的时候 损失函数 loss是这样的
loss=12∑(y^−y)2loss = \frac{1}{2}\sum(\hat{y}-y)^2loss=21​∑(y^​−y)2
而在这里我们的损失函数是这样的 ,具体可以查看KL散度的内容,用到了信息熵的概念
loss=∑p(x)∗p(x)q(x)loss = \sum{p(x)*\frac{p(x)}{q(x)}}loss=∑p(x)∗q(x)p(x)​
我们的目的就是让损失最小
在之前我们使用的方法是梯度下降法,这里的方法跟梯度下降类似,只不过因为这个方法提出的时间可能比较早,所以在梯度下降的过程中没有计算导数
公式如下如 , 我们可以看到,它是直接进行做差,然后乘一个学习率,而我们之前学到的是学习率乘损失的导数,这里就这点不太一样

在经过一轮轮的训练之后,我们就完成了效果,及训练完的参数可以使得重建之后的结果与输入数据的分布曲线损失最小
注: 我们现在使用的压缩软件其实内部也可以用神经网络来实现 ,比如1个G的文件压缩成500M,解压之后还是原来的内容

深度学习 之受限玻尔兹曼机相关推荐

  1. python3__深度学习__受限玻尔兹曼机

    1.什么是受限玻尔兹曼机 玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM).受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为 ...

  2. keras 受限玻尔兹曼机_深度学习之受限玻尔兹曼机

    1.什么是受限玻尔兹曼机 玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM). 受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行 ...

  3. 深度学习方法:受限玻尔兹曼机RBM(一)基本概念

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...

  4. 深度学习方法:受限玻尔兹曼机RBM(三)模型求解,Gibbs sampling

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 接下来重点讲一下RBM模型求解 ...

  5. 深度学习20-限制玻尔兹曼机RBM

    玻尔兹曼机来源于玻尔兹曼分布,而玻尔兹曼分布的创立者是路德维希·玻尔兹曼,这个原理来源于他首次将统计学用于研究热力学,即物质的状态概率和它对应的能量有关.比如,我们常用熵来形容物体的混乱程度,同时如果 ...

  6. 第11章 受限玻尔兹曼机

    序言 1. 内容介绍   本章介绍深度学习算法-受限玻尔兹曼机,主要介绍受限玻尔兹曼机的 原理.常见架构 以及 吉布斯分布与对比散度算法 2. 理论目标 受限玻尔兹曼机 原理 受限玻尔兹曼机 表示形式 ...

  7. keras 受限玻尔兹曼机_受限玻尔兹曼机 代码

    备注:这个python代码需要用到psyco包(安装困难),psyco包目前只有python2 32位版本. 在windows 64+python 3环境下,如果下载psyco的源代码安装,比较麻烦. ...

  8. 转:深度 | 深度学习与神经网络全局概览:核心技术的发展历程

    转自:http://qingmang.me/articles/-6937147381640589681/ 选自 AnalyticsVidhya作者: Syed Danish Ali.Rahul Ahu ...

  9. keras 受限玻尔兹曼机_目前深度学习的模型有哪几种,适用于哪些问题?

    深度学习的模型有很多, 目前开发者最常用的深度学习模型与架构包括 CNN.DBN.RNN.RNTN.自动编码器.GAN 等.雷锋网搜集整理了涉及以上话题的精品文章,供初学者参考,加速深度学习新手入门. ...

最新文章

  1. 安卓上比较好的python开发软件-手机随时随地写Python,还可以开发安卓APP,太厉害了!...
  2. 实战测试SO_REUSEADDR选项
  3. EXCLE使用中常用函数和公式
  4. 80%的软件环境管理问题,根因都在这里
  5. 什么是E-MapReduce
  6. WebRTC NAT穿透服务器 coturn服务搭建
  7. 单片机蜂鸣器唱歌c语言程序,STC89C52单片机蜂鸣器唱歌实验
  8. Java通过坐标点进行拟合函数
  9. Mac Air USB接口 失效/不起作用 的修复方式
  10. 对期货大赛获奖者杨宏斌、陈伟的采访
  11. python 随机产生一个整数 并猜测该数字小游戏
  12. durango服务器维护,Durango狂野大陆连接服务器失败_九游手机游戏
  13. 消消乐android 源代码,【消消乐】源代码
  14. zoj 1104 Leaps Tall Buildings(超人不会飞- -。。)
  15. 组合用计算机怎么按,一种常用的计算机键盘按键组合(快捷键)-Windows组合键,解释非常详细...
  16. UVA, 516 Prime Land
  17. linux 支持7代cpu,Intel第七代cpu有哪些型号
  18. securecrt连接虚拟机提示账号密码错误
  19. 阿里云OSS定时备份文件并定时删除过时文件
  20. DC-DC升压和降压电路电感参数选择详解

热门文章

  1. ActivePerl简单介绍
  2. JavaScript实现春节倒计时
  3. 解决之道:从互联网安全到IoT安全,如何关上潘多拉魔盒?
  4. 模拟实验室合成器插件-Arturia Analog Lab v5.2.0 WiN
  5. 在虚拟磁盘中安装Windows Server 2016
  6. 【Axure10视频教程】第八章 设置图片
  7. 麦语言转换python_funcat: Funcat 将同花顺、通达信、文华财经麦语言等的公式写法移植到了 Python 中。...
  8. sqlplus测试Oracle,sqlplus连接数的测试
  9. 上海交通大学方浩树:人类行为理解与机器人物体操作
  10. 凤凰os进不去图形界面_开机选择凤凰系统就停留在这个界面了怎么办?急在线等!...