雷锋网(公众号:雷锋网)按:本文转自统计之都。原文是从张志华老师在第九届中国R语言会议和上海交通大学的两次讲座中整理出来的。张志华老师是上海交通大学计算机科学与工程系教授,上海交通大学数据科学研究中心兼职教授,计算机科学与技术和统计学双学科的博士生指导导师。在加入上海交通大学之前,是浙江大学计算机学院教授和浙江大学统计科学中心兼职教授。张老师主要从事人工智能、机器学习与应用统计学领域的教学与研究,迄今在国际重要学术期刊和重要的计算机学科会议上发表70余篇论文,是美国“数学评论”的特邀评论员,国际机器学习旗舰刊物Journal of Machine Learning Research 的执行编委。其公开课《机器学习导论》和《统计机器学习》受到广泛关注。
最近人工智能或者机器学习的强势崛起,特别是刚刚过去的AlphaGo和韩国棋手李世石九段的人机大战,再次让我们领略到了人工智能或机器学习技术的巨大潜力,同时也深深地触动了我。面对这一前所未有的技术大变革,作为10多年以来一直从事统计机器学习一线教学与研究的学者,希望借此机会和大家分享我个人的一些思考和反思。
我的演讲主要包含两部分,在第一部分,首先讨论机器学习所蕴含的内在本质,特别是它和统计学、计算机科学、运筹优化等学科的联系,以及它和工业界、创业界相辅相成的关系。在第二部分,试图用“多级”、“自适应”以及 “平均”等概念来简约纷繁多彩的机器学习模型和计算方法背后的一些研究思路或思想。
第一部分:回顾和反思
1、 什么是机器学习
毋庸置疑,大数据和人工智能是当今是最为时髦的名词,它们将为我们未来生活带来深刻的变革。数据是燃料,智能是目标,而机器学习是火箭,即通往智能的技术途径。机器学习大师Mike Jordan和Tom Mitchell 认为机器学习是计算机科学和统计学的交叉,同时是人工智能和数据科学的核心。
“It is one of today’s rapidly growing technical fields, lying at the intersection of computer science and statistics, and at the core of artificial intelligence and data science” ---M. I. Jordan
通俗地说,机器学习就是从数据里面挖掘出有用的价值。数据本身是死的,它不能自动呈现出有用的信息。怎么样才能找出有价值的东西呢?第一步要给数据一个抽象的表示,接着基于表示进行建模,然后估计模型的参数,也就是计算,为了应对大规模的数据所带来的问题,我们还需要设计一些高效的实现手段。
我把这个过程解释为机器学习等于矩阵+统计+优化+算法。首先,当数据被定义为一个抽象的表示时,往往形成一个矩阵或者一个图,而图其实也是可以理解为矩阵。统计是建模的主要工具和途径,而模型求解大多被定义为一个优化问题,特别是,频率统计方法其实就是一个优化问题。当然,贝叶斯模型的计算牵涉随机抽样方法。而之前说到面对大数据问题的具体实现时,需要一些高效的方法,计算机科学中的算法和数据结构里有不少好的技巧可以帮助我们解决这个问题。
借鉴Marr的关于计算机视觉的三级论定义,我把机器学习也分为三个层次:初级、中级和高级。初级阶段是数据获取以及特征的提取。中级阶段是数据处理与分析,它又包含三个方面,首先是应用问题导向,简单地说,它主要应用已有的模型和方法解决一些实际问题,我们可以理解为数据挖掘;第二,根据应用问题的需要,提出和发展模型、方法和算法以及研究支撑它们的数学原理或理论基础等,我理解这是机器学习学科的核心内容。第三,通过推理达到某种智能。最后,高级阶段是智能与认知,即实现智能的目标。从这里,我们看到,数据挖掘和机器学习本质上是一样的,其区别是数据挖掘更接地于数据库端,而机器学习则更接近于智能端。
2、 统计与计算
机学家通常具有强的计算能力和解决问题的直觉,而统计学家长于理论分析,具有强的建模能力,因此,两者有很好的互补性。
Boosting, SVM 和稀疏学习是机器学习界也是统计界,在近十年或者是近二十年来,最活跃的方向,现在很难说谁比谁在其中做的贡献更大。比如,SVM的理论其实很早被Vapnik等提出来了,但计算机界发明了一个有效的求解算法,而且后来又有非常好的实现代码被陆续开源给大家使用,于是SVM就变成分类算法的一个基准模型。再比如,KPCA是由计算机学家提出的一个非线性降维方法,其实它等价于经典MDS。而后者在统计界是很早就存在的,但如果没有计算机界从新发现,有些好的东西可能就被埋没了。
机器学习现在已成为统计学的一个主流方向,许多著名统计系纷纷招聘机器学习领域的博士为教员。计算在统计已经变得越来越重要,传统多元统计分析是以矩阵为计算工具,现代高维统计则是以优化为计算工具。另一方面,计算机学科开设高级统计学课程,比如统计学中的核心课程“经验过程”。
我们来看机器学习在计算机科学占什么样的地位。最近有一本还没有出版的书 “Foundation of Data Science, by Avrim Blum, John Hopcroft, and Ravindran Kannan,”作者之一John Hopcroft是图灵奖得主。在这本书前沿部分,提到了计算机科学的发展可以分为三个阶段:早期、中期和当今。早期就是让计算机可以运行起来,其重点在于开发程序语言、编译原理、操作系统,以及研究支撑它们的数学理论。中期是让计算机变得有用,变得高效。重点在于研究算法和数据结构。第三个阶段是让计算机具有更广泛的应用,发展重点从离散类数学转到概率和统计。那我们看到,第三阶段实际上就是机器学习所关心的。
现在计算机界戏称机器学习“全能学科”,它无所不在。一方面,机器学习有其自身的学科体系;另一方面它还有两个重要的辐射功能。一是为应用学科提供解决问题的方法与途径。说的通俗一点,对于一个应用学科来说,机器学习的目的就是把一些难懂的数学翻译成让工程师能够写出程序的伪代码。二是为一些传统学科,比如统计、理论计算机科学、运筹优化等找到新的研究问题。
3、 机器学习发展的启示
机器学习的发展历程告诉我们:发展一个学科需要一个务实的态度。时髦的概念和名字无疑对学科的普及有一定的推动作用,但学科的根本还是所研究的问题、方法、技术和支撑的基础等,以及为社会产生的价值。
机器学习是个很酷的名字,简单地按照字面理解,它的目的是让机器能像人一样具有学习能力。但在前面我们所看到的,在其10年的黄金发展期,机器学习界并没有过多地炒作“智能”,而是更多地关注于引入统计学等来建立学科的理论基础,面向数据分析与处理,以无监督学习和有监督学习为两大主要的研究问题,提出和开发了一系列模型、方法和计算算法等,切实地解决工业界所面临的一些实际问题。近几年,因应大数据的驱动和计算能力的极大提升,一批面向机器学习的底层架构又先后被开发出来,深度神经网络的强势崛起给工业界带来了深刻的变革和机遇。
机器学习的发展同样诠释了多学科交叉的重要性和必要性。然而这种交叉不是简单地彼此知道几个名词或概念就可以的,是需要真正的融化贯通。Mike Jordan教授既是一流的计算机学家,又是一流的统计学家,所以他能够承担起建立统计机器学习的重任。而且他非常务实,从不提那些空洞无物的概念和框架。他遵循自下而上的方式,即先从具体问题、模型、方法、算法等着手,然后一步一步系统化。Geoffrey Hinton教授是世界最著名的认知心理学家和计算机科学学家。虽然他很早就成就斐然,在学术界名声卓越,但他一直活跃在一线,自己写代码。他提出的许多想法简单、可行又非常有效,因此被称为伟大的思想家。正是由于他的睿智和力行,深度学习技术迎来了革命性的突破。
机器学习这个学科同时是兼容并收。我们可以说机器学习是由学术界、工业界、创业界(或竞赛界)等合力而造就的。学术界是引擎,工业界是驱动,创业界是活力和未来。学术界和工业界应该有各自的职责和分工。学术界职责在于建立和发展机器学习学科,培养机器学习领域的专门人才;而大项目、大工程更应该由市场来驱动,由工业界来实施和完成。
第二部分:几个简单的研究思路
在这部分,我的关注则回到机器学习的研究本身上来。机器学习内容博大精深,而且新方法、新技术正源源不断地被提出、被发现。这里,我试图用“多级”、“自适应”以及 “平均”等概念来简约纷繁多彩的机器学习模型和计算方法背后的一些研究思路和思想。希望这些对大家理解机器学习已有的一些模型、方法以及未来的研究有所启发。
1. 多级 (Hierarchical)
首先,让我们来关注“多级”这个技术思想。我们具体看三个例子。
第一个例子是隐含数据模型,它就是一种多级模型。作为概率图模型的一种延伸,隐含数据模型是一类重要的多元数据分析方法。隐含变量有三个重要的性质。第一,可以用比较弱的条件独立相关性代替较强的边界独立相关性。著名的de Finetti 表示定理支持这点。这个定理说,一组可以交换的随机变量当且仅当在某个参数给定条件下,它们可以表示成一组条件随机变量的混合体。这给出了一组可以交换的随机变量的一个多级表示。即先从某个分布抽一个参数,然后基于这个参数,独立地从某个分布抽出这组随机变量。第二,可以通过引入隐含变量的技术来方便计算,比如期望最大算法以及更广义的数据扩充技术就是基于这一思想。具体地,一些复杂分布,比如t-distribution, Laplace distribution 则可以通过表示成高斯尺度混合体来进行简化计算。第三,隐含变量本身可能具有某种有可解释的物理意思,这刚好符合应用的场景。比如,在隐含狄利克雷分配(LDA)模型,其中隐含变量具有某种主题的意思。
第一个例子是隐含数据模型,它就是一种多级模型。作为概率图模型的一种延伸,隐含数据模型是一类重要的多元数据分析方法。隐含变量有三个重要的性质。第一,可以用比较弱的条件独立相关性代替较强的边界独立相关性。著名的de Finetti 表示定理支持这点。这个定理说,一组可以交换的随机变量当且仅当在某个参数给定条件下,它们可以表示成一组条件随机变量的混合体。这给出了一组可以交换的随机变量的一个多级表示。即先从某个分布抽一个参数,然后基于这个参数,独立地从某个分布抽出这组随机变量。第二,可以通过引入隐含变量的技术来方便计算,比如期望最大算法以及更广义的数据扩充技术就是基于这一思想。具体地,一些复杂分布,比如t-distribution, Laplace distribution 则可以通过表示成高斯尺度混合体来进行简化计算。第三,隐含变量本身可能具有某种有可解释的物理意思,这刚好符合应用的场景。比如,在隐含狄利克雷分配(LDA)模型,其中隐含变量具有某种主题的意思。
Laten Dirichlet Allocation
第二个例子,我们来看多级贝叶斯模型。在进行MCMC抽样后验估计时,最上层的超参数总是需要先人为给定的,自然地,MCMC算法收敛性能是依赖这些给定的超参数的,如果我们对这些参数的选取没有好的经验,那么一个可能做法我们再加一层,层数越多对超参数选取的依赖性会减弱。
Hierarchical Bayesian Model
第三例子,深度学习蕴含的也是多级的思想。如果把所有的节点全部的放平,然后全连接,就是一个全连接图。而CNN深度网络则可以看成对全连接图的一个结构正则化。正则化理论是统计学习的一个非常核心的思想。CNN和RNN是两大深度神经网络模型,分别主要用于图像处理和自然语言处理中。研究表明多级结构具有更强的学习能力。
Deep Learning
2. 自适应 (Adaptive)
我们来看自适应这个技术思路,我们通过几个例子来看这个思路的作用。
第一个例子是自适应重要采样技术。重要采样方法通常可以提高均匀采样的性能,而自适应则进一步改善重要采样的性能。
第二个例子,自适应列选择问题。给定一个矩阵A,我们希望从中选取部分列构成一个矩阵C,然后用CC^+A去近似原矩阵A,而且希望近似误差尽可能小。这是一个NP难问题。在实际上,可以通过一个自适应的方式,先采出非常小一部分C_1,由此构造一个残差,通过这个定义一个概率,然后用概率再去采一部分C_2, 把C_1 和 C_2 合在一起组成C。
第三个例子,是自适应随机迭代算法。考虑一个带正则化的经验风险最小问题,当训练数据非常多时,批处理的计算方式非常耗时,所以通常采用一个随机方式。存在的随机梯度或者随机对偶梯度算法可以得到参数的一个无偏估计。而通过引入自适应的技术,可以减少估计的方差。
第四个例子,是Boosting分类方法。它自适应调整每个样本的权重,具体地,提高分错样本的权重,而降低分对样本的权重。
3. 平均 (Averaging)
其实,boosting 蕴含着平均思想,即我最后要谈的技术思路。简单地说,boosting是把一组弱分类器集成在一起,形成一个强的分类器。第一好处是可以降低拟合的风险。第二,可以降低陷入局部的风险。第三,可以扩展假设空间。Bagging同样是经典的集成学习算法,它把训练数据分成几组,然后分别在小数据集上训练模型,通过这些模型来组合强分类器。另外这是一个两层的集成学习方式。
经典的Anderson 加速技术则是通过平均的思想来达到加速收敛过程。具体地,它是一个叠加的过程,这个叠加的过程通过求解一个残差最小得到一个加权组合。这个技术的好处,是没有增加太多的计算,往往还可以使数值迭代变得较为稳定。
另外一个使用平均的例子是分布式计算中。很多情况下分布式计算不是同步的,是异步的,如果异步的时候怎么办?最简单的是各自独立做,到某个时候把所有结果平均,分发给各个worker, 然后又各自独立运行,如此下去。这就好像一个热启动的过程。
正如我们已经看到,这些思想通常是组合在一起使用的,比如boosting模型。我们多级、自适应和平均的思想很直接,但的确也很有用。
本文作者:陈杨英杰
本文转自雷锋网禁止二次转载,原文链接