一页纸说清楚“深度学习”-阿里云开发者社区

开发者社区> 大数据文摘> 正文
登录阅读全文

一页纸说清楚“深度学习”

简介: 深度学习:像人脑一样深层次地思考 如果你认为"个性化推荐"系统有了“人工智能”,那你就错了。其实,这些推荐系统背后的运行原理主要基于概率统计、矩阵或图模型,计算机对这些数值运算确实很擅长,但由于采用的只是“经验主义”的实用方法(也即管用就行),而非以“理性主义”的原则真正探求智能产生的原理,所以距离真正的人工智能还很远。

0.jpg

深度学习:像人脑一样深层次地思考

如果你认为"个性化推荐"系统有了“人工智能”,那你就错了。其实,这些推荐系统背后的运行原理主要基于概率统计、矩阵或图模型,计算机对这些数值运算确实很擅长,但由于采用的只是“经验主义”的实用方法(也即管用就行),而非以“理性主义”的原则真正探求智能产生的原理,所以距离真正的人工智能还很远。AI(Artificial Intelligence),也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台计算机能产生“自我”的意识。

提示:

图灵测试(Turing Testing),是计算机是否真正具有人工智能的试金石。“计算机科学之父”及“人工智能之父”英国数学家阿兰·图灵(1912—1954)在1950年的一篇著名论文《机器会思考吗?》里,提出图灵测试的设想。即把一个人和一台计算机分别隔离在两间屋子,然后让屋外的一个提问者对两者进行问答测试。如果提问者无法判断哪边是人,哪边是机器,那就证明计算机已具备人的智能。

直到深度学习(Deep Learning)的出现,让人们看到了一丝曙光,至少,(表象意义下的)图灵测试已不再是那么遥不可及了。2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough Technology)之首。

让我们先来看看人类的大脑是如何工作的。1981年的诺贝尔医学奖,颁发给了David Hubel和Torsten Wiesel,以及Roger Sperry。前两位的主要贡献是,发现了人的视觉系统的信息处理是分级的。如图4-45所示,从视网膜(Retina)出发,经过低级的V1区提取边缘特征,到V2区的基本形状或目标的局部,再到高层的整个目标(如判定为一张人脸),以及到更高层的PFC(前额叶皮层)进行分类判断等。也就是说高层的特征是低层特征的组合,从低层到高层的特征表达越来越抽象和概念化,也即越来越能表现语义或者意图。

1.jpg

图4-45 人脑的视觉处理系统 (图片来源:blogspot)

这个发现激发了人们对于神经系统的进一步思考。大脑的工作过程,或许是一个不断迭代、不断抽象概念化的过程,如图4-46所示。例如,从原始信号摄入开始(瞳孔摄入像素),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定眼前物体的形状,比如是椭圆形的),然后进一步抽象(大脑进一步判定该物体是张人脸),最后识别眼前的这个人──正是大明星刘德华。这个过程其实和我们的常识是相吻合的,因为复杂的图形,往往就是由一些基本结构组合而成的。同时我们还可以看出:大脑是一个深度架构,认知过程也是深度的。

2.jpg

图4-46 视觉的分层处理结构 (图片来源:Stanford)

而深度学习(Deep Learning),恰恰就是通过组合低层特征形成更加抽象的高层特征(或属性类别)。例如,在计算机视觉领域,深度学习算法从原始图像去学习得到一个低层次表达,例如边缘检测器、小波滤波器等,然后在这些低层次表达的基础上,通过线性或者非线性组合,来获得一个高层次的表达。此外,不仅图像存在这个规律,声音也是类似的。比如,研究人员从某个声音库中通过算法自动发现了20种基本的声音结构,其余的声音都可以由这20种基本结构来合成!

在进一步阐述深度学习之前,我们需要了解什么是机器学习(Machine Learning)。机器学习是人工智能的一个分支,而在很多时候,几乎成为人工智能的代名词。简单来说,机器学习就是通过算法,使得机器能从大量历史数据中学习规律,从而对新的样本做智能识别或对未来做预测。

