《“深度学习“学习笔记.doc》由会员分享,可在线阅读,更多相关《“深度学习“学习笔记.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流“深度学习“学习笔记【精品文档】第 14 页“深度学习”学习笔记摘要:人工智能的飞跃发展得益于深度学习理论的突破以及移动互联网创造的大数据。本文梳理了人工智能、机器学习、深度学习的概念以及发展历程;介绍了深度学习基本理论、训练方法、常用模型、应用领域。关键词:机器学习、人工神经网路、深度学习、语音识别、计算机视觉1. 概述2017年5月27日,围棋世界冠军柯洁与Google围棋人工智能AlphaGo的第三场对弈落下帷幕。在这场人机大战中,世界围棋第一人0:3完败于围棋人工智能。人工智能以气势如虹的姿态出现在我们人类的面前。人工智能AI(Artificia
2、l Intelligence)从此前的学术研究领域全面进入大众视野。整个业界普遍认为,它很可能带来下一次科技革命,并且,在未来可预见的10多年里,深刻得改变我们的生活。1.1、 人工智能、机器学习、深度学习什么是人工智能?人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。上世纪50年代人工智能的理念首次提出,科学家们不断在探索、研究,但是人工智能的发展就磕磕碰碰。人工智能的发展经历了若干阶段,从早期的逻辑推理,到中期的专家系统,直到上世纪80年代机器学习诞生以后,人工智能研究终于找对
3、了方向。机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型对真实世界中的事件作出决策与预测的一种方法。基于机器学习的图像识别和语音识别得到重大发展。人工神经网络(Artificial Neural Networks)成为机器学习中的一个重要的算法,其中反向传播算法(Back Propagation)是最常用的ANN学习技术。基于BP算法的人工神经网路,主要问题是训练困难、需要大量计算,而神经网络算法的运算需求难以得到满足。进入90年代,神经网络的发展进入了一个瓶颈期。其主要原因是尽管有BP算法
4、的加速,神经网络的训练过程仍然很困难。因此90年代后期支持向量机(SVM)算法取代了神经网络的地位。【SVM是个分类器,通过“核函数”将低维的空间映射到高维的空间,将样本从原始空间映射到一个更高维的特质空间中,使得样本在这个新的高维空间中可以被线性划分为两类,再将分割的超凭你们映射回低维空间。】2006年,加拿大多伦多大学教授、机器学习领域的泰斗Geoffrey Hinton在科学上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。这篇文章有两个主要观点:1、多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2、深度神经网络在训练上的难
5、度,可以通过“逐层初始化”(layer-wise pre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。深度学习使得机器学习能够实现众多的应用,并拓展了人工智能的领域范围。深度学习在语音识别和图像识别等领域获得了巨大的成功因此极有可能是真正实现人工智能梦想的关键技术。人工智能、机器学习(Machine Learning)和深度学习(Deep Learning)之间的关系,如图1所示。人工智能是机器学习的父类。深度学习则是机器学习的子类。图 1 人工智能、机器学习、深度学习关系2. 人工神经网络人工神经网络(ANN)受到生物学的启发是生物神经网络的一种模拟和近似,
6、它从结构、实现机理和功能上模拟生物神经网络。从系统观点看,人工神经元网络是由大量神经元通过极其丰富和完善的连接而构成的自适应非线性动态系统。图 2 单个神经元图 3人工神经网路2.1、 BP算法BP (Back Propagation)神经网络,即 误差反传误差反向传播算法的学习过程,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界
7、输出信息处理结果。当实际输出与期望输出不符时,进入 误差的反向传播阶段。 误差通过输出层,按误差梯度下降【求取偏导数】的方式修正各层权值,向隐层、输入层逐层反传。周而复始的信息正向传播和 误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止2.2、BP算法存在的问题(1)、收敛速度慢,梯度越来越稀疏【梯度扩散】:从顶层越往下,误差校正信号越来越小。(2)、收敛到局部最小值,可能导致训练失败:尤其是从远离最优区域开始的时候(随机值初始化会导致这种情况的发生)。(3)、一般我们只能用有标签的数据来训练
8、:但大部分的数据是没标签的,而大脑可以从没有标签的数据中学习。在实际应用中,BP人工神经网路通常是只含有一个隐层的浅层模型。浅层学习是机器学习的第一次浪潮。3. 深度学习(Deep Learning)31、基本思想深度学习是机器学习的第二次浪潮。深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。因此,“深度模型”是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1)强调了模型结构的深度,通常有5层、6层,甚至10层以上的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间
9、的特征表示变换到一个新特征空间,从而使分类或预测更加容易。假设我们有一个系统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 浅
10、层模型与深度学习模型 深度学习模型采用了与神经网络相似的分层结构,系统由包括输入层、隐层(多层)、输出层组成的多层网络,只有相邻层节点之间有连接,同一层以及跨层节点之间相互无连接。为了克服神经网络训练中的问题,DL采用了与神经网络很不同的训练机制。传统神经网络中,采用的是BP算法进行训练,简单来讲就是采用迭代的算法来训练整个网络,随机设定初值,计算当前网络的输出,然后根据当前输出和期望输出之间的差去改变前面各层的参数,直到收敛(整体是一个梯度下降法)。而深度学习整体上是一个layer-wise的训练机制。32、训练方法第一步:无监督学习,逐层构建单层神经元,逐层训练一个单层网络深度神经网络在训
11、练上的难度,可以通过“逐层初始化”(Layer-wise Pre-training)来有效克服,文中给出了无监督的逐层初始化方法。图 5 单层训练给定原始输入后,先要训练模型的第一层,即图中左侧的黑色框。黑色框可以看作是一个编码器,将原始输入编码为第一层的初级特征,可以将编码器看作模型的一种“认知”。为了验证这些特征确实是输入的一种抽象表示,且没有丢失太多信息,需要引入一个对应的解码器,即图中左侧的灰色框,可以看作模型的“生成”。为了让认知和生成达成一致,就要求原始输入通过编码再解码,可以大致还原为原始输入。因此将原始输入与其编码再解码之后的误差定义为代价函数,同时训练编码器和解码器。Wake
12、-Sleep算法:(1)、Wake阶段 【Input-Code-Reconstruction, 调整Decoder权重】认知过程,自上而下,通过下层的输入特征(Input)和向上的认知(Encoder)权重产生每一层的抽象表示(Code),再通过当前的生成(Decoder)权重产生一个重建信息(Reconstruction),计算输入特征和重建信息残差,使用梯度下降修改层间的下行生成(Decoder)权重。也就是“如果现实(Code)跟我想象(Reconstruction)的不一样,改变我的生成权重(Decoder权重在Wake阶段调整)使得我想象(Code),的东西变得接近现实”。(2)、S
13、leep阶段【Code-Reconstruction-Code, 调整Encoder权重】生成过程,自下而上,通过上层概念(Wake阶段产生的Code)和向下的生成权重(Decoder权重在Wake阶段调整),生成下层的状态(Sleep阶段产生的Input),再利用认知(Encoder)权重产生一个抽象景象(Sleep阶段产生的Code)。利用初始上层概念(Wake阶段产生的Code)和新建抽象景象(Sleep阶段产生的Code)的残差,利用梯度下降修改层间向上的认知权重(Encoder权重在Sleep阶段调整)。也就是“如果梦中的景象(Sleep阶段产生的Code)不是我脑中的相应概念(Wa
14、ke阶段产生的Code),改变我的认知权重使(Encoder权重在Sleep阶段调整)得这种景象在我看来接近这个概念”。【多次训练重复Wake-Sleep算法,不断调整Encode和Decode的权重,最终使得让认知和生成达成一致Input = Reconstruction。】图 5 逐层初始化 (即特征学习Feature Learning过程)Wake:自下而上 Encoder RecognitionSleep: 自上而下 Decoder Generative图 6 逐层初始化的方法(双向神经网络)第二步:自顶向下的有监督学习训练收敛后,编码器就是我们要的第一层模型,而解码器则不再需要了。这
15、时我们得到了原始数据的第一层抽象。固定第一层模型,原始输入就映射成第一层抽象,将其当作输入,如法炮制,可以继续训练出第二层模型,再根据前两层模型训练出第三层模型,以此类推,直至训练出最高层模型。由于深层模型具有很多局部最优解,模型初始化的位置将很大程度上决定最终模型的质量。“逐层初始化”的步骤就是让模型处于一个较为接近全局最优的位置,从而获得更好的效果。逐层初始化完成后,深度学习模型只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号,还没有学习如何去连结一个输入和一个分类。为了实现分类,在编码层添加一个分类器(例如罗杰斯特回归、支持向量机-SVM等),然后通过标准的
16、多层神经网络的监督训练方法(梯度下降法)去训练。将最后层的特征code输入到最后的分类器,通过有标签样本,通过监督学习进行微调,这也分两种,一种是只调整分类器(黑色部分):另一种:通过有标签样本,微调整个系统:(如果有足够多的数据,这个是最好的。end-to-end learning端对端学习)4. 深度学习常用模型41、自动编码器Auto Encoder3.2节训练方法中,呈现的是深度学习模型属于自动编码器模型Auto Encoder,此外常用的模型还有:稀疏自动编码器、卷积神经网络等。42、稀疏自动编码器Sparse Auto Encoder在Auto Encoder的基础上加上L1的Re
17、gularity限制(L1主要是约束每一层中的节点中大部分都要为0,只有少数不为0,这就是Sparse名字的来源),我们就可以得到Sparse Auto Encoder法。其实就是限制每次得到的表达code尽量稀疏。因为稀疏的表达往往比其他的表达要有效(人脑好像也是这样的,某个输入只是刺激某些神经元,其他的大部分的神经元是受到抑制的)。图 7 稀疏自动编码器稀疏编码是一种无监督学习方法,用来寻找一组“超完备”基向量来更有效的表示样本数据。稀疏编码算法的目的就是找到一组基向量 ,使得我们能将输入向量 表示为这些基向量的线性组合:那么可以得到有个最优化问题:通过求解这个最优化式子,可以求得与系数
18、ai;如果加上稀疏规则限制,得到:这种方法就是稀疏编码。图 8 稀疏自动编码器示意举例43、卷积神经网络CNN卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,一方面它的神经元间的连接是非全连接的,另一方面同一层中某些神经元之间的连接的权重是共享的(即相同的)。它的非全连接和权值共享的网络结构使之更类似于生物神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。BP网络每一层节点是一个线性的一维排列状态,层与层的网络节点之间是全连接的。这样设想一下,如果BP网络中层与层之间的节点连接不再是全连接,而是局部连接的。这样,就是一种最简
19、单的一维卷积网络。把上述这个思路扩展到二维,这就是我们在大多数参考资料上看到的卷积神经网络。具体参看下图:图 9 全连接网络与非全连接网络非全连接:上图左:全连接网络。如果我们有1000x1000像素的图像,有1百万个隐层神经元,每个隐层神经元都连接图像的每一个像素点,就有1000x1000x1000000=1012个连接,也就是1012个权值参数。上图右:局部连接网络,每一个节点与上层节点同位置附近10x10的窗口相连接,则1百万个隐层神经元就只有100w乘以100,即108个参数。其权值连接个数比原来减少了四个数量级对于上图中被标注为红色节点的净输入,就等于所有与红线相连接的上一层神经元节
20、点值与红色线表示的权值之积的累加。这样的计算过程,很多书上称其为卷积图 10 卷积神经网络神经元计算(3 x3卷积核)权值共享:卷积神经网络另外一个特性是权值共享。隐层的参数个数和隐层的神经元个数无关,只和卷积核(又称滤波器)的大小和卷积核的种类多少有关。每一个卷积核对应一种特征,对于10x10的卷积核,具有100个可调参数作为权重。注:卷积神经网络模型与深度学习模型是两个不同概念。深度学习的概念要更为宽泛一些。深度学习采用的模型为深层神经网络(Deep Neural Networks,DNN)模型,即包含多个隐藏层(Hidden Layer,也称隐含层)的神经网络。经典的深度学习理论可分为自
21、动编码器,稀疏自动编码器,卷积神经网络、深度置信网络。卷积神经网络可以说是目前深度学习体系中研究最多、应用最为成功的一个模型。 5. 应用领域深度学习在语音识别、图像处理等领域已经取得突破性发展。下面是基于深度学习开发出来的一些应用程序:盲人看照片Facebook开发的一个移动应用,可以让盲人或者视力障碍者像正常人一样浏览照片。实时语音翻译微软的Skype能够将语音实时翻译成不同的语言。自动回复电子邮件Google的Mail可以代替您自动回复电子邮件。目标识别Moodstocks(已经被Google收购)推出的智能手机图像识别应用程序Moodstocks Notes,可通过照片识别书籍、CD、
22、海报、传单和酒标等对象。照片定位Google能够根据照片进行拍摄场景定位。照片整理Google相册可以自动整理分类到常见的主题下面。分类照片Yelp可以根据业务分支对照片进行分类。自动驾驶自动驾驶技术应该是深度学习领域最为大家所知的应用了。脸部识别这个就无需解释了。文本图像实时翻译Google的一个移动应用,可将照片中的文字翻译成您可以理解的文字。手势识别使用不同的手势,对没有屏幕的设备进行交互。人类对话例如Google开发的进行自动对话回复的邮件。增强现实脸部追踪百度开发的一个应用,能够基于深度学习技术进行面部追踪。图片搜索将图像进行视觉搜索查询。脑肿瘤检测在2013年BRATS测试数据集上
23、的报结果表明,802,368参数网络比已发布的最先进的技术改进了超过30倍。临床事件预测一个RNN训练,8年时间从来自26万患者和14805名医生的EHR数据,该神经网络进行多标签预测(每次诊断或药物类别作为一个标签),该系统可以执行召回鉴别诊断率高达79%,明显高于基线。整理货架类似上面的仓库优化,亚马逊研究人员基于深度学习技术分析3D扫描,让机器人对物品进行整理。仓库优化一个深度学习系统,在仓库中用最佳的方式拿取和放置物品,这种系统明显快于传统的研究方法,并且效率更高。图 11 识别图像的流程6. 总结深度学习尝试解决人工智能中抽象认知的难题,从理论分析和应用方面都获得了很大的成功。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,并展现了强大的学习数据集本质和高度抽象化特征的能力。逐层初始化等训练方法显著提升了深层模型的可学习型。与传统的浅层模型相比,深层模型经过了若干层非线性变换,带给模型强大的表达能力,从而有条件为更复杂的任务建模。与人工特征工程相比,自动学习特征,更能挖掘出数据中丰富的内在信息,并具备更强的可扩展性。深度学习顺应了大数据的趋势,有了充足的训练样本,复杂的深层模型可以充分发挥其潜力,挖掘出海量数据中蕴含的丰富信息。强有力的基础设施和定制化的并行计算框架,让以往不可想象的训练任务加速完成,为深度学习走向实用奠定了坚实的基础。