Deep Belief Network 学习笔记-RBM

By Placebo

(纯属个人笔记)

第一次知道deep learning,是上学期dengli博士来实验室的一次报告,他讲到,当神经网络的层数大于2时(即一个hidden层,一个输出层,不算输入层,之后皆采用这种表述法),经典的训练方法效果会很差,如果层数继续增多,则完全没法训练。当时对神经网络知之甚少,直到最近较认真的学了下机器学习,才明白。

什么是deep learning?我们知道(虽然不知道如何证明)2层神经网络的建模能力是非常强大的,但是要求隐节点个数足够多,多到难以接受。如果采用更深层的网络,比如3层网络,即两个hidden层,每层100个节点,则可以和hidden层有10000个节点的2层网络建模能力差不多,类似,4层网络,三个hidden层,每层100个节点,可以和hidden层有1000000个节点的2层网络建模能力差不多。这就是加深网络深度带来的好处。但是网络深了,针对3层网络的训练方法再用起来就会失败,因为参数的局部极小值太多了,很容易陷入到一个很烂的极值。

Hinton于XXXX年提出了一种方法,把RBM(Restricted Boltzmann Machines)堆叠在一起,训练出权值,把这个权值当成神经网络权值的初始值,再用经典的梯度法去训练网络,最后得到的结果会很好。也就是说通过选择好的参数初始值让结果更好。

但是RBM是种能量模型,他的权值是用来计算连接节点的能量值的,而神经网络的权值是种递进式的,为什么前者的权值直接给后者用也可以呢,我也不清楚,总是感觉不科学,因为调研的甚少,也没发现解释为什么的文章。

这里先讲下RBM是如何训练的。

先说Boltzmann Machines,这是一种无向图模型,有N个节点,节点是互相连接的(不一定要全连接),第i个节点和第j个节点间权值为wij,为简单起见,这里认为节点的取值是2值的,即只能取0或1。有些节点值是已知的,有些是未知的,我们把已知的和未知的分开,分成两层,已知的节点集记为V,未知的节点集合记为H。若是V内节点之间都不相连,H内节点之间也都不相连,这种模型叫Restricted Boltzmann Machines。

定义一个能量函数E(V,H)

\[{\rm{P}}\left( {{\rm{v}},{\rm{h}}} \right) = \frac{{{{\rm{e}}^{ – {\rm{E}}({\rm{v}},{\rm{h}})}}}}{{ \sum \nolimits_{{\rm{u}},{\rm{g}}} {{\rm{e}}^{ – {\rm{E}}({\rm{u}},{\rm{g}})}}}}\]

最大化P(V)的值,用梯度法,经过一系列推导可得权值的更新规则为

∆wij=data – model

这里的<>意思是求期望,data是指已知样本集时,vihj的期望值,这时vi是由样本确定的,hj是未知的。而第二项,是模型中vihj的期望值。这时vi,hj都是未知的。

直接求这两个期望不好求,可以用抽样的方法来估计。第一项,可以通过P(hj|v)抽样出hj,这里hj之和v有关,和hk无关,因为RBM假定H内的节点之间没有连接,这种限制简化了计算。

第二项也可以用抽样法算出,不过要反复抽样,用P(hj|v)抽出每个hj,再用p(vi|h)抽出每个vi,不断反复,最后这个抽样过程得到的抽样分布会收敛到模型的真实分布。但是这个过程太慢了,于是hinton提出一种估计的办法,用P(hj|v)抽出每个hj,再用p(vi|h)抽出每个vi,再用P(hj|v)抽出每个hj,∆w中的第二项直接用这时得到的v和h来计算。这种方法得到的解也是可接受的。

虽然说RBM用到了MRF相关的理论,但是即使对这些理论理解得很浅,也可以直接拿CD算法来用。机器学习里理论上的东西看起来都蛮复杂,比如收敛性证明,误差上界证明之类的,但是若是有了算法的菜谱版,配上便于做科学计算的编程工具,如matlab,numpy,r等,是很容易用的。可惜此领域很多文章并没有明显的给出菜谱式算法。

欢迎加入我爱机器学习QQ14群:336582044

微信扫一扫,关注我爱机器学习公众号