而深度学习又是机器学习研究中的一个新的领域,其动机在于建立可以模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如,图像、声音和文本。深度学习是无监督学习的一种。深度学习之所以被称为“深度”,是因为之前的机器学习方法都是浅层学习。深度学习可以简单理解为传统神经网络(Neural Network)的发展。大约二三十年前,神经网络曾经是机器学习领域特别热门的一个方向,这种基于统计的机器学习方法比起过去基于人工规则的专家系统,在很多方面显示出优越性。如图4-47所示,深度学习与传统的神经网络之间有相同的地方。二者的相同之处在于,深度学习采用了与神经网络相似的分层结构:系统是一个包括输入层、隐层(可单层、可多层)、输出层的多层网络,只有相邻层节点之间有连接,而同一层以及跨层节点之间相互无连接。这种分层结构,比较接近人类大脑的结构(但不得不说,实际上相差还是很远的,考虑到人脑是个异常复杂的结构,很多机理我们目前都是未知的)。

3.jpg

图4-47 传统的神经网络与深度神经网络

提示:

神经网络包含输入层、输出层以及中间的若干隐层(Hidden Layer),每层都有若干结点及连接这些点的边,在训练数据集上会学习出边的权值,从而建立模型。随着边所表征的函数的不同,可以有各种不同的神经网络。这种源于人工智能中联结主义学派(Connectionism)的方法在上世纪七八十年代盛极一时。

但是后来,因为理论分析的难度,加上训练方法需要很多经验和技巧,以及巨大的计算量和优化求解难度,神经网络慢慢淡出了科研领域的主流方向。值得指出的是,神经网络(如采用误差反向传播算法:Back Propagation,简称BP算法)在层次深的情况下性能变得很不理想(传播时容易出现所谓的梯度弥散Gradient Diffusion,根源在于非凸目标代价函数导致求解陷入局部最优,且这种情况随着网络层数的增加而更加严重),所以只能转而处理浅层结构(小于等于3),从而限制了性能。于是,20世纪90年代,有更多各式各样的浅层模型相继被提出,比如只有一层隐层节点的支撑向量机(SVM,Support Vector Machine)和Boosting,以及没有隐层节点的最大熵方法(例如LR,Logistic Regression)等,在很多应用领域取代了传统的神经网络。

显然,这些浅层结构算法有很多局限性:在有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定的制约。更重要的是,浅层模型有一个特点,就是需要依靠人工来抽取样本的特征。然而,手工地选取特征是一件非常费力的事情,能不能选取好很大程度上靠经验和运气。既然手工选取特征不太好,那么能不能自动地学习一些特征呢?

提示:

实际生活中,人们为了实现对象的分类,首先必须做的事情是如何来表达一个对象,即必须抽取一些特征来表示一个对象。例如,区分人和猴子的一个重要特征是是否有尾巴。特征选取的好坏对最终结果的影响非常大。

答案是能!深度学习框架将特征和分类器结合到一个框架中,用数据去学习特征,在使用中减少了手工设计特征的巨大工作量。看它的一个别名:无监督特征学习(Unsupervised Feature Learning),就可以顾名思义了。无监督(Unsupervised)学习的意思就是不需要通过人工方式进行样本类别的标注来完成学习。因此,深度学习是一种可以自动地学习特征的方法。

提示:

准确地说,深度学习首先利用无监督学习对每一层网络进行逐层预训练(Layerwise Pre-Training);每次用无监督学习只训练一层,并将训练结果作为更高一层的输入;最后用监督学习去调整所有层。

