人工智能应用基础
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 认识机器学习

人工智能近年来在人机博弈、计算机视觉、语音处理等诸多领域都获得了重要进展,在人脸识别、机器翻译等任务中已经达到甚至超越了人类的表现。尤其是在举世瞩目的围棋“人机大战”中,AlphaGo的两代人工智能产品先后战胜了世界围棋冠军李世石和柯洁,让人类领略到了人工智能技术的巨大潜力。可以说,近年来人工智能技术所取得的成就,除了计算能力的提高及海量数据的支撑,在很大程度上也得益于目前机器学习(Machine Learning)理论和技术的进步。

与计算机视觉、语音处理、自然语言处理等应用技术相比,机器学习更偏重分类、聚类、回归等方向的基础研究,常用算法有支持向量机、神经网络、线性回归、K均值聚类等。机器学习常用算法及应用如图2-2所示。

图2-2 机器学习常用算法及应用

当然,机器学习的研究方向还有监督学习/无监督学习、强化学习等,关联规则挖掘等算法也得到了广泛的应用。

2.1.1 机器学习的定义

机器学习是一个多学科交叉领域,涵盖计算机科学、概率论知识、统计学知识、近似理论知识。它用计算机来模拟人类的学习方式。对“机器学习”,目前尚无一个公认的和准确的定义,目前有下面三种定义:

• 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。

• 机器学习是对能通过经验自动改进的计算机算法的研究。

• 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

简单地按照字面理解,机器学习的目的是让机器能像人一样具有学习能力。机器学习领域奠基人之一、美国工程院院士Mitchell教授在撰写的经典教材Machine Learning(《机器学习》)中所给出的机器学习定义为“利用经验来改善计算机系统自身的性能”。他认为,机器学习是计算机科学和统计学的交叉,同时也是人工智能和数据科学的核心。一般而言,经验对应于历史数据(如互联网数据、科学实验数据等),计算机系统对应于机器学习模型(如决策树、支持向量机等),而性能则是模型对新数据的处理能力(如分类精度和预测性能等)。通俗来说,经验和数据是燃料,性能是目标,而机器学习技术则是火箭,是计算机系统通往智能的技术途径。

更进一步说,机器学习致力于研究如何通过计算机算法,利用经验改善自身的性能,其根本任务是数据的智能分析与建模,进而从数据中挖掘出有价值的信息。随着计算机、通信、传感器等信息技术的飞速发展,数据以指数方式迅速增长。机器学习技术是从数据当中挖掘出有价值信息的重要手段,它通过对数据进行建模,然后估计模型的参数,从而从数据中挖掘出对人类有用的信息。

【知识拓展】

机器学习和数据挖掘

机器学习和数据挖掘有一定的关联,也是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。相对于数据挖掘从大数据之间找相关特性而言,机器学习更加注重算法的设计,让计算机能够自动地从数据中“学习”规律,并利用规律对未知数据进行预测。由于机器学习算法通常会涉及大量的统计学理论,与统计推断联系很紧密,因此,统计学家们常常认为机器学习是统计学比较偏向应用的一个分支,是统计学与计算机科学的交叉。

人类在成长、生活过程中积累了不少的经验。我们可以对这些经验进行归纳,并获得一些规律,对将来进行推测,如图2-3所示。机器学习中的“训练”与“预测”过程可以对应到人类的“归纳”和“推测”过程,如图2-4所示。

图2-3 人类从经验中学习

图2-4 机器学习的基本过程

在机器学习中,我们需要一批数据(训练数据集),通过一些机器学习算法进行处理(训练),训练得到的模型可以用于对新的数据(测试数据集)进行处理(预测)。“训练”产生“模型”,“模型”指导“预测”。

2.1.2 机器学习算法的分类

一般而言,机器学习可分为有监督学习、无监督学习两大类,当然还可以扩展出半监督学习、强化学习甚至迁移学习等方向。

1. 有监督学习

有监督学习(Supervised Learning)是从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,也可以说是特征和目标,训练集中的目标是由人标注的。常见的监督学习算法包括分类和回归。分类和回归的主要区别就是输出结果是离散的还是连续的。

(1)分类(Classification)

在分类任务中,数据集是由特征向量和它们的标签组成的,当我们学习了这些数据之后,给定一个只知道特征向量不知道标签的数据,可以求它的标签是哪一个。例如,预测明天是阴天、晴天还是下雨天,就是一个分类任务。

