老司机这样讲深度学习,新手才能看得懂学得快

2017-06-07 张玉宏公众号
分享到:

(一)一入侯门“深”似海,深度学习深几许
QQ截图20170606215858

【导言】目前人工智能非常火爆,而深度学习则是引领这一火爆现场的“火箭”。于是,有关“深度学习”的论文、书籍和网络博客汗牛充栋,但大多数这类文章都具备“高不成低不就”的特征。对于高手来说,自然是没有问题,他们本身已经具备非常“深度”的学习能力,如果他们想学习有关深度学习的技术,直接找来最新的研究论文阅读就好了。但是,对于低手(初学者)而言,就没有那么容易了,因为他们基础相对薄弱,通常看不太懂。

于是,我们推出深度学习的入门系列。在这个系列文章中,我们力图用最为通俗易懂、图文并茂的方式,带你入门深度学习。我们都知道,高手从来都是自学出来的。所以,这个深度学习的入门系列,能带给你的是“从入门到精通”,还是“从入门到放弃”,一切都取决你个人的认知。成就你自己的,永远都是你自己,是吧?

好了,言归正传,下面开始我们的正题。

1.1 什么是学习?

说到深度学习,我们首先需要知道,什么是学习。

著名学者赫伯特·西蒙教授(Herbert Simon,1975年图灵奖获得者、1978年诺贝尔经济学奖获得者)曾对“学习”给了一个定义:“如果一个系统,能够通过执行某个过程,就此改进了它的性能,那么这个过程就是学习”。

大牛就是大牛,永远都是那么言简意赅,一针见血。从西蒙教授的观点可以看出,学习的核心目的,就是改善性能。

其实对于人而言,这个定义也是适用的。比如,我们现在正在学习“深度学习”的知识,其本质目的就是为了“提升”自己在机器学习上的认知水平。如果我们仅仅是低层次的重复性学习,而没有达到认知升级的目的,那么即使表面看起来非常勤奋,其实我们也仅仅是个“伪学习者”, 因为我们没有改善性能。

1.2 什么是机器学习?

遵循西蒙教授的观点,对于计算机系统而言,通过运用数据及某种特定的方法(比如统计的方法或推理的方法),来提升机器系统的性能,就是机器学习。

英雄所见略同。卡内基梅隆大学的Tom Mitchell教授,在他的名作《机器学习》一书中,也给出了更为具体(其实也很抽象)的定义[1]:

对于某类任务(Task,简称T)和某项性能评价准则(Performance,简称P),如果一个计算机程序在T上,以P作为性能的度量,随着很多经验(Experience,简称E)不断自我完善,那么我们称这个计算机程序在从经验E中学习了。

比如说,对于学习围棋的程序AlphaGo,它可以通过和自己下棋获取经验,那么它的任务T就是“参与围棋对弈”;它的性能P就是用“赢得比赛的百分比”来度量。“类似地,学生的任务T就是“上课看书写作业”;它的性能P就是用“期末成绩”来度量”。因此,Mitchell教授认为,对于一个学习问题,我们需要明确三个特征:任务的类型,衡量任务性能提升的标准以及获取经验的来源。

1.3 学习的4个象限

在前面的文章中[2],我们已提到,一般说来,人类的知识在两个维度上可分成四类(见图1)。即从可统计与否上来看,可分为:是可统计的和不可统计的。从能否推理上看,可分为可推理的和不可推理的。
QQ截图20170606220050

图1  人类知识的4个象限

在横向方向上,对于可推理的,我们都可以通过机器学习的方法,最终可以完成这个推理。传统的机器学习方法,就是试图找到可举一反三的方法,向可推理但不可统计的象限进发(象限Ⅱ)。目前看来,这个象限的研究工作(即基于推理的机器学习)陷入了不温不火的境地,能不能峰回路转,还有待时间的检验。

而在纵向上,对于可统计的、但不可推理的(即象限Ⅲ),可通过神经网络这种特定的机器学习方法,以期望达到性能提升的目的。目前,基于深度学习的棋类博弈(阿尔法狗)、计算机视觉(猫狗识别)、自动驾驶等等,其实都是在这个象限做出了了不起的成就。

