PDF 物理页索引 150
文件中的第 151 页 · 印刷页码:134
举个例子来说,在我们很小的时候,家长带我们参观动物园。刚刚学会说话和识字的我们会看到很多令我们“惊奇”的未知生物。家长告诉我们那个长鼻子的动物是大象,我们似懂非懂地记住了。走了几步之后,我们又在另一个地方发现了另一只长得很像之前看到过的物体,家长又告诉我们“这也是一只大象”。回到家中,我们拿着洗出来的照片,指着照片上的“长鼻子”问妈妈,“这个是什么来着?”妈妈回答我们说是大象。这时我们已经逐渐发现了这个叫作大象的东西长相的特点(见图4-2)。过了几天后,我们在电视机上的动物园短片中看到了一个熟悉的轮廓,凭借自己对“长鼻子”和其他特征的一些判断,我们向妈妈喊出:“看,是大象”。
机器学习的原理和上面的过程极其相似。假如你想让机器完成从图像中识别大象的任务。就像人的知识不是与生俱来的一样,机器不是一上来就什么都会的,想让机器能够完成任务,要先提供大量的数据让它学习,告诉它大象长什么样子,大象之外的其他动物长什么样子。在经过大量样本的学习后,机器可以从一张新的图像中判定其中是否有大象,如图4-3所示。
4.1.3机器学习的本质
如图4-4所示,类似人脑思考,机器经过大量样本的训练(training),获得了一定的经验(模型),从而产生了能够预测(inference)新的事物的能力,就是机器学习。这种预测能力,本质上是输入到输出的映射。
人工智能与大数据技术导论
134
PDF 物理页索引 151
文件中的第 152 页 · 印刷页码:135
给定一个输入,比如一段语音、一张图片或者一些数据型的信息,计算机能够建立一个函数(可以理解为一种对应关系),生成输出结果(见图4-5)。机器学习的任务就是找到这个函数,找出从输入到输出的规则。
4.1.4 对机器学习的全面认识
机器学习是一门学科,它基于概率、统计、优化等数学理论的研究,理论严谨,也是已被广泛认可的成熟的知识体系。机器学习在高等教育院校中作为一门独立的课程存在,近年来受到包括数据科学、统计学、计算机、应用数学、运筹学、工程学等众多专业的学生的青睐。在学术研究方面,每年机器学习相关论文发表不计其数,是数理学科重要的学术研究方向之一。
第4章 机器学习概述
135
PDF 物理页索引 152
文件中的第 153 页 · 印刷页码:136
机器学习也是一门技术,它被数据科学家(DataScientist)广泛应用,是在数据分析中最常用的技术之一。而数据科学家也是21世纪最火热的职业之一,其中机器学习是这个职位最重要的技能和工作内容之一。同时,也有像“机器学习工程师”这样的纯粹做机器学习的岗位。随着大数据时代信息量和数据量的爆炸式提升,人们对未知事物更加好奇,机器学习越来越能够“落地”而发挥使用价值。同时,随着Python等编程语言的普及以及TensorFlow等机器学习框架的完善,这个曾经似乎是高端学术的东西也越来越偏向应用,能够被更多人接受。
机器学习包含一系列算法,虽说它是这一系列算法的总称,但仅仅把机器学习视为算法或者模型是不准确的。机器学习是解决问题的一种方法,算法只是其中的一部分。这里所谓的算法或者模型,只是从输入到输出之间的一步,而机器学习是实现从输入到输出的全部过程,其中还包括对输入数据的清洗和转换、对特征的提取和整合、对数据的探索分析等。这些必要的步骤不做,拿到数据就盲目地直接套用模型,是不能解决问题的。
4.1.5 机器学习、深度学习与人工智能
机器学习、深度学习和人工智能都是现今人们热议的词汇,这三个概念通常被人们联系在一起讨论,但很多人理不清三者之间的关系。其实这三个概念虽然定义上的动机和角度有所差异,但事实上它们之间存在很清晰的包含关系。普遍认为,人工智能、机器学习、深度学习三者的关系如图4-6所示。
从概念上来说,机器学习是人工智能的一个分支。机器学习被看作解决人工智能问题的途径或者方案。而深度学习是机器学习的子类,或者可以理解为机器学习众多算法中的一种。只不过因为它最近过于突出的表现,人们越来越习惯把这个概念单独提出来讨论。
从时间轴来看,三者也从大到小有着推进关系。人工智能这个词出现得最早。早在1950年,人工智能的概念就被提出,当时这个全新的领域令人兴奋不已。到了1980年左右,机器学习开始兴起,人们开始用机器学习的方法解决人工智能问题。深度学习在2010年开始流行,作为机器学习中最前沿的部分,推动人工智能发展出现巨大突破。下面介绍深度学习,并重点说明深度学习和机器学习的关系。
人工智能与大数据技术导论
136
PDF 物理页索引 153
文件中的第 154 页 · 印刷页码:137
最近几年,“深度学习”的概念也越来越火热,并且这个词更多地与人工智能产生了直接联系。深度学习被视为进入人工智能领域的敲门砖,也是很多人工智能项目开展的基石。关于深度学习,我们会在后面的章节中进行详细介绍。这里我们先用几句话说明深度学习与机器学习之间的联系和区别。
前文提到,深度学习和机器学习是包含关系,深度学习是机器学习的一个子类。在传统的介绍机器学习算法的课程中,绝大多数会提到神经网络这个模型,而深度学习其实就是有多个隐藏层的神经网络。所以说,深度学习可以算作机器学习的一个分支领域,从算法来说是机器学习的一种,只不过这个分支由于具有其他算法不具备的显著优势,特别在AI领域的应用中,这些优势使得深度学习解决问题的效果尤为突出,所以在某种程度上,深度学习几乎成了人工智能模型算法的代名词。
在AI很多特定的领域中,我们看到的现象也确实如此,深度学习作为新兴的模型算法,表现出压倒性的统治力,而传统的机器学习算法应用只占极少数。那么,深度学习究竟为何能够在短时间内异军突起,击败它的“老前辈”们,成为新时代的宠儿?深度学习的优势究竟在哪里?在本书介绍完机器学习和深度学习后,相信读者会对它们的本质看得更透彻,也会对二者产生更直观的感性认识,对这个问题我们会在第7章给出解释。
在这个深度学习大有“一统江湖”趋势的时代里,我们还有必要学习传统的机器学习模型理论吗?答案是肯定的。首先,传统的机器学习模型并不落后,至今还有相当大的使用价值,在一些特定的问题中使用起来更为快速、灵活;其次,传统机器学习模型的思想对学习深度学习有重要的帮助。深度学习的许多理论和思想是基于传统机器学习模型的理念而来的。深度学习所用的神经网络可以由简单的机器学习模型(如感知机、逻辑回归)演变而来。
对于初学者来说,可以将深度学习理解为“多层神经网络”。严格来说,深度学习是一种学习的模式,是指采用具有“深度”的模型进行学习,其本身并不是一个模型。多层神经网络是具有“深度”特点的一个学习模型,它实际上是深度学习的一种形式。
4.1.6机器学习、数据挖掘与数据分析
除了深度学习之外,另一个和机器学习类似而被人们广泛谈论的词语是数据挖掘(DataMining)。另外,数据分析(DataAnalysis)和大数据分析(BigData Analysis)也似乎和机器学习有着密切的联系。下面我们把这几个概念放到一起谈谈。
无论是机器学习、数据挖掘还是数据分析,都没有一个学术上的权威定义。这几个词本身从定义上的出发点不同,并且提出概念的动机和背景上的差异比之前提到的人工智能、机器学习和深度学习之间的差异更大,因此它们直接的界定更为模糊。因为它们在定义上有相通和重叠之处,我们也没有必要刻意去区分这几个概念之间的关系。这几个概念不像之前的人工智能、机器学习、深度学习那样容易通过维恩图来阐述。不过我们还是简单比较一下它们之间的异同。
第4章 机器学习概述
137
PDF 物理页索引 154
文件中的第 155 页 · 印刷页码:138
我们先来看一个数据分析的例子,如表4-1所示。
对比上述三组数据,我们会发现B组的得分显著高于A组和对照组。通过建立统计学模型,我们会得出B组的得分显著高于A组的结论,于是证明药物B更加有效。根据已知信息进行分析总结,得出有意义的结论,就是一般数据分析要做的工作。
人们通常所说的数据分析是对小规模数据而言的,而当我们需要处理大规模数据时,往往会用大数据分析这个说法。大数据分析和数据分析相比,主要是数据量的区别以及因此而带来的运算模式和方法上的差异。大数据分析通常需要依赖多台计算机和分布式系统架构进行计算。除去这一点,大数据分析在目标上和数据分析是大致相同的。大数据分析与数据挖掘、机器学习的概念也更接近一些,因为数据挖掘和机器学习几乎都是建立在大数据基础上的。
相比数据分析,数据挖掘要做的事情更深入,跟机器学习的意义也更为贴近。数据挖掘不仅是对数据进行分析总结,还要“挖掘”表层所看不到的信息。从概念上来说,二者既有交叉,又有区别。数据挖掘的范围更大,是指从数据中获得有价值的信息。数据挖掘经常会通过机器学习来完成。事实上,两者的区别我们只需从字面上理解即可。数据挖掘侧重于“挖掘”二字,是从海量数据中发现和提取有用信息的过程。这里所谓有用的信息,可以是任何具有指导意义、在商业环境中能够帮助人们进行决策的信息。
数据挖掘的一个经典案例是“啤酒和尿布”的故事。在20世纪90年代,美国沃尔玛超市的管理人员从销售数据中发现了一个有趣的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品经常会出现在同一个购物篮中。经过后续分析发现,同时购买这两种商品的顾客通常是年轻的父亲。这样问题得到了解释:在美国有婴儿的家庭中,母亲一般在家中照看婴儿,而去超市买尿布的任务通常会落在父亲身上。父亲在购买尿布的同时,往往会顺便为自己购买啤酒。因此,啤酒和尿布竟然成为“会经常同时购买”的商品。这样一来,沃尔玛想出了一个点子,将啤酒和尿布尝试摆放在同一个货架区域,从而让年轻父亲能够在找到尿布的同时发现啤酒,从而大大提升了两种商品的购买率,最终为超市带来了更高的营业收入。通过数据挖掘,沃尔玛员工给公司挖掘出了商业价值。这就是数据挖掘的魅力所在。
反观机器学习,从机器学习的定义来说,它最终落在“预测”两个字上,由此可见,通常机器学习是基于预测未知信息给人们带来决策上的收益的。但数据挖掘则不限于如此。发现数据的规律后不一定要跟着做预测,一条有价值的总结性信息可以直接帮助人们进行决断。
机器学习、数据挖掘、数据分析、大数据分析的相同点总结如下:
人工智能与大数据技术导论
138
PDF 物理页索引 155
文件中的第 156 页 · 印刷页码:139
都是从数据中提取信息的过程。
●都是数学和计算机结合的产物。
●都可以帮助人们进行判断和决策。
4.2 机器学习的基本概念
在本节中,我们首先了解一个机器学习任务是如何进行的,分为哪些关键步骤;其次阐述机器学习中的几个重要的术语(样本、特征、目标);最后了解如何根据目标形式对机器学习任务进行分类。
4.2.1数据集、特征和标签
我们从一个实际问题出发。表4-2是纽约市某餐厅一个月内顾客消费和给予小费的数据,我们希望利用此数据研究顾客用餐给小费的规律。以这个数据集为例,我们先向读者介绍机器学习中的一些基本概念。
我们通常把表4-2这样的样本数据叫作数据集(dataset),该数据集以结构化的列表形式呈现。数据集由若干样本(instances或examples)组成,每一个样本是一个观测数据的记录(Records),或者叫观测值(Observances),在表格中以行(Row)的形式体现。在机器学习中,一行、一条记录和一个样本的概念可以视为是等价的。在这个情景中,我们关注的是顾客给予小费的情况,小费这一列是我们关注的结果(outcome),我们可以把这个变量称为因变量(dependent variable,也叫函数值),在机器学习领域中通常叫作目标(target)或标签(label),也有人把它称为响应值(response)。以上几个概念可以视为一个意思,在本书中一般用目标来指代这个变量,对应的数据称为标签数据。不同于“小费”,表中其他列表示的变量在这个问题中是用来解释和预测“小费”的,我们把这些变量叫作自变量(independent variables),在机器学习领域通常用特征(Features)这个术语来表示。特征和目标在表中通常以列(column)的形式呈现。整个关系如图4-7所示。
第4章 机器学习概述
139
PDF 物理页索引 156
文件中的第 157 页 · 印刷页码:140
4.2.2监督式学习和非监督式学习
并不是所有机器学习任务的数据集都带有标签数据,我们把具有标签数据的学习任务叫作监督式学习(SupervisedLearning)。当目标变量是连续型(比如温度、价格)的时候,我们把这类问题叫作回归任务(RegressionTask);当目标变量是离散型(例如某种植物是否具有毒性、贷款人是否会违约、员工所属部门类别)的时候,我们遇到的问题则是分类任务(ClassificationTask)。回归问题和分类问题是监督式学习的两大类型。
有时我们遇到的样本数据并没有标签数据,我们把这个问题叫作非监督式学习(UnsupervisedLearning)。非监督式学习虽然没有标签数据,但我们仍然可以挖掘特征数据的信息进行分析,聚类(Clustering)就是其中最常见的一种,它根据样本数据分布的特点将数据分成几个类。我们可以把机器学习任务按图4-8进行分类。
4.2.3 强化学习和迁移学习
强化学习(ReinforcementLearning)是不同于监督式学习和非监督式学习的另一种机器学习方法。在传统机器学习分类中不包括强化学习,而随着强化学习的飞速发展,越来越多的人倾向于把强化学习看作机器学习的第三类方法。
强化学习是基于“行动-反馈”的自我学习机制。所谓反馈,是一种基于行动对学习机的奖励。学习机以最大化奖励为目标,不断改进“行动”,从而适应环境。强化学习与监督式学习的主要区别是,前者是完全靠自己的经历去学习,没有人告知学习机正确的答案,“强化”的信号是对学习机行动的反馈;而后者则是有人在监督学习机。
强化学习就像人类刚出生时探索未知的大自然一样,是自我摸索寻找行为道路的过程。强化学习目前一个火热的应用是在游戏AI中。一个射击游戏的机器人要学会如何躲避敌人子弹,找到最合理的开枪和换子弹时机,这些用传统的机器学习来完成是相当困难的,因为游戏对局是动态的、瞬息万变的,有无数种可能。要用监督式学习“教会”电脑如何进行这些操作,需要训练的过程是漫长而烦琐的。强化学习很好地适应了这一问题。我们需要给电脑一个反馈机制,将“未能躲避子弹”作为惩罚,杀死敌人给予奖赏,剩下的就完全交给电脑去完成。这样电脑就能通过一遍又一遍的行为探索得到一套成熟有效的行动方案。
人工智能与大数据技术导论
140
PDF 物理页索引 157
文件中的第 158 页 · 印刷页码:141
迁移学习指的是将已经训练好的参数提供给新的模型用作训练。现实中很多机器学习问题是存在相关性的。比如在图像识别中,识别狗和识别哈士奇,虽然具体任务不同,但它们具有相似性,用于识别狗的模型学习到的参数可以分享给识别哈士奇的任务,使得后者可以“从半路开始”,而不是从零开始学习参数,大大减少了学习时间。
迁移学习并不是一种新的机器学习分类,而是一种加快学习的模式。迁移学习在深度学习模型中的应用尤为明显。深度学习的模型庞大复杂,具有极多的参数需要训练。
4.2.4 特征数据类型
●数值型(numerical),如长度、温度、价格等。
分类型(categorical),如性别。
文本(text),如姓名、地址等。
●日期(datetime),如2018-08-26。
4.2.5 训练集、验证集和测试集
在机器学习任务中,我们通常将数据集分成三部分:训练集(TrainingSet)、验证集(Validation Set)和测试集(TestSet)。下面介绍这三个概念。
●训练集:用于训练模型,确定模型中的参数。
●验证集:用于模型的选择和优化。
●测试集:用于对已经训练好的模型进行评估,评价其表现。
训练集和测试集的概念相对好理解。训练集顾名思义是用来训练的,机器使用训练集来学习样本。而测试集用来检验模型的效果。就像我们在学校学习功课,训练集如同教科书中的题库,测试集相当于考试试卷。我们通过“刷题库”获得知识,从而在考试中取得优异的成绩。
为什么要建立测试集呢?不直接用训练集进行测试的原因是,模型是用训练集进行学习的,倾向于尽可能拟合训练集数据的特性,因此在训练集上的测试效果通常会很好,但在没有见过的数据集上表现效果可能会明显下降,这个现象叫作过拟合(Overfitting)。有关过拟合的概念,后面会详细介绍。模型在没有见过的数据集上取得高准确率比在原训练集上获得好的效果更有说服力。因此,总是要设立测试集。就像只有考试才能最公平地衡量学生对功课的掌握程度一样。
第4章 机器学习概述
141
PDF 物理页索引 158
文件中的第 159 页 · 印刷页码:142
有了训练集和测试集,很多机器学习入门者可能不知道还有验证集这样一个概念。事实上,验证集是用来调参的。为了叙述的流畅性,这里读者可以先将调参理解为调整模型,相关概念会在后续章节介绍并通过具体例子说明。验证集的作用是比较我们所尝试的多个模型,从中选择表现最好的一个。这个任务仅通过测试集其实也能实现,很多人会直接把测试集当作验证集来选择和优化模型,从而将测试集和验证集的概念混为一谈。但严格来说,验证集的单独存在是必要的。测试集用来衡量一个完整建好的模型,意味着这个模型在之前就被认定为已经调整到最优,而这个优化的过程就是通过验证集实现的。如果我们延续上文中对训练集和测试集的比喻,验证集就相当于考前的模拟测试。
4.2.6机器学习的任务流程
一个完整的任务流程大致可分为如图4-9所示的6个步骤。注意这个流程只是一般的思路,具体问题会有各自的差异和侧重。
一般来说,在“数据导入”上,机器学习算法读入的是像表4-2一样的结构化数据(StructuredData)。在结构化数据中,特征都是以列的形式一条一条展开的。但是在图像识别、语音识别等任务中,原始数据以图片或音频的形式出现,所谓的特征我们是“看不见的”。这个时候,我们需要将这些原始信息转化为结构化的形式。
4.3 数据预处理
在拿到任务和数据后,应该先做数据预处理的基本流程,包括探索性分析、数据清洗和特
人工智能与大数据技术导论
142
PDF 物理页索引 159
文件中的第 160 页 · 印刷页码:143
征工程。本节阐述探索性分析的目的和途径、数据清洗的常见类型和手段、特征工程的重要性和常见方法。
4.3.1 探索性分析
探索性分析(Exploratory Analysis),或者叫探索性数据分析(ExploratoryData Analysis)是通过图表等可视化工具对原始数据(RawData)进行大致了解和初步分析的过程。探索性分析的目的是让我们对陌生的数据集有个直观和感性的认识,从而在庞大的数据集中发现有价值、值得挖掘的信息,找出数据集中的“亮点”。具体而言,通过探索性分析,我们可以:
●了解数据集的基本信息。
●给数据清洗提供方向。
为特征工程提供方向。
探索性分析是我们在拿到数据集还没有头绪的时候可以尝试的手段。探索性分析要避免时间过长,毕竟我们的目的是对数据进行初步探索,分析工作的大头在后面。
4.3.2 数据清洗
好的数据总是比好的算法要强得多(Better data beats fancier algorithms)。这句话送给初学者是最合适不过的。任何想从事机器学习的数据分析师,首先要记住这句话。如果数据质量差,杂乱无章,即使再好的算法也没有用,就好比加工垃圾一样,用再先进的技术加工出来的成品也是垃圾(Garbagein,garbageout)。之所以要进行数据清洗,是因为在现实生活中,我们遇到的绝大多数数据集都是“不干净的”。比如会出现以下情形(见表4-3):
存在重复记录的数据
比如人口数据中同一个人有两条完全相同的记录。
●存在不相关记录
比如我们只关注中国人口数据,但数据集中有美国人的信息。
●无用的特征信息
例如身份ID等一些显然不会对结果有影响的编号类数据。
文字拼写错误
一些比较明显的信息输入错误。
信息格式不统一
例如大小写不一致,比如“beijing”和“Beijing”应该属同一类。表述形式不统一,比如“陕西省”和“陕西”也应该统一成一种。
第4章 机器学习概述
143