章节 0

引言

我们不断面对各种问题,并努力借助及时可用的技术来解决它们。每个人都知道,许多日常任务往往是自发而快速完成的,甚至常常不需要有意识的努力。这是因为我们从出生起就在学习应对类似问题,因此我们的解决方式被编码在大脑神经细胞之中。 为了解决复杂任务,特别是科学或工程中的任务,需要深入思考,并且可能需要开展大量研究。那么,如果必须快速而正确地回答复杂问题,该怎么办?一些科学家和工程师能够做到这一点,但通常只限于自己的专业领域,因为他们经过了高强度训练或专门课程学习。 如果普通人也希望以同样的速度和效率解决复杂任务,又该怎么办?一种途径是接受专门训练。另一种替代方式是机器学习:它旨在开发一种带有学习机制的计算机模型,使模型能够基于经验或数据进行学习,从而为特定任务提供快速且可靠的解决方案。...

14分钟 7,506词数 0资料

关键思想

  • 1.1 直觉思维与机器学习:解决复杂任务的途径
  • 1.2 从数据到解决方案:机器学习方法的多样性
  • 1.3 从数据收集到模型部署:创建机器学习模型的阶段
  • 1.4 数学概念、变量与空间
  • 1.5 机器学习模型训练准备基础
  • 1.6 物理与数据:关系建模

实践任务

选取一个与“引言”相关的小例子,说明机器学习、特征在其中如何发挥作用,并用一句话解释结果。

打开实验室

引言

打开实验室

1.1 直觉思维与机器学习:解决复杂任务的途径

我们不断面对各种问题,并努力借助及时可用的技术来解决它们。每个人都知道,许多日常任务往往是自发而快速完成的,甚至常常不需要有意识的努力。这是因为我们从出生起就在学习应对类似问题,因此我们的解决方式被编码在大脑神经细胞之中。

为了解决复杂任务,特别是科学或工程中的任务,需要深入思考,并且可能需要开展大量研究。那么,如果必须快速而正确地回答复杂问题,该怎么办?一些科学家和工程师能够做到这一点,但通常只限于自己的专业领域,因为他们经过了高强度训练或专门课程学习。

如果普通人也希望以同样的速度和效率解决复杂任务,又该怎么办?一种途径是接受专门训练。另一种替代方式是机器学习:它旨在开发一种带有学习机制的计算机模型,使模型能够基于经验或数据进行学习,从而为特定任务提供快速且可靠的解决方案。

科学或工程中的问题通常要复杂得多。这是因为我们作为人类只能体验或观察与这些问题相关的现象。然而,许多现象难以观察,其基础又包含复杂逻辑。科学家试图通过建立理论(或定律、原则)来揭示这种逻辑,以便尽可能好地描述这些现象。随后,这些理论被表述为控制现象中关键变量的代数方程、微分方程或积分方程系统。下一步是寻找能够求解这些方程的方法,以得到随空间和时间变化的变量。最后一步是通过观测和/或实验验证理论,即测量这些变量的值。

得到验证的理论可用于建立模型,解决具有类似现象的问题。这类模型称为基于物理定律的模型。

上述过程正是人类在理解自然方面长期从事的工作;到目前为止,我们已经取得了显著进展。在这个过程中,形成了许多研究领域,如物理学、数学、生物学等,如今它们已经成为科学。

然而,理解自然只是任务的一部分。人类还追求发明和创造新事物。对各种现象的深入理解使我们能够做到这一点,我们也建造了周围的一切:建筑、桥梁、飞机、空间站、汽车、船舶、计算机、手机、互联网、通信系统、能源系统以及许多其他事物。在这一过程中,我们创造了许多发展方向,并称之为工程。

对生物学的理解帮助我们开发药物、治疗人和动物疾病的方法,以及治疗植物和环境的方法,包括制定相应政策和策略。在这一过程中,我们创建了许多研究领域,包括医学、农业和生态学。