从图1可知,深度学习属于统计学习的范畴。用李航博士的话来说,统计机器学习的对象,其实就是数据[3]。这是因为,对于计算机系统而言,所有的“经验”都是以数据的形式存在的。作为学习的对象,数据的类型是多样的,可以是各种数字、文字、图像、音频、视频,也可以是它们的各种组合。

统计机器学习,就是从数据出发,提取数据的特征(由谁来提取,是个大是大非问题,下面将给予介绍),抽象出数据的模型,发现数据中的知识,最后又回到数据的分析与预测当中去。

1.4 机器学习的方法论

这里稍早说明的一点的是,在深度学习中,经常有“end-to-end(端到端)”学习的提法,与之相对应的传统机器学习是“Divide and Conquer(分而治之)”。这些都是什么意思呢?

“end-to-end”(端到端)说的是,输入的是原始数据(始端),然后输出的直接就是最终目标(末端),中间过程不可知,因此也难以知。比如说,基于深度学习的图像识别系统,输入端是图片的像素数据,而输出端直接就是或猫或狗的判定。这个端到端就是:像素-->判定。

再比如说,“end-to-end”的自动驾驶系统[4],输入的是前置摄像头的视频信号(其实也就是像素),而输出的直接就是控制车辆行驶指令(方向盘的旋转角度)。这个端到端就是:像素-->指令。

就此,有人批评深度学习就是一个黑箱(Black Box)系统,其性能很好,却不知道为何而好,也就是说,缺乏解释性。其实,这是由于深度学习所处的知识象限决定的。从图1可以看出,深度学习,在本质上,属于可统计不可推理的范畴。“可统计”是很容易理解的,就是说,对于同类数据,它具有一定的统计规律,这是一切统计学习的基本假设。那“不可推理”又是什么概念?其实就是“剪不断、理还乱”的非线性状态了。
QQ截图20170606220056

图2  1个人+1个人1=?

在哲学上讲,这种非线性状态,是具备了整体性的“复杂系统”,属于复杂性科学范畴。复杂性科学认为,构成复杂系统的各个要素,自成体系,但阡陌纵横,其内部结构难以分割。简单来说,对于复杂系统,1+1≠2,也就是说,一个简单系统,加上另外一个简单系统,其效果绝不是两个系统的简单累加效应,而可能是大于部分之和。因此,我们必须从整体上认识这样的复杂系统。于是,在认知上,就有了从一个系统或状态(end)直接整体变迁到另外一个系统或状态(end)的形态。这就是深度学习背后的方法论。

与之对应的是“Divide and Conquer(分而治之)”,其理念正好相反,在哲学它属于“还原主义(reductionism,或称还原论)”。在这种方法论中,有一种“追本溯源”的蕴意包含其内,即一个系统(或理论)无论多复杂,都可以分解、分解、再分解,直到能够还原到逻辑原点。

在意象上,还原主义就是“1+1=2”,也就是说,一个复杂的系统,都可以由简单的系统简单叠加而成(可以理解为线性系统),如果各个简单系统的问题解决了,那么整体的问题也就得以解决。比如说,很多的经典力学问题,不论形式有多复杂,通过不断的分解和还原,最后都可以通过牛顿的三大定律得以解决。

经典机器学习(位于第Ⅱ象限),在哲学上,在某种程度上,就可归属于还原主义。传统的机器学习方式,通常是用人类的先验知识,把原始数据预处理成各种特征(feature),然后对特征进行分类。

然而,这种分类的效果,高度取决于特征选取的好坏。传统的机器学习专家们,把大部分时间都花在如何寻找更加合适的特征上。因此,早期的机器学习专家们非常苦逼,故此,传统的机器学习,其实可以有个更合适的称呼——特征工程(feature engineering)。

但这种苦逼,也是有好处的。这是因为,这些特征是由人找出来的,自然也就为人所能理解,性能好坏,机器学习专家们可以“冷暖自知”,灵活调整。

1.5 什么是深度学习?

再后来,机器学习的专家们发现,可以让神经网络自己学习如何抓取数据的特征,这种学习的方式,效果更佳。于是兴起了特征表示学习(feature representation learning)的风潮。这种学习方式,对数据的拟合也更加的灵活好用。于是,人们终于从自寻“特征”的苦逼生活中解脱出来。

