深度学习综述

深度学习综述

1.深度学习

深度学习是为了能够得到有助于理解图片、声音、文本等的数据所表述的意义而进行的多层次的表示和抽取的学习。例如,给定一张图片(包含许多黄色的郁金香), 大脑做出的反应是:“许多黄色的郁金香。”同样的图片,输入到计算
机中,是描述图片的最原始数据,那就是用向量表示的像素. 用简单的机器学习,例如用含2个或3个隐含层的神经网络,是不可能达到与人类类似的判别决策的。这就需要多层的学习器,逐层学习并把学习到的知识传递给下一层,以便下层能够得到更高级别的表述形式,期望可以得到与人类类似的结论。

1.1.   学习的深度

    根据学习的深度,机器学习可以分为浅度学习和深度学习。对于简单的计算, 浅度学习可以有效地进行计算,例如二进制数据的逻辑运算。显然,如果想让机器达到人脑的反应效果,浅度学习是远远不够的,必须要进行深度的机器学习,才有可能得到与人脑反应近似的结果。实际上,深度的机器学习正是模拟了人脑的工作方式。比如刚才图片,先由视网膜接受数据信号,视网膜通过神经链接, 把看到的图片转化成脑波信号传输到大脑中,由于大脑的不同部位处理不同的问题,信号不可能一下子就传到相应位置,需要层层传输。同时,在信号传输过程中,大脑会提取不同的信息,例如,花的颜色、形状、个数、位置、个体差异等等。因此,深度的机器学习模型需要具备类似的特征,也即,深度的机器学习模型可以提取观察对象的不同方面的特征。因此,深度的机器学习模型通常为分层结构,每一层提取数据的1个或多个不同方面的特征,并把提取出的特征作为下一层的输入。

1.  2 .  深度学习的动机

从早期的神经网络的学习,到现在的深度学习,究其机制,都是从大脑的构架并辅以一定的学习算法,从而使计算机的工作方式尽可能地接近人类的工作方式。机器学习从仅有2层左右的学习架构,要向有多层的结构发展,不仅有生物神经元的启示,也是对现有的机器学习结构的弊端的改进。

1.大脑有一个深度架构。首先,人类大脑的神经元系统是一个庞大的结构,由无数个神经元共同组成,完成一定的生理功能。例如,从视网膜到处理视网膜的大脑区域,需要经过无数层的神经元层层传递视觉信息,最终到达大脑的视觉处理区域,然后再经过信息处理,把信息反馈到肌肉神经,或语言区域。这个过程在生物神经元系统只不过是瞬间的事情,但是,完成这个过程,是由已经训练好的神经系统完成的,神经系统对整个过程的处理,与从出生到成人的认知过程是分不开的。而这一切,要用电脑来完成,不是构造简单的人工神经元就能够完成的,需要大规模的神经元组织和链接,并经过来自于外界信息的不断强化和训练。故从结构上,神经网络结构要加深。

2.深度机器学习是数据分布式表示的必然结果。分布式表示不仅可以很好地描述概念间的相似性,而且合适的分布式表示在有限的数据下能体现出更好的泛化性能。人类的认知活动包括理解和处理接受到的信息,这些信息的结构通常很复杂,因此,有必要构造深度结构的学习机器去实现一些人类的认知活动。由于其自身的复杂性,深度学习算法很多年都没有新的进展。就监督的多层神经网络来说,无论是测试精度还是训练精度,深度学习的结果远远不如有1个或2个隐含层的神经网络的结果. 直到2006年,Hinton等人提出了贪婪无监督逐层学习算法,深度学习的问题才有所突破。

1.  3.  深度神经网络的分类

     1. 前馈深度网络( feed-forward deep networks,FFDN) ,由多个编码器层叠加而成,如多层感知机( multi-layer perceptrons,MLP) ,卷积神经网(convolutional neural networks,CNN)等。

     2. 反 馈 深 度 网 络 ( feed-back deep networks,FBDN) ,由多个解码器层叠加而成,如反卷积网络( deconvolutional networks,DN) ,层次稀疏编码网络( hierarchical sparse coding,HSC)等。

     3. 双向深度网络( bi-directional deep networks,BDDN) ,通过叠加多个编码器层和解码器层构成( 每层可能是单独的编码过程或解码过程,也可能既包含编码过程也包含解码过程),如深度玻尔兹曼机(deep Boltzmann machines,DBM),深度信念网络( deep belief networks,DBN),栈式自编码器( stackedauto-encoders,SAE)等。