在人类历史中,科学、工程和生物学的不同领域已经发展出无数理论、定律、方法、技术等。这里只需要给出一个总体概念:如何依托物理定律来解决任务。

应当指出,在自然、工程和社会中存在大量问题,很难找到合适的物理定律来实现精确而高效的求解。因此,开发替代方法十分重要。

1.2 从数据到解决方案:机器学习方法的多样性

在科学、工程、生物学以及日常生活中,有许多复杂问题:要么控制这些问题的物理定律尚不明确,要么基于这些定律的方程求解过于耗费资源。尽管如此,这些任务通常拥有来自观察、测量或历史记录的数据。如果数据数量充足且质量较高,就可以开发能够从这些数据中学习的计算机模型。

目前已经开发出多种有效的人工神经网络(NNs,Neural Networks),并具有不同配置,用于解决实际问题,包括多层感知机(MLP,Multilayer Perceptron)、卷积神经网络(CNNs,Convolutional Neural Networks)和循环神经网络(RNNs,Recurrent Neural Networks)。

机器学习模拟生物大脑的学习过程,而生物大脑可能包含数量巨大的神经元。从数据使用方式来看,机器学习的主要类别包括:使用带真实标签数据的监督学习;使用无标签数据的无监督学习;以及使用预先定义环境的强化学习。

下面考虑机器学习中用于解决各种分析任务的多种方法。这些任务包括二分类(将数据分为两个类别)、多类分类(将数据分为两个以上类别)、聚类(基于相似性对数据进行分组)、回归(预测连续值)、特征提取(确定数据中最重要的属性)、异常检测(识别不寻常或偏离常态的数据)以及反向分析(确定因果关系)。

作为方法论和算法,可以列举线性回归与逻辑回归(分别用于预测数值或概率)、决策树(以分支结构表示决策的模型)、支持向量机(寻找类别之间最佳分离超平面的算法)、朴素贝叶斯(简单的概率分类器)、多层感知机和人工神经网络(用于函数逼近的复杂网络)、k 近邻方法(基于与样本距离的分类)、随机森林(决策树集成)、Gradient Boosting 算法(通过最小化错误来顺序改进模型)、主成分分析(降低数据维度)、K-means 与 Mean-Shift(聚类方法)、自动编码器(用于数据压缩与重构的神经网络)以及马尔可夫决策过程(考虑转移概率的决策序列建模)。本书将讨论其中一些算法。

本教材将重点关注基于神经网络的模型,因为它们能够建立严格的理论和预测模型。机器学习是一个活跃的研究与开发领域,新的模型(包括认知机器学习模型)不断被研究。不过,本教材不会讨论对各种机器学习模型进行操作和调参的主题。

1.3 从数据收集到模型部署:创建机器学习模型的阶段

机器学习模型的训练过程是一个复杂的多阶段过程,包含以下关键步骤:

数据收集。 这是第一步,也是最重要的阶段之一,它意味着收集足够数量的高质量数据,用于训练模型。数据可以通过多种方式获得:通过传感器或问卷进行直接采集,从开放或商业数据库导入,也可以借助计算机合成方法,在真实数据之外补充人工生成样本,以增加训练样本的规模和多样性。

数据预处理。 在这一阶段,数据会被清理,以去除错误、异常和缺失项。预处理可能包括归一化、标准化、删除重复项、处理缺失值以及其他预处理技术,其目的在于提高数据质量和一致性,使其在进入模型之前更加适合使用。

模型选择。 在这里确定机器学习模型的结构,包括选择算法类型(例如线性回归、神经网络、决策树)以及最适合基于现有数据解决所提出问题的假设。

算法设置。 在这一阶段,开发或选择用于调整模型参数的学习算法。必须考虑模型学习能力(取决于参数数量和模型复杂度)与可用数据集规模之间的平衡,以避免过拟合。如有必要,会采用正则化方法来提高模型的泛化能力。