但这种解脱也付出了代价,那就是机器自己学习出来的特征,它们存在于机器空间,完全超越了人类理解的范畴,对人而言,这就是一个黑盒世界。为了让神经网络的学习性能,表现得更好一些,人们只能依据经验,不断地尝试性地进行大量重复的网络参数调整,同样是“苦不堪言”。于是,“人工智能”领域就有这样的调侃:“有多少人工,就有多少智能”。

因此,你可以看到,在这个世界上,存在着一个“麻烦守恒定律”:麻烦不会减少,只会转移。

再后来,网络进一步加深,出现了多层次的“表示学习”,它把学习的性能提升到另一个高度。这种学习的层次多了,其实也就是套路“深了”。于是,人们就给它取了个特别的名称——Deep Learning(深度学习)。

深度学习的学习对象同样是数据。与传统机器学习所不同的是,它需要大量的数据,也就是“大数据(Big Data)”。

有一个观点,在工业界一度很流行,那就是在大数据条件下,简单的学习模型会比复杂模型更加有效。而简单的模型,最后会趋向于无模型,也就是无理论。例如,早在2008年,美国 《连线》(Wired)杂志主编克里斯﹒安德森(Chris Anderson)就曾发出“理论的终结(The End of Theory)”的惊人断言[5]:“海量数据已经让科学方法成为过去时(The Data Deluge Makes the Scientific Method Obsolete)”。

但地平线机器人创始人(前百度深度学习研究院副院长)余凯先生认为[6],深度学习的惊人进展,是时候促使我们要重新思考这个观点了。也就是说,他认为“大数据+复杂模型”或许能更好地提升学习系统的性能。

1.6 “恋爱”中的深度学习

法国科技哲学家伯纳德﹒斯蒂格勒(Bernard Stiegler)认为,人们以自己的技术和各种物化的工具,作为自己“额外”的器官,不断的成就自己。按照这个观点,其实,在很多场景下,计算机都是人类思维的一种物化形式。换句话说,计算机的思维(比如说各种电子算法),都能找到人类生活实践的影子。

比如说,现在火热的深度学习,与人们的恋爱过程也有相通之处。在知乎上,就有人(jacky yang)以恋爱为例来说明深度学习的思想,倒也非常传神。我们知道,男女恋爱大致可分为三个阶段:

第一阶段初恋期,相当于深度学习的输入层。妹子吸引你,肯定是有很多因素,比如说脸蛋、身高、身材、性格、学历等等,这些都是输入层的参数。对不同喜好的人,他们对输出结果的期望是不同的,自然他们对这些参数设置的权重也是不一样的。比如,有些人是奔着结婚去的,那么他们对妹子的性格可能给予更高的权重。否则,脸蛋的权重可能会更高。

QQ截图20170606220103
图3 恋爱中的深度学习

第二阶段热恋期,对应于深度学习的隐藏层。在这个期间,恋爱双方都要经历各种历练和磨合。清朝湖南湘潭人张灿写了一首七绝:

书画琴棋诗酒花,当年件件不离他。
而今七事都更变,柴米油盐酱醋茶。

这首诗说的就是,在过日子的洗礼中,各种生活琐事的变迁。恋爱是过日子的一部分,其实也是如此,也需要双方不断磨合。这种磨合中的权重取舍平衡,就相等于深度学习中隐藏层的参数调整,它们需要不断地训练和修正!恋爱双方相处,磨合是非常重要的。要怎么磨合呢?光说“520(我爱你)”,是廉价的。这就给我们程序猿(媛)提个醒,爱她(他),就要多陪陪她(他)。陪陪她(他),就增加了参数调整的机会。参数调整得好,输出的结果才能是你想要的。

第三阶段稳定期,自然相当于深度学习的输出层。输出结果是否合适,是否达到预期,高度取决于“隐藏层”的参数 “磨合”得怎么样。

1.7 小结