如图:

                  图1.深度神经网络的分类

 

2.神经网络

1. 前馈深度网络

1.1 .卷积神经网络

在无监督预训练出现之前,训练深度神经网络通常非常困难,而其中一个特例是卷积神经网络。卷积神经网络受视觉系统的结构启发而产生。第一个卷积神经网络计算模型是在Fukushima的神经认知机中提出的,基于神经元之间的局部连接和分层组织图像转换,将有相同参数的神经元应用于前一层神经网络的不同位置,得到一种平移不变神经网络结构形式。后来,LeCun 等人在该思想的基础上,用误差梯度设计并训练卷积神经网络,在一些模式识别任务上得到优越的性能。至今,基于卷积神经网络的模式识别系统是最好的实现系统之一,尤其在手写体字符识别任务上表现出非凡的性能。LeCun 的卷积神经网络由卷积层和子抽样层两种类型的神经网络层组成。每一层有一个拓扑图结构,即在接收域内,每个神经元与输入图像中某个位置对应的固定二维位置编码信息关联。在每层的各个位置分布着许多不同的神经元,每个神经元有一组输入权值,这些权值与前一层神经网络矩形块中的神经元关联;同一组权值和不同输入矩形块与不同位置的神经元关联。卷积神经网络是多层的感知器神经网络,每层由多个二维平面块组成,每个平面块由多个独立神经元组成。为了使网络对平移、旋转、比例缩放以及其他形式的变换具有不变性,对网络的结构进行一些约束限制:
     a)特征提取[1]。每一个神经元从上一层的局部感知野得到输入,迫使其提取局部特征(局部感知野)。
     b)特征映射[1]。网络的每一个卷积层和池化层由多个特征映射组成,每个特征映射都以二维平面的形式存在,平面中的神经元在约束下共享相同的权值集(权重共享)。
    c)子抽样(池化层或下采样层)[1]。该计算层跟随在卷积层后,实现局部求和或最大化,使特征映射的输出对平移等变换的敏感度下降。如图:


图2:简单卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的几个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。

   

卷积神经网络本质上实现一种输入到输出的映射关系,能够学习大量输入与输出之间的映射关系,不需要任何输入和输出之间的精确数学表达式,只要用已知的模式对卷积神经网络加以训练,就可以使网络具有输入输出之间的映射能力。卷积神经网络执行的是有监督训练,在开始训练前,用一些不同的小随机数对网络的所有权值进行初始化。

    卷积神经网络的训练分为两个阶段:
a)向前传播阶段。从样本集中抽取一个样本 , 将X 输入给网络,信息从输入层经过逐级变换传送到输出层,计算相应的实际输出:

b)向后传播阶段,也称为误差传播阶段。计算实际输出与理想输出的差异:

                   

并按最小化误差的方法调整权值矩阵。

卷积神经网络的特征检测层通过训练数据来进行学习,避免了显式的特征提取,而是隐式地从训练数据中学习特征,而且同一特征映射面上的神经元权值相同,网络可以并行学习,这也是卷积神经网络相对于其他神经网络的一个优势。权值共享降低了网络的复杂性,特别是多维向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

2. 反馈深度网络

3. 双向深度网络

3.1.深度置信网络

深度信念网络 (Deep BeliefNetwork, DBN) 由 Geoffrey Hinton 在 2006 年提出。它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据。我们不仅可以使用 DBN 识别特征、分类数据,还可以用它来生成数据。它由许多结构单元组成,而典型的DBN的组成单元由受限的波尔兹曼机(RBM)组成。下面先介绍RBM:

3.2.1.受限的波尔兹曼机

RBM是一种神经感知器,由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接,层间的神经元不存在连接。如下图:


图3.表示RBM的结构

 

在RBM中,任意两个相连的神经元之间有一个权值w表示连接强度,每个神经元都有一个偏置系数:b(显层神经元),c(隐层神经元)来表示自身权重。

这样,我们可以用下面的函数来表示RBM的能量:

 

在一个RBM中,隐层神经元被激活的概率:

  

由于是双向连接的,显层神经元同样能被隐层神经元激活:

其中,为Sigmoid函数;

应注意到同一层神经元之间不连接,具有独立性,所以概率密度亦然满足独立性,故得到下式:

         

