当前位置:文档之家› “深度学习“学习笔记

“深度学习“学习笔记

摘要:人工智能的飞跃发展得益于深度学习理论的突破以及移动互联网创造的大数据。

本文梳理了人工智能、机器学习、深度学习的概念以及发展历程;介绍了深度学习基本理论、训练方法、常用模型、应用领域。

关键词:机器学习、人工神经网路、深度学习、语音识别、计算机视觉1.概述2017年5月27日,围棋世界冠军柯洁与Google围棋人工智能AlphaGo的第三场对弈落下帷幕。

在这场人机大战中,世界围棋第一人0:3完败于围棋人工智能。

人工智能以气势如虹的姿态出现在我们人类的面前。

人工智能AI(Artificial Intelligence)从此前的学术研究领域全面进入大众视野。

整个业界普遍认为,它很可能带来下一次科技革命,并且,在未来可预见的10多年里,深刻得改变我们的生活。

、人工智能、机器学习、深度学习什么是人工智能人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科。

该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。

上世纪50年代人工智能的理念首次提出,科学家们不断在探索、研究,但是人工智能的发展就磕磕碰碰。

人工智能的发展经历了若干阶段,从早期的逻辑推理,到中期的专家系统,直到上世纪80年代机器学习诞生以后,人工智能研究终于找对了方向。

机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。

但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型对真实世界中的事件作出决策与预测的一种方法。

基于机器学习的图像识别和语音识别得到重大发展。

人工神经网络(Artificial Neural Networks)成为机器学习中的一个重要的算法,其中反向传播算法(Back Propagation)是最常用的ANN学习技术。

基于BP算法的人工神经网路,主要问题是训练困难、需要大量计算,而神经网络算法的运算需求难以得到满足。

进入90年代,神经网络的发展进入了一个瓶颈期。

其主要原因是尽管有BP算法的加速,神经网络的训练过程仍然很困难。

因此90年代后期支持向量机(SVM)算法取代了神经网络的地位。

【SVM是个分类器,通过“核函数”将低维的空间映射到高维的空间,将样本从原始空间映射到一个更高维的特质空间中,使得样本在这个新的高维空间中可以被线性划分为两类,再将分割的超凭你们映射回低维空间。

】2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。

这篇文章有两个主要观点:1、多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2、深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。

深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。

深度学习在语音识别和图像识别等领域获得了巨大的成功因此极有可能是真正实现人工智能梦想的关键技术。

人工智能、机器学习(Machine Learning)和深度学习(Deep Learning)之间的关系,如图1所示。

人工智能是机器学习的父类。

深度学习则是机器学习的子类。

图 1 人工智能、机器学习、深度学习关系2.人工神经网络人工神经网络(ANN)受到生物学的启发是生物神经网络的一种模拟和近似,它从结构、实现机理和功能上模拟生物神经网络。

从系统观点看,人工神经元网络是由大量神经元通过极其丰富和完善的连接而构成的自适应非线性动态系统。

图 2 单个神经元图 3人工神经网路、 BP算法BP (Back Propagation)神经网络,即误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。

输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。

当实际输出与期望输出不符时,进入误差的反向传播阶段。

误差通过输出层,按误差梯度下降【求取偏导数】的方式修正各层权值,向隐层、输入层逐层反传。

周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止、BP算法存在的问题(1)、收敛速度慢,梯度越来越稀疏【梯度扩散】:从顶层越往下,误差校正信号越来越小。

(2)、收敛到局部最小值,可能导致训练失败:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生)。

(3)、一般我们只能用有标签的数据来训练:但大部分的数据是没标签的,而大脑可以从没有标签的数据中学习。

在实际应用中,BP人工神经网路通常是只含有一个隐层的浅层模型。

浅层学习是机器学习的第一次浪潮。

3.深度学习(Deep Learning)3.1、基本思想深度学习是机器学习的第二次浪潮。

深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。