matlab rbm 语音,Deep Belief Network 学习笔记-RBM相关推荐

  1. 深度学习--深度信念网络(Deep Belief Network)

    本篇非常简要地介绍了深度信念网络的基本概念.文章先简要介绍了深度信念网络(包括其应用实例).接着分别讲述了:(1) 其基本组成结构--受限玻尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成深度 ...

  2. Deep Belief Network简介——本质上是在做逐层无监督学习,每次学习一层网络结构再逐步加深网络...

    from:http://www.cnblogs.com/kemaswill/p/3266026.html 1. 多层神经网络存在的问题 常用的神经网络模型, 一般只包含输入层, 输出层和一个隐藏层: ...

  3. 【零散知识】受限波兹曼机(restricted Boltzmann machine,RBM)和深度置信网络(deep belief network,DBN)

    前言: { 最近一直在想要不要去线下的英语学习机构学英语 (本人的英语口语能力实在是低).如果我想完成今年的年度计划,那么今年就没时间学英语了. 这次的内容是之前落下的深度置信网络(deep beli ...

  4. Deep Belief Network简介

    1. 多层神经网络存在的问题 常用的神经网络模型, 一般只包含输入层, 输出层和一个隐藏层: 理论上来说, 隐藏层越多, 模型的表达能力应该越强.但是, 当隐藏层数多于一层时, 如果我们使用随机值来初 ...

  5. 深度学习(二十六)Network In Network学习笔记-ICLR 2014

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  6. 深度学习(二十六)Network In Network学习笔记

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  7. Yoshua Bengio——《Deep Learning》学习笔记1

    版权声明:此为Yoshua Bengio的新书<Deep Learning>学习笔记,本文为博主在研究工作中经验分享,包括学习笔记.摘录.研究成果,以便以后工作参考之用,欢迎交流和批评:其 ...

  8. NIN(Network in Network)学习笔记

    NIN(Network in Network)学习笔记 一.前言 <Network In Network>是一篇比较老的文章了(2014年ICLR的一篇paper),是当时比较牛逼的一篇论 ...

  9. Beyond Tracking:Selecting Memory and Refining Poses for Deep Visual Odometry学习笔记

    Beyond Tracking:Selecting Memory and Refining Poses for Deep Visual Odometry学习笔记 论文链接:https://arxiv. ...

最新文章

  1. 机器学习概念 — 线性感知机、线性回归、单个神经元、多层次神经元
  2. 摘之知乎网友...PHYTIN学习
  3. java数字转字符串及字符串转数字
  4. redis常用命令_Redis的简介以及基本常用命令
  5. mysql存储过程触发器游标_MySQL存储过程,触发器,游标
  6. java 实现打印条形码_条码打印软件中如何设置条形码下面的字符间距?
  7. 马上开课 | 临床基因组学数据分析实战助力解析Case,快速发表文章
  8. 视图请求限定装饰器-101.课时101.【Django视图高级】限制请求method装饰器(Av61533158,P101)
  9. SecureCRT连接Linux显示Mysql记录中文乱码
  10. python用什么编译器-Python必学之编译器用哪个好?你用错了吧!
  11. struts2的package和result的标签的属性
  12. 生成随机不重复数列表(C#)
  13. 【Spleeter】实验记录——音轨分离软件spleeter的安装
  14. Matlab图像特征提取的数学原理及实现
  15. 【软件工程】——详细设计说明书
  16. vant中picker选择器
  17. 有向图的邻接矩阵的平方运算的含义
  18. [论文写作笔记] C9 概括和结论展示科学严谨性
  19. 透视矩阵的推导(最直观、最深入、最还原,看完请点赞。)
  20. System.InvalidOperationException:“ConnectionString 属性尚未初始化。” 连接字符串的根本解决办法

热门文章

  1. Overcoming Classifier Imbalance for Long-tail Object Detection with Balanced Group Softmax(CVPR20)
  2. 数字图像处理-车牌定位
  3. Windows 蓝屏代码大全,Bug检查代码参考
  4. R语言实现偏最小二乘分析(PLS)
  5. 用vue实现点击按钮,弹出一个视频,视频可拖动放大缩小
  6. Docker(redis集群)
  7. Android Broadcast详解
  8. Pytorch 多项式拟合
  9. 2023注会电子版教材
  10. 隐形矫正计算机软件,数字化隐形正畸技术及口腔病例展示