从这几个公式中,可以得知,当计算神经元被开启的概率时,可以同时计算,同层神经元之间互不影响,以上即为受限玻尔兹曼机(RBM)的基本构造。

下面来看看RBM的工作原理:

当一条数据(如向量x)赋给显层后,RBM根据(2)式计算出每个隐层神经元被开启的概率, 取一个0-1的随机数μ作为阈值,大于该阈值的神经元则被激活,否则不被激活,即:

 ,1

否则,,0

因此,当给定隐层时,计算显层也是一样。

RBM的训练数据过程:RBM共有5个参数:h,v,b,c,w,其中,w,b,c是相应的权重和偏置,是经过学习得来的。对于一条样本数据,采用对比散度算法对其进行训练[2]:

将数据X赋给显层,利用(2)式计算出隐层中每个神经元被激活的概率;

从计算的概率分布中采取Gibbs抽样抽取一个样本:∼;

用重构显层,即通过隐层反推显层,利用(3)式计算显层中每个神经元被激活的概率;

同样地,从计算得到的概率分布中采取Gibbs抽样抽取一个样本:∼;

通过再次计算隐层中每个神经元被激活的概率,采样得到P(|);

更新权重:

   

 

                  

若干次训练后,隐层不仅能较为精准地显示显层的特征,同时还能够还原显层。当隐层神经元数量小于显层时,则会产生一种“数据压缩”的效果。

3.2.2.深度置信网络

有了前面RBM的基础,很容易理解DBN,DBN是有多个RBM堆叠在一起形成的,前一个RBM的输出作为后一个RBM的输入,如图[2]:


                    

                       图4.简单的DBN

 

它既可以被看作一个生成模型,也可以当作判别模型,其训练过程是:使用非监督贪心算法去逐层预训练获得权值[2]。

训练过程:

1. 首先充分训练第一个 RBM; 

2. 固定第一个 RBM 的权重和偏移量,然后使用其隐性神经元的状态,作为第二个 RBM 的输入向量; 

3. 充分训练第二个 RBM 后,将第二个 RBM 堆叠在第一个 RBM 的上方; 

4. 重复以上三个步骤任意多次; 

调优过程 (Fine-Tuning)[2] :

生成模型使用 Contrastive Wake-Sleep 算法(上下算法)进行调优,其算法过程是: 

1. 除了顶层 RBM,其他层 RBM 的权重被分成向上的认知权重和向下的生成权重;

