机器学习教程(微课视频版)
上QQ阅读APP看书,第一时间看更新

1.4.1 一个简单的回归示例

基本的回归学习算法在第3章进行详细介绍,这里不涉及算法细节,只给出结果用于说明概念。

假设存在一个函数关系fx)=1/[1+exp(-x)],这个函数称为sigmoid函数,通过采样得到一组样本,设采样过程混入了噪声,采样值为yn=fxn)+vn,其中vn是高斯白噪声,均值为0,方差为0.0225,在x∈[-1,1]区间等间隔采样。用同样的采样方式得到训练样本集和测试样本集,学习一个回归模型来拟合该函数关系。图1.4.1示出了函数fx)和一组样本值,注意样本标注是带噪声的。

图1.4.1 函数和样本值

本例是说明性的示例,在实际问题中函数fx)是未知的,需要用一个机器学习模型来拟合这个函数。这里,采用简单的多项式回归作为模型,模型表达式为

其中M是多项式模型的阶,这是一种参数模型。为训练模型,以均方误差作为损失函数,即

首先以训练样本集的样本数N=10为例进行说明,为了对比模型复杂度对结果的影响,多项式的阶数分别取M=0,1,3,9计算模型参数(具体算法在第3章详述),并将训练获得的模型所表示的函数与图1.4.1的内容放在一起对比,结果示于图1.4.2中。

对比发现,当模型过于简单,即M=0,1时,训练得到的模型无法表示原函数的复杂度,这是欠拟合情况。当M=3时,训练的模型对原函数拟合较好,给出新的输入x可在一定精度内预测原函数的值。当M=9时,在训练集得到最好的结果,训练的函数与各训练样本均重合,训练集误差为0。但显然,该函数起伏太大,若给出新的输入值x,模型得到的预测与原函数的输出可能相差巨大,泛化性能很差,这是一种过拟合现象。造成过拟合的原因,一是M=9时模型对该训练样本集过于复杂,二是样本存在噪声,这样为了尽可能降低训练误差,模型过于倾向趋从数据中的噪声分布,从而使模型过于起伏。

可以进一步从训练误差和测试误差的角度理解模型复杂度与适应性之间的关系。本例中,测试集取100个样本,为了比较方便,训练误差和测试误差都使用均方根误差(均方误差的平方根)。M取值从0到9变化,通过训练集得到训练误差最小意义下的最优解后,分别计算训练误差和测试误差,并显示于图1.4.3中。从图1.4.3中可见,训练误差随着M增加单调下降,本例中可下降到0。测试误差先随M增加而下降,然后从M取8起又上升,测试误差呈现“U”形曲线,尽管这是由一个简单例子得到的结果,但是该曲线却是一般性的。在本例中M取3~7的值是合适的选择。

图1.4.2 阶M不同时的拟合曲线

图1.4.3 训练误差和测试误差曲线

解决过拟合问题的两个基本方法分别为增加训练集规模和正则化。先看增加训练集规模的效果。取模型阶为M=9,图1.4.4分别示出训练集大小N分别为30和150时的情况,在N=30时过拟合得到很大抑制,在N=150时,过拟合已消失,得到了相当好的拟合。在大样本情况下,样本的噪声影响得以平滑,抑制了过拟合问题。

在训练集非常受限时,第二种抑制过拟合的方法是正则化。正则化是一种非常通用的技术,这里只讨论对权系数施加限制的一种正则化技术。正则化是指在式(1.4.2)所示损失函数基础上,施加对权系数的约束,最常用的是对权系数的范数平方约束,即

图1.4.4 样本数分别为30和150时模型的拟合情况

这里λ是一个超参数,需要通过实验确定。一般λ越小越关注误差损失,λ越大越约束权系数的范数取值。使得权系数范数取更小的值,相当于降低了系统复杂度。以M=9、N=10为例观察正则化带来的影响,图1.4.5显示了不同λ取值的情况下,正则化的效果。可见λ太小,没有明显效果,λ太大则限制了模型复杂性,模型趋于欠拟合,而适中的λ取得较好的正则化效果。图1.4.6给出了训练误差和测试误差随λ的变化曲线,测试误差再次是U型曲线。本例中lgλ取-2~-4是合适的正则化参数。

图1.4.5 正则化系数λ的影响

图1.4.6 训练误差和测试误差随λ的变化