第一次接触深度信念网络DBN,结合看到的博客内容简单谈谈理解,如果有哪些地方不太准确,欢迎各位大神批评指正。

【概述】

周志华老师所著的《机器学习》5.6节对DBN的描述可以用简单一句话来概括:

DBN由多层受限Boltzmann机(RBM)堆叠而成,各层RBM预训练完成后,利用一层BP对整个网络进行训练。

那么问题来了,RBM是个什么?

【受限Boltzmann机(RBM)】

每个RBM有两层神经元,显层和隐层。

显层中的神经元是显性神经元,用于接收输入;隐层中的神经元是隐性神经元,用于提取特征。

两层间的神经元双向全连接,单层内神经元不连接(受限Boltzmann机和Boltzmann机的区别就在于层内神经元是否连接)。

看到这里,联系之前有所接触的前馈神经网络,不知道有没有人和本人一样,想到了一个问题:

为什么RBM层间神经元是双向连接的呢?

要想回答这个问题,就需要简单说说RBM的工作方式了,结合所看到的一些资料,总结出了RBM训练的算法:

1.已知显层向量X,由权重向量W、偏置向量B计算出输出向量Y;
2.通过Y,由权重向量W、偏置向量A回求X';
3.通过X',由权重向量W、偏置向量B再次计算出输出向量Y';
4.计算X、X'差值,若不近乎为零(未达到网络要求),则5;若近乎为零(达到网络要求),则9;
5.X、Y做矢量乘积得到矩阵Z,X'、Y'做矢量乘积得到矩阵Z',其中,Z、Z'均为x*y矩阵(x为X向量维度,y为Y向量维度);
6.Z、Z'相减,调整权重向量W = W + alpha*(Z-Z'),其中,alpha为学习速率learning rate;
7.调整偏置向量A = A + alpha * (A-A')、B = B + alpha * (B-B');
8.重复上述过程;
9.结束。

此刻再来看刚刚的问题,RBM层间神经元为什么双向连接呢?

它要在进行回推和比较啊!

该过程在一会儿介绍的wake-sleep算法中会进行进一步解释。

了解了RBM,我们可以再回头来看DBN是什么了。

本节参考:受限玻尔兹曼机最通俗易懂的教程

【深度信念网络DBN】

由若干层RBM和一层BP组成的深层神经网络。

最顶部两层(最后一层RBM的输出和输出层)连接是无向的,较低的其他层之间有连接上下的有向全连接(参考上节:受限Boltzmann机)。在这里,最后一层RBM的输出是输出层的输入。

最底层代表数据向量,每个神经元代表数据向量的一维。

网络架构明确之后,简单谈谈其训练过程:

DBN在训练过程中主要有两步:

1.预训练阶段:分别单独无监督地训练每一层RBM网络(layer1训练好之后再进行layer2的训练),确保特征向量映射到不同特征空间时尽可能多地保留特征信息。

类似一个贪心算法,让每层RBM学习到的特征可以最好地还原输入。

2.调优过程:DBN最后一层中设置BP网络,接受RBM的输出特征向量作为其输入特征向量,有监督地训练实体关系分类器,且RBM只确保自身层内的权值对该层特征向量映射达到最优,而并不对整个DBN负责。反向传播网络(BP)将信息自顶而下传播至每层RBM,对整个DBN网络进行微调。

调优过程中有很多值得注意的地方:

a. 如周志华老师所著的《机器学习》5.3节中所说,BP网络指BP算法训练的前馈神经网络,这也就意味着,DBN的顶层是前馈神经网络,不存在双向连接。

b. 有关预训练阶段无监督而调优阶段有监督的问题:还是周志华老师所著的《机器学习》里面所说,监督学习和无监督学习是由训练数据是否具有标记信息而划分的。那么,预训练阶段中很明显不存在标记信息,而只是为了隐层神经元所回推的结果更符合输入,故该阶段为无监督学习;而调优阶段中,DBN的输出一定要与标记信息做比对,才能够确定如何调整网络参数,所以该阶段为有监督学习。

c. 在预训练阶段中,RBM网络的训练目标是“确保特征向量映射到不同特征空间时尽可能多地保留特征信息”,且RBM逐层训练,所以RBM网络仅仅对本层的输入、输出之间的关系负责,而不保证对整个 DBN 的特征向量映射达到最优。

d. 整个网络的微调是由BP进行的。

本节参考:机器学习——DBN深度信念网络详解

本节参考:深度信念神经网络DBN最通俗易懂的教程

【调优过程的wake-sleep算法】

除顶层RBM外(因为顶层的RBM神经元向上并不是双向连接),其它层的RBM被分为向上的认知权重(recognition weight)和向下的生成权重(generative weight)。

在训练过程中,有人发现,给定生成权重,可以学习得到认知权重;给定认知权重,可以学习得到生成权重。

由于机器学习的目的在于抽象出模型(自下而上),所以自上而下的生成连接似乎没有什么用。

但是如果有较好的认知连接(认知权重),就可以使用一种自下而上的传播——用真实数据激活每层神经元,从而通过尝试前一层的神经元活跃度信息重建每层的神经元活跃度,从而学习生成权重。(如果这一段没看懂,直接看算法阶段就好)

wake-sleep算法:

1.wake阶段:认知过程,通过外界特征(真实世界)和认知权重所产生的抽象表示(概念),修改下行生成权重。