模型初始化。 在训练开始前,需要初始化模型参数。这可以通过随机选择初始值完成,也可以使用预训练模型的参数,后一种方式尤其适用于可用训练数据不足、无法从零开始训练模型的情况。

模型训练。 在此过程中,模型使用选定的优化算法在准备好的数据集上进行训练。训练包括调整模型参数,使训练数据集上预测值与真实值之间的差异(模型误差)最小化。

模型测试。 训练完成后,需要在独立测试数据集上评估模型,该测试数据集未参与训练过程。这样可以检验模型将所学知识泛化到新数据上的能力,并识别可能的过拟合。

模型部署。 成功测试后,模型即可部署到真实环境中,用于解决类似任务。部署可能包括将模型集成到生产系统中、开发相应软件,或将模型嵌入设备和应用程序中,使其能够基于新数据自动做出决策或提供建议。

1.4 数学概念、变量与空间

为了便于本书后续讨论,将使用若干特定变量和空间。需要指出的是,除非需要进行几何上封闭的运算,本书只讨论实数。下面考虑两个例子。

示例 1,回归。 设想一家公司生产运动装备,并希望开发一个机器学习模型,用于根据材料类型、重量和鞋底类型预测跑鞋的使用寿命。目标是预测跑鞋在达到临界磨损前能够承受多少公里的跑步距离。为此,使用不同的材料、重量和鞋底组合进行一系列测试,并收集包含 10,000 个数据点的数据集。每个数据点包含上述特征以及达到临界磨损前的实际里程。这些数据用于训练和验证回归模型。

示例 2,分类。 假设一家医疗机构需要根据血液检测结果自动化疾病诊断过程。机器学习模型的任务是根据血红蛋白水平、白细胞数量以及 ESR 指标(红细胞沉降率),将化验结果分类为“正常”和“病理”。为此,收集 10,000 名患者的血液检测数据;对于每位患者,记录上述参数水平以及医生给出的诊断。该数据集包含类别标签(正常或病理)以及测量参数,可用于训练分类模型,使其能够基于血液检测结果自动化完成初步诊断过程。

这些示例有助于理解可借助机器学习模型有效解决的典型任务。

1.4.1 特征空间

机器学习使用包含 p 个可观察或可测量实数变量的数据集,这些变量位于实数空间 R 中,通常称为特征。在上述两个示例中,p = 3。我们可以定义 p 维特征空间,它是实数域 R 上的向量空间,并具有一定的内积。对于任意点 (x_1, x_2, ..., x_p),向量可写为 x = [x_1, x_2, ..., x_p]。

坐标原点位于 x = [0, 0, ..., 0],这是所有向量空间的标准做法。

请注意,默认情况下,我们将所有向量都定义为行向量,这与 Python 编程中的常见做法一致。列向量被视为矩阵的特殊情形:它只有一列和多行。显然,特征空间是实数空间的一个特殊情形(具有特定向量运算)。

此外,x_i(i = 1, 2, ..., p)称为线性基函数(不要与基向量混淆),因为它们的线性组合会给出新的向量 x,而该向量仍然位于同一特征空间中。

具有 p 个特征的数据点是空间中的一个离散点,其对应向量可表示为:

x_i = [x_{i1}, x_{i2}, ..., x_{ip}], i = 1, 2, ..., m

其中,m 是数据集中测量、观察或数据点的数量。它也常被称为数据集中的样本数。对于上述两个示例,m = 10,000。

数据点 x_i(i = 1, 2, ..., m)可以堆叠为数据集,记为 X。这样做是为了便于表述。在实际计算中,我们通常不会显式形成这样的矩阵,因为对于具有大 m 的大规模数据集,它往往非常巨大。

1.4.2 仿射空间

