欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld

技术交流QQ群:433250724,欢迎对算法、技术、应用感兴趣的同学加入。

最近在复习经典机器学习算法的同时,也仔细看了一些深度学习的典型算法。深度学习是机器学习的“新浪潮”,它的成功主要得益于深度“神经网络模型”的优异效果。这个小系列打算深入浅出地记录一下深度学习中常用的一些算法。第一篇先写一下“受限玻尔兹曼机”RBM,会分若干个小段写,这是第一段,关于RBM的基本概念。本文很多推导是参考了资料[7],感谢分享,不过我会重新手写一遍。

网上有很多关于RBM的介绍,但是很多写的比较简略,跳过了很多细节,本文尽量追求扣一下细节的同时,做到深入浅出。推荐的参考资料可以看最后的参考文献。

需要的背景知识

要学习RBM需要的一些基本的统计学习基础,包括贝叶斯定理,随机采样方法(Gibbs sampling)等。这些可以翻阅我之前写的一些博文可以看到相关的介绍,在本文中就不具体展开了。总体来说RBM还是相对比较独立的一个算法,不需要依赖太多的先验知识。

RBM基本概念

受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)是G.Hinton教授的一宝。Hinton教授是深度学习的开山鼻祖,也正是他在2006年的关于深度信念网络DBN的工作,以及逐层预训练的训练方法,开启了深度学习的序章。其中,DBN中在层间的预训练就采用了RBM算法模型。RBM是一种无向图模型,也是一种神经网络模型。

RBM具有两层:可见层(V层),以及隐藏层(H层),网络上比较常见的一张图是[1]:

可以看到,两层神经元之间都是全连接的,但是每一层各自的神经元之间并没有连接,也就是说,RBM的图结构是一种二分图(bipartite graph)。正是这个特点,才叫受限玻尔兹曼及,玻尔兹曼机是允许同一层之间的神经元相连的。RBM其实是一种简化了的BM模型。

还有一个特点,RBM中的神经元都是二值化的,也就是说只有激活和不激活两种状态,也就是0或者1;可见层和隐藏层之间的边的权重可以用W来表示,W是一个|V|×|H|大小的实数矩阵。后面一篇讲RBM求解的时候可以看到,算法难点主要就是对W求导(当然还有bias参数),用于梯度下降的更新;但是因为V和H都是二值化的,没有连续的可导函数去计算,实际中采用的sampling的方法来计算,这里面就可以用比如gibbs sampling的方法,当然,Hinton提出了对比散度CD方法,比gibbs方法更快,已经成为求解RBM的标准解法。RBM求解部分将在下一小篇中具体介绍。

OK,第一篇就到这里。

觉得有一点点价值,就支持一下哈!花了很多时间手打公式的说~更多内容请关注Bin的专栏

参考资料

[1] http://www.chawenti.com/articles/17243.html

[2] 张春霞,受限波尔兹曼机简介

[3] http://www.cnblogs.com/tornadomeet/archive/2013/03/27/2984725.html

[4] http://deeplearning.net/tutorial/rbm.html

[5] Asja Fischer, and Christian Igel,An Introduction to RBM

[6] G.Hinton, A Practical Guide to Training Restricted Boltzmann Machines

[7] http://blog.csdn.net/itplus/article/details/19168937

[8] G.Hinton, Training products of experts by minimizing contrastive divergence, 2002.

[9] Bengio, Learning Deep Architectures for AI, 2009

深度学习方法:受限玻尔兹曼机RBM(一)基本概念的更多相关文章

  1. 基于受限玻尔兹曼机(RBM)的协同过滤

    受限玻尔兹曼机是一种生成式随机神经网络(generative stochastic neural network), 详细介绍可见我的博文<受限玻尔兹曼机(RBM)简介>, 本文主要介绍R ...

  2. 深度学习方法:受限玻尔兹曼机RBM(二)网络模型

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入 上解上一篇RBM(一)基本概念, ...

  3. 深度学习方法:受限玻尔兹曼机RBM(四)对比散度contrastive divergence,CD

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入 上篇讲到,如果用Gibbs Sa ...

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

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

  5. 受限玻尔兹曼机RBM

    相关算法 python代码参考http://blog.csdn.net/zc02051126/article/details/9668439#(作少量修改与注释) #coding:utf8 impor ...

  6. 受限玻尔兹曼机RBM—简易详解

  7. 受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)

    这篇写的主要是翻译网上一篇关于受限玻尔兹曼机的tutorial,看了那篇博文之后感觉算法方面讲的很清楚,自己收获很大,这里写下来作为学习之用. 原文网址为:http://imonad.com/rbm/ ...

  8. 关于”机器学习方法“,&quot;深度学习方法&quot;系列

    "机器学习/深度学习方法"系列,我本着开放与共享(open and share)的精神撰写,目的是让很多其它的人了解机器学习的概念,理解其原理,学会应用.如今网上各种技术类文章非常 ...

  9. 受限玻尔兹曼机(Restricted Boltzmann Machine)

    受限玻尔兹曼机(Restricted Boltzmann Machine) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 生成模型 2. 参数学 ...

随机推荐

  1. missing ) after argument list

    ../node_modules/.bin/webpack-dev-server --progress --color --hot --inline -d --host 192.168.1.101 -- ...

  2. ContestHunter暑假欢乐赛 SRM 02

    惨不忍睹 3个小时都干了些什么... 日常按顺序从A题开始(难度居然又不是递增的 第一眼A题就觉得很简单...写到一半才发现woc那是个环.感觉一下子复杂了,按照链的方法扩展的话要特判很多东西... ...

  3. requireJs使用方法项目实例

    首先,定义 main.js  和 事件处理的公共 js main.js 主要是定义引用名称和路径的对应关系 事件绑定模块: 写jsp页面: jsp中先引入 require.js 和 main.js 然 ...

  4. 微服务学习一:idea中springboot集成mybatis

    一直都想学习微服务,这段时间在琢磨这块的内容,个人之前使用eclipse,现在用intellij idea来进行微服务的开发,个人感觉intellij idea比eclipse更简洁更方便,因为int ...

  5. 【IntelliJ IDEA 12使用】导入外部包

    以前用eclipse,现在用IntelliJ IDEA,发现它确实是个很不错的工具. 用IntelliJ IDEA12这个版本导入外部JAR包,这样来操作,打开Project Structure,在m ...

  6. phpstorm license 解决

    http://idea.lanyus.com/ sudo vim /etc/hosts 最后添加:  0.0.0.0 account.jetbrains.com 然后把获得的注册码,复制到,licen ...

  7. MySQL 5.6 for Windows 解压缩版配置安装(转载)

    原文地址:点击这里 MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe ...

  8. Activity及Intent

    1.Activity 在一个Android应用程序中,Activity是为用户操作而展示的可视化界面.比如你要打电话,这个时候的拨号界面就是一个Activity,你要发短信给你的女朋友,这个短信窗口就 ...

  9. PowerDesigner16 修改表或表的字段Name的时候不让Code不自动跟着变

    在修改表或表的字段Name的时候不让Code不自动跟着变,设置如下: tools-> General   Options-> Dialog 去掉勾选 Name To Code mirror ...

  10. MyBatis注解Annotation介绍及Demo

     MyBatis注解Annotation介绍及Demo 2014-04-21 17:09:55 标签:Mybatis Annotation 注解 ResultMap SqlBuilder 原创作品,允 ...