1
本文作者: 奕欣 | 2017-03-11 11:05 |
雷锋网[AI科技评论]按:本文根据王立威教授在中国人工智能学会AIDL第二期人工智能前沿讲习班*机器学习前沿所作报告《机器学习理论:回顾与展望》编辑整理而来,雷锋网在未改变原意的基础上略作了删减。
王立威
王立威,在北京大学教授主要研究领域为机器学习。在包括COLT, NIPS,JMLR, PAMI等权威会议期刊发表论文60余篇。2010年入选 AI’s 10 to Watch,是首位获得该奖项的亚洲学者。2012年获得首届国家自然科学基金优秀青年基金,新世纪优秀人才。任 NIPS 等权威会议 Area Chair,和多家学术期刊编委。以下为王立威教授所做的现场演讲的第一部分,主要覆盖了机器学习理论的内容。
各位老师,同学们,下午好!非常高兴今天能有机会和大家进行分享,也特别感谢周志华老师对机器学习理论做了一个非常精辟的简介。今天我报告的题目是「机器学习的回顾和展望」。
刚才周老师也提到,机器学习理论的目的是建立一个比较纲领性的认识。大家拿到的 PPT 里面有很多数学细节,既然大家已经有打印的版本,所以我就不花过多的时间讲数学细节,我把主要的时间花在介绍机器学习技术性的内容、最后的一些结论可以对你产生什么启发,也就是一些思想上的东西。
那么言归正传。
大家都知道,在过去几年当中,机器学习最成功的、影响最大的理论毫无疑问是深度学习。深度学习到目前为止,在很多地方发挥了作用,也取得了很多的成功。那么大家不禁要问一个问题了:深度学习现在很成功了,而且大家可能都知道,深度学习到目前为止没有什么机器学习的理论,或者说几乎就没有理论,在这个时点上,我们为什么还要思考理论?所以,我今天想谈一下我个人的观点。
其实机器学习这个领域很有趣,如果大家回顾一下它过去大概 30 多年的发展历史,大家会发现,机器学习里面非常重要的一些算法,除了深度学习以外,其他的一些重要算法,比如说大家耳熟能详的 SVM、boosting,还有 Random Forest 等,几乎全是由做学习理论的人提出来的,而不是由做纯应用的人提出来的。到目前为止,只有 Deep Learning(深度学习)是一个例外,而像报告里会提到的 SVM,是由前苏联的概率学家、机器学习理论的先驱 V.Vapnik 提出来的;而 Random Forest 也得益于统计学家 Leo Breiman 的贡献。如果我们把这个时间点拉长一点,大家可以看到,理论的学习其实对算法的设计研究是有着极其重要的影响的。
我们再来看一看深度学习。现在有很多关于深度学习的观点,比如我的一些同事朋友跟我讲,国外一些做深度学习应用方面特别前沿的人,说(理论)在深度学习的时代毫无用处,因为你们理论通常是一些不等式,比如算法设计出来之后,理论会告诉你这个算法的准确度或者说错误率的上界,但通常这个得出来的数值奇大无比,他们还做了一个比较形象的比喻,说就好比证明一只鸡的体重一定要小于一吨一样,这种说法其实是蛮多的。
我想通过今天和大家的分享,谈一谈我的观点,就是说机器学习理论究竟是做什么来用的,它是不是只是为了证明这个界(bound),为了说明算法在实际应用的错误率能小于多少,还是说它在传达一些更高层的信息。我个人的观点是,机器学习理论是后者,绝对不是为了证明一个算法的边界如何;机器学习理论的目的,在于提供对机器学习的问题的洞察和理解。
第二点,很多人会有这样的观点,我们现在是一个大数据时代,像 ImageNet 这样的数据库资源有上千万。在过去,做机器学习理论的研究者可能处理的都是小数据集,也许理论还有一定的价值,但是今天我们做的都是动辄上千万的数据,是不是我们根本就完全不需要机器学习理论呢?
我给大家提一个问题,一千万个数据就真的是大数据吗?我个人认为是小的数据,而且是非常非常小的。为什么呢?今天上千万的数据几乎都出现在视觉这个领域,人或者其他一些高等动物的视觉,经过多长的时间才形成这样的一个神经网络,能够以极快的速度去视觉感知、认知。这个长度是以亿年为单位,在亿年这样的进化过程当中,每一个时点都是生物以整体的角度在学习和进化,如果你从这个进化的角度来考虑,我们把进化看作一个学习的过程,这不是我提出来的理论,这是图灵奖得主 Leslie Valiant 提出来的。所以大家这么考虑,如果整个的生物群体经历上亿年的进化过程,接触到的数据是什么量级,我认为比千千万不知道要增加多少个零,所以我们今天的数据是非常小的数据。
那么,我们今天的神经网络和生物的进化以亿万年的进化得到的数据有多大的不同?我给大家举一个例子。大家知道人脑或很多高等动物的大脑也是由神经元组成的,比如说人脑有着 10 的 11 次方的神经元,大概 10 的 14 到 15 次方的连接。我个人认为动物的神经网络和机器神经网络的最大不同在哪儿呢?
一个是在于结构,第二在于速度,第三在于运行机制。结构我刚刚讲了一点,在于容量不同,下面我谈一点很显著的区别就是速度。人脑中神经元的种类非常多,现在已知的就有上千种,当然我们可以考虑其中非常主流的一些神经元,对于这样的神经元,大家知道神经元和神经元之间信息的传递是靠一些生物电信号,实际上是化学物质的传递。在人或动物的大脑中,信息从一个神经元传递到相邻的神经元所需要的时间,大家知道是一个什么量级吗?是几十毫秒的量级。几十毫秒什么概念?比如说你突然看到一个场景、一幅图像,你马上就有一个反应,这个反应的时间肯定是在 1 秒钟之内。如果你的整个反应是在 1 秒钟之内,这意味着信息在你大脑的神经网络中传递的深度至多是多少,如果你这个大脑中从一个神经元到达下一层神经元传递的速度是几十毫秒的话,这意味着你大脑处理视觉信息所用的神经网络的深度至多就是几十层,如果你的大脑反应过来,可能已经过去将近 10 秒钟了。所以大家要意识到,我们今天所训练的最最先进的神经网络,和人脑中的、动物大脑中的神经网络依然是截然不同的。两者不一样的地方其实远远大于他们相似的地方。
再举一个比较典型的例子,我们今天的神经网络,实际上都是用计算机模拟出来的,并不是一个真正的硬件。我们在计算机上进行模拟,认为层与层之间的信息的传递完全是同步的,必须上一层的信息全部同时传递到下一层的神经元才能够进行处理。在人脑中没有这样的同步控制信号,所以人脑中的神经元完全是高度分布式的一种计算,所以这就是一个重大的不同。所以今天我们深度学习所用的神经网络,即使从生物、从仿生的角度来讲,其实跟真正的生物依然差别很大。所以要想深度理解,必须有一个很基础的理论。当然我们也要面对现实,机器学习这个领域过去发展了几十年,所建立起来的机器学习的过去经典的理论,比如 SVM 等等这一系列的方法,它对于今天的深度学习确实没有非常好的解释或者说认知,但是这也正是一个很好的机会、一个挑战:我们应该如何建立一个新的理论去认知深度学习?根本目的是,我们能不能够将来设计出更加有效的方法?给大家举一个例子,人脑以这么慢的信息传递速度,其实在很多很多的问题上要比今天的深度学习训练出来的网络效果要好得多,如果我们要能够基于这些理论设计出类似于我刚才讲的人脑的一些方法,岂不是要比今天的深度学习的性能要提高百千万倍?
接下来,我们就开始进入具体的内容。
首先,我们来看看机器学习理论最核心的一个观点就是 generalization(泛化)。谈泛化之前,我们先了解一下机器学习理论是做什么的。机器学习理论是为了给整个机器学习建立完整的框架,所以必须要有很严谨的形式。概括来说,机器学习理论是建立在概率统计的基本理论框架之上。它研究的核心问题在于,如果要实现一个具体的学习任务,需要多少资源能达到这个目的。而在机器学习中,很重要的资源就是数据,所以我们就是要研究究竟需要多少数据我才能够学好。当然如果在数据已经给定的前提下,不同的方法规定了相同的数据,机器学习的成果是不一样的,所以也可以表示出来。
这是机器学习理论的一个基本框架:我们要通过收集数据来学习出一个模型,拿到这个模型以后我们根本的任务是做预测,这个预测是在未知的数据上去做的,所以一个很关键的问题是,我们的目的是希望在未知数据上学出来的模型能够表现出很好的性质,而不仅仅局限在我们已经收集到的数据。
虽然大家通常认为机器学习是过去几十年发展出来的一个学科,但是我个人认为,其实机器学习一直伴随着人类文明的发展。从人类真正有文明、有科学那天,就有机器学习。我给大家举几个例子:
第一个,「胡克定律」,我相信各位肯定都接触过这个中学物理问题,这个定律是探讨拉伸的力和弹簧伸长的长度是什么样的物理关系。如果我们站在胡克的角度,这是一个什么过程?我认为这是一个非常典型的机器学习过程。胡克做的第一步是收集数据。他拿一个弹簧做了很多次实验,根据每一次伸长的距离记录拉力,并将数据记录在一个表上。第二步,胡克(当然是用他的脑子,不是用计算机)学会了一个模型。他最后得出的结论是,这是一个线性的模型。再之后胡克拿了一些新的弹簧,再把它做拉伸,是否还符合这个模型。所以胡克发现「胡克定律」,就是一个非常典型的机器学习的过程:收集数据、建模、做出预测。机器学习的这种思想一直在科学领域不断应用。
有一个问题,为什么胡克会学到一个线性的模型?大家看到这个线性模型,其实他的观测数据上有很多的误差的。比如说胡克做了 100 次实验,得到 100 个点,他为什么不找一个曲线恰好能够通过这 100 个点,使得训练数据上没有误差?比如说我们很容易找到一个 99 阶的多项式,而使得这 100 个点被零误差地覆盖,所以大家要思考一下:胡克为什么能够得到这样一个结果,而不是一个复杂的曲线,里面最本质的思想是什么,大家体会一下。
当然也有人质疑,认为「胡克定律」在物理学上没有任何的地位,不是一个什么了不起的定律,大家看一看「开普勒定律」,这是了不起的贡献。「开普勒定律」讲的是什么?开普勒通过研究过去上千年天文学积累的数据,最后发现三个规律。举一个例子,说行星围绕太阳转动,实际轨迹是一个椭圆,他找到这个椭圆实际上不是精确吻合了这些数据,只是近似吻合,他为什么不找一个复杂的曲线完全吻合这个数据?开普勒在归纳这个数学规律的时候,背后也有一些非常奇妙的思想,并不是简简单单的观测这个数据。最后我们来看一看机器学习里经常见到的,学习一个分类器,我们可以用一个很简单的分类器,用光滑的曲线来表示,我也可以用一个非常复杂的分类器,用弯弯曲曲的线来表示。当大家观察到这幅图的时候,你觉得应该是简单的曲线,但是有一些分类误差比较好呢,还是复杂曲线,对于观测到的数据没有误差更好呢?
我们来总结一下刚才几个例子里面,其实在通过学习模型和数据的时候,物理学家或者机器学习的学者是怎么样思考的,其实这早在 13 世纪威廉姆·奥卡姆就提出了一个哲学思想(奥卡姆剃刀理论),是用拉丁文写的。其实我对他的解释应该有一位更著名的科学家,有一段更著名的话,是对这句话进行最完美的解释「Everything should be made as simple as possible but no simpler」,这句话是爱因斯坦说的,意思是做理论的时候一定要尽可能的简单,但是你又不能过于简单。对应物理模型的时候一定要找到一些模型,允许存在一定的误差,但是又不能过于简单,如果过于简单,和你观测的数据误差太大也不行,奥卡姆剃刀的这一思想实际上是机器学习或者整个人类在获取科学知识的历程中,最核心、最本质的思想。
在今天的机器学习理论里,实际上是把威廉姆·奥卡姆剃刀的思想定量化表示出来了,为什么要定量化?因为今天,机器学习处理的问题,要比物理学的「胡克定律」、「开普勒定律」复杂千万倍。甚至有人这样讲,今天在 21 世纪,如果你去研究物理学,你最后得到的是一个线性模型,我根本不需要看你具体研究的是什么模型,得到的是什么结果,我可以很肯定的告诉你,你做的东西要么就是早就被别人已经做过了,要么就是这个问题太简单没有任何意义。
换句话说,物理学中较为简单的定律早就被发现了。今天机器学习处理的问题是一些非常非常复杂的问题,给大家处理一些图像、一些声音,还有搜集到的一些数据,牵扯到很多的人的因素,这是很复杂的东西,你不可能指望用简单的方程,低次的一些方程或者低次的一些物理系统去描述。所以当你本质的模型已经极其复杂的时候,我究竟应该用一个多复杂的模型来表示?我需要一个定量的指导。所以机器学习最重要的是在一个定量的层面上,对刚才我们讲的奥卡姆剃刀理论,给出一个定量的定义。
那么我们前面提到,机器学习建立在概率统计的基础上,这里面我就不对概率统计的数学细节做过多的解释了,如果感兴趣的老师、同学们可以课后去看我们这个印发给大家的具体内容,我还是在思想上给大家做一个比较稍微宏观一点的介绍,在这之前有一些准备的工作。
大家可能都知道,概率论里有一个叫「大数定律」的理论,讲的是如果我观测一个随机变量很多次,它的平均值应该是趋向于它的数学期望。比如说以前有一个掷硬币的例子,假如说掷一万次,这里面向上的次数应该是多少呢?如果这是一个公平(fair coin)的硬币,那么你掷接近无穷多次之后,频率最后应该是趋向于 0.5,这就是大数定律。之前数学家 Nicolaus Bernoulli,就找了一个硬币,掷了几万次,最后观测出这样的一个数值。
那么我问大家一个问题:现在有一个这样的硬币,大家掷 1 万次,我们知道掷出来的结果和 0.5 非常接近,但是究竟有多近呢?假如说你掷 1 万次,发现 40% 是向上,60% 向下,你觉得这个硬币有没有问题?
我接下来要讲的机器学习理论就是为了给出一个定量的结果,就必须用一些能回答这个问题的数学工具。如果你掷出来正反面的概率是 40% 和 60%,那么你的硬币本身有没有毛病,或者说如果硬币没有问题,你掷硬币的时候应该会在一个什么区间里。
有一个定理和我刚才讲的这个理论是有点相关的,叫中心极限定理,大家应该听说过,如果我有很多独立分布的随机变量,我们考虑一个平均值,它也是一个随机变量,但最后一定会趋向于一个正态分析,而且会告诉你正态分布的方差是多少。
那么机器学习里面用的概率工具就能够回答我刚才说的定量问题,叫做「Concentration inequality」,其中比较重要的一点在于,它给出了数学上非常精确的一个定量描述,一个硬币,假如说它是一个正常的硬币,如果掷 1 万次,在什么区间里是比较合理的呢?应该在 0.499—0.501 这个区间是比较合理的,就是由这些不等式精确地给出了。如果你掷出来的是 0.4 或者哪怕是 0.45,那么这个硬币 99.99% 的可能性是有问题的。
所以这样一个概率里面表示的,实际上是我们机器学习里面常用的数学工具。
刚刚讲 Concentration inequality 是一大类概率数学的不等式,其中最有代表性的,大家对这个名字能够有所耳闻就可以了,叫 Chernoff Bound,是描述刚才讲的掷硬币的平均值和你的数学期望大概有多大偏差,这是一个量化的刻画,所以如果将来有一天遇到类似的问题需要找一个数学工具来解决的话,可以首先去查一下 Chernoff Bound,这些在网上都可以得到。
还有不等式,这都是非常常用的工具,具体的不再给大家做过多的细节介绍。
本文为北京大学王立威教授《机器学习理论的回顾与展望》主题报告(一),后续主题报告敬请关注雷锋网[AI科技评论]后续报道。
雷峰网版权文章,未经授权禁止转载。详情见转载须知。