仿射空间是机器学习中用于描述扩展特征空间的概念。实践上,这意味着在普通的 p 维特征空间中增加一个额外维度,以包含一个常数项(通常用于考虑线性模型中的自由项)。这个常数项通常取值为 1。因此,仿射空间中的特征向量具有形式:

\hat{x} = [1, x_1, x_2, ..., x_p]

这个增广特征向量构成线性函数的完整基。它允许在特征空间中构建任意线性函数。每个特征向量开头的一项 1 使仿射变换成为可能;仿射变换不仅包括缩放和旋转等线性操作,还包括平移,而这对许多机器学习任务都非常重要。

仿射空间与向量空间不同,因为其中没有明确定义的起点(零向量)。在仿射空间中,两个向量的和不一定仍属于同一空间,仿射空间本身也不包含零向量。

在仿射空间框架中,向量属于扩展空间,但它的端点受到某个超平面的限制。在教材文献中,这类空间有时被描述为具有一个“伪维度”,它比真实维度小一。

在函数逼近理论中,由数据点集合(i = 1, 2, ..., m)构成的矩矩阵是一种便于组织数据的方式,用于表述逼近问题。不过在计算实践中,这样的矩阵可能不会被显式形成,而是作为构建和求解机器学习问题的理论基础。

需要强调的是,保持空间仿射性质的仿射变换在机器学习许多方面都起重要作用;它们的性质和应用将在本书后续章节中详细讨论。

1.4.2 标签空间

标签空间:考虑用于创建监督式机器学习模型的有标签数据集。引入变量 (y_1, y_2, ..., y_k),它们是在实数空间中的实数。对于示例 1,k = 2,我们可以在实数上定义标签空间。它是一个向量空间。标签空间中的向量可以写作:

y = (y_1, y_2, ..., y_k)

在数据集中,标签与数据点相关联。数据点 x_i 的标签记为 y_i,可表示为:

y_i = [y_{i1}, y_{i2}, ..., y_{ik}], i = 1, 2, ..., m

对于示例 1,值 y_{ij}(i = 1, 2, ..., 10000;j = 1)表示标签空间中的 10,000 个实数。对于示例 2,每个标签 y_{i1} 或 y_{i2} 可以取 0 或 1;不过这些标签仍然在标签空间语境中加以考虑。

这些标签 y_i(i = 1, 2, ..., m)可以收集到标签集 Y 中,尽管在实践计算中我们并不总是这样做。

通常,仿射变换在神经网络的输出层结束,并在标签空间中生成一个向量,随后便可为“最终监督”构建损失函数。

1.4.3 假设空间

机器学习模型中的学习参数是连续变量,存在于假设空间中。学习参数也称为可训练参数。我们将这些术语作为同义词使用。可训练参数包括每一层中的权重和偏置。w 上方的“帽子”符号表示它是所有权重与偏置的集合,因此我们用一个统一的向量记号表示全部学习参数。其维度 P 取决于所使用的假设类型,包括神经网络或机器学习模型的配置。这些参数始终与特征向量一起工作,并通过适当设计的架构,在新的特征空间或标签空间中得到中间特征向量。

这些参数需要被更新,而更新涉及向量运算。为了保证收敛性,全部学习参数组成的向量必须具有重要的向量性质,例如标量积、范数以及满足 Cauchy-Schwarz 不等式等。本教材将多次进行这类证明。因此,我们要求假设空间是一个向量空间,使得每一次对当前学习参数的更新都会产生新的参数,并且这些新参数在收敛之前仍然位于同一向量空间中。

请注意,学习参数通常表现为矩阵或列向量(列向量可被视为矩阵的特殊情形)。在典型的机器学习模型中,可能会有多个不同大小的矩阵。这些矩阵形成仿射变换,并作用于仿射空间中的特征。假设空间“向量”中的一个分量实际上可能是矩阵,因此并不容易直观理解。最简单且有效的方法是将所有矩阵“展平”,然后把它们“连接”在一起,形成一个高维向量,再像处理普通向量一样处理它。在 Python 中,我们经常执行这种展平与连接。因此,假设空间中的展平高维向量可以一般地写作:

