美文网首页
模式识别与机器学习(一)——绪论、多项式拟合例子

模式识别与机器学习(一)——绪论、多项式拟合例子

作者: Ice_spring | 来源:发表于2020-08-03 17:19 被阅读0次

    1.1 绪论

    内容对应PRML书1.1节部分。

    多项式拟合例子

    在这个例子中,假设我们有两个变量x, t,它们满足如下关系:
    t=sin(2\pi x)+\epsilon
    其中\epsilon是一个均值为0、标准差为0.3的高斯噪声。我们首先在[0,1]区间内等间距地产生了10个点\mathbf{x}=(x_1,...,x_{10})^T,接着根据如上的关系为这10个点得到一组对应的目标函数值 \mathbf{t}=(t_1,...,t_{10})^T

    这种数据产生方式符合大部分现实世界中的数据集的性质,即产生样本时既包含潜在的规律,又伴随着随机噪声。这些随机噪声的产生原因可能是某种内在的随机性,也可能是某种未被观测到的因素。我们的目标是根据这 10 个点构成的训练集 \mathcal{D}=\{(x_1,t_1),...,(x_{10},t_{10})\} 调整模型的参数来拟合目标函数sin(2\pi x),然后用学习到的模型对新的样本 \hat{x} 预测其对应的 \hat{t}

    任务

    线性模型

    在这个问题中,我们将使用一个多项式曲线来拟合真实目标函数:
    y(x,\mathbf{w})=\sum_{j=0}^Mw_jx^j
    其中 \mathbf{w}=\{w_0,...,w_M\}称为该多项式的系数,x^j 表示 xj 次幂,M称为多项式的阶。线性模型的优点是既可以表示复杂的曲线,又具有解析解。
    我们引入一个误差函数(error function)来衡量模型在一个数据集上的表现,通过最小化训练误差函数来找到线性模型的最佳参数值。线性回归问题中,最常用的误差函数就是平方和误差(sum of squares error)
    E(\mathbf{w})=\frac{1}{2}\sum_{n=1}^N \{y(x_n,\mathbf{w})-t_n\}^2

    模型复杂度

    在确定了模型的参数后,我们还需要确定多项式的阶 M,有时我们也把它叫做模型复杂度(model complexity)。M 的值越小,可以表示的曲线越简单,拟合能力也越弱;M 的值越大,可以表示的曲线就越丰富,拟合能力也越强。那么 M 是不是越大越好呢?我们来看下面几张图:

    模型复杂度

    从图中我们看到,当 M=0M=1 时多项式变为直线,不足以刻画训练集中的非线性关系,这种现象称为欠拟合(under-fitting);当 M=9 时,我们发现拟合曲线恰好经过训练集的所有点,虽然此时训练集上的误差为0,但是曲线剧烈震荡,泛化性很差,这种现象称为过拟合(over-fitting);当 M=3 时,我们发现曲线的拟合效果是最好的。因此,模型复杂度并不是越高越好,针对一个问题我们要选择合适的模型复杂度以获得良好的泛化能力,选择适宜模型复杂度的过程称为模型选择(model selection)

    泛化能力定量评估

    由于我们事先知道数据是如何产生的,因此我们可以额外再生成若干个样本点作为测试集来定量描述M的变化对于模型泛化能力的影响。当数据规模 N 增加时,平方和误差 E(\mathbf{w}) 也随之增加,这为公平比较不同规模数据集的误差带来了难度。为了便于比较不同规模数据集上的误差,我们定义均方根误差(root-mean-square error,RMSE):
    E_{RMS}=\sqrt{2E(\mathbf{w})/N}
    通过求平均,我们可以在同一基准比较不同的数据集上的误差;开根号后的值可以理解为目标变量的平均偏差。 具体地,我们将产生100个测试样本点,并计算当 M 取不同的值时,测试集上的误差。

    泛化能力

    从图中我们可以看出,当 M 的取值范围为 02 时,测试集的误差较高,这是因为此时的模型还不够灵活,不足以刻画 sin(2\pi x) 这种非线性关系;当 M 的取值范围为 38 时,测试集误差较低,泛化能力最好;当 M=9 时,我们发现训练集上的误差为0,这是因为我们的模型刚好有10个自由度 \{w_0,w_1,...,w_{9}\},因此可以被调整到刚好经过这 10 个点,但这也导致了模型参数被过度调整以拟合样本中的噪声,作为后果,模型在测试集上的误差与训练集上的表现相去甚远,此时模型发生了过拟合。我们可以输出 M 为不同值时的模型参数:

    参数

    可以看到,正是由于系数的数量级很高引起了曲线的剧烈震荡。

    防止过拟合

    过拟合是机器学习中普遍存在的问题,如何解决过拟合就成了机器学习的一个重要的研究热点。这里介绍两种结局过拟合的方法,第一种方法是增加训练数据量,第二种方法是正则化(regularization)。

    增加数据量

    增加数据量可以有效防止过拟合。从下图我们可以看到,对已⼀个给定的模型复杂度,当数据集的规模增加时,过拟合问题变得不那么严重。另⼀种表述⽅式是,数据集规模越⼤,我们能够⽤来拟合数据的模型就应该越复杂 。

    数据规模

    但是实际中我们不得不根据可得到的训练集的规模限制参数的数量,即根据待解决的问题的复杂性来选择模型的复杂性 。
    在后来我们会看到,寻找模型参数的最⼩平⽅⽅法代表了最⼤似然(maximum likelihood),并且过拟合问题可以被理解为最⼤似然的⼀个通⽤属性。通过使⽤⼀种贝叶斯(Bayesian)⽅法,过拟合问题可以被避免。我们将会看到,从贝叶斯的观点来看,对于模型参数的数量超过数据点数量的情形,没有任何难解之处。实际上,⼀个贝叶斯模型中,参数的有效(effective)数量会⾃动根据数据集的规模调节。但是现在,继续使⽤当前的⽅法还是很有⽤的。继续来看。

    正则化

    当我们没办法获取更多的数据时,就需要限制模型的复杂度了。具体的做法是给目标函数E(\mathbf{w})加上一个L2罚项以限制系数的数量级:
    \widetilde{E}(\mathbf{w})=\frac{1}{2}\sum_{n=1}^N \{y(x_n,\mathbf{w})-t_n\}^2+\frac{\lambda}{2} \mathbf{w}^T\mathbf{w}

    其中 \mathbf{w}^T\mathbf{w}=w_0^2+w_1^2+...+w_M^2\lambda>0 用于控制平方和误差与正则项的相对重要性。一般来说我们会把正则项中的 w_0^2 去掉,这样做的原因是使得结果不依赖于目标变量的原点。这样的技术在统计学中称为shrinkage,上面的目标函数是其中的一种特殊情况,称为岭回归(ridge regression),在神经网络中这样的技术被叫作权重衰减(weight decay)。下面几张图分别为我们展示了正则项系数 \lambda 的不同取值对结果曲线的影响:

    正则化

    对于 M=9 时,不同的 \lambda 影响如下:

    正则化系数的影响

    \ln\ \lambda=-\infty 时,即 \lambda=0 ,对应没有正则化的线性回归,我们可以发现输出的模型参数与线性回归基本一致;当ln\ \lambda = -18时,过拟合现象减轻了许多;而当\ln \ \lambda=0时,\lambda=1 在本例中这个正则化系数太大,导致模型欠拟合。总的来说,随着正则系数的增加,参数的数量级逐渐衰减,直至趋近于0。

    参考文献

    B站机器学习白板推导
    贝叶斯派理论例子
    GithubMachineLearningNotes/tsyw

    相关文章

      网友评论

          本文标题:模式识别与机器学习(一)——绪论、多项式拟合例子

          本文链接:https://www.haomeiwen.com/subject/wryvrktx.html