因此,“深度模型”是手段,“特征学习”是目的。

区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10层以上的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。

假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为:I =>S1=>S2=>… =>Sn => O,如果输出O等于输入I,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。

深度学习需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…, Sn。

通过这种方式,就可以实现对输入信息进行分级表达了。

图 4 浅层模型与深度学习模型深度学习模型采用了与神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接。

为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。

传统神经网络中,采用的是BP算法进行训练,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和期望输出之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。

而深度学习整体上是一个layer-wise的训练机制。

3.2、训练方法第一步:无监督学习,逐层构建单层神经元,逐层训练一个单层网络深度神经网络在训练上的难度,可以通过“逐层初始化”(Layer-wise Pre-training)来有效克服,文中给出了无监督的逐层初始化方法。

图 5 单层训练给定原始输入后,先要训练模型的第一层,即图中左侧的黑色框。

黑色框可以看作是一个编码器,将原始输入编码为第一层的初级特征,可以将编码器看作模型的一种“认知”。

为了验证这些特征确实是输入的一种抽象表示,且没有丢失太多信息,需要引入一个对应的解码器,即图中左侧的灰色框,可以看作模型的“生成”。

为了让认知和生成达成一致,就要求原始输入通过编码再解码,可以大致还原为原始输入。

因此将原始输入与其编码再解码之后的误差定义为代价函数,同时训练编码器和解码器。

Wake-Sleep算法:(1)、Wake阶段【Input->Code->Reconstruction, 调整Decoder权重】认知过程,自上而下,通过下层的输入特征(Input)和向上的认知(Encoder)权重产生每一层的抽象表示(Code),再通过当前的生成(Decoder)权重产生一个重建信息(Reconstruction),计算输入特征和重建信息残差,使用梯度下降修改层间的下行生成(Decoder)权重。

也就是“如果现实(Code)跟我想象(Reconstruction)的不一样,改变我的生成权重(Decoder权重在Wake阶段调整)使得我想象(Code),的东西变得接近现实”。

(2)、Sleep阶段【Code->Reconstruction->Code’, 调整Encoder权重】生成过程,自下而上,通过上层概念(Wake阶段产生的Code)和向下的生成权重(Decoder权重在Wake阶段调整),生成下层的状态(Sleep阶段产生的Input),再利用认知(Encoder)权重产生一个抽象景象(Sleep阶段产生的Code’)。

利用初始上层概念(Wake阶段产生的Code)和新建抽象景象(Sleep阶段产生的Code)的残差,利用梯度下降修改层间向上的认知权重(Encoder权重在Sleep阶段调整)。

也就是“如果梦中的景象(Sleep阶段产生的Code’)不是我脑中的相应概念(Wake阶段产生的Code),改变我的认知权重使(Encoder权重在Sleep阶段调整)得这种景象在我看来接近这个概念”。

【多次训练重复Wake-Sleep算法,不断调整Encode和Decode的权重,最终使得让认知和生成达成一致Input = Reconstruction。

】图 5 逐层初始化 (即特征学习Feature Learning过程) Wake:自下而上– Encoder –RecognitionSleep: 自上而下– Decoder –Generative图 6 逐层初始化的方法(双向神经网络)第二步:自顶向下的有监督学习训练收敛后,编码器就是我们要的第一层模型,而解码器则不再需要了。

这时我们得到了原始数据的第一层抽象。

固定第一层模型,原始输入就映射成第一层抽象,将其当作输入,如法炮制,可以继续训练出第二层模型,再根据前两层模型训练出第三层模型,以此类推,直至训练出最高层模型。

由于深层模型具有很多局部最优解,模型初始化的位置将很大程度上决定最终模型的质量。

“逐层初始化”的步骤就是让模型处于一个较为接近全局最优的位置,从而获得更好的效果。

逐层初始化完成后,深度学习模型只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号,还没有学习如何去连结一个输入和一个分类。

相关主题