在本小节,我们回顾了“机器学习”的核心要素,那就是通过对数据运用,依据统计或推理的方法,让计算机系统的性能得到提升。而深度学习,则是把由人工选取对象特征,变更为通过神经网络自己选取特征,为了提升学习的性能,神经网络的表示学习的层次较多(较深)。

以上仅仅给出机器学习和深度学习的概念性描述,在下一个小结中,我们将给出机器学习的形式化表示,传统机器学习和深度学习的不同之处在哪里,以及到底什么是神经网络等。

1.8 请你思考

(1)在大数据时代,你是赞同科技编辑出生的克里斯﹒安德森的观点呢(仅需简单模型甚至无模型),还是更认可工业界大神余凯先生的观点呢(还是需要复杂模型)?为什么?

(2)你认为用“恋爱”的例子比拟“深度学习”贴切吗?为什么?

(3)为什么非要用“深度”学习,“浅度”不行吗?


(二)人工“碳”索意犹尽,智能“硅”来未可知


在前面的小节中,我们仅仅泛泛而谈了机器学习、深度学习等概念,在这一小节,我们将给出它的更加准确的形式化描述。

我们经常听到人工智能如何如何?深度学习怎样怎样?那么它们之间有什么关系呢?在本小节,我们首先从宏观上谈谈人工智能的“江湖定位”和深度学习的归属。然后再在微观上聊聊机器学习的数学本质是什么?以及我们为什么要用神经网络?

2.1 人工智能的“江湖定位”

宏观上来看, 人类科学和技术的发展,大致都遵循着这样的规律:现象观察、理论提取和人工模拟(或重现)。 人类“观察大脑”的历史由来已久,但由于对大脑缺乏“深入认识”,常常“绞尽脑汁”,也难以“重现大脑”。

直到上个世纪40年代以后,脑科学、神经科学、心理学及计算机科学等众多学科,取得了一系列重要进展,使得人们对大脑的认识相对“深入”,从而为科研人员从“观察大脑”到“重现大脑”搭起了桥梁,哪怕这个桥梁到现在还仅仅是个并不坚固的浮桥。

QQ截图20170606220109
图1 人工智能的本质

而所谓的“重现大脑”,在某种程度上,就是目前的研究热点——人工智能。简单来讲,人工智能就是为机器赋予人类的智能。由于目前的机器核心部件是由晶体硅构成,所以可称之为“硅基大脑”。而人类的大脑主要由碳水化合物构成,因此可称之为“碳基大脑”。

那么, 现在的人工智能,通俗来讲,大致就是用“硅基大脑”模拟或重现“碳基大脑”。 那么,在未来会不会出现“碳硅合一”的大脑或者全面超越人脑的“硅基大脑”呢?

有人就认为,在很大程度上,这个答案可能是“会的”!比如说,未来预言大师雷·库兹韦尔(Ray Kurzweil)就预测,到2045年,人类的“奇点”时刻就会临近[1] 。这里的“奇点”是指,人类与其他物种(物体)的相互融合,更确切来说,是硅基智能与碳基智能兼容的那个奇妙时刻。

2.2 深度学习的归属

在当下,虽然深度学习领跑人工智能。但事实上,人工智能研究领域很广,包括机器学习、计算机视觉、专家系统、规划与推理、语音识别、自然语音处理和机器人等。而机器学习又包括深度学习、监督学习、无监督学习等。简单来讲,机器学习是实现人工智能的一种方法,而深度学习仅仅是实现机器学习的一种技术而已(如图1所示)。
QQ截图20170606220119

图2 深度学习的“江湖地位”

需要说明的是,对人工智能做任何形式的划分,都可能是有缺陷的。在图2中,人工智能的各类技术分支,彼此泾渭分明,但实际上,它们之间却可能阡陌纵横,比如说深度学习是无监督的。语音识别可以用深度学习的方法来完成。再比如说,图像识别、机器视觉更是当前深度学习的拿手好戏。

一言蔽之, 人工智能的分支并不是一个有序的树,而是一个彼此缠绕的灌木丛。 有时候,一个分藤蔓比另一个分藤蔓生长得快,并且处于显要地位,那么它就是当时的研究热点。深度学习的前生——神经网络的发展,就是这样的几起几落。当下,深度学习如日中天,但会不会也有“虎落平阳被犬欺”的一天呢?从事物的发展规律来看,这一天肯定会到来!