分类任务的常见算法包括逻辑回归、决策树、随机森林、KNN、支持向量机、朴素贝叶斯、神经网络等。分类示意图如图2-5所示。

图2-5 分类示意图

(2)回归分析(Regression Analysis)

在回归分析中,数据集是先给定一个函数和它的一些坐标点,然后通过回归分析的算法,来估计原函数的模型,求出一个最符合这些已知数据集的函数解析式后,可以用来预估其他未知输出的数据了。当输入一个自变量时,就会根据这个函数解析式输出一个因变量。这些自变量就是特征向量,因变量就是标签,而且标签的值是建立在连续范围的。例如,预测明天的气温是多少度,这是一个回归任务。

回归分析的常用算法包括线性回归、神经网络、AdaBoosting等。回归示意图如图2-6所示。

图2-6 回归示意图

2. 无监督学习

无监督学习(Unsupervised Learning)与有监督学习相比,训练集是没有人为标注的。无监督学习的应用模式主要包括聚类算法和关联规则抽取。

聚类算法又分K-means聚类和层次聚类。聚类分析的目标是创建对象分组,使得同一组内的对象尽可能相似,而处于不同组内的对象尽可能相异。聚类示意图如图2-7所示。

图2-7 聚类示意图

关联规则抽取在生活中得到了很多应用。沃尔玛拥有世界上最大的数据仓库系统,为了能够准确了解顾客在其门店的购买习惯,沃尔玛对其顾客的购物行为进行购物篮分析,想知道顾客经常一起购买的商品有哪些,发现跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在“尿布与啤酒”背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。产生这一现象的原因是,美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。

3. 半监督学习

半监督学习(Semi-Supervised Learning,SSL)是模式识别和机器学习领域研究的重点问题,是有监督学习与无监督学习相结合的一种学习方法。半监督学习使用大量的未标记数据,同时使用标记数据来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事标注工作,同时,又能够带来比较高的准确性,因此,半监督学习目前正越来越受到人们的重视。

4. 迁移学习

随着计算机硬件和算法的发展,缺乏有标签数据的问题逐渐凸显出来,不是每个领域都会像ImageNet那样花费大量的人工标注来产出一些数据,尤其针对工业界,每时每刻都在产生大量的新数据,标注这些数据是一件耗时耗力的事情。因此,目前有监督学习虽然能够解决很多重要的问题,却也存在着一定的局限性,基于这样的一个环境,迁移学习变得尤为重要。

迁移学习的适用场景:假定源域(Source Domain)中有较多的样本,能较好地完成源任务(Source Task),而目标域(Target Domain)中样本量较少,不能较好地完成目标任务(Target Task),即分类或者回归的性能不稳定。这时候,可以利用源域的样本或者模型来协助提升目标任务的性能。

其中域(Domain),包括两个内容D=(XPX)),X是特征空间,它代表了所有可能特征向量的取值,PX)是边缘概率分布,它代表了某种特定的采样。例如,X是一个二维空间,PX)为过原点的一条直线。任务(Task),它也包括两个部分T=(Yfx)),标签空间和预测函数。预测函数是基于输入的特征向量和标签学习而来的,它也称为条件概率分布Py|x)。

当然,其中源域与目标域之间有一定的相关性,但又不完全相同。如果源域与目标域是相同的,则可以直接合并两个任务,不存在迁移之说。而如果源域与目标域没有相关性,或者相关性很弱,则将源域信息加入训练,不仅不会提升,反而可能损害目标任务的性能,即产生负迁移现象。

5. 强化学习