2.sleep阶段:生成过程,通过wake阶段学得的概念和生成权重,生成底层状态(还原真实世界),修改上行认知权重。

最后,再加上这两句很有名的话:

wake:“如果现实和我想象的不一样,改变我的生成权重使得我想象的东西就是这样的”

sleep:“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”

本节参考:deeplearning的wake-sleep算法

本节参考:[深度学习]Wake-Sleep算法

初识深度信念网络DBN相关推荐

  1. 【学习笔记】【DBN】十九——深度信念网络DBN

    本篇简要介绍深度信念网络DBN,是一个不太常见的神经网络. 首先对深度信念网络(DBN)进行简要介绍,然后对其组成原件RBM的结构.原理和训练过程进行介绍.接着对DBN的训练过程进行介绍. 目录 一. ...

  2. 【theano-windows】学习笔记十六——深度信念网络DBN

    前言 前面学习了受限玻尔兹曼机(RBM)的理论和搭建方法, 如果稍微了解过的人, 肯定知道利用RBM可以堆叠构成深度信念网络(deep belief network, DBN)和深度玻尔兹曼机(dee ...

  3. 深度信念网络DBN的一个matlab实例

    关于深度学习的一些个人浅见: 深度学习通常是训练深度(多层)神经网络,用于模式识别(如语音.图像识别):深度网络 指是具有深层(多层)网络结构的神经网络. 深层网络由于神经元多,参数多,拟合表现能力强 ...

  4. DBN深度信念网络详解

    1.  自联想神经网络与深度网络 自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入.很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在.所以,我们 ...

  5. DBN深度信念网络介绍

     DBN神经网络模型 使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络.然而,有一种更好的神经网络模型,这就是受限玻尔兹曼机.使用层叠波尔兹曼机组成深度神经网络 ...

  6. 深度信念网络_【文章推荐】应用于油中溶解气体分析的深度信念网络与典型神经网络对比研究...

    文章推荐 应用于油中溶解气体分析的深度信念网络与典型神经网络对比研究 原文发表在<高压电器>2020年第9期. 请进<高压电器>网站(www.zgydq.com)下载全文. D ...

  7. 从RBM(受限玻尔兹曼机)开始、到深度信念网络(DBN)再到自动编码器(AE)

    从RBM(受限玻尔兹曼机)开始.到深度信念网络(DBN)再到自动编码器(AE) 目录

  8. 大话深度信念网络(DBN)

    -- 原文发布于本人的微信公众号"大数据与人工智能Lab"(BigdataAILab),欢迎关注. 让我们把时间拨回到2006年以前,神经网络自20世纪50年代发展起来后,因其良好 ...

  9. 2021-03-27 深度信念网络(DBN)学习笔记

    目录 前言 1.BM 2.RBM 二.DBN 总结 前言 仅此以记录学习过程.深度信念网络(DBN)通过采用逐层训练的方式,解决了深层次神经网络的优化问题,通过逐层训练为整个网络赋予了较好的初始权值, ...

  10. 机器学习:深度信念网络(DBN)原理和实现

    深度信念网络结构,经典结构,直接上图: DBN由多个RBM堆叠而成,训练过程由预训练和微调构成 深度信念网络训练步骤: (1)预训练:分别单独无监督的训练每一层RBM网络,确保特征向量映射到不同特征空 ...

最新文章

  1. 我们准备在网关中支持GrahpQL了
  2. linux下如何更新镜像源(ubuntu 10.04 为例),Ubuntu 10.04 更新源补充
  3. InServ-T级存储系统能否挑战传统存储架构?
  4. C++中auto的用法,说明的是变量的寿命
  5. 添加Godaddy二级域名子域名方法
  6. 【自考总结】寒冬里的温暖
  7. 遗传算法的基本概念和实现(附 Java 实现案例)
  8. sql server外部连接
  9. JavaScript高级程序设计(第三版)pdf的下载地址
  10. 误ghost后手工修改分区表来恢复数据
  11. tictac 立体井字棋
  12. 利用html模板发送邮件
  13. 产品可靠性测试 - 学习笔记(1)
  14. AltiumDesigner多通道复用设计教程(亲测可行版本)
  15. 【简单易懂的Unity5 Shader着色器入门教程】 笔记
  16. 无需代码,1秒搞定QQ和微信多开!
  17. SSCOM串口软件模拟TCP通信接发信息
  18. JVM学习笔记07-垃圾回收
  19. Linux下清理磁盘数据方法
  20. ChinaRAP中国道路(路网)风险评估系统研究与应用

热门文章

  1. 一文搞懂CSS 3D动画效果
  2. 斐讯E1刷K2版老毛子Padavan,完美实现中继教程
  3. 6个免费音乐网站,随便听随便下,都是好干货
  4. 4.68亿人信息泄露:2 块钱就能查你的身份证,还带照片!
  5. 在网址前加神秘字母,让你打开新世界
  6. 鸿蒙手机电脑无缝对接,万物互联?华为鸿蒙OS超级终端功能曝光可一键连接附近设备...
  7. Go 通道 Chan 详解
  8. google scholar 使用不了的问题——已解决
  9. 计算机启用远程桌面连接失败,解决办法:如何处理win10远程桌面连接失败?
  10. java 拉姆达表达式_Java8中foreach与拉姆达表达式的组合使用