深度信念网络结构,经典结构,直接上图:

DBN由多个RBM堆叠而成,训练过程由预训练和微调构成
深度信念网络训练步骤:
(1)预训练:分别单独无监督的训练每一层RBM网络,确保特征向量映射到不同特征空间,都尽可能的保留特征信息;它通过一个非监督贪婪逐层方法预训练获得权重(即不要类标,不断拟合输入,依次逐层)。在这个过程中,数据输入到可见层,生成一个向量V,在通过权值w传给隐藏层,得到h,由于隐藏层之间是无连接的,所以可以并行得到隐藏层所有节点值。通过隐层激活单元和可视层输入之间的相关性差别(通过能量函数来度量网络的稳定性,优化函数是根据求能量函数球指数后,归一化,然后最大似然得到)就作为权值更新的主要依据。具体公式?
从单层的RBM训练说起,可见层是用来接受输入信号,隐藏层用来提取特征,RBM是通过无监督学习自动找到研究问题的最佳特征。

什么是能量函数呢?我觉得网上这段解释的比较好,我就直接copy了
这里说一下 RBM 的能量模型,这里关系到 RBM 的理解 能量模型是个什么样的东西呢?直观上的理解就是,把一个表面粗糙又不太圆的小球, 放到一个表面也比较粗糙的碗里,就随便往里面一扔,看看小球停在碗的哪个地方。一般来 说停在碗底的可能性比较大,停在靠近碗底的其他地方也可能,甚至运气好还会停在碗口附 近(这个碗是比较浅的一个碗);能量模型把小球停在哪个地方定义为一种状态,每种状态都对应着一个能量E,这个能量由能量函数来定义,小球处在某种状态的概率(如停在碗底的概率跟停在碗口的概率当然不一样)可以通过这种状态下小球具有的能量来定义(换个说 法,如小球停在了碗口附近,这是一种状态,这个状态对应着一个能量E ,而发生“小球停 在碗口附近”这种状态的概率 p ,可以用E 来表示,表示成p=f(E),其中 f 是能量函数, 其实还有一个简单的理解,球在碗底的能量一般小于在碗边缘的,比如重力势能这,显然碗 底的状态稳定些,并且概率大些。 也就是说,RBM采用能量模型来表示系统稳态的一种测度。这里可以注意到 RBM 是一种随机网络,描述一个随机网络,主要有以下 2 点 :
1. 概率分布函数。各个节点的取值状态是概率的、随机的,这里用了 3 种概率分布来描述 整个 RBM 网络,有联合概率密度,条件概率密度和边缘概率密度。
2. 能量函数。随机神经网络的基础是统计力学,差不多思想是热力学来的,能量函数是描 述整个系统状态的一种测度。系统越有序或者概率分布越集中(比如小球在碗底的情况), 系统的能量越小,反之,系统越无序并且概率分布发散(比如平均分布) ,则系统的能量 越大,能量函数的最小值,对应着整个系统最稳定的状态。 这里跟之前提到的最大熵模型思路是一样的。
RBM 能量模型的作用是什么呢?为什么要弄清楚能量模型的作用呢? 第一、 RBM 网络是一种无监督学习的方法,无监督学习的目的自然就是最大限度的拟 合输入数据和输出数据。 第二、 对于一组输入数据来说,如果不知道它的分布,那是非常难对这个数据进行学 习的。例如:如果我们实现写出了高斯函数,就可以写出似然函数,那么就可 以进行求解,就知道大致的参数,所以实现如果不知道分布是非常痛苦的一件 事情,但是,没关系啊,统计力学的一项研究成果表明,任何概率分布都可以 转变成基于能量的模型,即使这个概率分布是未知的,我们仍然可以将这个分布改写成能量函数。 第三、 能量函数能够为无监督学习方法提供 2 个特殊的东西 a)目标函数。 b)目标解, 换句话说,使用能量模型使得学习一个数据的变得容易可行了。 能否把最优解的求解嵌入能量模型中至关重要,决定着我们具体问题求解的好坏。能量模型要捕获变量之间的相关性,变量之间的相关程度决定了能量的高低。把变量的相关关系用图表示 出来,并引入概率测度方式就构成了概率图(为什么是概率图?前面一句说了, RBM 是一个图,以概率为测度,所以是概率图)模型的能量模型。总而言之,一句话,通过定义求解网络的能量函数,我们可以得到输入样本的分布,这样我们就相当于有了目标函数,就可以训练了。(copy自参考资料(1))
具体怎么进行更新呢?首先我们有个能量函数,就是前面的那个形式,通过能量函数,我们可以得到系统随机变量的概率分布:

这个概率分布,实际上就是我们的目标函数,他是一个包含,可见层向量v,隐藏层向量h,还有可见层与隐藏层权值w,偏置的函数。也可以认为是对能量函数求指数e,然后归一化后的结果。样本的一个状态对应着一个能量,相应的概率分布就对应着能量的概率分布。然后对这个函数求它的对数似然。
具体的训练过程如下:

PS:Gibbs采样:Gibss采用是需要知道样本中一个属性在其它所有属性下的条件概率,然后利用这个条件概率来分布产生各个属性的样本值:

Gibbs采样的目的是生成一个样本。(感觉还有好多没搞懂,姑且知道到它是干嘛的吧)
(2)微调:在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.
BP神经网络可以看我的另一篇博客。

参考网址:
(1)http://blog.csdn.net/app_12062011/article/details/54313082
(2)http://blog.csdn.net/losteng/article/details/51001247
(3)http://m.blog.csdn.net/NIeson2012/article/details/52184189
(4)http://blog.csdn.net/Rainbow0210/article/details/53010694?locationNum=1&fps=1
(5)http://blog.csdn.net/yywan1314520/article/details/51013410
(6)http://blog.csdn.net/zb1165048017/article/details/51778694

机器学习:深度信念网络(DBN)原理和实现相关推荐

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

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

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

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

  3. 常见的五种神经网络(4)-深度信念网络(下)篇之深度信念网络的原理解读、参数学习

    该系列的其他文章: 常见的五种神经网络(1)-前馈神经网络 常见的五种神经网络(2)-卷积神经网络 常见的五种神经网络(3)-循环神经网络(上篇) 常见的五种神经网络(3)-循环神经网络(中篇) 常见 ...

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

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

  5. DBN深度信念网络详解

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

  6. DBN深度信念网络介绍

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

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

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

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

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

  9. 机器学习笔记之深度信念网络(一)背景介绍与结构表示

    机器学习笔记之深度信念网络--背景介绍与结构表示 引言 深度信念网络 场景构建 深度信念网络的联合概率分布 引言 从本节开始,将介绍深度信念网络. 深度信念网络 深度信念网络(Deep Belief ...

最新文章

  1. 接口经常超时?线程池+ FutureTask来解决!
  2. 演示: 动态NAT完成网络地址翻译
  3. java xml格式打包,maven项目打包xml没有被打包解决办法 ,mybatis的xml打包
  4. 矩阵转置函数——指针自增的陷阱
  5. 使用更安全的C字符串操纵
  6. Javascript倒计时 支持自定义样式
  7. android弹窗警告,Android 开发使用PopupWindow实现弹出警告框的复用类示例
  8. Oracle中sql相关的命令
  9. Jmeter中的Bean shell
  10. python安装pygame教程_pygame 安装教程
  11. 极客网址导航-能访问谷歌的网址导航
  12. 文本比较工具-文本去重复工具
  13. UI开发之用PS给图片加水印
  14. 微信域名防封的新知识
  15. 有道云笔记·协作android版,【每天一品】有道云笔记协作
  16. 微信小程序 使用webview 缓存解决办法
  17. 制作一个可以修改/删除/查看详情并评分的电影网页
  18. 每日一练||用Java图形界面实现加减乘除功能的计算器
  19. 【Makefile】strip
  20. 黑客瞄准里约奥运会,多种手法可能让你中招

热门文章

  1. 简介ResNet18并用其对CIFAR-10数据集进行分类
  2. ROS机器人建模与仿真(一)——URDF模型的建立和改进
  3. 使用python完成简单的批量信息发送
  4. poi导入数据工具类,直接复制使用,有详细注释
  5. 读stormzhang的笔记
  6. 【Hexo】记录NexT主题美化及域名配置(图示详解)
  7. mysql 分离 实时读_MySQL深入利用Ameoba实现读写分离
  8. PCM与G711 转换
  9. [原]几条简单命令查询硬件信息
  10. 如何在U-Boot中添加自定义命令