深度学习:原理与应用实践(txt+pdf+epub+mobi电子书下载)

作者:张重生

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

深度学习:原理与应用实践

深度学习:原理与应用实践试读:

前言

深度学习是当今最流行和最受关注的信息技术之一。本书的特点是理论与实践兼备,以举例的方式介绍神经网络和卷积神经网络的原理,然后,通过实例讲解、实战操作的方式,讲解深度学习的具体应用,有利于读者动手能力的培养和解决实际问题能力的提升。

本书旨在降低深度学习的门槛,成为通用、普及性强的深度学习书籍,方便深度学习爱好者快速上手,帮助读者快速入门、进阶、精通深度学习相关的技术,适用于研究人员、高校教师、深度学习爱好者、研究生、高年级本科生。

本书共15章,分为6篇,第1篇是深度学习基础篇,包括第1~2章,分别是绪论和国内外深度学习技术研发现状及其产业化趋势。第2篇是深度学习理论篇,包括第3~4章,分别讲解神经网络和卷积神经网络。第3篇是深度学习工具篇,包括第5~6章,分别是深度学习工具Caffe和Pylearn2的介绍和使用详解。第4篇是深度学习实践篇(入门与进阶),包括第7~10章,分别讲解基于深度学习解决手写数字识别、图像识别、物体图像识别、人脸识别等常见的应用问题。第5篇是深度学习实践篇(高级应用),包括第11~14章,分别讲解基于深度学习的高级人脸识别算法DeepID、表情识别、年龄估计和人脸关键点检测。第6篇是深度学习总结与展望篇,包括第15章,介绍对深度学习的总结和展望。

本书所有章节中的示例内容具有高度的可重现性,读者按照本书的步骤进行操作,编写对应的程序,就能重现相应的实验结果。

本书有助于读者快速入门深度学习的研究和应用实践,帮助读者在较短的时间内掌握相关的技术,并从事基于深度学习的应用开发。然而,深度学习的理论和技术发展极其迅速,尤其是深度学习的理论,需要长期的研究和积淀才能全面理解、深入掌握。本书仅仅介绍了深度学习的基本原理,更多全面、深入、前沿的原理和技术,需要读者自行钻研、主动探究。

本书由张重生和王朋友合著。硕士研究生裴宸平、于珂珂也参与了部分章节的撰写工作,在此致谢。本书的出版,得到了国家自然科学基金(41401466)、省属高校基本科研业务费(xxjc20140005)、河南省科技攻关项目(132102210188)、河南大学研究生院“大数据汇聚与分析”双语课程建设项目(Y1513004)的资助。

感谢中国信息协会大数据分会副会长刘鹏教授,IEEE Fellow、亚里士多德大学Ioannis Pitas教授为本书作序。感谢电子工业出版社董亚峰先生对本书的大力支持和无私帮助。

笔者自认才疏学浅,仅略知深度学习之皮毛。书中错谬之处在所难免,如蒙读者诸君不吝告知(本书作者邮箱:chongsheng.zhang@yahoo.com,微信号:A13938613173),将不胜感激。张重生2016年11月深度学习基础篇第1章 绪论1.1 引言[1]

深度学习(Deep Learning),是当今人工智能/机器学习领域研究和应用开发的热点。在“大数据+深度学习”的共同推动下,深度学习在ImageNet图像分类竞赛、语音理解、图像识别、视频分析、无人驾驶汽车领域都取得了重要突破。与传统方法不同,深度学习首先通过大规模的迭代实验(调参实验)逼近所能达到的最高识别准确率,然后使用对应的(参数和)模型对新样本(图像、声音等)提取关键特征,并基于该特征,利用已训练好的分类模型预测新样本的类别。目前,Google、Facebook、Microsoft等国际巨头,以及百度、腾讯、阿里巴巴、京东等国内互联网巨头都已投入巨资布局深度学习,并将其作为重要的研发方向。1.1.1 Google的深度学习成果

2015年10月,Google(谷歌)旗下DeepMind公司研发了人工智能围棋程序,该程序主要使用深度学习的技术,整体上包含离线学习和在线对弈两个过程,其中离线学习主要利用大量已有棋谱进行训练“价值网络”去计算局面优劣,训练“策略网络”去选择下子位置;在线对弈主要利用“价值网络”计算当前棋面优劣,利用“策略网络”计算当前应该选择的下子位置。2015年,阿尔法围棋(AlphaGo)以5:0的总比分击败欧洲围棋冠军樊麾;紧接着,2016年3月,以4:1[2]的总比分击败世界围棋冠军、职业九段选手李世石。

而在此之前,2011年谷歌就成立了由人工智能和机器学习顶级学者吴恩达(Andrew Ng)领衔的“Google Brain”项目,这个项目利用谷歌的分布式计算框架训练深度人工神经网络。该项目的主要成果是使用包含16000个CPU核的并行计算平台,使用基于深度学习算[3]法训练超过10亿个神经元的深度神经网络,该系统能够在没有任何先验知识的前提下,自动学习YouTube网站上海量的视频数据,训练深度神经网络。吴恩达目前是斯坦福大学计算机科学系和电子工程系副教授、人工智能实验室主任,并担任百度公司首席科学家,负责百度研究院的百度大脑计划。1.1.2 Microsoft的深度学习成果

