机器学习旨在设计算法来自动从数据中提取有价值的信息。重点在于“自动”,也就是说,机器学习关注的是可以应用于许多数据集的通用方法,同时产生有意义的结果。机器学习的核心有三个概念:数据、模型和学习。 由于机器学习本质上是数据驱动的,因此数据是机器学习的核心。机器学习的目标是设计通用方法,理想情况下无需太多特定领域的专业知识,即可从数据中提取有价值的模式。例如,给定大量的文档(例如许多图书馆中的书籍),机器学习方法可以用于自动查找跨文档共享的相关主题(Hoffman 等人,2010 年)。为了实现这一目标,我们设计的模型通常与生成数据的过程相关,类似于我们获得的数据集。例如,在回归设置中,模型将描述一个将输入映射到实值输出的函数。套用 Mitchell(1997 年)的话:如果模型在考虑了数据之后,在给定任务上的性能有所提高,则称该模型从数据中学习。目标是找到能够很好地泛化到尚未看到的数据的良好模型,这可能是我们将来关心的问题。学习可以理解为一种通过优化模型参数来自动查找数据中的模式和结构的方式。 虽然机器学习已经取得了许多成功案例,并且软件可以 readily 用于设计和训练丰富而灵活的机器学习系统,但我们认为机器学习的数学基础对于理解构建更复杂机器学习系统的基本原理至关重要。了解这些原理可以促进创建新的机器学习解决方案,理解和调试现有方法,并了解我们正在使用的这些方法的内在假设和局限性。
我们在机器学习中经常面临的挑战是概念和词汇是易变的,机器学习系统的特定组件可以被抽象成不同的数学概念。例如,在机器学习的上下文中,“算法”一词至少以两种不同的含义使用。第一种含义中,我们使用“机器学习算法”这个词组来表示一个根据输入数据进行预测的系统。我们将这些算法称为预测器。在第二种含义中,我们使用完全相同的词组“机器学习算法”来表示一个系统,该系统会调整预测器的一些内部参数,使其在未来未见过的输入数据上表现良好。在这里,我们将这种调整称为训练系统。 本书不会解决歧义问题,但我们想预先强调,根据上下文,相同的表达方式可能意味着不同的东西。但是,我们试图使上下文足够清晰,以减少歧义程度。 本书的第一部分介绍了讨论机器学习系统三个主要组成部分所需的数学概念和基础:数据、模型和学习。我们将在本节简要概述这些组成部分,并在第 8 章讨论了必要的数学概念后再次回顾它们。 虽然并非所有数据都是数字,但将数据视为数字格式通常很有用。在本书中,我们假设数据已经适当地转换为适合读取到计算机程序中的数字表示形式。因此,我们将数据视为向量。作为另一个说明词汇微妙的例子,有(至少)三种不同的方式来思考向量:向量作为数字数组(计算机科学观点),向量作为具有方向和大小的箭头(物理学观点),以及向量作为服从加法和缩放的对象(数学观点)。 模型通常用于描述生成数据的过程,类似于手头的数据集。因此,好的模型也可以被认为是真实(未知)数据生成过程的简化版本,它们捕获了与建模数据和从中提取隐藏模式相关的方面。然后,一个好的模型可以用来预测现实世界中会发生什么,而无需进行现实世界的实验。 现在我们来讨论问题的关键,即机器学习的学习组件。假设我们给定了一个数据集和一个合适的模型。训练模型意味着使用可用数据来优化模型的一些参数,这些参数与评估模型对训练数据预测效果的效用函数相关。大多数训练方法都可以被认为是一种类似于爬山到达山顶的方法。在这个类比中,山顶对应于某个期望性能指标的最大值。然而,在实践中,我们希望模型在未见过的数据上表现良好。在已经见过的数据(训练数据)上表现良好可能仅仅意味着我们找到了一个很好的方法来记忆数据。但是,这可能无法很好地泛化到未见过的数据,并且在实际应用中,我们经常需要将我们的机器学习系统暴露在它以前从未遇到过的情况中。 让我们总结一下我们在本书中涵盖的机器学习的主要概念: 我们将数据表示为向量。 我们选择一个合适的模型,要么使用概率观点,要么使用优化观点。 我们通过使用数值优化方法从可用数据中学习,目的是使模型在未使用于训练的数据上表现良好。
我们可以考虑两种策略来理解机器学习的数学: 自下而上:从基础概念到更高级概念的构建。这通常是数学等更技术性领域的首选方法。这种策略的优点是读者始终能够依赖他们之前学过的概念。不幸的是,对于从业者来说,许多基础概念本身并不特别有趣,缺乏动机意味着大多数基础定义很快就会被遗忘。 自上而下:从实际需求深入到更基本的要求。这种目标驱动的方法的优点是读者始终知道为什么需要学习特定的概念,并且有一条清晰的所需知识路径。这种策略的缺点是知识建立在潜在不稳定的基础之上,并且读者必须记住一组他们无法理解的词汇。 我们决定以模块化的方式编写本书,将基础(数学)概念与应用分开,以便可以用这两种方式阅读本书。本书分为两部分,其中第一部分奠定数学基础,第二部分将第一部分的概念应用于一组基本的机器学习问题,这些问题构成了机器学习的四大支柱,如圖 1.1 所示:回归、降维、密度估计和分类。第一部分的章节大多建立在前一章的基础之上,但如果需要,可以跳过一章并向后工作。第二部分的章节只是松散耦合的,可以按任何顺序阅读。书的两部分之间有许多向前和向后的指针,将数学概念与机器学习算法联系起来。 当然,阅读本书的方法不止两种。大多数读者学习时都结合了自上而下和自下而上的方法,有时会在尝试更复杂的概念之前建立基本的数学技能,但也会根据机器学习的应用来选择主题。
第一部分是关于数学的
我们在本书中涵盖的机器学习的四大支柱(参见圖 1.1)需要坚实的数学基础,这在第一部分中进行了介绍。 我们将数值数据表示为向量,并将此类数据的表格表示为矩阵。向量和矩阵的研究称为线性代数,我们将在第 2 章中介绍。矩阵作为向量的集合也将在那里进行描述。 给定两个表示现实世界中两个对象的向量,我们想就它们的相似性做出陈述。想法是,我们的机器学习算法(我们的预测器)应该预测相似的向量具有相似的输出。为了形式化向量之间相似性的概念,我们需要引入将两个向量作为输入并返回一个表示它们相似性的数值的操作。相似性和距离的构造是解析几何的核心,将在第 3 章中讨论。 在第 4 章中,我们将介绍一些关于矩阵和矩阵分解的基本概念。一些矩阵运算在机器学习中非常有用,它们允许对数据进行直观的解释和更有效的学习。 我们通常认为数据是某些真实底层信号的噪声观测值。我们希望通过应用机器学习,我们可以从噪声中识别信号。这需要我们有一种语言来量化“噪声”的含义。我们通常也希望拥有能够表达某种不确定性的预测器,例如,量化我们对特定测试数据点预测值的信心。不确定性的量化是概率论的范畴,将在第 6 章中介绍。 为了训练机器学习模型,我们通常会找到最大化某些性能指标的参数。许多优化技术都需要梯度的概念,它告诉我们在哪个方向搜索解决方案。第 5 章是关于向量微积分的,详细介绍了梯度的概念,我们随后将在第 7 章中使用它,在那里我们将讨论优化以找到函数的最大值/最小值。
第二部分是关于机器学习的
本书的第二部分介绍了圖 1.1 所示的机器学习的四大支柱。我们说明了本书第一部分中介绍的数学概念如何成为每个支柱的基础。总的来说,章节按难度排序(升序)。 在第 8 章中,我们将以数学的方式重申机器学习的三个组成部分(数据、模型和参数估计)。此外,我们提供了一些构建实验设置的指南,以防止对机器学习系统进行过于乐观的评估。回想一下,目标是构建一个在未见过的数据上表现良好的预测器。 在第 9 章中,我们将仔细研究线性回归,我们的目标是找到将输入 x ∈ RD 映射到相应的观察函数值 y ∈ R 的函数,我们可以将其解释为相应输入的标签。我们将讨论通过最大似然估计和最大后验估计进行的经典模型拟合(参数估计),以及贝叶斯线性回归,其中我们将参数积分而不是优化它们。 第 10 章重点介绍使用主成分分析进行降维,这是圖 1.1 中的第二个支柱。降维的主要目标是找到高维数据 x ∈ RD 的紧凑、低维表示,这通常比原始数据更容易分析。与回归不同,降维只关注建模数据——没有与数据点 x 关联的标签。 在第 11 章中,我们将转向我们的第三个支柱:密度估计。密度估计的目标是找到描述给定数据集的概率分布。为此,我们将专注于高斯混合模型,并将讨论一种迭代方案来找到该模型的参数。与降维一样,没有与数据点 x ∈ RD 关联的标签。但是,我们不寻求数据的低维表示。相反,我们对描述数据的密度模型感兴趣。 第 12 章以深入讨论第四个支柱:分类来结束本书。我们将讨论支持向量机中的分类。与回归(第 9 章)类似,我们有输入 x 和相应的标签 y。但是,与标签为实值的回归不同,分类中的标签是整数,这需要特别注意。 1.3 练习与反馈 我们在第一部分提供了一些练习,这些练习主要可以用笔和纸完成。对于第二部分,我们提供编程教程(jupyter notebooks)来探索我们在本书中讨论的机器学习算法的一些属性。 我们感谢剑桥大学出版社大力支持我们通过以下方式使本书免费下载来使教育和学习民主化的目标:
可以在此处找到教程、勘误表和更多资料。可以使用前面的 URL 报告错误并提供反馈。