转载于:https://blog.csdn.net/celerychen2009/article/details/9079715

深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功。本人在多年之前也曾接触过神经网络。本系列文章主要记录自己对深度神经网络的一些学习心得。 第六篇,简要描述深度神经网络模型。

1.  自联想神经网络与深度网络

自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入。很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在。所以,我们说,输出是对输入的一种重构。其网络结构可以很简单的表示如下:

如果我们在上述网络中不使用sigmoid函数,而使用线性函数,这就是PCA模型。中间网络节点个数就是PCA模型中的主分量个数。不用担心学习算法会收敛到局部最优,因为线性BP网络有唯一的极小值。

在深度学习的术语中,上述结构被称作自编码神经网络。从历史的角度看,自编码神经网络是几十年前的事情,没有什么新奇的地方。

既然自联想神经网络能够实现对输入数据的重构,如果这个网络结构已经训练好了,那么其中间层,就可以看过是对原始输入数据的某种特征表示。如果我们把它的第三层去掉,这样就是一个两层的网络。如果,我们把这个学习到特征再用同样的方法创建一个自联想的三层BP网络,如上图所示。换言之,第二次创建的三层自联想网络的输入是上一个网络的中间层的输出。用同样的训练算法,对第二个自联想网络进行学习。那么,第二个自联想网络的中间层是对其输入的某种特征表示。如果我们按照这种方法,依次创建很多这样的由自联想网络组成的网络结构,这就是深度神经网络,如下图所示:

注意,上图中组成深度网络的最后一层是级联了一个softmax分类器。

深度神经网络在每一层是对最原始输入数据在不同概念的粒度表示,也就是不同级别的特征描述。

这种层叠多个自联想网络的方法,最早被Hinton想到了。

从上面的描述中,可以看出,深度网络是分层训练的,包括最后一层的分类器也是单独训练的,最后一层分类器可以换成任何一种分类器,例如SVM,HMM等。上面的每一层单独训练使用的都是BP算法。 相信这一思路,Hinton早就实验过了。

2. DBN神经网络模型

使用BP算法单独训练每一层的时候,我们发现,必须丢掉网络的第三层,才能级联自联想神经网络。然而,有一种更好的神经网络模型,这就是受限玻尔兹曼机。使用层叠波尔兹曼机组成深度神经网络的方法,在深度学习里被称作深度信念网络DBN,这是目前非常流行的方法。下面的术语,将把自联想网络称作自编码网络autoencoder.。通过层叠自编码网络的深度网络在深度学习里另外一个属于叫栈式自编码网络。

经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.

                    
             DBN 在训练模型的过程中主要分为两步:
             第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;
             第 2 步:在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.

上述训练模型中第一步在深度学习的术语叫做预训练,第二步叫做微调。最上面有监督学习的那一层,根据具体的应用领域可以换成任何分类器模型,而不必是BP网络。

3. 深度信念网络的应用

由于自编码网络可以对原始数据在不同概念的粒度上进行抽象,深度网络一种自然的应用是对数据进行压缩或者叫降维。

胡邵华等,他们用一种自编码网络实现了对经典的"瑞士卷"数据的重构:

" 瑞士卷"数据是经典的机器学习中难于分类的数据之一,其隐含的数据内在模式难以在二维数据中描述。然而, 胡邵华等,采用深度信念网络实现了对三维瑞士卷数据的2维表示,其自编码网络节点大小依次为3-100-50-25-10-2. 具体的实现细节请参考文献:胡邵华、宋耀良:基于autoencoder网络的数据降维与重构。

深度神经网络的另一个常见的应用是特征提取。

文献:Philippe Hamel and Douglas Eck, LEARNING FEATURES FROM MUSIC AUDIO WITH DEEP BELIEF NETWORKS.

通过训练一个5层的深度网络提取音乐的特征,用于音乐风格的分类,其分类精度比基于梅尔倒谱系数特征分类的方法提到了14个百分点。

他们的实现思路非常简单,用上述层叠的多个RBM网络组成深度网络结构来提取音乐的特征。输入的原始数据是经过分帧,加窗之后的信号的频谱。分类器采用的是支撑矢量机SVM。对比的方法则是提取MFCC特征系数,分类器同样采用SVM。更多的细节和实验结果可以参考上面提到的文献。

深度网络是一种良好的无监督学习方法,其特征提取功能能够针对不同概念的粒度大小,能够在很多领域得到广泛的应用。通常,DBN主要用于对一维数据的建模比较有效,例如语音。而通过级联多层卷积网络组成深度网络的模型主要用于二维数据,例如图像等。