2012年,微软首席研究官Rick Rashid在“21世纪计算大会”上的英文演讲被实时翻译成与他音色很接近的中文演讲,该功能主要借[4]助于基于深度学习技术实现的自动同声传译系统,自动同声传译过程主要是语音识别、机器翻译和语音合成。1.1.3 国内公司的深度学习成果

2013年,百度成立了由知名学者余凯领导的百度深度学习研究院(Institute of Deep Learning,IDL),主要目标是将深度学习应用于语音识别和图像识别、智能检索等领域。现在,基于深度学习,百度的图像搜索更加准确,百度翻译更加专业,语音识别效果令人十分满意。目前,许多基于深度学习的产品已经面市,例如百度识别APP,该APP主要功能是图像识别和智能检索,其中拍照购物和通过照片匹配度来交友都是该APP中比较有特色的功能。百度在“小度机器人”和无人驾驶汽车领域等都取得了重要进展。小度机器人能够通过对话等自然的交互方式,准确理解用户意图,并与用户进行信息和服务等的交流。

阿里巴巴的“拍立淘”是基于“大数据+深度学习+图像处理”的构思开发的,网购用户通过手机拍照,利用“拍立淘”就能在淘宝中找到非常类似的产品,其搜索准确度和用户满意度非常高。

LinkFace(脸云科技)在2014年开创了基于深度学习的人脸检测算法,支持人脸检测、人脸识别、人脸关键点检测等全套技术,在FDDB数据集上的人脸识别准确率高达99.5%。图森(http://www.tusimple.com/)通过深度学习引擎,研发了图像识别和语义分析技术,为企业搭建了自己的图片识别服务,根据企业的实际业务设计了分类标签系统,精准描述企业图片分类需求。该公司还研发了基于摄像头的智能驾驶解决方案。1.2 深度学习技术的发展历程

深度学习是基于人工神经网络发展起来的一项技术,而神经网络的起源可以追溯到20世纪40年代。神经网络的基本组成单元为神经元,1943年心理学家W.S.McCulloch和数理逻辑学家W.Pitts首次提出神经元计算模型,并讲述了神经元的形式化数学描述和网络结构方[5]法,验证了单个神经元具有逻辑功能,从此打开了人工神经网络研究领域的大门。

人工神经网络在全世界科研工作者的持续努力下不断发展,[6]1957年,Frank Rosenblatt首次提出“感知器”的概念,该项工作在当时得到了广泛应用,在许多研究领域都取得了一定的成果。但由于当时计算条件的限制,并没有能够持续很长时间。此外,还有一个主要原因是1969年Marvin Minsky和Seymour Papert出版的书籍Perceptron,该书主要论证了“感知器”不能解决异或问题(也就是“异或门”),而且当时的计算机硬件满足不了神经网络的复杂计算。此后,神经网络的发展陷入低潮,在很长一段时间都没有得到重视。

尽管如此,Geoffrey Hinton一直在坚持神经网络领域的研究,1986年,DE Rumelhart,G.E. Hinton和R.J. Williams共同在Nature上[7]发表论文,提出误差后向传播(Error Back Propagation,EBP)算法,该算法解决了“感知器”的“异或”问题,降低了神经网络的计算复杂度,在解决相同问题的前提下,基于误差后向传播算法的神经网络的效果要优于简单“感知器”。误差后向传播算法在各个领域得到广泛应用,并延续至今,重新掀起了神经网络高潮。1989年,Yann Lecun成功将误差后向传播算法应用到手写邮政编码的识别任[8]务上。Yann Lecun在人工神经网络的基础上提出了“卷积神经网络”,目前卷积神经网络在图像和视频分析等领域都取得了很好的成果。

深度神经网络是模仿人脑机制构建的具有学习和分析解决问题的神经网络,它是由输入层、若干隐层和输出层构成的多层网络结构。相邻层之间的神经元通过权重相互连接,同层或跨层之间的神经元没有连接,权重值的大小表示对整体输出的贡献值,神经元采用非线性激励函数(Activation Function)获得输出值。深度学习之所以被称为“深度”,是相对于支持向量机(Support Vector Machine,SVM),Boosting提升方法等“浅层学习”方法而言的,深度学习可以自动学习数据特征,不需要手工设计特征,省去了很多人工设计的工作,能够更好地表达数据的本身特征。但深度神经网络需要大量的调参、迭代学习来寻找最佳的特征表达模型。

深度学习一般包含多个网络层,利用海量数据进行训练,通过逐层特征变换,形成对数据本身更抽象的特征,得到更具有代表性的特征,从而提高分类或预测的准确率。“深度学习”是手段,“特征学习”是目的,与“浅层学习”的区别主要在于:(1)深度模型包含更多的网络层,通常是5层、7层,甚至是10层以上。(2)强调特征学习的重要性,通过逐层特征变换,得到更具有[9]代表性的特征。

2006年,机器学习泰斗、多伦多大学计算机系教授Geoffery [10]Hinton在Science上发表的文章,采用基于深度信念网络(Deep Belief Networks,DBN)的非监督的逐层训练算法,解决了深度神经网络训练难度大的问题。

随着深度学习技术的不断发展,逐渐出现了许多深度学习开发框[11][12][13][14]架,比较典型的有Torch,Caffe,Theano,Pylearn2等,这些工具都可以让开发者很轻松地学习使用深度学习相关技术,并提供了各种不同的接口供不同的开发人员使用,其中Caffe是基于C++实现的开源库,提供了Python和Matlab外部接口,通过修改配置文件,修改网络参数可以轻松实现训练深度模型,支持CPU和GPU两种模式的无缝切换;Torch是基于Lua实现的开源库,该开源库在使用的过程中,并不像Caffe那样直接修改配置文件就可以实现所需功能,它需要开发人员自己写训练过程的代码,但这样可以更好地理解网络的整个训练过程的原理;Theano是基于Python实现的开源库,是用来有效地定义、优化和计算关于多维数组数学表达式的Python类库;Pylearn2是基于Theano开发的深度学习工具,可以方便地定义参数,快速训练模型。2016年,Google开发了其深度学习平台TensorFlow,Facebook开发了其基于Torch的深度学习框架Torchnet。1.3 深度学习的应用领域

目前,深度学习在越来越多的领域表现出优越的性能,尤其体现在图像识别、语音识别和自然语言处理等领域。1.3.1 图像识别领域

在物体识别问题上,深度学习的优势主要体现在ImageNet ILSVRC竞赛上,该竞赛是计算机视觉领域高度权威的竞赛,主要对1000类的物体图像进行识别。2012年,Geoffery Hinton和他的学生针对分类问题将分类Top-5错误率从原来的26.2%降低至15.3%,取得[15]了当时领先的结果。2013年,在ImageNet ILSVRC2013竞赛中,[16]Clarifai模型将分类Top-5错误率降低至11.197%;2014年,在[17]ImageNet ILSVRC 2014竞赛中,GoogleNet通过使用更深的卷积神经网络将分类Top-5错误率降低至6.67%;2015年,在ImageNet ILSVRC 2015竞赛中,微软亚洲研究院(MSRA)的深度网络Deep [18]Residual Network将分类Top-5错误率降低至3.567%。[19]

在人脸识别领域,深度学习的优势主要体现在LFW(Labeled Faces in the Wild)竞赛上的识别准确率。LFW是目前最著名的人脸识别数据库,用来测试非可控条件下的人脸识别准确率,该数据库中的图片是从互联网中获得的,大部分图片在表情、光照、姿态等方面表现出不同的特性,香港中文大学汤晓鸥教授领导的团队设计的[20]DeepID算法取得高达99.53%的识别准确率。1.3.2 语音识别领域

语音识别要解决的问题首先就是将语音中的音节识别出来,其次将合适的音节组成文字。上述过程构成了语音识别的两大组成部分:[21]声学模型、语言模型。在很长一段时间内,声学模型使用的是自动机的方法进行划分,最经典的建模方法是隐马尔可夫模型。而在语言模型方面一般分为规则模型和统计模型两种,统计语言模型是用概率统计的方法来揭示语言单位内在的统计规律,其中N-Gram简单有效,被广泛使用。最近,基于深度神经网络技术,百度和科大讯飞在语音识别领域都取得了重要突破,百度的Deep Speech采用深度学习技术对语音进行识别,它可以在饭店等嘈杂环境下实现将近81%的辨识准确率。而同类商业版语音识别系统如Microsoft Bing、Google[22]等公司的最高识别率只有65%。1.3.3 自然语言理解领域

应用深度学习模型进行自然语言处理,目前主流的做法是应用Recursive Neural Network(递归神经网络)和Recurrent Neural Network(循环神经网络)。其中,Recurrent Neural Network是非常有名的应用于情绪分析的树状神经网络模型,它是包含循环的网络,允许信息的持久化,更加适用于自然语言处理。1.4 如何开展深度学习的研究和应用开发

进行深度学习的研究和应用开发,首先,应该确定具体的问题和解决问题的目标;其次,需要采集或通过公开途径获得大量相关的有标注的数据集;然后选择合适的深度学习平台进行深度神经网络模型的训练;最后,得到特征提取模型和目标分类模型。

本节以深度学习的主流平台——Caffe为例,概要讲解如何使用深度学习平台在自己的数据集上训练模型,如何设计网络结构,如何调整网络参数的相关技术。Caffe的具体讲解将在本书第5章进行。

目前使用Caffe训练深度模型主要有两种方法:①利用当前数据从零开始重新训练深度模型;②加载已有模型,利用加载到的模型的参数作为训练新模型的初始化参数。Caffe中提供了许多基于大量数据训练的深度模型,读者可以参考文献[23]下载自己需要的深度模型。至于如何选择这两种方法,如果你的数据量较小或者数据与文献[23]中的某个模型所用的数据很相似,就可以优先选择第二种方法。当然,也可以尝试第一种方法。

下面主要参考文献[24]讲解如何加载Caffe中的已有模型来训练自己的数据,得到针对自己数据集的特有模型。该例使用在ImageNet数据集上训练得到的CaffeNet模型。ImageNet是一个数据量达到百万[24]级的数据库,CaffeNet模型本身解决的是物体分类问题,而这里主[25]要是解决“Flickr Style”数据库问题,即图片风格分类问题,该数据库包含8万张图片。选择加载CaffeNet模型的主要原因是“Flickr Style”数据库中的图片与ImageNet很相似。

具体步骤如下(假设所有操作都在配置好的Caffe根目录下执行)。

1.准备自己的数据 python examples/finetune_flickr_style/assemble_data.py --workers=-1 --images= 2000 --seed 831486

使用上面的命令,下载“Flickr Style”数据库中的2000张图片,并自动将数据分为训练和测试数据,保存在data/flickr_style文件夹中,训练文件为train.txt,测试文件为test.txt,这两个文件中的数据格式:图片路径、该图片对应的标签,路径和标签之间用空格隔开。

2.下载Caffe中已有模型 ./scripts/download_model_binary.py models/bvlc_reference_caffenet

使用上面的命令,下载Caffe中已有的CaffeNet模型,保存在models文件夹中,模型的文件名为bvlc_reference_caffenet.caffemodel,该文件中保存了该模型对应的权重和偏置等相关参数值。

由于在训练新的模型的时候,需要对应的均值文件,可以通过下面的命令得到,对应文件保存在data/ilsvrc12/文件夹下,名称为imagenet_mean.binaryproto。 data/ilsvrc12/get_ilsvrc_aux.sh

3.修改网络结构

首先需要强调的是,由于使用的是CaffeNet模型,所以使用的网络结构必须是CaffeNet网络结构,这些可以从models\bvlc_reference_caffenet文件夹下获得。由于“Flickr Style”数据库中的图片风格共有20类,而ImageNet数据库中图片共有1000类,所以需要将CaffeNet网络中的最后一个全连接层的输出数量从1000修改为20,这个至关重要。另外,加载已有模型的参数到现有网络中对应的网络层主要依据网络中的层名称,需要将最后一个全连接层的层名称从fc8修改为其他不一样的名称,例如fc8_flickr,这样就可以实现从随机初始化的权重开始学习这一层。

网络中最后一个全连接层修改如下: layer { name: "fc8_flickr" type: "InnerProduct" bottom: "fc7" top: "fc8_flickr" # lr_mult设置的值要高于其他层,主要因为该层从随机初始化权重开始学习#而其他层则是从已有模型中直接加载获得的初始值 param { lr_mult: 10 decay_mult: 1 } param { lr_mult: 20 decay_mult: 0 } inner_product_param { #”Flickr Style”数据库中图片风格共有20类 num_output: 20 weight_filler { type: "gaussian" std: 0.01 } bias_filler { type: "constant" value: 0 } } }

此外,还需要修改models/finetune_flickr_style文件夹下solver.prototxt文件的内容,修改如下: net: "models/finetune_flickr_style/train_val.prototxt" test_iter: 100 test_interval: 1000 #学习率应该设置为小于已有模型的初始学习率 base_lr: 0.001 lr_policy: "step" gamma: 0.1 # 步长也应该适当减小 stepsize: 20000 display: 20 max_iter: 100000 momentum: 0.9 weight_decay: 0.0005 snapshot: 10000 #模型文件保存的路径及文件前缀名称 snapshot_prefix: "models/finetune_flickr_style/finetune_flickr_style" # solver_mode: CPU

4.加载已有模型训练自己的数据 ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_ reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0

使用上面的命令,加载已有模型的参数,主要通过-weights来指定已有模型对应的文件路径,训练针对自己的数据的深度模型;如果不想通过加载已有模型的方式训练自己的模型,可以通过去掉-weights参数来实现。最后模型保存在models/finetune_flickr_style/文件夹中,随着迭代的进行,会保存多个模型文件。而finetune_flickr_style _100000.caffemodel是完成所有迭代后得到的最终模型文件。

紧接着,就是调整参数的过程,这里,需要调整的参数较多,目前的技术不能全自动地确定调某一个参数就能得到最好的模型。当前都是通过逐个尝试的方法来调参。具体而言,调参主要包括调整solver.prototxt文件中的学习率(base_lr),权重衰减值(weight_decay)等。当然也可以尝试使用不同的学习率改变策略(lr_policy),具体可以参考本书第5章中不同的学习率改变策略。

调整学习率的完整过程如下:首先固定一个学习率的值,然后训练模型,直到验证准确率不再上升,可以尝试将学习率降低继续训练,反复调整学习率的值,直至训练出一个较好的深度模型。

上述四个主要步骤非常重要,它们是深度学习业内人士进行深度学习研究和应用开发时,为了在自己的具体数据上训练特征提取模型时,经常使用的解决方案。参考文献

[1] Deep learning. Wikipedia. https://en.wikipedia.org/wiki/Deep_learning.

[2] 谷歌AlphaGo大战李世石首局:机器人胜!http://www.chinarobots.cn/ XingYeDongTai/143.html.

[3] Q.V. Le, M.A. Ranzato, R. Monga, M. Devin, K. Chen, G.S. Corrado, J. Dean, A.Y. Ng. Building high-level features using large scale unsupervised learning. ICML, 2012.

[4] Rick Rashid, Speech Recognition Breakthrough for the Spoken, Translated Word. http://www.youtube.com/watch?v=Nu-nlQqFCKg.

[5] 人工神经网络. http://baike.baidu.com/.

[6] Rosenblatt, F. The perceptron: a probabilistic model for information storage and organization in the brain.[J]. Psychological Review, 1958, 65(6):386-408.

[7] Rumelhart D E, Hinton G E, Williams R J. Learning representations by back-propagating errors[C]// MIT Press, 1986:533-536.

[8] Lecun Y, Boser B, Denker J S, et al. Backpropagation APPlied to Handwritten Zip Code Recognition[J]. Neural Computation, 1989, 1(4):541-551.

[9] 余凯,贾磊,陈雨强,等.深度学习的昨天、今天和明天[J].计算机研究与发展,2013,50(9):1799-1804.

[10] Geoffery E. Hinton, Salakhutdinov RR. Reducing the dimensionality of data with neural networks[J]. Science. 2006 Jul 28;313(5786):504-507.

[11] Torch. A scientific computing framework. http://torch.ch/.

[12] Caffe. Deep Learning Framework. http://caffe.berkeleyvision.org/.

[13] Theano. http://deeplearning.net/software/theano/.

[14] Pylearn2. Machine learning library. http://deeplearning.net/software/pylearn2/.

[15] ImageNet Classification with Deep Convolutional Neural Networks, Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, NIPS 2012.

[16] http://www.clarifai.com/.

[17] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, D. Anguelov, D. Erhan, V. Vanhoucke, and A. Rabinovich. Going deeper with convolutions. arXiv:1409.4842, 2014.

[18] He K, Zhang X, Ren S, et al. Deep Residual Learning for Image Recognition[J]. Computer Science, 2015.

[19] Huang G B, Mattar M, Berg T, et al. Labeled Faces in the Wild: A Database for Studying Face Recognition in Unconstrained Environments[J]. Workshop on Faces in 'Real-Life' Images: Detection, Alignment, and Recognition, 2007.

[20] Sun Y, Liang D, Wang X, et al. DeepID3: Face Recognition with Very Deep Neural Networks[J]. Computer Science, 2015.

[21] http://cslt.riit.tsinghua.edu.cn/~fzheng/THESES/201506-M-LC.pdf.

[22] http://36kr.com/p/217970.html.

[23]http://caffe.berkeleyvision.org/model_zoo.html.

[24] http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html.

[25] Karayev S, Trentacoste M, Han H, et al. Recognizing Image Style[J]. Eprint Arxiv, 2013.第2章 国内外深度学习技术研发现状及其产业化趋势

本章主要介绍国内外IT巨头在深度学习领域的研发现状及其产业化趋势。包括Google、Facebook、百度、阿里巴巴、京东、腾讯、NVIDIA、Face++等知名公司。2.1 Google在深度学习领域的研发现状2.1.1 深度学习在Google的应用

2012年谷歌发起了一个项目,这个项目当时是由吴恩达领导的(吴恩达现任百度首席科学家),该项目让一个神经网络使用16000个CPU服务器在1000万个YouTube视频进行训练,算法自己学会了识别猫脸;谷歌在2014年设计了GoogLeNet,在ILSVRC中将分类错误率低至6.66%。谷歌早期的深度学习基础平台是建立在大规模CPU集群的DistBelief(由16000个CPU计算节点构成),现在使用的深度学习平台是建立在超过8000个GPU组成的集群上的TensorFlow。

谷歌深度学习的应用包括:①语音识别,谷歌基于深度神经网络训练语音识别模型,而非传统的隐马尔科夫模型。2016年3月,谷歌[1]开放了其语音识别接口——Google Cloud Speech API。②图像识别、图像类别识别。③图像搜索。④街景图像识别(含文字识别)。⑤自[2][3]然语言理解、智能回答。⑥谷歌翻译等,。

2016年6~7月,谷歌旗下的DeepMind公司宣布与英国国家卫生服务体系(NHS)合作,准备利用机器学习来进行眼疾诊断,其目标是仅通过一次视网膜扫描来识别影响视力的症状。NHS的Moorfields眼科医院将向DeepMind提供100万份匿名的眼球扫描资料,DeepMind使用机器学习、深度学习技术在该数据上进行训练,以便更好地发现与显性年龄相关黄斑变性以及糖尿病视网膜病变等眼疾的[4][5]早期迹象,。2.1.2 Google的TensorFlow深度学习平台[6]

2015年11月,Google开源了人工智能学习系统TensorFlow(见图2-1),成为2015年最受关注的六大开源项目之一。TensorFlow是Google Brain团队开发的一款深度学习软件。TensorFlow的计算过程是数据流图的方式,最初的开源版本不支持分布式计算,只能在单机[7]上运行。2016年4月,谷歌发布了分布式TensorFlow 0.8,它最突出的特征是增加分布式计算的支持,能够在不同的机器上同时运行,从而在不同的机器上(集群中)分布式地训练模型,能够把部分模型的[8]训练过程从数周缩短到几个小时。图2-1 Google的TensorFlow深度学习系统

在谷歌内部,TensorFlow已经成功地应用到了谷歌搜索、广告、翻译、图像识别、语音识别、自然语言处理等众多产品之中。2.1.3 Google的深度学习芯片TPU

2016年5月,谷歌发布了用于深度学习芯片TPU(Tensor Processing Unit),该芯片支持了深度学习框架TensorFlow(见图2-2)。TPU优化了硬件架构的设计,允许芯片降低计算精度,这意味着每个操作需要的晶体管数量更少,可以在每秒时间内加入更多的[9][10]操作,可以使用更加复杂和强大的深度学习模型,。据称,TPU的性能是普通GPU的近10倍。图2-2 Google的深度学习芯片TPU2.2 Facebook在深度学习领域的研发现状

2016年,Facebook公开了其深度学习平台Torchnet和基于深度学习技术的自然语言理解引擎DeepText。2.2.1 Torchnet[11]

2016年6月,Facebook开源了其深度学习框架Torchnet。Torchnet的主要聚焦不在于进行高效的推断,也不在于使得Torch神[12]经网络中的梯度计算更快。相反,Torchnet旨在建立一个在深度学习框架Torch之上的外层框架(Facebook选择的是在Torch上编译一个[13]开源库,而并非建立一个全新的深度学习框架),该外层框架通过提供样板代码和模块化的设计,以便于代码重用,使得深度学习的实验和应用变得容易、简单、快速,大大减少了从零开始设计复杂的深度学习代码和模块所需的时间。Torchnet可以用于图像识别、自然语[13]言处理。而且,Facebook的科学家Van der Maaten写道:Torchnet可能并不会一直局限在Torch上使用,Torchnet是抽象的,可以轻松应用到其他框架中,例如Caffe还有谷歌的TensorFlow框架。

Torchnet使用Lua脚本语言开发,可以运行在标准的x86芯片或图形处理单元(GPUs)上,提高了代码的重复使用率。这意味着在以后的开发中开发者可以使用这个框架来简化工作,并且降低引入Bug[14]的概率。2.2.2 DeepText[15]

2016年,Facebook发布了人工智能新产品DeepText,它能够准确识别人类的聊天内容。DeepText是基于深度学习的文本理解引擎,它能以接近人类的准确度,以每秒处理成千上万的短文本(posts)的速度理解文本内容。

DeepText使用了卷积神经网络(Convolutional Neural Nets),递归神经网络(Recurrent Neural Nets),使用FbLearner Flow和Torch用于模型训练,这是一个分布式的、可扩展、高可信的架构。通过DeepText的架构,Facebook的工程师可以轻而易举地建立自然语言处理的模型。

Facebook机器学习团队的工程技术主管Hussein MeHanna表示:“我们希望将Deep Text运用在对Facebook平台上的海量内容进行分类,从而让搜索内容变得更加容易,同时为用户呈现他们感兴趣的内容”[16~18]。Facebook表示,Deep Text目前已经在一些方面开始发挥作用了。例如,Facebook Messenger上的一些聊天机器人现在[16]已经能够基于用户发的聊天内容理解他是否需要叫出租车。除识别聊天内容,自动搜索给出建议之外,Deep Text还会用于Facebook[16]上的垃圾消息清理。

DeepText还可以进一步改善Facebook的用户体验,例如,很多名人和公众人物会使用Facebook与大家进行交流,这些交流通常可能获得数百条,甚至上千条评论。此时就可以借助DeepText找出最[17][18]相关的内容,同时确保评论始终维持较高质量,。2.3 百度在深度学习领域的研发现状2.3.1 光学字符识别

传统的OCR技术包括版面分析、行分割、字分割、单字识别、语言模型解码等步骤,其中行分割涉及二值化、连通域分析等技术。这种技术在印刷体文档扫描识别等传统应用场合中取得了巨大成功,但并不适用于自然场合中的文字识别(自然场合中,背景复杂,噪声多,光照、拍摄角度等都有很多影响)。

百度对光学字符识别的系统流程和技术框架进行了大幅改造,舍弃了传统的二值化和连通域等基于规则的方法,形成了基于深度学习CNN-RNN的光学字符识别流程,不考虑每个字符出现的具体位置,只关注整个图像序列对应的文字内容,使得单字分割和单字识别问题[19]融为一体。百度的OCR技术已用于百度街景,可识别店铺、商家等。使用百度翻译APP,在手机摄像头聚焦菜单后,可以实现对菜单[20]中文字的定位、识别与翻译。2.3.2 商品图像搜索

类似于淘宝的“拍立淘”,百度支持全新的拍照购物方式。百度商品搜索支持对服装、箱包、鞋类等商品的拍照检索。针对服装,百度结合图像的颜色和纹理,引入深度学习技术,可以找到图片中人物与衣服的语义表示(如修身无袖、女装、棉麻连衣裙)。另外,百度设计了一套人物与服装对齐算法,较好地解决了用户拍照时图片的大小、背景各不相同,拍摄姿态、角度也与图片库中的模特存在差异的[21]问题,极大地提升了用户购物体验。对于箱包,百度开发了一套精确箱包物体检测和分割算法。该算法可以精确定位出包的位置,并精确分割出包的图像。然后,百度使用深度学习技术,训练众多箱包的识别模型,针对在实拍中可能出现的诸多复杂情况,如背景、姿态、[21]遮挡、光照环境等,做到了精确识别和检索。2.3.3 在线广告

广告数据特征维度非常高,有上百亿个稀疏特征。基于深度学习,百度设计了DANOVA算法,由底层到高层,逐层贪婪学习,从底层(第一层)的单特征开始,到更高层的不同数量的特征组合(第二层的2个特征组合,到第三层的3个特征组合……),构造高阶组合特征。DANOVA算法使得特征挖掘效率提升上千倍,CTR显著增长[22][23],。据称,百度基于深度学习将CTR提升了3.7%。2.3.4 以图搜图

以图搜图,就是基于内容的图像搜索(Content-Based Image Retrieval,CBIR),输入的是图片,需要返回与之相关的图片。这其[24]中包括人脸检索、相似性检索等。百度基于深度学习的人脸识别[25][26]技术在LFW评测中达到99.77%的准确率,。另外,百度开发了[25]世界上第一款基于深度学习的拍照实物搜索APP.目前,通过公开渠道尚无法获知百度以图搜图的技术细节。2.3.5 语音识别

百度开发出深度语音识别系统Deep Speech,其语音识别准确率[27][28]高于谷歌,在噪声环境中的表现更为突出,。Deep Speech基于深度学习技术,收集了9600个人长达7000小时语音,并在其中增加了15类噪声,最后将数据扩容成一个10万小时的数据。百度语音识别系统基于上千块GPU硬件进行训练,让语音识别模型训练速度变得更快。

百度语音识别的基本原理并非是基于音节的技术,而是直接在音频和其对应文字内容之间建立映射关系,训练深度学习模型。目前,[29]百度的准确率已经能达到97%,每天的语音识别请求超过1亿。百度硅谷研究人员Greg Diamos设计了持久RNN(Persistent recurrent Neural Networks)技术,减少训练RNN的内存使用量以及每块GPU[30]小批量的大小,加快了深度递归神经网络的训练速度。2.3.6 百度开源深度学习平台MXNet及其改进的深度语音识别系统Warp-CTC

百度于2015年5月通过“深盟”(Deep Machine Learning in [31][32][33]Common,DMLC)开源了其深度机器学习开源平台MXNet[35]~(见图2-3),又在2016年1月开源了Warp-CTC系统。CTC(Connectionist Temporal Classification,链结式时间分类算法)是Jurgen Schmidhuber团队在2006年提出来的,较优于RNN方案。经过百度方面优化之后的Warp-CTC可以提高原来CTC运算效率10到[36]400倍。Warp-CTC系统本质上是根据几年前开发的深度学习算法改进实现的,算法使用C语言编译,并做了集成化处理,应用于语音[37]识别技术中。图2-3 百度深度机器学习开源平台MXNet的系统架构

据称,百度的深度学习硬件平台包括6000台PC服务器和2000余台GPU服务器,能够构建世界上最大的包含千亿级参数的人工神经网络。2.4 阿里巴巴在深度学习领域的研发现状2.4.1 拍立淘

阿里巴巴的“拍立淘”允许用户以手机拍照,然后在淘宝或天猫[38][39]中搜索网上相同或者相似的商品,。拍立淘包括以下三个主要

[38]步骤。

第一步是确定一个图片的大致类型,例如,一个商品需要知道它是帽子,上衣,裙子,还是鞋子等。

第二步是主体检测,从图片中检测感兴趣的商品的区域。为了减少计算量,该步骤还需要过滤候选窗口的步骤。

第三步是图像特征提取。对第二步中确定的窗口中的图像区域,选择合适的特征来描述商品。该步骤中,拍立淘利用深度学习工具使神经网络收敛到一个地方,使得特征输出能够反映出这个商品的特[38]性,如种类、风格、图案、颜色等。2.4.2 阿里小蜜——智能客服Messenger

2015年7月,阿里巴巴在手机淘宝客户端推出了新一代智能客服产品——阿里小蜜,基于语音识别、语义理解、个性化推荐、深度学习等人工智能技术的应用,在每天应对百万级服务量的情况下,阿[40]里小蜜的智能解决率达到了接近80%。除了客服,阿里小蜜还支[41]持充话费、查天气、买机票、导购等功能。阿里小蜜的基本功能和技术原理与京东JIMI有很多相似之处,使用深度学习实现自然语言理解。2.5 京东在深度学习领域的研发现状

2014年9月,京东挂牌成立了京东深度神经网络实验室(JD DNN Lab)。

京东客服机器人JDIMI(JD Instant Messaging Intelligence)是一款由京东DNN Lab开发的、用于京东客服工作的即时聊天软件,可用[42][44]于京东商城的售前咨询、售后服务等自动在线问答软件~(见图2-4)。图2-4 京东客服机器人JIMI基于深度学习的系统架构

目前,JIMI已服务超过1600万的用户,其中,JIMI在2014年“双[43]十一”期间接待了近百万用户,有效缓解了人工客服的压力。JIMI中涉及如下技术:①自然语言处理:剖析用户语言,分析语义、情感、意图。②用户画像:分析用户基本资料、历史行为、动作轨迹,构造出用户的个人信息库,精准了解每个用户的性格、爱好、习惯,[44]以便做出更好的服务。③知识图谱:抽取知识相关性的关键词或商品。④机器学习。⑤深度学习:构建大型深层神经网络集群,模拟出人类的思维过程,通过上万神经节点的交叉计算达成高精度的智能[44]意图识别及应答效果。2.6 腾讯在深度学习领域的研发现状

腾讯深度学习平台已在微信语音识别、微信图像识别中得到深入

[45]应用。腾讯深度学习平台以GPU服务器为主,每台服务器配置4或者6块NVIDIA Tesla GPU卡,该深度学习平台重点研究多GPU卡的并行化技术,实现DNN的数据并行框架,以及CNN的模型并行和数据并行框架,在单机6 GPU卡配置下获得相比单卡4.6倍的加速,可在[45]数日内完成数十亿高维度训练样本的DNN模型训练(见图2-5)。图2-5 腾讯Mariana深度学习平台的CNN GPU框架的模型并行和数据并行架构

腾讯将其深度学习平台命名为Mariana。针对腾讯多种应用,打[46]造了三套框架。(1)Mariana DNN。深度神经网络的多GPU数据并行框架,主要用于微信语音识别。微信的语音包括超过1万个小时的训练数据、40亿个样本,超过5000万个参数需要进行深度神经网络训练。(2)Mariana CNN。深度卷积神经网络的多GPU并行框架,主要用于微信图像识别,对2000个类别、300万个样本,6000万个参数训练卷积神经网络,其4GPU模型+数据并行的加速比是单GPU的2.5倍[46]。(3)Mariana Cluster。深度神经网络的CPU集群框架,用于广告[46]点击率预估模型的训练,目前得到了初步应用。2.7 科创型公司(基于深度学习的人脸识别系统)[47]

Face++是北京旷视科技有限公司旗下的云端人脸识别平台,公司成立于2011年。支付宝人脸支付使用的技术就是Face++(见图2-6)。Face++在人脸检测FDDB评测、人脸关键点定位评测和人脸识别LFW评测上,拿到了这三项的世界第一。而Face++的人脸关键点检测和人脸特征表示都是基于深度学习技术的。图2-6 Face++:基于深度学习的云端人脸检测平台[48]

Linkface成立于2014年,是由四个90后“美女学霸”成立的人脸识别的创业公司,2014年曾取得人脸检测FDDB评测第一名的成绩。Linkface开发了基于深度学习的人脸检测创新算法,在人群、侧脸、[49]遮挡、模糊等情景中,均能进行精准检测。2016年,Linkface与[50]Sensetime(商汤科技)合并。Sensetime是专注于计算机视觉和深度学习的创新型公司,以基于深度学习的人脸识别为核心技术,该公司的产品已经应用到京东钱包、借贷宝、融360、公安部第三研究[50]所等实际应用中。2.8 深度学习的硬件支撑——NVIDIA GPU

Facebook、百度、京东、腾讯、阿里巴巴等公司通常都是使用英伟达的GPU作为其深度学习的硬件平台,尤其是NVIDIA Tesla K40是这些大公司广泛采用的GPU产品。谷歌在推出自己的深度学习芯片TPU(Tensor Processing Unit)之前,使用的也是NVIDIA的GPU。

2016年6月,英伟达(NVIDIA)开始销售全球首款深度学习超级[51]计算机NVIDIA® DGX-1™>(见图2-7)。NVIDIA DGX-1深度学习系统包括8块NVIDIA Tesla® P100 GPU,而该GPU基于全新的NVIDIA Pascal™ GPU架构。NVIDIA DGX-1深度学习系统的吞吐量相当于250台基于CPU的服务器,拥有每秒高达170万亿次的半精度浮点运算峰值性能。所有这些GPU以及相应的网络、线缆和机架等都[52]封装在一个机箱里,使得GPU间的通信更快。图2-7 NVIDIA DGX-1的浮点计算速度和深度学习训练速度分别是CPU的56倍和75倍

而在2015年,曙光联合NVIDIA发布了X System平台——包括深度学习软件XSharp和XMachine系列深度学习一体机。作为整个系统的硬件平台,XMachine深度学习一体机特别为深度学习定制开发,提供多种类型GPU服务器供选择,原生态支持NVIDIA DIGITS开发环境,可大大降低用户进入深度学习领域的软件投入成本。借助X [53]System深度学习一体机,用户可以快速进入深度学习领域。

2015年年底,Facebook将其人工智能硬件平台Big Sur进行开源[54](见图2-8)。“Big Sur”装有8个NVIDIA的Tesla M40,主板易于维修,十分适用于人工智能软件(尤其是深度学习)所需要的海量计算。图2-8 Facebook“Big Sur”服务器

试读结束[说明:试读内容隐藏了图片]

下载完整电子书

若在网站上没有找合适的书籍,可联系网站客服获取,各类电子版图书资料皆有。

客服微信:xzh432

登入/注册
卧槽~你还有脸回来
没有账号? 忘记密码?