



为了简化描述,我们将讨论一只假想猫的场景,它只需做出一个决策:面对前方的物体,是选择逃跑、忽略还是靠近并发出呼噜声。它只能根据与面前物体相关的两个定量输入来做出决策(如图1.1所示)。
注: 本章是对机器/深度学习的简要概述。因此,它涉及了一些将在后续章节中详细介绍的数学概念。尽管如此,我们还是建议你现在就开始阅读本章,并且希望你在掌握了有关向量和矩阵的知识后,能够再次回顾本章内容。
输入特征包括表示硬度的 x 0 和表示锋利度的 x 1 。在不损害普遍性的前提下,我们可以对这些输入特征进行归一化处理。这是一种广泛应用的技术,目的是将输入值(在最小可能值 v min 和最大可能值 v max 之间)转换为0到1之间的数值。通过以下公式,可以将任意输入值 v 转换为归一化形式 v norm :
从数学角度来说,通过式(1.1)进行的转换,即
,就是将输入域
中的值
v
映射到[0,1]之间的输出值
v
norm
。
为简单起见,我们用一个二元向量
来表示单个输入实例。
该模型的最终输出是多分类的,可以取以下三种可能值之一:0,表示猫逃离面前的物体;1,表示忽略该物体;2,表示靠近该物体并发出呼噜声。尽管在机器学习中可以直接计算类别,但在本例中,我们将让模型估计一个威胁评分。它的解释如下:威胁评分为正且绝对值较大=逃跑,威胁评分接近零=忽略,威胁评分为负且绝对值较大=靠近并发出呼噜声(负威胁表示该物体具有吸引力)。
通过将威胁评分 y 与阈值 δ 进行比较,我们可以做出最终的多分类决策(逃跑/忽略/靠近),具体如下:
接下来是最关键的一步:我们需要估计将输入向量转换为输出的函数。稍微变通一下术语,我们将用 y 表示该函数及其输出。用数学符号表示的话,即我们需要估计 y ( x )。
当然,我们并不知道理想的函数。因此,我们将尝试从训练数据中估计这个未知的函数。这可以通过两个步骤完成:
1.模型架构选择:设计一个参数化函数,我们期望它能够有效地近似或替代这个未知的理想函数。
2.训练:估计所选函数的参数,使得在训练输入上的输出尽可能地接近期望输出。
这是各种机器学习方法相互区别的关键步骤。在这个猫脑示例中,我们将使用最简单的模型,该模型具有三个参数,
w
0
,
w
1
,
b
,可以将它们紧凑地表示为一个二维向量
和一个常数偏置
(这里,
R
表示所有实数集,
R
2
表示两个元素都是实数的二维向量集)。通过这些参数,可以计算并输出威胁评分
y
,具体如下:
请注意, b 是一个稍显特殊的参数,它是一个不与任何输入相乘的常数。在机器学习中,我们通常将它称为 偏置 ;其他参数则作为权重,与输入数据相乘。
一旦确定了模型架构,我们就知道了用于建模未知函数 y ( x )(将输入转换为输出的)的具体参数化函数。因此,我们得到了一个带有未知参数的函数,这些参数需要根据一组已知输出的输入数据(训练数据)来进行估计。我们将不断调整这些参数的值,以便训练数据输入上的输出,使其尽可能地匹配已知输出。
迭代训练
数学家已经对这类问题进行了研究,他们将其称为 函数拟合 问题。然而,随着机器学习的出现,数据的规模产生了巨大的增长。在机器学习中,我们处理的训练数据通常包含数百万的数据项。这改变了问题的解决方式。在传统方法中,数学家采用求闭型解的方法,通过直接求解包含所有训练数据项的方程来估计参数。而在机器学习中,我们采用迭代的解决方案,每次只需加载少量(甚至可能仅一条)的训练数据并对其进行处理即可,因此,无须将所有训练数据都保存在计算机内存中。我们将用猫脑示例来说明这一点。
具体来说,训练过程的目标是估计方程中的参数 w 0 , w 1 , b 或者等效地估计向量 w 和常数 b ,以便训练数据输入( x 0 , x 1 )上的输出 y ( x 0 , x 1 )能够尽可能地匹配相应的已知输出(又名基准真值[GT])。
假设训练数据包含
N
+1个输入
x
(0)
,
x
(1)
,…,
x
(
N
)
。这里,每个
x
(
i
)
都是一个2×1的向量,表示一个单独的训练数据输入实例。相应的期望威胁评分(输出)是
,
,…,
(这里,下标gt表示基准真值)。因此,我们可以说训练数据由
N
+1个输入-输出对组成:
假设
w
表示该模型的最优参数(尚未知晓)。那么,给定任意一个输入
x
,机器将估计出一个威胁评分
y
predicted
=
w
T
x
+
b
。对于第
i
个训练数据对
,机器估计的威胁评分如下:
而期望的输出是
。因此,机器在第
i
个训练数据实例上产生的误差平方(又称损失)为
整个训练数据集上的总损失是通过将每个单独训练数据实例的损失相加获得的:
训练的目标是找到一组模型参数(也称为权重) w ,以最小化总误差 E 。具体如何实现我们将在后文描述。
在大多数情况下,我们无法使用闭型解来得出最优的 w , b 。因此,我们采用了迭代的方法,如算法1.1所示。
在这个算法中,我们从随机参数值开始,并持续调整参数值,使得总误差至少略有下降。我们会持续这样做,直到误差变得足够小。
从纯数学的角度来看,我们会持续迭代直到误差达到最小。但在实际操作中,当结果对于所解决的问题足够准确时,我们通常就会停止迭代。值得强调的是,这里的误差仅指训练数据上的误差。
最后,将经过训练的机器(具有最优参数
w
∗
,
b
∗
)部署到现实世界中。它将接收新的输入
x
,并据此推理出
。我们将通过设定阈值
y
predicted
来对输入
x
进行分类,如式(1.2)所示。