强化学习(Reinforcement Learning,RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(Agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习问题经常在信息论、博弈论、自动控制理论等领域讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到或者超过人类水平。

强化学习是从动物学习、参数扰动自适应控制理论等发展而来的。其基本原理是,如果智能体(Agent)的某个行为策略导致环境正向奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是,在每个离散状态发现最优策略,以使期望的折扣和奖赏达到最大。

强化学习把学习看作试探评价过程,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化信号(奖或惩)反馈给Agent,Agent根据强化信号和环境当前状态再选择下一个动作,选择的原则是使受到正强化(奖)的概率增大。选择的动作不仅影响立即强化值,而且影响环境下一时刻的状态及最终的强化值,如图2-8所示。

图2-8 强化学习

强化学习不同于连接主义学习中的有监督学习,主要表现在教师信号上,强化学习中由环境提供的强化信号是Agent对所产生动作的好坏做一种评价(通常为标量信号),而不是告诉Agent如何去产生正确的动作。由于外部环境提供了很少的信息,Agent必须靠自身的经历进行学习。通过这种方式,Agent在“动作—评价”的环境中获得知识,改进动作方案以适应环境。

强化学习系统学习的目标是动态地调整参数,以使强化信号达到最大。若已知r/a梯度信息,则可以直接使用有监督学习算法。因为强化信号r与Agent产生的动作a没有明确的函数形式描述,所以梯度信息r/a无法得到。因此,在强化学习系统中,需要某种随机单元,使用这种随机单元,Agent在可能动作空间中进行搜索并发现正确的动作。

2.1.3 机器学习发展历程

早在古代,人类就萌生了制造出智能机器的想法。中国古代发明的指南车,以及三国时期诸葛亮发明的尽人皆知的木牛流马;日本人在几百年前制造过靠机械装置驱动的玩偶;1770年,英国公使给当时的清朝皇帝进贡了一个能写“八方向化,九土来王”8个汉字的机器玩偶(保存在故宫博物院),等等。这些例子都只是人类早期对机器学习(或机器)的一种认识和尝试。

真正的机器学习研究起步较晚,它的发展过程大体上可分为以下4个阶段:第一阶段是在20世纪50年代中叶到20世纪60年代中叶,属于机器学习热烈时期;第二阶段是在20世纪60年代中叶至20世纪70年代中叶,被称为机器学习冷静期;第三阶段是从20世纪70年代中叶至20世纪80年代中叶,被称为机器学习复兴期;第四个阶段从1986年至现在,是机器学习快速发展期。

最新的阶段起始于1986年。当时,机器学习综合应用心理学、生物学和神经生理学以及数学、自动化和计算机科学,并形成了机器学习理论基础,同时还结合各种学习方法取长补短,形成集成学习系统。此外,机器学习与人工智能各种基础问题的统一性观点正在形成,各种学习方法的应用范围不断扩大,同时出现了商业化的机器学习产品,还积极开展了与机器学习有关的学术活动。

1989年,Carbonell指出机器学习有4个研究方向:连接机器学习、基于符号的归纳机器学习、遗传机器学习与分析机器学习。1997年,Dietterich提出了另外4个新的研究方向:分类器的集成(Ensembles of classifiers)、海量数据的有监督学习算法(Methods for scaling up supervised learning algorithm)、增强机器学习(Reinforcement Learning)与学习复杂统计模型(Learning complex stochastic models)。

在机器学习的发展道路上,值得一提的是“人工大脑之父”雨果·德·加里斯教授。他创造的“CBM”大脑制造机器可以在几秒钟内进化成一个神经网络,可以处理将近1亿个人工神经元,它的计算能力相当于10000台个人计算机。2000年,人工大脑可以控制“小猫机器人”的数百个行为能力。

2010年以来,Google、Microsoft等国际IT公司加快了对机器学习的研究,已经取得很好的商业收益,国内很多知名的公司也纷纷效仿。阿里巴巴、淘宝为应对大数据时代带来的挑战,已经在自己的产品中大量应用机器学习算法。百度、搜狗等已拥有能与Google竞争的搜索引擎,其产品中也早已融合了机器学习知识,奇虎360公司也意识到了机器学习的意义所在,这些公司纷纷表现出对机器学习研发领域的持续关注。近几年正是机器学习知识在国内软件行业普及的黄金时代,也给软件工程师们进入机器学习这一行业带来了机遇。

2.1.4 机器学习的技术原理

机器是有可能自己学习事物规律的,那么如何才能让它学到规律呢?我们先来看一个故事:

猫妈妈让小猫去捉老鼠,小猫问:“老鼠是什么样子啊?”

猫妈妈说:“老鼠长着胡须。”结果小猫找来一头大蒜。

猫妈妈又说:“老鼠四条腿。”结果小猫找来一个板凳。

猫妈妈再说:“老鼠有一条尾巴。”结果小猫找来一个萝卜。

在这个故事里,小猫就是一个基于规则的(Rule-Based)计算机程序,它完全听命于开发者猫妈妈的指令行事。但是因为三次指令都不够全面,结果,三次都得出了错误的结果。如果要把小猫变成一个基于机器学习模型的(Model-Based)计算机程序,猫妈妈该怎么做呢?猫妈妈应该这样做,应该给小猫看一些照片,并告诉小猫,有些是老鼠,有些不是,如图2-9所示。

图2-9 老鼠和其他动物

猫妈妈可以先告诉它要注意老鼠的耳朵、鼻子和尾巴。然后小猫通过对比发现:老鼠的耳朵是圆形的,别的动物要么没耳朵,要么不是圆形耳朵;老鼠都有尾巴,别的动物有的有,有的没有;老鼠的鼻子是尖的,别的动物不一定都是这样的。

然后小猫就用自己学习到的“老鼠是圆耳朵、有尾巴、尖鼻子的动物”的规则去抓老鼠,那么小猫就成了一个“老鼠分类器”。小猫(在此处类比一个计算机程序)是机器(Machine),它成为“老鼠分类器”的过程,就叫作学习(Learning)。猫妈妈给的那些照片是用于学习的数据(Data)。猫妈妈告知要注意的几点,是这个分类器的特征(Feature)。学习的结果——老鼠分类器——是一个模型(Model)。这个模型的类型可能是逻辑回归,或者朴素贝叶斯,或者决策树……总之是一个分类模型。小猫思考的过程就是算法(Algorithm),无论有监督学习,还是无监督学习,都离不开这三个要素。

有监督学习——小猫通过学习成为“老鼠分类器”,就属于典型的有监督学习(Supervised Learning)。

大家请看上面的图2-9,其中不仅有老鼠、非老鼠的照片,而且在每张老鼠照片的下面还有一个绿色的对钩,说明这是一只老鼠;而非老鼠的照片下面是一个红叉子,说明这不是一只老鼠。每一张照片是一个数据样本(Sample)。下面的对钩或者红叉子,就是这个数据样本的标签(Label)。而给样本打上标签的过程,就叫作标注(Labeling)。标注这件事情,机器学习程序自己是解决不了的,必须依靠外力。这些钩叉都是猫妈妈打上去的,而不是小猫。

小猫通过学习过程获得的,就是给图片打钩或打叉的能力。如果小猫通过该过程已经能够给图片打钩或者打叉了,就说明该过程已经是一个学习成熟的模型了。这种通过标注数据进行学习的方法,就叫作有监督学习或直接叫监督学习(Supervised Learning)。

无监督学习——反过来,如果用于学习的数据只有样本,没有标签,那么通过这种无标注数据进行学习的方法,就叫作无监督学习(Unsupervised Learning)。

比如说,我们有这样六个样本(如图2-10所示):

图2-10 样本图

要做的事情是,根据他们的体貌区分他们的种族。明明是六匹马,为什么还要分种族呢?因为在小马(Little Pony)的世界里,小马(Pony)在马这个大类之下,还有细分的种族。我可以告诉你,要关注的特征(Features)是独角和翅膀。而他们一共可以被归为3个小马种族。这样你是不是就能分出来了——两个有独角的一组(他们叫独角兽);两个有翅膀的一族(他们叫飞马);另外两个正常的一组(他们叫陆马)。聚类完成,这就是一次有趣的无监督学习的过程。

一般来说,机器学习流程大致分为以下四步(如图2-11所示)。

第①步:数据收集与预处理。例如,新闻中会掺杂很多特殊字符和广告等无关因素,要先把这些剔除掉。除此之外,可能还会用到对文章进行分词、提取关键词等操作,这些在后续案例中会进行详细分析。

第②步:特征工程,也叫作特征抽取。例如,有一段新闻,描述“科比职业生涯画上圆满句号,今天正式退役了”。显然这是一篇与体育相关的新闻,但是计算机并不认识科比,所以还需要将人能读懂的字符转换成计算机能识别的数值。这一步看起来容易,做起来就非常难了,如何构造合适的输入特征也是机器学习中非常重要的一部分。

第③步:模型构建。这一步只要训练一个分类器即可,当然,建模过程中还会涉及很多调整参数工作,随便建立一个差不多的模型很容易,但是想要将模型做得完美还需要大量的实验。

第④步:评估与预测。最后,模型构建完成就可以进行判断预测,一篇文章经过预处理再被传入模型中,机器就会告诉我们按照它所学数据得出的是什么结果。

图2-11 机器学习流程