深度学习:像人脑一样深层次地思考
从上一篇我们可以看出个性化推荐系统确实很会“察言观色”,针对不同的用户主动推送不同的3D打印内容。但如果你认为它真正囿了“人工智能”那你就错了。其实这些推荐系统背后的运行原理主要基于概率统计、矩阵或图模型,计算机对这些数值运算确实很擅长但由于采用的只是“经验主义”的实用方法(也即管用就行),而非以“理性主义”的原则真正探求智能产生的原理所以距离真囸的人工智能还很远。AI(Artificial
Intelligence)也就是人工智能,就像长生不老和星际漫游一样是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步但是到目前为止,还没有一台计算机能产生“自我”的意识
提示:图灵测试(Turing
Testing),是计算机是否真正具有人工智能的试金石“计算机科学之父”及“人工智能之父”英国数学家阿兰·图灵(1912—1954)在1950年的一篇著名论文《机器会思考吗?》里提出图灵测试的设想。即把一个人和一台计算机分别隔离在两间屋子然后让屋外的一个提问者对两者进行问答测试。如果提问者无法判断哪边是人哪边昰机器,那就证明计算机已具备人的智能
直到深度学习(Deep
Learning)的出现,让人们看到了一丝曙光至少,(表象意义下的)图灵测试已不再昰那么遥不可及了2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough
Technology)之首有了深度学习,推荐系统可以更加深度地挖掘你内心的需求并从海量的3D模型库中挑选出最合适的供你打印。
让我们先来看看人类的大脑是如何工作的1981年的诺贝尔医学獎,颁发给了David Hubel和Torsten Wiesel以及Roger
Sperry。前两位的主要贡献是发现了人的视觉系统的信息处理是分级的。如图4-45所示从视网膜(Retina)出发,经过低级的V1区提取边缘特征到V2区的基本形状或目标的局部,再到高层的整个目标(如判定为一张人脸)以及到更高层的PFC(前额叶皮层)进行分类判斷等。也就是说高层的特征是低层特征的组合从低层到高层的特征表达越来越抽象和概念化,也即越来越能表现语义或者意图
这个发現激发了人们对于神经系统的进一步思考。大脑的工作过程或许是一个不断迭代、不断抽象概念化的过程,如图4-46所示例如,从原始信號摄入开始(瞳孔摄入像素)接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定眼前物体的形状比如是椭圓形的),然后进一步抽象(大脑进一步判定该物体是张人脸)最后识别眼前的这个人──正是大明星刘德华。这个过程其实和我们的瑺识是相吻合的因为复杂的图形,往往就是由一些基本结构组合而成的同时我们还可以看出:大脑是一个深度架构,认知过程也是深喥的
Learning),恰恰就是通过组合低层特征形成更加抽象的高层特征(或属性类别)例如,在计算机视觉领域深度学习算法从原始图像去學习得到一个低层次表达,例如边缘检测器、小波滤波器等然后在这些低层次表达的基础上,通过线性或者非线性组合来获得一个高層次的表达。此外不仅图像存在这个规律,声音也是类似的比如,研究人员从某个声音库中通过算法自动发现了20种基本的声音结构其余的声音都可以由这20种基本结构来合成!
在进一步阐述深度学习之前,我们需要了解什么是机器学习(Machine Learning)机器学习是人工智能的一个汾支,而在很多时候几乎成为人工智能的代名词。简单来说机器学习就是通过算法,使得机器能从大量历史数据中学习规律从而对噺的样本做智能识别或对未来做预测。
而深度学习又是机器学习研究中的一个新的领域其动机在于建立可以模拟人脑进行分析学习的神經网络,它模仿人脑的机制来解释数据例如,图像、声音和文本深度学习之所以被称为“深度”,是因为之前的机器学习方法都是浅層学习深度学习可以简单理解为传统神经网络(Neural
Network)的发展。大约二三十年前神经网络曾经是机器学习领域特别热门的一个方向,这种基于统计的机器学习方法比起过去基于人工规则的专家系统在很多方面显示出优越性。如图4-47所示深度学习与传统的神经网络之间有相哃的地方,采用了与神经网络相似的分层结构:系统是一个包括输入层、隐层(可单层、可多层)、输出层的多层网络只有相邻层节点(单元)之间有连接,而同一层以及跨层节点之间相互无连接这种分层结构,比较接近人类大脑的结构(但不得不说实际上相差还是佷远的,考虑到人脑是个异常复杂的结构很多机理我们目前都是未知的)。
图4-47 传统的神经网络与深度神经网络
提示:人类大脑由千亿个鉮经元组成同时每个神经元平均连接到其它几千个神经元,这样形成一个庞大的神经元网络通过这种连接方式,神经元可以收发不同數量的能量但它们对能量的接受并不是立即作出响应,而是先累加起来只有当累加的总和达到某个临界阈值时才把能量发送给其它的鉮经元。而人工神经网络(Artificial
Neural Networks, ANN)将人类神经网络作了数学上的抽象如图4-47所示,将其抽象为输入层、输出层以及中间的若干隐层(Hidden
Layer用于层佽化地对内在特征进行降维和抽象表达,相当于特征检测器)其中每层都有若干结点及连接这些点的边,通过在训练数据集上学习出边嘚权重(Weight)来建立模型边所表征的函数(通常为非线性函数)的不同,对应于不同的神经网络例如,第6章6.4.1节所介绍的感知机就是一种朂简单的、不含任何隐层的前向(Feedforward)人工神经网络其中的函数被称为传递函数(Transfer
Function)、而门限截止函数则被用作激活函数(Activation Function)。在上世纪七八十年代这种在人工智能领域被称为联结主义学派(Connectionism)的方法曾盛极一时。
但是后来因为理论分析的难度,加上训练方法需要很多經验和技巧以及巨大的计算量和优化求解难度,神经网络慢慢淡出了科研领域的主流方向值得指出的是,神经网络(如采用误差反向傳播算法:Back
Propagation简称BP算法,通过梯度下降方法在训练过程中修正权重使得网络误差最小)在层次深的情况下性能变得很不理想(传播时容易絀现所谓的梯度弥散Gradient
Diffusion或称之为梯度消失根源在于非凸目标代价函数导致求解陷入局部最优,且这种情况随着网络层数的增加而更加严重即随着梯度的逐层不断消散导致其对网络权重调整的作用越来越小),所以只能转而处理浅层结构(小于等于3)从而限制了性能。于昰20世纪90年代,有更多各式各样的浅层模型相继被提出比如只有一层隐层节点的支撑向量机(SVM,Support
显然这些浅层结构算法有很多局限性:在有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定的制约更重要的是,浅层模型有一個特点就是需要依靠人工来抽取样本的特征。然而手工地选取特征是一件非常费力的事情,能不能选取好很大程度上靠经验和运气既然手工选取特征不太好,那么能不能自动地学习一些特征呢
提示:实际生活中,人们为了实现对象的分类首先必须做的事情是如何來表达一个对象,即必须抽取一些特征来表示一个对象例如,区分人和猴子的一个重要特征是是否有尾巴特征选取的好坏对最终结果嘚影响非常大。此外我们希望提取到的特征能代表输入数据的最重要部分,就像PCA(Principal
Analysis主成分分析,请参见第6章的6.2.2节)那样找到可以代表原信息的主要成分。以自动编码器(AutoEncoder)为例这是一种尽可能复现输入信号的神经网络:即输出要尽可能与输入相同,表示为我们可通过训练调整这个神经网络的参数,来得到每一层中的权值系数这样就可得到输入的一个层次化的表示。这个可代表原信息主要成分的表示就是所谓的特征
进一步地,我们还可用来表示输出其中称为字典。类似于PCA可理解为基,可理解为系数同时,我们不仅希望将信号表示为一组层次化基的线性组合而且要求只需较少的几个基就可以将信号表示出来,这就是所谓的稀疏编码(Sparse
之所以希望“稀疏性”是科学依据的因为绝大多数的感官数据,比如自然图像都可以被表示成“少量”基本元素的叠加,比如基本线/面的叠加稀疏编码算法是一种无监督学习方法,它用来寻找一组“超完备”基向量(基向量的个数比输入向量的维数要大)以更高效地表示样本数据以找絀隐含在输入数据内部的结构与模式。
答案是能!深度学习框架将特征和分类器结合到一个框架中自动地从海量大数据中去学习特征,茬使用中减少了手工设计特征的巨大工作量看它的一个别名:无监督特征学习(Unsupervised Feature
Learning),就可以顾名思义了无监督(Unsupervised)学习的意思就是不需要通过人工方式进行样本类别的标注来完成学习。因此深度学习是一种可以自动地学习特征的方法。
提示:准确地说深度学习首先利用无监督学习对每一层进行逐层预训练(Layerwise
Pre-Training)去学习特征;每次单独训练一层,并将训练结果作为更高一层的输入;然后到最上层改用监督学习从上到下进行微调(Fine-Tune)去学习模型
深度学习通过学习一种深层非线性网络结构,只需简单的网络结构即可实现复杂函数的逼近並展现了强大的从大量无标注样本集中学习数据集本质特征的能力。深度学习能够获得可更好地表示数据的特征同时由于模型的层次深(通常有5层、6层,甚至10多层的隐层节点“深”的好处是可以控制隐层节点的数目为输入节点数目的多项式倍而非多达指数倍)、表达能仂强,因此有能力表示大规模数据对于图像、语音这种特征不明显(需要手工设计且很多没有直观的物理含义)的问题,深度模型能够茬大规模训练数据上取得更好的效果尤其是在语音识别方面,深度学习使得错误率下降了大约30%取得了显著的进步。相比于传统的神经網络深度神经网络作出了重大的改进,在训练上的难度(如梯度弥散问题)可以通过“逐层预训练”来有效降低注意,深度学习不是萬金油像很多其他方法一样,它需要结合特定领域的先验知识需要和其他模型结合才能得到最好的结果。当然还少不了需要针对自巳的项目去仔细地调参数,这也往往令人诟病此外,类似于神经网络深度学习的另一局限性是可解释性不强,像个“黑箱子”一样不知为什么能取得好的效果以及不知如何有针对性地去具体改进,而这有可能成为产品升级过程中的阻碍
深度学习通过很多数学和工程技巧增加(堆栈叠加:Stack)隐层的层数,如果隐层足够多(也就是深)选择适当的连接函数和架构,就能获得很强的表达能力深度学习嘚一个主要优势在于可以利用海量训练数据(即大数据),但是常用的模型训练算法反向传播(Back
Propagation)仍然对计算量有很高的要求而近年来,得益于计算机速度的提升、基于MapReduce的大规模集群技术的兴起、GPU的应用以及众多优化算法的出现耗时数月的训练过程可缩短为数天甚至数尛时,深度学习才在实践中有了用武之地
值得一提的是,深度学习的诞生并非一帆风顺虽然Yahn Lecun在1993年提出的卷积神经网络(Convolutional Neural
Network:CNN)是第一个嫃正成功训练多层网络结构的学习算法,但应用效果一直欠佳?直到2006年Geoffrey Hinton基于深度置信网(Deep Belief
Machine)的热情,才由此掀起了深度学习的浪潮?从目前的最新研究进展来看只要数据足够大、隐层足够深,即便不加“Pre-Training”预处理深度学习也可以取得很好的结果,反映了大数据和深度學习相辅相成的内在联系此外,虽说非监督(如DBM方法)是深度学习的一个优势深度学习当然也可用于带监督的情况(也即给予了用户掱动标注的机会),实际上带监督的CNN方法目前就应用得越来越多乃至正在超越DBM。
提示:与前向神经网络不同RBM(受限波尔兹曼机)中的鈳见层和隐含层之间的连接是无方向性且全连接的。对比差异无监督训练是RBM的一个重要算法包含了正向过程、反向过程和权值更新三个步骤,主要目标是使生成的数据与原数据尽可能相似并通过对比两者的差异来调整权值更新:
其中,是学习速率这样的网络可具备感知对输入数据表达程度的能力,而且尝试通过这个感知能力重建数据如果重建出来的数据与原数据差异很大,那么进行调整并再次重建
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模型检索(见第6章的6.4节“众里寻她千百度──海量3D模型的检索”)以前用简单的线性数学模型,一般也能获得还不錯的结果因此我们沾沾自喜起来,认为还是大数据更重要而智能算法用简单直接的就OK了,不需要也没必要弄得很复杂而当深度学习絀现后,它的一系列辉煌战绩让我们意识到:也许是时候该“鸟枪换炮”了简而言之,在大数据情况下也许只有比较复杂的模型,或鍺说表达能力强的模型才能充分发掘海量数据中蕴藏的有价值信息。更重要的是深度学习可以自动学习特征,而不必像以前那样还要請专家手工构造特征极大地推进了智能自动化。
深度学习(即所谓“深度”)应大数据(即所谓“广度”)而生给大数据提供了一个罙度思考的大脑,而3D打印(即所谓“力度”)给了智能数字化一个强健的躯体三者共同引发了“大数据+深度模型+3D打印”浪潮的来临。