在图2中,既然我们把深度学习和传统的监督学习和无监督学习单列出来,自然是有一定道理的。这就是因为,深度学习是高度数据依赖型的算法,它的性能通常随着数据量的增加而不断增强,也就是说它的可扩展性(Scalability)显著优于传统的机器学习算法(如图3所示)。
QQ截图20170606220125
图3  深度学习和传统学习算法的区别

但如果训练数据比较少,深度学习的性能并不见得就比传统机器学习好。其潜在的原因在于,作为复杂系统代表的深度学习算法,只有数据量足够多,才能通过训练,在深度神经网络中,“恰如其分”地将把蕴含于数据之中的复杂模式表征出来。
QQ截图20170606220131
不论机器学习,还是它的特例深度学习,在大致上,都存在两个层面的分析(如图4所示):

图4  机器学习的两层作用

(1)面向过去(对收集到的历史数据,用作训练),发现潜藏在数据之下的模式,我们称之为描述性分析(Descriptive Analysis);

(2)面向未来,基于已经构建的模型,对于新输入数据对象实施预测,我们称之为预测性分析(Predictive Analysis)。

前者主要使用了“归纳”,而后者更侧重于“演绎”。对历史对象的归纳,可以让人们获得新洞察、新知识,而对新对象实施演绎和预测,可以使机器更加智能,或者说让机器的某些性能得以提高。二者相辅相成,均不可或缺。

在前面的部分,我们给予机器学习的概念性描述,下面我们给出机器学习的形式化定义。

2.3.机器学习的形式化定义

在《未来简史》一书中[2],尤瓦尔•赫拉利说,根据数据主义的观点,人工智能实际上就是找到一种高效的“电子算法”,用以代替或在某项指标上超越人类的“生物算法”。那么,任何一个“电子算法”都要实现一定的功能(Function),才有意义。

在计算机术语中,中文将“Function”翻译成“函数”,这个多少有点扯淡,因为它的翻译并没有达到“信达雅”的标准,除了给我们留下一个抽象的概念之外,什么也没有剩下来。但这一称呼已被广为接受,我们也只能“约定俗成”地把“功能”叫做“函数”了。

根据台湾大学李宏毅博士的说法,所谓机器学习,在形式上,可近似等同于在数据对象中,通过统计或推理的方法,寻找一个适用特定输入和预期输出功能函数(如图5所示)。习惯上,我们把输入变量写作大写的X ,而把输出变量写作大写的Y 。那么所谓的机器学习,在形式上,就是完成如下变换:Y= f(X) 。
QQ截图20170606220137
图5  机器学习近似等同于找一个好用的函数

在这样的函数中,针对语音识别功能,如果输入一个音频信号X,那么这个函数Y就能输出诸如“你好”,“How are you?”等这类识别信息。

针对图片识别功能,如果输入的是一个图片X,在这个函数Y的加工下,就能输出(或称识别出)一个猫或狗的判定。

针对下棋博弈功能,如果输入的是一个围棋的棋谱局势(比如AlphaGO)X,那么Y能输出这个围棋的下一步“最佳”走法。

类似地,对于具备智能交互功能的系统(比如微软的小冰),当我们给这个函数X输入诸如“How are you?”,那么Y就能输出诸如“I am fine,thank you?”等智能的回应。

每个具体的输入,都是一个实例(instance),它通常由特征空间(feature vector)构成。在这里,所有特征向量存在的空间称为特征空间(feature space),特征空间的每一个维度,对应于实例的一个特征。

但问题来了,这样“好用的”函数并不那么好找。当输入一个猫的图像后,这个函数并不一定就能输出它就是一只猫,可能它会错误地输出为一条狗或一条蛇。

这样一来,我们就需要构建一个评估体系,来辨别函数的好坏(Goodness)。当然,这中间自然需要训练数据(training data)来“培养”函数的好品质(如图6所示)。在第一小节中,我们提到,学习的核心就是性能改善,在图6中,通过训练数据,我们把f1改善为f2的样子,性能(判定的准确度)得以改善了,这就是学习!很自然,这个学习过程如果是在机器上完成的,那就是“机器学习”了。

