1 介绍
这本书的主题是自动学习,或者,我们更经常称之为机器学习。也就是说,我们希望对计算机进行编程,以便它们能够从可用的输入中“学习”。大致来说,学习就是把经验转化为专长或知识的过程。学习算法的输入是代表经验的训练数据,输出是一些专业知识,通常采用另一个可以执行某些任务的计算机程序的形式。寻求对这一概念的正式数学理解,我们必须更明确地说明我们所涉及的每个术语的含义:我们的程序将访问哪些训练数据?学习的过程如何自动化?我们如何评价这样一个过程的成功(即学习程序的输出质量)?
1.1 什么是学习?
让我们从考虑自然发生的动物学习的几个例子开始。ML中一些最基本的问题已经在这种背景下出现了,我们都很熟悉。
Bait Shyness——老鼠学会避开有毒诱饵:当老鼠遇到外观或气味新颖的食物时,它们会先吃很少的量,随后的喂食将取决于食物的味道及其生理作用。如果食物产生了不良影响,这种新奇的食物往往会与疾病联系在一起,随后,老鼠就不会吃它了。显然,这里有一个学习机制在发挥作用——动物利用过去对某些食物的经验来获得检测这种食物安全性的专业知识。如果过去对这种食物的体验被贴上了负面标签,将来遇到这种食物时,也会对这种动物预测产生负面影响。
受前面成功学习示例的启发,让我们演示一个典型的机器学习任务。假设我们想编写一个程序让机器来学习如何过滤垃圾邮件。一个天真的解决方案似乎类似于老鼠学习如何避免有毒诱饵的方式。该机器将简单地记住 之前被人类用户标记为垃圾邮件的所有电子邮件。当新电子邮件到达时,机器将在以前的垃圾邮件集中搜索它。如果它匹配其中之一,它将被丢弃。 否则,它将被移动到用户的收件箱文件夹。
虽然前面的“死记硬背”方法有时很有用,但它缺乏学习系统的一个重要方面——给从未见过的电子邮件贴标签的能力。一个成功的学习器应该能够从个别的样本发展到更广泛的泛化 。这也被称为归纳推理 (inductive reasoning 或inductive inference )。在前面介绍的Bait Shyness的例子中,在老鼠遇到某种食物的例子后,它们会把自己对它的态度应用到新的、没见过的气味和味道相似的食物例子上。为了在垃圾邮件过滤任务中实现泛化,学习器可以扫描先前看到的电子邮件,并提取一组单词,这些单词在电子邮件消息中的出现表示垃圾邮件。然后,当收到新的电子邮件时,机器可以检查其中是否出现了可疑的单词,并相应地预测其标签。这样的系统有可能能够正确预测从未见过的电子邮件的标签。
然而,归纳推理可能会导致我们得出错误的结论。为了说明这一点,让我们再考虑一个来自动物学习的例子。
鸽子迷信 :在心理学家B. F. Skinner做的一个实验中,他把一群饥饿的鸽子放在笼子里。笼子上安装了一个自动装置,每隔一段时间就给鸽子送食物,完全不考虑鸽子的行为。饥饿的鸽子在笼子里走来走去,当食物第一次送到时,它发现每只鸽子都在做一些动作(啄食、转头等)。食物的到来强化了每只鸟的特定动作,因此,每只鸽子往往会花更多的时间做同样的动作。这反过来又增加了下次随机送餐时发现每只鸟再次做这些动作的机会。结果是一连串的事件加强了鸽子的联系,即食物的运送与它们第一次运送食物时的偶然行为有关。他们随后继续勤奋地做出同样的动作。
导致迷信的学习机制和有用的学习有什么区别?这个问题对于自动的学习器的发展至关重要。虽然人类学习者可以依靠常识过滤掉随机的无意义学习结论,但一旦我们将学习任务导出到机器,我们就必须提供定义明确的清晰原则,以保证程序不会得出无意义或无用的结论。这些原理的发展是机器学习理论的一个中心目标。
那么,是什么让老鼠的学习比鸽子更成功呢?作为回答这个问题的第一步,让我们仔细看看老鼠的bait shyness现象。
重新审视bait shyness——老鼠无法在食物和电击之间或声音和恶心之间获得调节:老鼠的bait shyness机制比人们想象的要复杂。 Garcia进行的实验(Garcia & Koelling 1996)表明,如果食用食物后的不愉快刺激被电击(而不是恶心)取代,则不会发生条件反射。即使经过反复试验,其中食用某些食物后受到令人不快的电击,老鼠并不倾向于避免那种食物。当暗示恶心的食物特征(例如味道或气味)被声音信号取代时,会发生类似的调节失败。老鼠似乎有一些“内置”的先验知识告诉他们,虽然食物和恶心之间的时间相关性可能是因果关系,但食用食物和电击之间或声音和恶心之间不太可能存在因果关系。
我们得出结论,bait shyness学习和鸽子迷信之间的一个显著特征是结合了偏好学习机制的先验知识 。这也称为归纳偏置 。实验中的鸽子愿意对食物的出现采取任何解释。然而,老鼠“知道”食物不会引起电击,噪音与某些食物共存不太可能影响该食物的营养价值。老鼠的学习过程偏向于检测某种模式,而忽略了事件之间的其他时间相关性。
事实证明,先验知识的融入,将偏置加入到学习过程,对于学习算法的成功是必然的(这在第五章中被正式陈述和证明为“没有免费午餐定理”)。开发用于表达领域专业知识的工具,将其转化为学习偏差,并量化这种偏差对学习成功的影响,是机器学习理论的一个中心主题。粗略地说,一个人开始学习过程的先验知识(或先验假设)越强,就越容易从进一步的例子中学习。然而,这些先验假设越强,学习就越不灵活——先验地,它受到这些假设的约束。我们将在第五章中明确讨论这些问题。
1.2 我们什么时候需要机器学习?
我们什么时候需要机器学习而不是直接给计算机编程来执行手头的任务?给定问题的两个方面可能需要使用基于“经验”学习和改进的程序:问题的复杂性和适应性的需要。
太复杂而无法编程的任务
- 动物/人类执行的任务 :我们人类经常执行许多任务,但我们对如何执行这些任务的反思还不够精细,无法提取出明确定义的程序。此类任务的示例包括驾驶、语音识别和图像理解。在所有这些任务中,最先进的机器学习程序,即“从他们的经验中学习”的程序,一旦接触到足够多的训练样本,就会取得令人相当满意的结果。
- 超越人类能力的任务:受益于机器学习技术的另一大类任务与分析非常大和复杂的数据集有关:天文数据、将医疗档案转化为医学知识、天气预测、基因组数据分析、网络搜索引擎和电子商务。随着越来越多可用的数字记录数据,显而易见的是,数据档案中埋藏着大量有意义的信息,这些信息太大、太复杂,人类无法理解。学习在大而复杂的数据集中检测有意义的模式是一个很有前途的领域,在这个领域中,将学习程序与几乎无限的内存容量和不断提高的计算机处理速度相结合,开辟了新的视野。
自适应性
编程工具的一个限制特征是它们的刚性——一旦程序被写下来并安装,它就保持不变。但是,许多任务会随着时间的推移或从一个用户到另一个用户而变化。机器学习工具——其行为适应其输入数据的程序——为这些问题提供了解决方案;从本质上来说,它们能适应与之互动的环境的变化。机器学习对这类问题的典型成功应用包括解码手写文本的程序,其中一个固定程序可以适应不同用户手写之间的差异;垃圾邮件检测程序,自动适应垃圾邮件性质的变化;和语音识别程序。
1.3 学习的类型
学习当然是一个非常广泛的领域。因此,机器学习领域已经分支成几个处理不同类型学习任务的子领域。我们给出了一个学习范式的粗略分类,旨在提供一些视角,说明这本书的内容在机器学习的广阔领域中所处的位置。
我们描述了四个参数,根据这些参数可以对学习范式进行分类。
监督学习与无监督学习
由于学习涉及学习器与环境之间的互动,因此可以根据互动的性质来划分学习任务。 要注意的第一个区别是监督学习和非监督学习之间的区别。作为一个说明性的例子,考虑学习检测垃圾邮件的任务与异常检测的任务。对于垃圾邮件检测任务,我们考虑这样一种设置,在该设置中,学习器接收带标签垃圾邮件/非垃圾邮件的用于训练的电子邮件。在这样的训练基础上,学习器应该找出一个规则来标记新收到的电子邮件。相比之下,对于异常检测任务,学习器在训练中获得的只是大量电子邮件消息(没有标签),而学习器的任务是检测“异常”消息。
更抽象地说,将学习视为“利用经验获得专业知识”的过程,监督学习描述了一种场景,其中“经验”,一个训练的示例,包含了重要的信息(比如垃圾邮件/非垃圾邮件标签),这些信息在未见过的“测试例子”中是缺少的,所学的专业知识将被应用到这些例子中。这种设置中,所获得的专业知识旨在预测测试数据中缺失的信息。在这种情况下,我们可以把环境想象成一个老师,通过提供额外的信息(标签)来“监督”学习者。然而,在无监督学习中,训练数据和测试数据所带有的信息量没有区别。学习器处理输入数据的目的是想出该数据的摘要或压缩版本。将数据集聚类成相似对象的子集就是这种任务的典型例子。
还有一种中间学习设置,其中,虽然训练示例比测试示例包含更多的信息,但是学习器需要为测试示例预测更多的信息。例如,你可以试着学习一个价值函数,它描述了棋盘上每一个位置的白棋优于黑棋的程度。然而,学习者在训练时唯一可用的信息是实际象棋比赛中出现的位置,由谁最终赢得比赛来标记。这种学习框架主要在强化学习 的标题下进行研究。
主动学习器和被动学习器
学习范式会因学习器所扮演的角色而异。我们区分“主动”和“被动”学习器。主动学习器在训练时与环境互动,比如提出问题或进行实验,而被动学习器只观察环境(或老师)提供的信息,而不影响或指导它。请注意,垃圾邮件过滤器的学习器通常是被动的——等待用户标记他们收到的电子邮件。在一个活跃的环境中,可以想象要求用户给学习器选择的,甚至是学习器撰写的特定电子邮件贴上标签,以增强其对垃圾邮件的理解。
老师的帮助
当人们想到人类学习时,比如家里的婴儿或学校的学生,这个过程通常涉及一位乐于助人的老师,他试图向学习者提供对实现学习目标最有用的信息。相反,当科学家学习关于自然时,环境扮演老师的角色,最好被认为是被动的而不考虑学习器的需求——苹果落下,星星闪耀,下雨。我们通过假设训练数据(或学习器的经验)是由某个随机过程生成的来对此类学习场景进行建模。这是“统计学习”分支的基本构建模块。最后,当学习者的输入是由对抗性的“老师”生成时,学习也会进行。这可能是垃圾邮件过滤示例(如果垃圾邮件发送者试图误导垃圾邮件过滤设计者)或学习检测欺诈的情况。当不能假设有更温和的设置时,还使用对抗性教师模型作为最坏的情况可以安全地假设。如果您可以与对抗性的老师学习,那么您就可以保证成功地与任何奇怪的老师互动。
在线与批量学习协议
我们提到的最后一个参数是学习器在整个学习过程中必须在线响应的情况和学习器只有在有机会处理大量数据后才必须利用所获得的专业知识的情况之间的区别。例如,股票经纪人必须根据迄今为止收集的经验做出日常决策。随着时间的推移,他可能会成为一名专家,但在这个过程中可能会犯下代价高昂的错误。相比之下,在许多数据挖掘环境中,学习器——数据挖掘者——在必须输出结论之前,有大量的训练数据要处理。
在这本书里,我们将只讨论可能的学习范例的一个子集。我们的主要重点是在被动学习器的监督下进行统计批处理学习(例如,尝试学习如何根据独立收集的大量患者记录档案生成患者的预测,这些记录档案已经根据记录患者的命运进行了标记)。我们还将简要讨论在线学习和批量无监督学习(特别是聚类)。
1.4 与其他领域的关系
作为一个跨学科领域,机器学习与统计学、信息论、博弈论和最优化等数学领域有着共同的主线。它自然是计算机科学的一个分支,因为我们的目标是给机器编程,让它们学习。从某种意义上说,机器学习可以被视为AI(人工智能)的一个分支,因为毕竟,将经验转化为专业知识或检测复杂感官数据中有意义模式的能力是人类(和动物)智能的基石。然而,人们应该注意到,与传统的人工智能相反,机器学习并不是试图建立智能行为的自动模仿,而是利用计算机的优势和特殊能力来补充人类的智能,通常执行远远超出人类能力的任务。例如,扫描和处理大型数据库的能力允许机器学习程序检测人类感知范围之外的模式。
机器学习中经验或训练的组成部分通常指随机生成的数据。学习器的任务是处理这些随机生成的样本,从而得出结论,这些结论适用于从中挑选这些样本的环境。这种对机器学习的描述突出了它与统计学的密切关系。事实上,这两个学科在目标和使用的技术方面有很多共同点。但是,重点有一些显著的不同;如果医生提出了吸烟与心脏病之间存在相关性的假设,那么统计学家的角色就是查看患者的样本并检查该假设的有效性(这是假设检验的常见统计任务)。相比之下,机器学习旨在利用从患者样本中收集的数据来描述心脏病的原因。希望自动化的技术能够找出人类观察者可能遗漏的有意义的模式(或假设)。
与传统统计学相比,在一般的机器学习中,特别是在本书中,算法考虑(algorithmic considerations)起了主要作用。机器学习是关于计算机对学习行为的执行;因此,算法问题至关重要。我们开发算法来执行学习任务,并关注它们的计算效率。另一个不同之处是,虽然统计学通常对渐近行为感兴趣(比如当样本集合大小增长到无穷大时基于样本的统计估计的收敛),但机器学习理论关注的是有限样本边界。也就是说,给定可用样本集的大小,机器学习理论旨在根据这些样本计算出学习器可以期望的准确度。
这两个学科之间还有进一步的区别,这里我们只再提一个。虽然在统计学中,通常在某些预定数据模型的假设下工作(例如假设数据生成分布的正态性,或函数依赖的线性),但在机器学习中,重点是在“无分布”设置下工作,其中学习器尽可能少地假设数据分布的性质,并允许学习算法找出最接近数据生成过程的模型。对这个问题的精确讨论需要一些技术准备,我们将在本书的后面,特别是在第5章中回到这个问题。
1.5 符号
我们在整本书中使用的大多数符号要么是标准的,要么是现场定义的。在本节中,我们描述了我们的主要约定,并提供了一个总结我们的符号的表格(表1.1)。如果在阅读这本书的过程中,有些注释不清楚,鼓励读者跳过这一部分,回到这里。
我们用小写字母(例如 和 )表示标量和抽象对象。通常,我们希望强调某个对象是向量,然后我们使用黑体字母(例如 和 )。向量 的第 个元素用 表示。我们用大写字母来表示矩阵、集合和序列。具体意思可从上下文看出。正如我们即将看到的,学习算法的输入是一系列训练示例。我们用 表示一个抽象的示例,用 表示一个包含 个示例的序列。历史上, 通常被称为训练集 ;然而,我们总是会假设 是一个序列 而不是一个集合。一个包含 个向量的序列由 表示。 的第 个元素用 表示。
在整本书中,我们利用了来自概率的基本概念。我们用 表示某个集合上的分布,例如 ,我们用符号 表示 是根据 采样的,给定一个随机变量 ,它的期望值用 表示。当从上下文中可以清楚地看出 的依赖对象时,我们有时会使用简写 。对于 我们也用 来表示 。在下一章中,我们还将引入符号 来表示关于 (包括由基于 抽出的样本 组成)的概率,其中每个点 独立于其他点从 采样。
为了在数学上精确, 应该在 子集的一些 代数上定义。不熟悉测度论的读者可以跳过关于更正式的可测性定义和假设的几个脚注和摘要。
一般而言,我们已努力避免使用渐近符号。 但是,我们偶尔会使用它来阐明主要结果。特别地,给定 和 我们写 如果存在 , 使得对于所有 我们有 。我们写 如果对于每个 都存在 使得对于所有 我们有 。 我们写 如果存在 , 使得对于所有 我们有 。符号 是类似的定义。符号 意味着 和 。最后,符号 意味着存在 使得 。
向量 和 之间的内积用 表示。每当我们不指定向量空间时,我们假设它是 维欧氏空间,然后 。向量 的欧氏(或 )范数是 。当 范数在上下文中表述清楚时,我们省略它的下标。我们也使用其他的 范数, ,特别是 和 。
我们用符号 来表示集合 的最小值。为了在数学上更加精确,只要最小值无法实现,我们就应该使用 。然而,在这本书的上下文中,下确界和极小值之间的区别通常没什么值得关心的。因此,为了简化表示,我们有时使用符号 ,即使 更合适。一个类似的解释适用于 与 。
| 符号 | 含义 |
|---|---|
| 实数集 | |
| 上的 维向量集 | |
| 非负实数集 | |
| 自然数集 | |
| ,,,,, | 渐近符号(见正文) |
| 指示函数(如果表达式为真,则等于 ,否则等于 ) | |
| 集合(对于 ) | |
| (列)向量 | |
| 向量的第 个元素 | |
| (内积) | |
| or | ( 的 范数) |
| ( 的 范数) | |
| ( 的 范数) | |
| 中的非零元素的数量 | |
| 上的 的矩阵 | |
| 的转置 | |
| 的 元素 | |
| 的矩阵 使得 (其中 ) | |
| 个向量的序列 | |
| 序列中第 个向量的第 个元素 | |
| 迭代算法中向量 的值 | |
| 向量 的第 个元素 | |
| 实例域(一个集合) | |
| 标签域(一个集合) | |
| 示例域(一个集合) | |
| 假设类(一个集合) | |
| 损失函数 | |
| 关于某集合的分布(通常关于 或 的) | |
| 根据分布 的集合 的概率 | |
| 根据 采样 | |
| 包含 个实例的序列 | |
| 根据分布 独立同分布采样的 | |
| 随机变量的概率和期望 | |
| 对于 | |
| 随机变量 的期望 | |
| 具有期望 和协方差 的高斯分布 | |
| 函数 在 处的导数 | |
| 函数 在 处的二阶导数 | |
| 函数 在 处关于 的偏导数 | |
| 函数 在 处的梯度 | |
| 函数 在 处的微分集 | |
| (在 上的 的最小值) | |
| (在 上的 的最大值) | |
| 集合 | |
| 集合 | |
| 自然对数 |