今后,本人将会更多的关注其具体应用领域的具体算法细节的工程化实现。

深度置信网络简要介绍相关推荐

  1. 深度学习 --- 基于RBM的深度置信网络DBN-DNN详解

    上一节我们详细的讲解了受限玻尔兹曼机RBM的原理,详细阐述了该网络的快速学习原理以及算法过程,不懂受限玻尔兹曼机的建议先好好理解上一节的内容,本节主要讲解的是使用RBM组成深层神经网络的深度置信网络D ...

  2. 受限玻尔兹曼机和深度置信网络

    从玻尔兹曼机到深度置信网络 本文仍处于草稿阶段,请慎重观看 引言 受限玻尔兹曼机(Restricted Boltzmann Machines, RBM)最初是在1986年由Paul Smolensky ...

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

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

  4. 回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测

    回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBN-BP深度置信网络结合BP神经网络多输入单输出回归预测 预测效果 ...

  5. 回归预测 | MATLAB实现DBN多层深度置信网络多输入单输出回归预测

    回归预测 | MATLAB实现DBN多层深度置信网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBN多层深度置信网络多输入单输出回归预测 预测效果 基本介绍 模型描述 程序设计 参考资 ...

  6. 回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测

    回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测 预 ...

  7. 基于深度学习的安卓恶意应用检测----------android manfest.xml + run time opcode, use 深度置信网络(DBN)...

    基于深度学习的安卓恶意应用检测 from:http://www.xml-data.org/JSJYY/2017-6-1650.htm 苏志达, 祝跃飞, 刘龙     摘要: 针对传统安卓恶意程序检测 ...

  8. Python 3深度置信网络(DBN)在Tensorflow中的实现MNIST手写数字识别

    任何程序错误,以及技术疑问或需要解答的,请扫码添加作者VX:1755337994 使用DBN识别手写体 传统的多层感知机或者神经网络的一个问题: 反向传播可能总是导致局部最小值. 当误差表面(erro ...

  9. 深度学习DBN深度置信网络

    之前的文章有些地方不太完善,故补充完善一下. 2017-4-10. 深度信念网络,DBN,Deep Belief Nets,神经网络的一种.既可以用于非监督学习,类似于一个自编码机:也可以用于监督学习 ...

  10. 【DBN分类】基于matlab深度置信网络DBN变压器故障诊断【含Matlab源码 2284期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[DBN分类]基于matlab深度置信网络DBN变压器故障诊断[含Matlab源码 2284期] 获取代码方式2: 付费专栏Matlab智 ...

最新文章

  1. java url map_java url转map ,map转string
  2. linux sh脚本 while,Linux shell脚本使用while循环执行ssh的注意事项
  3. mysql中文乱码解决_Stata 中文乱码顽疾解决方法
  4. 原生ajax的post方法,原生js实现ajax及get post方法
  5. 学习Java必须避开的十大致命雷区,新手入门千万不要踩!
  6. 为什么人们常说“十个创业九个死”?
  7. 超详细的免费下载论文方法
  8. 用MATLAB求一阶微分方程(组)数值解
  9. 一篇就明白什么是H3C?
  10. 【Java攻城狮宝典】04-for循环(答案)
  11. 这又是一则招聘贴——招聘区块链系统开发的同学
  12. Win2000XP服务与后门技术
  13. jitpack.io 无法访问或下载依赖库
  14. 平安城市,天网工程,雪亮工程这三者的区别
  15. catia相合约束怎么反向_男人想离婚了,出现这4大征兆,女人要怎么办
  16. 用于解决listview嵌套GridView时显示不全的问题。
  17. CSS中获取显示器的宽度
  18. 计算机与化学相关论文,关于化学与计算机论文相关频道推荐
  19. 百度搜索引擎中的快照及快照更新机制
  20. 百度云服务器BCC安装ubuntu16.04 +python3.6配置uWSGI和Nginx 部署Django项目

热门文章

  1. Android增量更新
  2. Matlab 自定义imagesc彩色渲染
  3. CodeBlocks下载与安装教程
  4. HTML 日期格式转换
  5. java数组排序方法
  6. Java性能优化的35种方法
  7. java 导出Excel 转图片地址为图片
  8. 基于JSP实现的作业管理系统
  9. rtmp服务器开源项目,rtmp直播相关的开源项目
  10. Python爬取12306车次信息