QQ截图20170606220142
图6  机器学习的三步走

具体说来,机器学习要想做得好,需要走好三大步:

(1) 如何找一系列函数来实现预期的功能,这是建模问题。

(2) 如何找出一组合理的评价标准,来评估函数的好坏,这是评价问题。

(3) 如何快速找到性能最佳的函数,这是优化问题(比如说,机器学习中梯度下降法干的就是这个活)。

2.4 为什么要用神经网络?

我们知道,深度学习的概念源于人工神经网络的研究。含多隐层的多层感知机就是一种深度学习结构。所以说到深度学习,就不能不提神经网络。

那么什么是神经网络呢?有关神经网络的定义有很多。这里我们给出芬兰计算机科学家Teuvo Kohonen的定义(这老爷子以提出“自组织神经网络”而名扬人工智能领域):“神经网络,是一种由具有自适应性的简单单元构成的广泛并行互联的网络,它的组织结构能够模拟生物神经系统对真实世界所作出的交互反应。”

在机器学习中,我们常常提到“神经网络”,实际上是指“神经网络学习”。学习是大事,不可忘记!

那为什么我们要用神经网络学习呢?这个原因说起来,有点“情非得已”。

我们知道,在人工智能领域,有两大主流门派。

第一个门派是符号主义。符号主义的理念是,知识是信息的一种表达形式,人工智能的核心任务,就是处理好知识表示、知识推理和知识运用。这个门派核心方法论是,自顶向下设计规则,然后通过各种推理,逐步解决问题。很多人工智能的先驱(比如CMU的赫伯特•西蒙)和逻辑学家,很喜欢这种方法。但这个门派的发展,目前看来并不太好。未来会不会“峰回路转”,现在还不好说。

还有一个门派,就是试图编写一个通用模型,然后通过数据训练,不断改善模型中的参数,直到输出的结果符合预期,这个门派就是连接主义。连接主义认为,人的思维就是某些神经元的组合。因此,可以在网络层次上模拟人的认知功能,用人脑的并行处理模式,来表征认知过程。这种受神经科学的启发的网络,被称之人工神经网络(Artificial Neural Network,简称ANN)。目前,这个网络的升级版,就是目前非常流行的深度学习。

前面我们提到,机器学习在本质就是寻找一个好用的函数。而人工神经网络最“牛逼”的地方在于,它可以在理论上证明:只需一个包含足够多神经元的隐藏层,多层前馈网络能以任意精度逼近任意复杂度的连续函数[4]。这个定理也被称之为通用近似定理(Universal Approximation Theorem)。这里的“Universal”,也有人将其翻译成“万能的”,由此可见,这个定理的能量有多大。换句话说,神经网络可在理论上解决任何问题,这就是目前深度学习能够“牛逼哄哄”最底层的逻辑(当然,大数据+大计算也功不可没,后面还会继续讨论)。

2.5 小结

在本小节中,我们首先谈了谈人工智能的“江湖定位”,然后指出深度学习仅仅是人工智能研究的很小的一个分支,接着我们给出了机器学习的形式化定义。最后我们回答了为什么人工神经网络能“风起云涌”,简单来说,在理论上可以证明,它能以任意精度逼近任意形式的连续函数,而机器学习的本质,不就是要找到一个好用的函数嘛?

在下小节,我们将深度解读什么是激活函数,什么是卷积?(很多教科书真是越讲越糊涂,希望你看到下一小节,能有所收获)

2.6 请你思考

学完前面的知识,请你思考如下问题(掌握思辨能力,好像比知识本身更重要):

(1)你认可库兹韦尔“到2045年人类的奇点时刻就会临近”的观点吗?为什么?库兹韦尔的预测,属于科学的范畴吗?(提示:可以从波普尔的科学评判的标准——是否具备可证伪性分来析。)

(2)深度学习的性能,高度依赖性于训练数据量的大小?这个特性是好还是坏?(提示:在《圣经》中有七宗原罪,其中一宗罪就是暴食,而原罪就是“deadly sin”,即死罪。目前,深度学习贪吃数据和能量,能得以改善吗?)


×
官方微信