机器学习——DBN深度信念网络详解(转)

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

简要描述深度神经网络模型。

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

通过下面的图以及上面的内容,可以更加深入的理解DBN:深度信念网络算法。

参考文献:
[1]Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks. Science, vol. 313, pp. 504-507, 2006.
[2]Hinton G E, Osindero S, Teh Y W. A fast learning algorithm for deep belief nets. Neural computation, vol. 18, pp. 1527-1554, 2006.
[3]Xie, Jipeng, et al. "Learning features from High Speed Train vibration signals with Deep Belief Networks." Neural Networks (IJCNN), 2014 International Joint Conference on. IEEE, 2014.
[4]Bengio Y, Lamblin P, Popovici D, et al. Greedy layer-wise training of deep networks. Advances in neural information processing systems, vol. 19, pp. 153-160, 2007.
[5]Salakhutdinov R. Learning deep generative models. Diss. University of Toronto, 2009.
[6]Hinton G. A practical guide to training restricted Boltzmann machines. Neural Networks: Tricks of the Trade, pp. 599-619, 2012.
[7]Bengio Y. Learning deep architectures for AI. Foundations and trends? in Machine Learning, vol. 2, pp. 1-127, 2009.

[8]http://blog.csdn.net/celerychen2009/article/details/9079715

时间: 2024-10-09 16:35:16

机器学习——DBN深度信念网络详解(转)的相关文章

深度信念网络

深度信念网络 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出.它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据.我们不仅可以使用 DBN 识别特征.分类数据,还可以用它来生成数据.下面的图片展示的是用 DBN 识别手写数字: 图 1 用深度信念网络识别手写数字.图中右下角是待识别数字的黑白位图,它的上方有三层隐性神经元.每一个黑色矩形代表一层神经元,白点代表处于开启状态的神经元,黑色代表处

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3 http://blog.csdn.net/sunbow0 第二章Deep Belief Network (深度信念网络) 3实例 3.1 測试数据 依照上例数据,或者新建图片识别数据. 3.2 DBN实例 //****************例2(读取固定样本:来源于经典优化算法測试函数Sphere Model)***********// //2 读取样本数据 Logge

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2 http://blog.csdn.net/sunbow0 第二章Deep Belief Network (深度信念网络) 2基础及源代码解析 2.1 Deep Belief Network深度信念网络基础知识 1)综合基础知识參照: http://tieba.baidu.com/p/2895759455   http://wenku.baidu.com/link?url=

Java网络详解

Java网络详解 Java网络基本概念 网络基础知识 1.计算机网络形式多样,内容繁杂.网络上的计算机要互相通信,必须遵循一定的协议.目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议 2.网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上

Docker网络详解

Docker网络详解 转载请注明来自:http://blog.csdn.net/wsscy2004 网络基础 Docker使用linux桥接,在主机虚拟一个docker0网络接口,在主机中运行命令查看: # List host bridges $ sudo brctl showbridge name bridge id STP enabled interfacesdocker0 8000.000000000000 no # Show docker0 IP address $ sudo ifcon

WebGL/Three.js深度学习课程详解

课程介绍:适用于对WebGL.Three.js等3D技术感兴趣,却不知道如何入门的同学, 课程带领大家深入理解WebGL的原理. 课程目录:├─01-基础部分│      01-WebGL与three.js的基础.与opengl的关系.mp4│      02-编写第一个three.js程序.mp4│      03-three.js程序框架,绘制一条直线.mp4│      04-三维世界的组成(点.线).mp4│      05-坐标系的秘密(世界坐标.本地坐标).mp4│      06-

深度学习原理详解及Python代码实现

深度学习框架如Tensorflow和Pytorch等为用户提供了可供调用的API,但也隐藏了深度学习底层的实现细节. 为方便大家更加深入地理解深度学习原理并了解其底层实现方法,特此推出了<课程深度学习原理详解及Python代码实现>.期望能"掀起你的盖头来,让我看看你的模样",为深度学习进一步的优化和创新打下根基. 课程链接:https://edu.51cto.com/course/21426.html 本课程详细讲解深度学习原理并进行Python代码实现.课程内容涵盖感知

深度信念网络DBN

以下内容翻译自A fast learning algorithm for deep belief nets by Geoffrey E. HintonandSimon Osindero 一些符号: W.T:W的转置 1 Introduction 学习一个有向新年网络面临的问题: 1.难以所有层在推断隐藏状态条件下的后验分布 2.局部极值和梯度弥散 3.学习过程慢(因为要一次性学习所有参数) 模型:最上两个隐藏层两层形成一个联想存储器(associative memory),其他的隐藏层形成了一个

八.DBN深度置信网络

BP神经网络是1968年由Rumelhart和Mcclelland为首的科学家提出的概念,是一种按照误差反向传播算法进行训练的多层前馈神经网络,是目前应用比较广泛的一种神经网络结构.BP网络神经网络由输入层.隐藏层和输出层三部分构成,无论隐藏层是一层还是多层,只要是按照误差反向传播算法构建起来的网络(不需要进行预训练,随机初始化后直接进行反向传播),都称为BP神经网络.BP神经网络在单隐层的时候,效率较高,当堆积到多层隐藏层的时候,反向传播的效率就会大大降低,因此BP神经网络在浅层神经网路中应用