\hat{w} = [w_1, w_2, ..., w_P]

在后续章节中,我们将针对不同模型更详细地讨论这一点,包括维度 P 的估计。

1.4.3 机器学习中的数学建模:从假设到优化

最后,我们可以在数学上将用于预测的机器学习(ML)模型定义为一个映射算子。

这意味着 ML 模型使用带标签的数据集 X 来训练其参数,并创建一个映射(或一组巨大的函数),使其能够对特征空间中的任意一点在标签空间中做出预测。

方程中所示的 ML 模型实际上是一个“数据—参数”转换器:在训练过程中,它把给定数据集转换为学习参数;随后又把参数转换回来,为给定的特征变量集合生成预测。从数学上看,它也可以被理解为由特征空间中的分量构成、并由学习参数参数化控制的巨大函数。当参数被调好后,就得到定义在特征空间上的一组巨大函数。

另一方面,对于数据集中的任意给定数据点,这一组巨大函数也可以看作这些参数的连续(可微)函数,并可用于形成同样可微的损失函数。这样的损失函数可以是这些巨大函数与数据集中相应标签之间的误差。它可被视为预测函数的泛函,而预测函数本身又是向量空间中参数的函数。训练的本质就是通过更新学习参数,使其达到优化值,从而最小化数据集中所有数据点上的这一损失函数。后续章节将把这一总体图景明确写成公式。构建高质量 ML 模型的成功因素包括:

1. 假设类型; 2. 学习参数的数量; 3. 数据集质量,即它对所解决问题的代表性,包括正确性、规模、数据点在特征空间中的分布以及噪声水平; 4. 寻找学习参数优化器的技术,以便更好地再现数据集中的标签。

我们将在后续章节中结合不同机器学习模型对此进行详细讨论。

空间概念有助于我们后续分析机器学习模型的预测性质。读者在当前阶段可能难以理解这些概念,因此建议现在只形成一个大致印象,并在阅读使用这些概念解决具体 ML 问题的相关章节时再回到本节。

注:也存在用于离散特征变量的 ML 模型,并且学习参数也可能不是连续的。这类方法通常基于直观规则和技术开发;我们也将讨论其中一些方法。空间概念可能无法直接适用,但往往仍能提供帮助。

1.5 机器学习模型训练准备基础

1.5.1 ML 训练组件

为了成功训练机器学习(ML)模型,需要若干组件;每个组件都在模型开发和性能评估中发挥重要作用。

第一个也是最基本的组件是数据集。数据可以通过多种方式收集,包括观察、实验,以及基于物理定律的建模。这些数据为 ML 模型的训练提供事实信息。通常,数据集会被划分为训练集和测试集,标准比例为 75% 数据用于训练,25% 用于测试。重要的是,测试数据集必须独立于训练数据集,这样才能客观评估模型性能。

第二个要素是数据标签,它们对于监督学习任务是必需的。标签充当“答案”或“目标变量”,模型力图对其进行预测。标签对训练过程很重要,因为模型会利用这些标签来调整自身参数并最小化预测误差。

第三个组件是关于数据集的先验信息,它可能包括对数据质量及其关键特征的了解。这些知识有助于选择最合适的机器学习算法,并判断是否需要使用正则化方法来减少过拟合、提高模型泛化能力。

第四个要素是合适的软件工具和算法。根据任务和数据集的不同,可能需要使用特定的软件包、库或框架,它们提供数据处理、模型训练以及性能评估所需的函数和方法。

这些组件共同为有效训练和测试机器学习模型提供必要资源,从而能够创建功能强大且可靠的预测系统。

1.5.2 机器学习中的数据谱系:从收集到应用

