尽管这些任务都需要自己的工具和技术,但支撑它们的许多关键思想对于所有这些问题都是通用的。本章的主要目标之一是以一种相对非正式的方式介绍其中几个最重要的概念,并用简单的例子来说明它们。在本书的后面,我们将看到这些相同的思想再次出现在更复杂的模型中,这些模型适用于现实世界的模式识别应用程序。本章还提供了一个独立的介绍,将在整个书中使用的三个重要工具,即概率论,决策理论和信息论。虽然这些听起来像是令人生畏的主题,但它们实际上很简单,如果要在实际应用中使用机器学习技术以达到最佳效果,对它们的清晰理解是必不可少的。
图1.2 N=10个点的训练数据集,用蓝色圆圈表示,每一个圈由输入变量x的观察值和对应的目标变量t组成。绿色线表示用来生成数据的函数sin(2πx)。我们的目标是预测一些新的x的的t值,而无需知晓绿色曲线。
1.1 示例:多项式曲线拟合
我们首先介绍一个简单的回归问题,我们将在本章中使用它作为一个运行的例子来激发一些关键概念。假设我们观察到一个实值输入变量x,我们希望使用这个观察值来预测实值目标变量t的值。就目前的目的而言,考虑一个使用人工合成产生的数据的人工例子是有益的,因为这样我们就知道产生数据的确切过程,以便与任何学习模型进行比较。这个例子的数据由函数sin(2πx)生成,目标值中含有随机噪声,其中的细节描述在附录A。
现在假设我们有一个包含N个观察值x的训练集,写作,对应于t值的观察值,表示为。图1.2展示了由N=10的数据点组成的训练集的图像。图1.2中的输入数据集x是在[0,1]范围内通过相同间隔的挑选产生。目标数据集通过对每一个点计算函数sin(2πx)的对应值后,并添加上一个具有高斯分布的微小的随机噪声(高斯分布在1.2.4章节讨论)以得到对应的值。通过这种方式产生数据,我们捕获了许多真实数据集的性质,也就是说他们具有一种潜在的规律,这是我们希望学习的,但是独立的观察被随机噪声干扰,这种噪声可能来自本质上随机的过程,例如放射性衰变,但更通常的是由于存在自身未被观察到的具有变化性的噪声源。
我们的目标是利用这个训练集来对输入的一些新的x值进行目标变量t的预测。正如我们之后看到的那样,这涉及到隐式地发现内在的函数sin(2πx)。这本质上是一个困难的问题,因为我们必须从有限的数据集进行归纳。此外,观察数据也会被噪声干扰,因此对于给定的x值,合适的t值具有不确定性。概率论(在章节1.2讨论)提供了一个框架以精确和定量的方式描述了这种不确定性,并且决策论(在章节1.5讨论)允许我们利用这种概率表示,以便根据适当的标准做出最优的预测。
不过就目前而言,我们将以相当非正式的方式进行,并考虑一种基于曲线拟合的简单方法。特别地,我们将使用如下形式的多项式函数来拟合数据
其中,M是多项式的阶数,x^{j}表示x的j次方。多项式系数整体基座向量w。注意,尽管多项式函数y(x,w)是x的非线性函数,但它是系数w的线性函数。函数,例如多项式函数,它们关于未知参数具有线性关系,这种函数具有重要性质,被称为线性模型并在章节3和章节4中得到充分讨论。
系数的值将通过对训练数据进行多项式拟合来确定。这可以通过最小化误差函数来测量,该函数测量对任意给定w值的函数y(x,w)和训练集数据点之间的不匹配程度。一个简单的广泛使用的误差函数的选择是在每一个数据点的预测值和对应的目标值之间的误差平方和,所以我们最小化
为了之后计算的便捷,引入了因子。我们将在本章后面讨论选择这种误差函数的原因。暂时我们只注意到它是个非负数,并且当且仅当函数y(x,w)准确的穿过每个训练数据点后该误差为0,平方和误差函数的几何解释如图1.3所示。
我们可以通过选择使E(w)尽可能小的w值来解决曲线拟合问题。因为误差函数是系数w的平方函数,所以它关于系数的导数是w的线性函数。因此误差函数的最小值有一个唯一解,记作,该解是封闭解。由此得到的多项式由函数给定。
到现在仍然存在多项式的M阶的选择问题,正如我们将要看到的。这将成为一个重要概念的例子,成为模型比较或模型选择。在图1.4中,我们给出了四个多项式拟合的结果,其中多项式的阶数M分别为0,1,3,9,数据集是图1.2所示的数据。
我们注意到常数(M=0)和1阶(M=1)多项式对函数的拟合很差,因此不能很好地表示函数sin(2πx)。三阶(M=3)多项式似乎给出了对函数sin(2πx)的最好的拟合,图1.4第三个图。当我们得到更高阶的多项式(M=9)时,我们得到了对于训练数据完美的拟合,事实上,这个都像是精确的经过了每一个数据点并且.然而,拟合曲线剧烈震荡,对函数sin(2πx)的表示很差。后面这种行为被称为过拟合。
正如我们前面提到的,目标是通过对新数据进行准确的预测来实现良好的泛化。我们可以通过考虑一个单独的测试集来定量地考察泛化性与M的关系。该测试集由100个数据点组成,这些数据点使用与训练集生成方式完全相同,但对目标值中包含的随机噪声值进行了新的选择。对于M的每个选择,我们可以使用(1.2)式来计算训练数据的残差。我们也可以对测试集计算。有时,使用根均方误差更加方便。定义为
其中除以N可以让我们在平等的基础上比较不同大小的数据集,平方根确保E_{RMS}在与目标变量t相同的尺度(和相同的单位)上测量。不同M值下的训练集和测试集均方根误差图如图1.5所示。
测试集误差用来衡量我们在对新的数据观察值x对应的t值的预测能力的好坏。我们从图1.5中注意到,较小的M值给出相对较大的测试集误差值,这可以归因于相应的多项式相当不灵活,无法捕获函数sin(2πx)中的振荡。在3≤M≤8的氛围的M的值给出了较小的测试误差,对于M = 3的情形,可以从图1.4中看出。
对M=9,训练集的误差变为0,正如我们所期望的那样,因为这个多项式包含是个自由度,对应于10个系数w₀,...,w₉,所以可以调节模型的参数,使得模型与训练集中的10个数据点精确匹配。然而,正如我们在图1.4中看到的那样,测试集误差变得非常大,对应的数表现出剧烈的震荡。
这似乎是矛盾的,因为一个给定阶的多项式包含所有的作为特殊情况的低阶多项式。因此,M = 9多项式能够产生至少与M = 3多项式一样好的结果。此外,我们可以假设新数据的最佳预测将是生成数据的函数sin(2πx)(我们稍后会看到这确实是事实)。我们知道函数sin(2πx)的幂级数展开式包含所有阶的项,所以我们可能预期结果会随着M的增加而单调地变好。
通过考察不同阶数多项式的系数的值,我们可以更深刻地思考这个问题。如表1.1所示。
我们可以看到,随着M的增加,系统的大小通常变得更大。通过发展大的负数和整数,系数已经与数据进行了很好的调整,使得相应的多项式函数可以精确地匹配每一个数据点,但是在数据点之间(特别是解决范围的末端),该函数表现出图1.4中观察到的巨大的震荡。直观地说,正在发生的事情是,具有更大M值的更灵活的多项式正变得越来越适应于目标值上的随机噪声。
检查给定模型随着数据集的变化的行为也是有趣的,在图1.6展示。
我们看到,给定模型复杂度,随着数据集大小的增加过拟合问题变得不那么严重。另一种说法是,数据集越大,我们能够适应数据的模型就越复杂(换句话说,越灵活)。有时应该提倡的一个粗略的启发是,数据点的数量应该不小于模型中自适应参数数量的若干倍(比如5或10)。然而,正如我们将在第3章看到的,参数的数量不一定是模型复杂性的最合适的度量。
此外,必须根据可用训练集的大小来限制模型中的参数数量,这是相当令人不满意的。根据所要解决的问题的复杂程度来选择模型的复杂程度似乎更为合理。我们将看到,寻找模型参数的最小二乘方法代表了极大似然的一种特殊情况。(在章节1.2.5中讨论)过拟合问题可以理解为极大似然的普遍性质。通过采用贝叶斯方法,过拟合问题可以被避免。我们将看到,从贝叶斯的角度来看,采用参数数量大大超过数据点数量的模型是没有困难的。事实上,在贝叶斯模型中,参数的有效数量会自动适应数据集的大小。