PRML系列:1.1 多项式函数拟合

前言

此系列关于Pattern Recognition and Machine Learning的总结,博文记录一些在阅读过程中遇到的难点和自己的感悟。话不多说,直接进入正题吧。

正文

第一章第一节的内容关于多项式函数的拟合,假设我们给出了一系列的坐标点(x,y)们,可能是某个函数生成的,比如:y=sin(2πx)y = \sin(2 \pi x),如下图:

模式识别的目标是,根据给定的坐标点,去预测背后可能的假设(函数),即由蓝色点去预测绿色曲线 y=sin(2πx)y = \sin(2 \pi x)。后续的主题都围绕这个最基本的目标,但如何去预测呢?一个办法是通过假设一个函数f(x,w)f(x, w),其中ww是该函数的参数,然后让它去拟合图中每个蓝色点。

泰勒展开式告诉我们,任何函数都可以由任意M个多项式产生,所以可以用多项式和来进行拟合,于是有:

只要根据给定的点的集合(x, y)求出所有的ww即可。于是我们定义误差函数,直观上可以理解为,当前参数w∗w^*对数据的拟合程度,拟合程度越高(误差越小),那么它就有可能越接近真实的函数y=sin(2πx)y = \sin(2 \pi x).

误差函数如下:

tnt_n表示第n个样例的真实值,而f(xn,w)f(x_n, w)表示第n个样例的预测值。最小二乘法损失函数连续可微,在求导上有很好的性质,为了求得每个参数wiw_i,我们可以对其求导

求偏导的好处在于:对于每个参数wiw_i而言,偏导为0,代表损失函数取得极值。在E(w)E(w)中,我们显然需要极小值,即损失越小,拟合程度越高。

于是对于M个参数,可以求得M个偏导,M个方程,自然能够求得一个解析解,我也很好奇为啥是解析解,自己推导了一波,发现对于第i个参数wiw_i,都有形如:

\lambda_{1i} w_1 + \lambda_{2i} w_2 + \cdots + \lambda_{Mi} w_m = c_i

所以书中的一维多项式能够通过求偏导的方式得到全局唯一的最优解。

那是否意味着M越大越好?直观上来看,泰勒展开式如果M的值越大,那么对真实函数的近似能力越强,但在数据推得假设f(x)f(x)时,并不是如此。如书中所示:

需要指出的是,在这些由

函数生成的点中,还有个别点是噪声,所谓噪声可以理解为随机夹杂在数据集中的搅屎棍。它们的出现或多或少将影响分类器的学习性能。

从图中可以看出:M较小时,如M = 0,1时,函数的拟合程度很弱,当M = 9时,也出现了拟合程度较弱(why?)。这是很有趣的现象,机器学习界叫这现象为过拟合。我给个定义吧:由于函数的表达能力太强(模型复杂),它的表达能力远超真实数据所表现的这种“结构”,甚至把噪声的特性都学进来,从而离真实函数相差甚远。

产生的原因? 我很难从数学的角度去解释为什么M大,就会产生过拟合现象。但从直观上来看,可以这么理解,M的个数就好比一条长度为M的绳子,M越大,绳子越长(代表的是模型描述点的能力)。在一定的长度内,比如M = 3,为了让绳子尽可能符合大多数样本的规律,只能舍弃某些跳脱的很厉害的点(大多数这样的点为噪声)。而当M = 9时,因为绳子对于数据集而言太长了,它有这样的能力使得模型去符合每个点,自然就把噪声点给考虑进来了。

所以书中给出了一个很重要的结论:

We see that, for a given model complexity, the over-fitting problem become less severe as the size of the data set increases.

如果所给的数据集越庞大(噪声比例降低!),同样的M = 9时,则不会出现过拟合现象。如下图所示:

所以本节提出了三种解决方案: 1. 增大数据集的量 2. 采用交叉验证的方法(机器学习中常用来避免过拟合) 3. 采用正则化方法来约束参数

第一种在前面已经提过了,就不再赘述了。交叉验证的思想是把所给数据集分成训练集和测试集,在训练集训练的模型,拿到测试集去测量误差,两者的误差都很小时,则认为假设模型离真实函数越接近。

测试误差函数为RMS: ERMS=2√E(w∗)/NE_{RMS} = \sqrt 2 E(w^*) / N

其中N表示数据集中样例的个数,目的是为了归一化,因为训练集和测试集的个数常常不等,且E(w∗)E(w*) 没做归一化处理,所以在ERMSE_{RMS}中做掉。其余的系数2和开根号是为了得到真实的“线性”的误差,貌似没啥特别作用,不加也可以。测试结果如下图所示:

可以看到M = 9在测试集上表现相当糟糕,在M 在3到8表现都不错,根据奥卡姆剃刀原则,可以选择简单模型M = 3作为最终的模型。

那么为什么采用交叉验证能够有效的解决模型过拟合问题呢?我的思考,仅供参考。

因为噪声的产生,越复杂的模型的学习能力越强,所以函数出现过拟合现象是因为学得了每个点的特性(包括噪声),在图中反映的就是该函数忽上忽下,所以测试集中稍微有一些偏移就能导致极大的偏差。从训练的w∗w^*也可以观察得到:

M = 9时,大多数的wiw_i都特别大,所以xx的稍微扰动都可能产生一个极大极小的值。

这也就产生了第三种解决方案,利用正则化。说白了,正则化是给定M来约束参数ww的学习,即让ww尽量不要出现特别大的值,如上表所示。所以有了新的损失函数定义:

其中

,让损失函数和每个wiw_i相关。对M = 9, 但不同的λ\lambda能够得到如下图所示的结果:

对应的w∗w^*也有了变化:

不过值得思考的并不是这些表面结果,而是为什么让w∗w^*尽可能小,能够有更好的拟合效果?

我的猜测是大多数真实数据都会产生或多或少的左右偏移和上下偏移,以及跟采集器的周遭环境相关,有少量噪声产生。正如前文所说,由于上下偏移,越复杂的模型在小数据集中表达的更精准,那么求局部导数来看,它们更有可能产生一个冲击(无穷大的导数值),而无穷大是由所有w∗w*来表示的,那么自然w∗w^*中都可能存在非常大或者非常小的值。所以w∗w^*越大,假设函数的振幅越明显,所以才会选择更小的w∗w^*来让假设函数更平滑(而非突变)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专知

春节充电系列:李宏毅2017机器学习笔记14之无监督学习:词嵌入表示(Word Embedding)

【导读】我们在上一节的内容中已经为大家介绍了台大李宏毅老师的机器学习课程的无监督学习:主成分分析(PCA),这一节将主要针对讨论unsupervised lea...

3979
来自专栏PPV课数据科学社区

进阶篇:从 0 到 1 掌握 Python 机器学习(附资源)

进阶篇 ? 机器学习算法 本篇是使用 Python 掌握机器学习的 7 个步骤系列文章的下篇,如果你已经学习了该系列的上篇基础篇:从 0 到 1 掌握 Pyth...

3547
来自专栏云时之间

深度学习与神经网络:AIC,BIC,L1,L2

在学习深度学习时,我们经常会听到AIC, BIC 还有l1, lasso 等regularization 的知识。

3976
来自专栏PPV课数据科学社区

文本数据的机器学习自动分类方法(上)

【编者按】:随着互联网技术的迅速发展与普及,如何对浩如烟海的数据进行分类、组织和管理,已经成为一个具有重要用途的研究课题。而在这些数据中,文本数据又是数量最大的...

4116
来自专栏专知

【重温经典】吴恩达机器学习课程学习笔记五:多元梯度下降

【导读】前一段时间,专知内容组推出了春节充电系列:李宏毅2017机器学习课程学习笔记,反响热烈,由此可见,大家对人工智能、机器学习的系列课程非常感兴趣,近期,专...

3467
来自专栏深度学习之tensorflow实战篇

回归,岭回归。LASSO回归

矩阵表示多元线性回归 Y=BX+a Q(B)=(Y-BX)T(Y-BX)达到最小时的B值。 也即是残差平方和最小时。B(Bi)的值。可以证明B的最小二乘估计=...

3344
来自专栏专知

【重温经典】吴恩达机器学习课程学习笔记七:Logistic回归

【导读】前一段时间,专知内容组推出了春节充电系列:李宏毅2017机器学习课程学习笔记,反响热烈,由此可见,大家对人工智能、机器学习的系列课程非常感兴趣,近期,专...

3539
来自专栏机器学习算法原理与实践

MCMC(一)蒙特卡罗方法

    作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域...

31618
来自专栏机器学习和数学

[机智的机器在学习]机器学习方法的分类

今天主要介绍一下机器学习里面的几个基本概念,我刚开始学的时候,比较纠结的几个概念,主要有监督学习,无监督学习,半监督学习, 深度学习, 还有强化学习,强化学习是...

3155
来自专栏专知

【干货】贝叶斯线性回归简介(附完整代码)

1445

扫码关注云+社区