数据是机器学习的根本基础,为模型构建和训练提供信息。数据的多样性与机器学习的应用领域一样广泛。视觉数据包括图像和照片,它们来自各种来源——从移动设备到专业医疗设备,如计算机断层扫描仪和磁共振成像设备。

计算机生成的数据可以来自基于物理原理的模型,也可以来自其他可靠的人工模型。文本数据的范围从公开文档到社交媒体和电子邮件。音频和视频数据进一步丰富了可用于分析和解释的数据来源。

不过,必须认识到,数据质量及其与具体应用领域的一致性对于创建可靠的机器学习模型是必要条件。尝试在模型训练域之外使用模型,可能会导致不可预测且潜在危险的结果。当模型做出的决策可能影响健康、安全或重要社会问题时,这一点尤为重要。因此,必须仔细评估数据,并确保模型已在能够充分代表其未来使用条件的数据上经过测试和验证。

1.6 物理与数据:关系建模

总体而言,机器学习模型是“学习慢、预测快”的模型;而基于物理定律的模型不需要学习(因为使用已有定律),但预测速度较慢。这是因为基于物理定律的模型和基于数据的模型采用的策略有很大差异。ML 模型使用数据集来学习参数,而基于物理定律的模型使用定律来确定参数。

然而,在细化的计算方法层面,两类模型中使用的许多技术实际上相同或非常相似。例如,当我们把一个变量表示为其他变量的函数时,两类模型都会使用基函数(多项式基函数、径向基函数 RBF,或二者兼有)。在构造目标函数时,两类模型都会使用最小二乘法表述。此外,两者使用的正则化方法也相当相似。因此,不应将这些模型完全割裂开来学习。物理定律和工程规律可能具有深层联系,并能够相互适配。意识到这一点,有助于通过在两类模型之间交流思想和技术,更好地理解并进一步发展更有效的方法。总体而言,对于基于物理定律的计算方法,例如无网格方法的一般形式,我们已经比较清楚地理解了该方法为什么以及如何在理论上发挥作用。因此,当把该方法用于某个问题时,我们对将获得的结果较有信心。然而,对于基于数据的方法,情况并不总是如此。因此,为基于数据的方法发展基础理论非常重要。本书将努力讨论同一种计算方法在两类模型中使用时的相似性和差异。

1.7 关于本教材

本书提供机器学习的入门指南,重点介绍开发各种机器学习模型所必需的基本概念、基础理论和关键计算方法。鉴于机器学习领域的广阔性和动态性,追求内容的完备是不可能的;因此,本书力求帮助读者牢固掌握基础,以便在此基础上继续学习。需要指出的是,机器学习是一个理论知识必须与实践技能相结合的领域;借助互联网上大量可用资源,读者可以获得实际应用和进一步学习所需的工具。

本书特别关注现有文献中尚未充分阐述的主题。其中包括对线性函数可预测性的深入讨论,对仿射变换及其在构建深层网络中作用的研究,以及对通用预测理论、数据到参数变换概念等许多内容的详细考察。

本书的结构使读者能够以任意顺序学习各章,并且尽量减少查阅交叉引用的需要。这种方式有助于更深入地进入感兴趣的主题,而不会丢失学习主线。

1.7.1 本教材面向的读者

本教材面向希望学习机器学习基础的初学者,包括大学生、研究生、研究人员以及工程和科学领域的专业人员。希望学习如何创建机器学习模型的工程师和实践人员,也可以从本书中获益。

机器学习仍然是一个快速发展的研究领域。许多复杂问题为开发新方法和新算法提供了广泛的研究机会。目前,这是一个热门研究方向。各种技术每天都在发展。作者希望本书能有助于学习现有机器学习模型,并帮助开发新的机器学习模型。

自测

哪一项最能概括“引言”这一章的重点?

在机器学习中,理论定义需要通过数值示例和可视化进行检验。

哪些做法有助于巩固本章内容?

参加测试