深度学习通过学习一种深层非线性网络结构,只需简单的网络结构即可实现复杂函数的逼近,并展现了强大的从大量无标注样本集中学习数据集本质特征的能力。深度学习能够获得可更好地表示数据的特征,同时由于模型的层次深(通常有5层、6层,甚至10多层的隐层节点)、表达能力强,因此有能力表示大规模数据。对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,深度模型能够在大规模训练数据上取得更好的效果。尤其是在语音识别方面,深度学习使得错误率下降了大约30%,取得了显著的进步。相比于传统的神经网络,深度神经网络作出了重大的改进,在训练上的难度(如梯度弥散问题)可以通过“逐层预训练”来有效降低。注意,深度学习不是万金油,像很多其他方法一样,它需要结合特定领域的先验知识,需要和其他模型结合才能得到最好的结果。当然,还少不了需要针对自己的项目去仔细地调参数,这也往往令人诟病。此外,类似于神经网络,深度学习的另一局限性是可解释性不强,像个“黑箱子”一样不知为什么能取得好的效果,以及不知如何有针对性地去具体改进,而这有可能成为产品升级过程中的阻碍。

深度学习通过很多数学和工程技巧增加隐层的层数,如果隐层足够多(也就是深),选择适当的连接函数和架构,就能获得很强的表达能力。但是,常用的模型训练算法反向传播(Back Propagation)仍然对计算量有很高的要求。而近年来,得益于大数据、计算机速度的提升、基于MapReduce的大规模集群技术的兴起、GPU的应用以及众多优化算法的出现,耗时数月的训练过程可缩短为数天甚至数小时,深度学习才在实践中有了用武之地。

值得一提的是,深度学习的诞生并非一帆风顺。虽然Yahn Lecun在1993年提出的卷积神经网络(Convolutional Neural Network:CNN)是第一个真正成功训练多层网络结构的学习算法,但应用效果一直欠佳。直到2006年,Geoffrey Hinton基于深度置信网(Deep Belief Net:DBN)——其由一系列受限波尔兹曼机(Restricted Boltzmann Machine:RBM)组成,提出非监督贪心逐层训练(Layerwise Pre-Training)算法,应用效果才取得突破性进展,其与之后Ruslan Salakhutdinov提出的深度波尔兹曼机(Deep Boltzmann Machine:DBM)重新点燃了人工智能领域对于神经网络(Neural Network)和波尔兹曼机(Boltzmann Machine)的热情,才由此掀起了深度学习的浪潮。

2012年6月,《纽约时报》披露了Google Brain项目,吸引了公众的广泛关注。这个项目是由著名的斯坦福大学的机器学习教授Andrew Ng和在大规模计算机系统方面的世界顶尖专家Jeff Dean共同主导,用16,000个CPU Core的并行计算平台去训练含有10亿个节点的深度神经网络(DNN,Deep Neural Networks),使其能够自我训练,对2万个不同物体的1,400万张图片进行辨识。在开始分析数据前,并不需要向系统手工输入任何诸如“脸、肢体、猫的长相是什么样子”这类特征。Jeff Dean说:“我们在训练的时候从来不会告诉机器:‘这是一只猫’(即无标注样本)。系统其实是自己发明或领悟了‘猫’的概念。”

2014年3月,同样也是基于深度学习方法,Facebook的 DeepFace 项目使得人脸识别技术的识别率已经达到了 97.25%,只比人类识别 97.5% 的正确率略低那么一点点,准确率几乎可媲美人类。该项目利用了 9 层的神经网络来获得脸部表征,神经网络处理的参数高达 1.2亿。

最后我们再回到大数据这个时代背景上来。当坐拥海量的大数据,我们无论是做推荐系统还是3D模型检索,以前用简单的线性数学模型,一般也能获得还不错的结果。因此我们沾沾自喜起来,认为还是大数据更重要,而智能算法用简单直接的就OK了,不需要也没必要弄得很复杂。而当深度学习出现后,它的一系列辉煌战绩让我们意识到:也许是时候该“鸟枪换炮”了。简而言之,在大数据情况下,也许只有比较复杂的模型,或者说表达能力强的模型,才能充分发掘海量数据中蕴藏的有价值信息。更重要的是,深度学习可以自动学习特征,而不必像以前那样还要请专家手工构造特征,极大地推进了智能自动化。


原文发布时间为:2014-04-17


本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
大数据文摘
使用钉钉扫一扫加入圈子
+ 订阅

官方博客
最新文章
相关文章
官网链接