2.Wake 阶段:认知过程,通过外界的特征和向上的权重 (认知权重) 产生每一层的抽象表示 (结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。也就是“如果现实跟我想象的不一样,改变我的权重使得我想象的东西就是这样的(现实)”。 

3.Sleep 阶段:生成过程,通过顶层表示 (醒时学得的概念) 和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概念”。 

DBN与传统神经网络的区别:DBN 是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。

3.深度学习的应用

深度学习目前在很多领域都优于过去的方法,下面根据所处理数据类型的不同, 对深度学习的应用进行介绍:

3.1深度学习在语音识别、合成及机器翻译中的应用

微软研究人员使用深度信念网络对数以千计的senones(一种比音素小很多的建模单元) 直接建模,提出了第 1 个成功应用于大词汇量语音识别系统的上下文相关的深层神经网络———隐马尔可夫混合模型( CD-DNN-HMM),比之前最领先的基于常规 CDGMM-HMM 的大词汇量语音识别系统相对误差率减少16% 以上。
    随后又在含300h有语音训练数据Switchboard 标准数据集上对 CD-DNN-HMM 模型进行评测。基准测试字词错误率为18. 5% ,与之前最领先的常规系统相比,相对错误率减少了33% 。
    H.Zen 等提出一种基于多层感知机的语音合成模型。该模型先将输入文本转换为一个输入特征序列,输入特征序列的每帧分别经过多层感知机映射到各自的输出特征,然后采用算法,生成语音参数,最后经过声纹合成生成语音。训练数据包含由一名女性专业演讲者以美国英语录制的3. 3万段语音素材,其合成结果的主观评价和客观评价均优于基于 HMM 方法的模型。
    K.Cho 等提 出 一 种基于循环神经网络( recurrent neural network, RNN) 的向量化定长表示模型( RNNenc模型) ,应用于机器翻译。该模型包含2个RNN, 一个RNN用于将一组源语言符号序列编码为一组固定长度的向量,另一个RNN 将该向量解码为一组目标语言的符号序列。
    在该模型的基础上,D.Bahdanau 等,提出了RNNsearch 的模型。该模型在翻译每个单词时,根据该单词在源文本中最相关信息的位置以及已翻译出的其他单词,预测对应于该单词的目标单词。该模型包含一个双向RNN 作为编码器,以及一个用于单词翻译的解码器。在进行目标单词位置预测时,使用一个多层感知机模型进行位置对齐。采用 BLEU 评价指标,RNNsearch 模型在ACL2014 机器翻译研讨会( ACL WMT 2014) 提供的英 /法双语并行语料库上的翻译结果评分均高于RNNenc 模型的评分,略低于传统的基于短语的翻译系统 Moses。另外,在剔除包含未知词汇语句的测试预料库上,RNNsearch 的评分甚至超过了Moses[3]。

3.2深度学习在图像分类及识别中的应用

3.2.1.ImageNet 图像分类

深度学习在物体识别中最重要的进展体现在ImageNetILSVRC 挑战中的图像分类任务。传统计算机视觉方法在这个测试集上最低的top5 错误率是26.172%。2012 年Hinton的研究小组利用卷积网络在这个测试集上把错误率大幅降到15.315%。这个网络的结构被称作Alex Net。与传统的卷积网络相比,它有三点比较重要的不同。首先是采用了dropout的训练策略,在训练过程中将一些输入层和中间层的神经元随机置零。这模拟了由于噪音和对输入数据的各种干扰,从而使一些神经元对一些视觉模式产生漏检的情况。Dropout使训练过程收敛更慢,但得到的网络模型更加鲁棒。其次,它采用整流线型单元作为非线性的激发函数。这不仅大大降低了计算的复杂度,而且使神经元的输出具有稀疏的性质。稀疏的特征表示对各种干扰更加鲁棒。第三,它通过对训练样本镜像映射,和加入随机平移扰动产生了更多的训练样本,以减少过拟合。

ImageNet ILSVRC2013 比赛中,排名前20 的小组使用的都是深度学习,其影响力可见一斑。获胜者是来则纽约大学Rob Fergus 的研究小组,所采用的深度模型还是卷积网络,对网络结构作了进一步优化。Top5 错误率降到11.197%,其模型称作Clarifai。

2014 年深度学习又取得了重要进展,在ILSVRC2014 比赛中,获胜者GooLeNet将top5 错误率降到6.656%。它突出的特点是大大增加了卷积网络的深度,超过20 层,这在之前是不可想象的。很深的网络结构给预测误差的反向传播带了困难。因为预测误差是从最顶层传到底层的,传到底层的误差很小,难以驱动底层参数的更新。GooLeNet 采取的策略是将监督信号直接加到多个中间层,这意味着中间和低层的特征表示也需要能够准确对训练数据分类。如何有效地训练很深的网络模型仍是未来研究的一个重要课题。虽然深度学习在ImageNet上取得了巨大成功,但是一个现实的问题是,很多应用的训练集是较小的,如何在这种情况下应用深度学习呢?[3]

3.2.2.人脸识别

深度学习在物体识别上了另一个重要突破是人脸识别。人脸识别的最大挑战是如何区分由于光线、姿态和表情等因素引起的类内变化和由于身份不同产生的类间变化。这两种变化分布是非线性的且极为复杂,传统的线性模型无法将它们有效区分开。深度学习的目的是通过多层的非线性变换得到新的特征表示。该特征须要尽可 能多地去掉类内变化,而保留类间变化。

人脸识别有两种任务,人脸确认和人脸辨识。人脸确认的任务是判断两张人脸照片是否属于同一个人,属二分类问题,随机猜的正确率是50%。人脸辨识的任务是 将一张人脸图像分为N 个类别之一,类别是由人脸的身份定义的。这是个多分类问题,更具挑战性,其难度随着类别数的增多而增大,随机猜的正确率是1/N。两个任务都可以用来通过 深度模型学习人脸的特征表达。

2013 年,[21]采用人脸确认任务作为监督信号,利用卷积网络学习人脸特征,在LFW 上取得了92.52%的识别率。这一结果虽然与后续的深度学习方法相比较低,但也超过了大多数非深度学习的算法。由于人脸确认是一个二分类的问题,用它学习人脸特征效率比较低。这个问题可以从几个方面理解。深度学习面临的一个主要问题是过拟合。作为一个二分类问题,人脸确认任务相对简单,容易在训练集上发 生过拟合。与之不同,人脸辨识是一个更具挑战性的多分类问题,不容易发生过拟合,更适合通过深度模型学习人脸特征。另一方面,在人脸确认中,每一对训练样本被人工标注成两类之一,所含信息量较 少。而在人脸辨识中,每个训练样本都被人工标注成N 类之一,信息量要大的多。

2014 年CVPR,DeepID和DeepFace都采用人脸辨识作为监督信号,在LFW 上取得了97.45%和97.35%的识别率。他们利用卷积网络预测N 维标注向量,将最高的隐含层作为人脸特征。这一层在训练过程中要区分大量的人脸类别(例如在DeepID 中要区分1000类人脸),因此包含了丰富的类间变化的信息,而且有很强的泛化能力。虽然训练中采用的是人脸辨识任务,得到特征可以应用到人脸确认任务,以及识别训练集中没有新人。 
    例如LFW 上用于测试的任务是人脸确认任务,不同于训练中采用的人脸辨识任务;DeepID和DeepFace的训练集与LFW测试集的人物身份是不重合的。

通过人脸辨识任务学习得到的人脸特征包含了较多的类内变化。DeepID2联合使用人脸确认和人脸辨识作为监督信号,得到的人脸特征在保持类间变 化的同时最小化类内变化,从而将LFW 上的人脸识别率提高到99.15%。利用Titan GPU,DeepID2 提取一幅人脸图像的特征只需要35 毫秒,而且可以离线进行。经过PCA 压缩最终得到80 维的特征向量,可以用于快速人脸在线比对。在后续的工作中,DeepID2+对DeepID2 通过加大网络结构,增加训练数据,以及在每一层都加入监督信息进行了进一步改进,在LFW 达到了99.47%的识别率[3]。

3.3深度学习用于视频分析

深度学习在视频分类上的应用总体而言还处于起步阶段,未来还有很多工作要做。描述视频的静态图像特征,可以采用用从ImageNet 上学习得到的深度模型;难点是如何描述动态特征。以往的视觉方法中,对动态特征的描述往往依赖于光流估计,对关键点的跟踪,和动态纹理。如何将这些信息体现在深度模型中是个难点。最直接的做法是将视频视为三维图像,直接应用卷积网络,在每一层学习三维滤波器。但是这一思路显然没有考虑到时间维和空间维的差异性。另外一种简单但更加有效的思路是通过预处理计算光流场,作为卷积网络的一个输入通道。也有研究工作利用深度编码器(deep autoencoder)以非线性的方式提取动态纹理,而传统的方法大多采用线性动态系统建模。在一些最新的研究工作中,长短记忆网络(LSTM)正在受到广泛关注,它可以捕捉长期依赖性,对视频中复杂的动态建模[3]。

4.深度学习的问题及趋势

深度学习算法在计算机视觉( 图像识别、视频识别等) 和语音识别中的应用, 尤其是大规模数据集下的应用取得突破性的进展,但仍有以下问题值得进一步研究:
1) 无标记数据的特征学习。 目前,标记数据的特征学习仍然占据主导地位, 而真实世界存在着海量的无标记数据,将这些无标记数据逐一添加人工标签,显然是不现实的。所以,随着数据集和存储技术的发展,必将越来越重视对无标记数据的特征学习,以及将无标记数据进行自动添加标签技术的研究。
2) 模型规模与训练速度、训练精度之间的权
衡。一般地,相同数据集下,模型规模越大,训练精度越高,训练速度会越慢. 例如一些模型方法采用ReLU 非线性变换、GPU 运算, 在保证精度的前提下,往往需要训练很久。虽然离线训练并不影响训练之后模型的应用,但是对于模型优化,诸如模型规模调整、超参数设置、训练时调试等问题,训练时间会严重影响其效率。故而,如何在保证一定的训练精度的前提下,提高训练速度,依然是深度学习方向研究的课题之一。
3) 与其他方法的融合。从上述应用实例中可发现,单一的深度学习方法,往往并不能带来最好的效果,通常融合其他方法或多种方法进行平均打分,会带来更高的精确率。因此,深度学习方法与其他方法的融合,具有一定的研究意义。

参考文献:

[1]   Jake Bouvrie.Notes on Convolutional NeuralNetworks,

[2]  GeoffreyE. Hinton and Simon Osindero. A Fast Learning Algorithm for Deep Belief Nets.

[3]  Maxiao1204深度学习在图像分类中的应用.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值