1.什么是受限玻尔兹曼机

玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM)。受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为,随机取值)。它包含一层可视层一层隐藏层。在同一层的神经元之间是相互独立的,而在不同的网络层之间的神经元是相互连接的(双向连接)。在网络进行训练以及使用时信息会在两个方向上流动,而且两个方向上的权值是相同的。但是偏置值是不同的(偏置值的个数是和神经元的个数相同的),受限玻尔兹曼机的结构如下:

上图中:h层为隐藏层,为隐藏层的值,v层为可见层,为可见层的值。连接权重可以用矩阵W表示。和DNN(深度神经网络)的区别是,RBM不区分前向和反向,可见层(v)的状态可以作用于隐藏层(h),而隐藏层(h)的状态也可以作用于可见层(v)。隐藏层的偏执项是向量b,而可见层的偏执项是向量a。常用的RBM一般是二值的,即不管是隐藏层还是可见层,它们的神经元的取值只为0或者1。RBM模型结构的结构:主要是权重矩阵W, 偏执项向量a和b,隐藏层神经元状态向量h和可见层神经元状态向量v(向量均为列向量)。

2.能量函数(激活函数)与概率分布

RBM是基于基于能量的概率分布模型。分为两个部分:第一部分是能量函数,第二部分是基于能量函数的概率分布函数。对于给定的状态向量h和v,则RBM当前的能量函数可以表示为:

其中a,b是偏执项系数,W是权重矩阵,h,v为可见层与隐藏层的状态向量。有了能量函数,v,h的联合概率分布为:

其中Z是被称为配分函数的归一化常数(对于概率输出一般都要做归一化):

由于配分函数Z难以处理,所以必须使用最大似然梯度来近似。首先从联合分布中导出条件分布:

为了推导方便将无关值归于Z’中:

可以容易的得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率为(可见层的完全条件分布):

可以看到就是相当于使用了sigmoid激活函数,现在可以写出关于隐藏层的完全条件分布

有了激活函数,我们就可以从可见层和参数推导出隐藏层的神经元的取值概率了。对于0,1取值的情况,则大于0.5即取值为1,小于0.5取值为0。从隐藏层和参数推导出可见的神经元的取值方法也是一样的。

3.RBM损失函数

RBM模型的关键就是求出我们模型中的参数W,a,b。首先我们得写出损失函数,RBM一般采用对数损失函数,即期望最小化下式(v为可见层状态向量,m为迭代训练的次数):

后分别对w,a,b求偏导可得:

虽然说梯度下降从理论上可以用来优化RBM模型,但实际中是很难求得P(v)的概率分布的(P(v)表示可见层节点的联合概率)。计算复杂度非常大,因此采用一些随机采样的方法来得到近似的解。看这三个梯度的第二项实际上都是求期望,而我们知道,样本的均值是随机变量期望的无偏估计。因此一般都是基于对比散度方法来求解。

4.对比散度算法

CD算法大概思路是这样的,从样本集任意一个样本v0开始,经过k次Gibbs采样(实际中k=1往往就足够了),即每一步是:

得到样本vk,然后对应于上一篇三个单样本的梯度,用vk去近似:

    

上述近似的含义是说,用一个采样出来的样本来近似期望的计算。下面给出CD-k的算法执行流程。

具体RBM算法的流程:

5、深度玻尔兹曼机(DBM)

加深RBM的层数后,就变成了DBM,结构图如下:

    

此时的能量函数变为:

联合概率变成:

其实DBM也可以看做是一个RBM,比如对上图稍微加以变换就可以看做是一个RBM。

将可见层和偶数隐藏层放在一边,将奇数隐藏层放在另一边,我们就得到了RBM,和RBM的细微区别只是现在的RBM并不是全连接的,其实也可以看做部分权重为0的全连接RBM。RBM的算法思想可以在DBM上使用。只是此时我们的模型参数更加的多,而且迭代求解参数也更加复杂了。

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

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

    深度学习 之 玻尔兹曼机 1.玻尔兹曼 BM 首先BM中的神经元都是二值神经元,也就是要么是0要么是1 如何理解上图中的BM与一般神经网络的区别的呢? 我们可以在图中看到,它是个无向完全图 也就是说, ...

  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. GNU Make chapter 2 —— Makefile 介绍
  2. mxnet与pytorch比较 bn层
  3. W ndoWs7重启按F11没用,windows7无法正常启动按F8也没有效果的解决方法
  4. 网站显示不正常服务器怎么弄,你真的知道网站出现收录不正常的原因是什么吗...
  5. 深圳大学计算机科学考研,深圳大学考研计算机专业要多少分数会被百分百录取...
  6. cucumber 使用资料
  7. FPGA 芯片被曝严重的 Starbleed 漏洞,影响数据中心IoT工业设备等
  8. 《Java从小白到大牛》之第13章 抽象类与接口
  9. 苹果mac虚拟机软件:Parallels Desktop 17(pd虚拟机)Intel专用版
  10. 网站开发常用链接信息
  11. Modelsim的下载及安装
  12. 网络规划设计师教程知识点精讲之计算机网络汇总
  13. matlab计算abc三相短路电流_供配电系统设计需要用到的计算公式(结合手册简要总结)...
  14. pdf文件太大如何压缩变小一点?
  15. 如何查看电脑所有连接过的wifi密码?
  16. 关于2010年部分节假日安排
  17. 深井冰!沙雕码农脑洞大,盘点Github上那些不忍直视奇葩脑回路的沙雕项目!
  18. 知网等数据库文献快速直接导入EndNote的方法
  19. (openCV 十)ML_SVM
  20. 安卓开发 -- 定时重启设备

热门文章

  1. lotus notes java_远程数据库的Lotus Notes Java复制
  2. 基于Flash播放器的P2P直播解决方案
  3. 当B站“不再二次元”,破圈易,盈利难!
  4. 360安全卫士如何关闭弹窗广告
  5. uvalive 4997 ABCD Tiles
  6. vue项目利用vue-video-player实现视频兼容IOS和安卓放大播放
  7. 51单片机和3个74HC245和6个独立按键控制24个3组LED移动亮灭
  8. 上海明确“改善型住房”标准
  9. w3school没有java的教程_javafx w3school教程
  10. Python学习笔记 之 从入门到放弃