文档章节

从自联想神经网络到深度神经网络

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:46
字数 1872
阅读 7
收藏 0

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


第六篇,简要描述深度神经网络模型。



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主要用于对一维数据的建模比较有效,例如语音。而通过级联多层卷积网络组成深度网络的模型主要用于二维数据,例如图像等。


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

      






本文转载自:http://www.cnblogs.com/celerychen/archive/2013/06/12/3588194.html

共有 人打赏支持
abcijkxyz
粉丝 63
博文 6196
码字总数 1876
作品 0
深圳
项目经理
私信 提问
【工具使用系列】关于 MATLAB 反馈神经网络,你需要知道的事

如何使用反馈神经网络 MATLAB 实现 Hopfield 神经网络的设计 Elman 神经网络的创建与仿真 Elman 神经网络的训练 应用实例 二神经元 Hopfield网络的设计 Hopfield 网络中的伪平衡点 三神经元 ...

AllenMoore
01/29
0
0
机器学习系列-word2vec篇

开篇 深度学习方向当下如火如荼,就差跑进楼下大妈的聊天内容了。深度学习的宝藏很多,一个小领域的一段小代码,都可以发出璀璨的光芒。如果你也刚刚踏入这方向,一开始难免有一些彷徨,但慢...

Datartisan数据工匠
2016/11/17
0
0
无处不在的人工神经网络:机器人拥有意识的关键

“机器人是否具有意识”这个问题一直是人们所争论的焦点之一,而在这其中,人工神经网络担当着不小的责任。 机器人、语音识别、人脸识别、自动驾驶……随着科技的发展,我们的身边正被人工智...

行者武松
03/01
0
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0
一些深度学习在股票交易应用的遐想

虽然金融领域是计算密集程度很高的一个领域,但是我们也有很多的监督模型和非监督模型在这个领域应用。但是由于金融领域的复杂性以及数据的非线性,使得很多的模型都会过度拟合,因为各个数据...

chen_h
02/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql 时间格式化

DATE_FORMAT

1713716445
11分钟前
0
0
聊聊flink的PartitionableListState

序 本文主要研究一下flink的PartitionableListState PartitionableListState flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/DefaultOperatorStateBackend.java /*......

go4it
16分钟前
0
0
Micropython教程之TPYBoard开发板制作电子时钟(萝卜学科编程教育)

1.实验目的 1. 学习在PC机系统中扩展简单I/O?接口的方法。 2. 什么是SPI接口。 3. 学习TPYBoard I2C接口的用法。 4. 学习LCD5110接线方法。 5. 设定时钟并将当前时间显示在LCD5110上。 2.所需...

bodasisiter
16分钟前
0
0
js 闭包

闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是 ECMAScript 规范给的定义,如果没有实战经验,很难从定义去理解它。因此,本文不会对闭包的概念...

MrBoyce
21分钟前
0
0
Java B2B2C o2o多用户商城 springcloud架-企业云架构common-service代码结构分析

当前的分布式微服务云架构平台使用Maven构建,所以common-service的通用服务按照maven构建独立的系统服务,结构如下: particle-commonservice: spring cloud 系统服务根项目,所有服务项目...

itcloud
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部