1.2 机器学习
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径。
1.2.1 机器学习定义
作为机器学习领域的先驱,Arthur Samuel于1959年在IBM Journal of Research and Development期刊上发表了一篇名为Some Studies in Machine Learning Using the Game of Checkers的论文。他在论文中将机器学习非正式地定义为:“在不直接针对问题进行编程的情况下,赋予计算机学习能力的一个研究领域。”
Tom Mitchell(1998)在他的机器学习经典教材Machine Learning中给出的机器学习的定义如下:“机器学习这门学科所关注的问题是:计算机程序如何随着经验积累自动提高性能。”Mitchell在书中还给出了一个简短的形式化定义体系:“对于某类任务T和性能度量P,如果一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。”
Trevor Hastie(2009)等3位来自斯坦福的统计学家在其编写的经典统计学习图书The Elements of Statistical Learning: Data Mining, Inference, and Prediction中对机器学习的描述如下:“许多领域都产生了大量的数据,统计学家的工作就是让所有这些数据变得有意义:提取重要的模式和趋势,理解‘数据在说什么’。我们称之为从数据中学习。”从统计学家的角度看,机器学习是使用统计工具在数据上下文中解译数据,从使用多种统计方法做出的决策和结果中进行学习。
李航教授在其经典的《统计学习方法》中对统计机器学习的定义如下:“统计学习(Statistical Learning)是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测和分析的一门学科。统计学习也称为统计机器学习(Statistical Machine Learning)。”他认为统计学习是处理海量数据的有效方法,是计算机智能化的有效手段。统计学习方法主要包含模型、策略和算法3个部分,在信息维度起着核心作用,是计算机科学发展的一个重要组成部分。
周志华教授在其《机器学习》教材中对机器学习的定义如下:“机器学习正是这样一门学科,它致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中,‘经验’通常以‘数据’形式存在,因此,机器学习所研究的主要内容,是关于在计算机上从数据中产生‘模型’(Model)的算法,即‘学习算法’(Learning Algorithm)。有了学习算法,我们只需把经验数据提供给它,它就能基于这些数据产生模型;在面对新的情况时,模型会给我们提供相应的判断。如果说计算机科学是研究关于‘算法’的学问,那么类似地,可以说机器学习是研究关于‘学习算法’的学问。”
通过对上述定义进行分析与比较,机器学习定义有下面几种特征:
(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。
(2)机器学习是对能通过经验自动改进的计算机算法的研究。
(3)机器学习是用数据或以往的经验,来优化计算机程序的性能标准。
1.2.2 机器学习流派
有道是“罗马不是一天建成的”,机器学习的发展也是历经了很长时间,在这个过程中形成了5大流派,这5大流派各有各的特点。
1.符号主义
符号主义(Symbolists)又称为逻辑主义、心理学派或计算机学派,其原理主要为物理符号系统(符号操作系统)假设和有限合理性。符号主义的核心是数理逻辑。数理逻辑在20世纪30年代开始用于描述智能行为。当计算机出现后,又在计算机上实现了逻辑演绎系统,其代表性成果为1956年由Allen Newell和Herbert Simon编写的启发式程序逻辑理论家(Logic Theorist),它证明了38条数学定理,表明了可以应用计算机研究人的思维过程,模拟人类智能活动。
符号主义学派的研究者在1956年首先采用人工智能这个术语,后来又发展了启发式算法、专家系统、知识工程理论与技术,并在20世纪80年代取得很大发展。符号主义曾长期一枝独秀,为人工智能的发展做出了重要贡献,尤其是专家系统的成功开发与应用,为人工智能走向工程应用和实现理论联系实际具有重要的意义。在人工智能的其他学派出现之后,符号主义仍然是人工智能的主流派别。
符号主义学派的代表人物包括Allen Newell、Herbert Simon、Nilsson、Tom Mitchell、Steve Muggleton、Ross Quinlan等。
2.连接主义
连接主义(Connectionism)学派又称为仿生学派或生理学派,其主要原理为神经网络及神经网络间的连接机制与学习算法。连接主义学派认为人工智能源于仿生学,特别是对人脑模型的研究。它的代表性成果是1943年由生理学家McCulloch和数理逻辑学家Pitts创立的脑模型,即M-P模型。M-P模型定义了神经元结构的数学模型,奠定了连接主义学派的基础。
20世纪60—70年代,以感知机(Perceptron)为代表的脑模型的研究出现过热潮,然而由于受到当时的理论模型、生物原型和技术条件的限制,脑模型研究在20世纪70年代后期至80年代初期落入低潮。直到Hopfield教授在1982年和1984年发表了两篇重要论文,提出用硬件模拟神经网络以后,连接主义才又重新抬头。
1986年,Rumelhart、Hinton等人提出多层网络中的反向传播(Back-Propagation,BP)算法,结合了BP算法的神经网络,称为BP神经网络。BP神经网络模型中采用反向传播算法所带来的问题是:基于局部梯度下降对权值进行调整容易出现梯度弥散(Gradient Diffusion)现象。梯度弥散的根源在于非凸目标代价函数导致求解陷入局部最优,而不是全局最优;而且,随着网络层数的增多,这种情况会越来越严重,这一问题的产生制约了神经网络的发展。与此同时,以SVM为代表的其他浅层机器学习算法被提出,并在分类、回归问题上均取得了很好的效果,其原理明显不同于神经网络模型,所以人工神经网络的发展再次进入了瓶颈期。
2006年,Geoffrey Hinton等人正式提出深度学习(Deep Learning,DL)的概念。他们在Science期刊发表的文章Reducing the dimensionality of data with neural networks中给出了梯度弥散问题的解决方案——通过无监督的学习方法逐层训练算法,再使用有监督的反向传播算法进行调优。在2012年的ImageNet图像识别大赛中,Hinton教授领导的小组采用深度学习模型AlexNet一举夺冠,AlexNet采用ReLU激活函数,从根本上解决了梯度消失问题,并采用GPU极大地提高了模型的运算速度。同年,由斯坦福大学的吴恩达教授和Google计算机系统专家Jeff Dean共同主导的深度神经网络(Deep Neural Network,DNN)技术在图像识别领域取得了惊人的成绩,在ImageNet评测中成功地把错误率从26%降低到了15%。2015年,Yann LeCun、Yoshua Bengio和Geoffrey Hinton共同在Nature上发表论文Deep Learning,详细介绍了深度学习技术。由于在深度学习方面的成就,3人于2018年获得了ACM图灵奖。
自深度学习技术提出后,连接主义势头大振,从模型到算法,从理论分析到工程实现,目前已经成为人工智能最为流行的一个学派。
3.进化主义
进化主义(Evolutionism)学派认为智能要适应不断变化的环境,通过对进化的过程进行建模,产生智能行为。进化计算(Evolutionary Computing)是在计算机上模拟进化过程,基于“物竞天择,适者生存”的原则,不断迭代优化,直至找到最佳的结果。
在计算机科学领域,进化计算是人工智能,进一步说是智能计算(Intelligent Computing)中涉及组合优化问题的一个子域。其算法受生物进化过程中“优胜劣汰”的自然选择机制和遗传信息的传递规律的影响,通过程序迭代模拟这一过程,把要解决的问题看作环境,在一些可能的解组成的种群中通过自然演化寻求最优解。运用进化理论解决问题的思想起源于20世纪50年代,从20世纪60—90年代,进化计算产生了4个主要分支:遗传算法(Genetic Algorithm,GA)、遗传编程(Genetic Programming,GP)、进化策略(Evolutionary Strategy,ES)、进化编程(Evolutionary Programming,EP)。下面将对这4个分支依次进行简要的介绍。
1)遗传算法
遗传算法是通过模拟生物界自然选择和自然遗传机制的随机化搜索算法,由美国John Henry Holand教授于1975年在专著Adaptation in Natural and Artificial Systems中首次提出。它使用某种编码技术作用于二进制数串之上(称为染色体),其基本思想是模拟由这些串组成的种群的进化过程,通过一种有组织但随机的信息交换来重新组合那些适应性好的串。遗传算法对求解问题的本身一无所知,它仅对算法所产生的每个染色体进行评价,并根据适应性来选择染色体,使适应性好的染色体比适应性差的染色体有更多的繁殖机会。
2)遗传编程
遗传编程由Stanford大学的John R.Koza在1992年撰写的专著Genetic Programming中提出。它采用遗传算法的基本思想,采用更为灵活的分层结构来表示解空间,这些分层结构的叶节点是问题的原始变量,中间节点则是组合这些原始变量的函数。在这种结构下,每一个分层结构对应问题的一个解,遗传编程的求解过程是使用遗传操作动态改变分层结构以获得解决方案的过程。
3)进化策略
德国柏林工业大学的Ingo Rechenberg等人在求解流体动力学柔性弯曲管的形状优化问题时,用传统的方法很难优化设计中描述物体形状的参数,而利用生物变异的思想来随机地改变参数值获得了较好的结果。针对这一情况,他们对这一方法进行了深入的研究,形成了进化策略这一研究分支。进化策略与遗传算法的不同之处在于:进化策略直接在解空间上进行操作,强调进化过程中从父体到后代行为的自适应性和多样性,强调进化过程中搜索步长的自适应性调节,主要用于求解数值优化问题;而遗传算法是将原问题的解空间映射到位串空间之中,然后施行遗传操作,它强调个体基因结构的变化对其适应度的影响。
4)进化编程
进化编程由美国Lawrence J.Fogel等人在20世纪60年代提出,它强调智能行为要具有能预测其所处环境的状态,并且具有按照给定的目标做出适当响应的能力。
进化计算是一种比较成熟、具有广泛适用性的全局优化方法,具有自组织、自适应、自学习的特性,能够有效地处理传统优化算法难以解决的复杂问题(例如NP难优化问题)。进化算法的优化要视具体情况进行算法选择,也可以与其他算法相结合,对其进行补充。对于动态数据,用进化算法求最优解可能会比较困难,种群可能会过早收敛。
4.贝叶斯
统计推断是通过样本推断总体的统计方法,是统计学的一个庞大分支。统计学有两大学派,即频率学派和贝叶斯学派,在统计推断的方法上各有不同。
贝叶斯学派于20世纪30年代建立,快速发展于20世纪50年代。它的理论基础是17世纪的贝叶斯(Bayes)提出的贝叶斯公式,也称贝叶斯定理或贝叶斯法则。
在探讨“不确定性”这一概念时,贝叶斯学派不去试图解释“事件本身的随机性”,而是从观察事件的“观察者”角度出发,认为不确定性来源于观察者的知识不完备,在这种情况下,通过已经观察到的证据来描述最有可能的猜测过程。因此,在贝叶斯框架下,同一件事情对于知情者而言就是确定事件,对于不知情者而言就是随机事件,随机性并不源于事件本身是否发生,而只是描述观察者对该事件的知识状态。基于这一假设,贝叶斯学派认为参数本身存在一个概率分布,并没有唯一真实参数,参数空间里的每个值都可能是真实模型使用的参数,区别只是概率不同,所以就引入了先验分布(Prior Distribution)和后验分布(Posterior Distribution)来找出参数空间每个参数值的概率。
贝叶斯学派的机器学习方法有一些共同点,首先是都使用贝叶斯公式,其次它们的目的都是最大化后验函数,只是它们对后验函数的定义不相同。下面对主要的贝叶斯学派机器学习方法进行介绍。
1)朴素贝叶斯分类器
朴素贝叶斯分类器假设影响分类的属性(每个维度)是独立的,每个属性对分类结果的影响也是独立的。也就是说,需要独立计算每个属性的后验概率,并将它们相乘作为该样本的后验概率。
2)最大似然估计
最大似然估计(Maximum Likelihood Estimation,MLE)假设样本属性的联合概率分布(概率密度函数)呈现某一种概率分布,通常使用高斯分布(正态分布),需要计算每一类的后验概率,即利用已知的样本结果信息反推具有最大概率导致这些样本结果出现的模型参数值。
3)最大后验估计
最大后验(Maximum A Posteriori,MAP)估计是在给定样本的情况下,最大化模型参数的后验概率。MAP根据已知样本来通过调整模型参数,使得模型能够产生该数据样本的概率最大,只不过对于模型参数有了一个先验假设,即模型参数可能满足某种分布,不再一味地依赖数据样例。
贝叶斯学派的主要代表学者包括David Heckerman、Judea Pearl和Michael Jordan。
5.行为类比
行为类比(Analogizer)学派的基本观点为:我们所做的一切、所学习的一切都是通过类比法推理得出的。所谓的类比推理法,即观察我们需要做出决定的新情景和我们已经熟悉的情景之间的相似度。
Peter Hart是行为类比学派的先驱,他证实了有些事物是与最佳临近算法相关的,这种思想形成了最初的、基于相似度的算法。Vladimir Vapnik发明了支持向量机、内核机,成为当时运用最广、最成功的基于相似度的学习机。
行为类比学派著名的研究成果包括最佳近邻算法和内核机(Kernel Machine),其最著名的应用场景为推荐系统(Recommender System)。
该学派的主要代表学者包括Peter Hart、Vladimir Vapnik和Douglas Hofstadter。
1.2.3 机器学习简史
机器学习实际上已经存在了几十年或者也可以认为存在了几个世纪。追溯到17世纪,贝叶斯、拉普拉斯关于最小二乘法的推导和马尔可夫链,这些构成了机器学习广泛使用的工具和基础。1950年(艾伦·图灵提议建立一个学习机器)到2000年初(有深度学习的实际应用以及最近的进展,比如2012年的AlexNet),机器学习有了很大的进展。
从20世纪50年代研究机器学习以来,不同时期的研究途径和目标并不相同,可以划分为4个阶段。
第一阶段是20世纪50年代中叶到60年代中叶,这个时期主要研究“有无知识的学习”。这类方法主要是研究系统的执行能力。这个时期,主要通过对机器的环境及其相应性能参数的改变来检测系统所反馈的数据,就好比给系统一个程序,通过改变它们的自由空间作用,系统将会受到程序的影响而改变自身的组织,最后这个系统将会选择一个最优的环境生存。在这个时期,最具代表性的研究是Samuet的下棋程序。但这种机器学习的方法还远远不能满足人类的需要。
第二阶段从20世纪60年代中叶到70年代中叶,这个时期主要研究将各个领域的知识植入系统里,在本阶段的目的是通过机器模拟人类学习的过程。同时还采用了图结构及其逻辑结构方面的知识进行系统描述,在这一研究阶段,主要是用各种符号来表示机器语言,研究人员在进行实验时意识到学习是一个长期的过程,从这种系统环境中无法学到更加深入的知识,因此研究人员将各专家学者的知识加入系统里,经过实践证明这种方法取得了一定的成效。在这一阶段,具有代表性的工作有Hayes-Roth和Winson的对结构学习系统方法。
第三阶段从20世纪70年代中叶到80年代中叶,称为复兴时期。在此期间,人们从学习单个概念扩展到学习多个概念,探索不同的学习策略和学习方法,且在本阶段已开始把学习系统与各种应用结合起来,并取得了很大的成功。同时,专家系统在知识获取方面的需求也极大地刺激了机器学习的研究和发展。在出现第一个专家学习系统之后,示例归纳学习系统成为研究的主流,自动知识获取成为机器学习应用的研究目标。1980年,在美国的卡内基梅隆(CMU)召开了第一届机器学习国际研讨会,标志着机器学习研究已在全世界兴起。此后,机器学习开始得到了大量的应用。1984年,Simon等20多位人工智能专家共同撰文编写的Machine Learning文集第二卷出版,国际性杂志Machine Learning创刊,更加显示出机器学习突飞猛进的发展趋势。这一阶段,代表性的工作有Mostow的指导式学习、Lenat的数学概念发现程序、Langley的BACON程序及其改进程序。
第四阶段为20世纪80年代中叶,是机器学习的最新阶段。这个时期的机器学习具有如下特点:
(1)机器学习已成为新的学科,它综合应用了心理学、生物学、神经生理学、数学、自动化和计算机科学等形成了机器学习的理论基础。
(2)融合了各种学习方法,且形式多样的集成学习系统研究正在兴起。
(3)机器学习与人工智能各种基础问题的统一性观点正在形成。
(4)各种学习方法的应用范围不断扩大,部分应用研究成果已转化为产品。
(5)与机器学习有关的学术活动空前活跃。
1.2.4 机器学习流程
传统的机器学习主要关注如何学习一个预测模型。一般需要首先将数据表示为一组特征(Feature),特征的表示形式可以是连续的数值、离散的符号或其他形式。然后将这些特征输入预测模型,并输出预测结果。这类机器学习可以看作是浅层学习(Shallow Learning)。浅层学习的一个重要特点是不涉及特征学习,其特征主要靠人工经验或特征转换方法来抽取。
当用机器学习来解决实际任务时,会面对多种多样的数据形式,比如声音、图像、文本等。采用机器学习方法解决实际问题通常需要包含多个步骤,具体如图1.1所示。
图1.1 机器学习的数据处理流程
从图1.1中可以看出,采用机器学习方法解决实际问题时主要分为问题分析与建模、模型训练与评价、数据探索与准备、模型部署与应用4个阶段。
基于上述机器学习流程的定义,图1.2对每个阶段要完成的工作进行了较为详细的流程化描述。
图1.2 机器学习处理每个阶段的工作流程
上述流程中,每步特征处理以及预测一般都是分开进行处理的。由于特征处理一般都需要人工干预完成,利用人类的经验来选取好的特征,并最终提高机器学习系统的性能。因此,很多机器学习问题变成了特征工程(Feature Engineering)问题。开发一个机器学习系统的主要工作都消耗在了预处理、特征提取以及特征转换上。