理解过拟合

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的。
 

导言在进行有监督的机器学习建模时,一般假设数据独立同分布(i.i.d,independently and identically distributed)。即样本数据根据通过一个概率分布采样得到,而且这些样本相互之间独立。我们使用历史数据集去训练模型,使得损失函数最小化,然后用训练得到的模型去预测未知数据。如果一味追求让损失函数达到最小,模型就会面临过拟合问题,导致预测未知数据的效果变差。如何判断自己的模型是否训练正常?怎么解决过拟合问题?大家先来听听我朋友小明的故事。

 

小明的故事

小明是个机器学习爱好者,他很喜欢吃蛋糕。有一天他突然想到:能不能用蛋糕的直径来预测蛋糕的价格。于是他定了各种不同尺寸的蛋糕,然后把尺寸和价格的数据记录起来,接着使用回归函数来拟合这些训练数据。小明决定使用四次多项式:

和均方差损失函数:

在这里x是蛋糕的尺寸,f(x)是预测的蛋糕价格。四次多项式足够复杂,完全可以拟合这个问题;损失函数的含义是模型预测出的结果和真实值差的平方和求平均,预测越准确,损失函数就越小。接着小明使用随机梯度下降法更新参数。 他一直盯着损失函数的变化曲线,迭代若干次之后损失函数竟然到0了,小明异常兴奋,觉得自己训练出了最完美的模型。

接下来小明迫不及待的又定了几个尺寸的蛋糕,当作测试样本,来验证自己的模型准不准。结果发现测试集的损失函数不是0,而且很大。小明很是困惑。于是他去请教老师这是为什么,老师只说了一句话:把你之前的损失函数加上所有参数的平方和,再训练试试,效果也许会有改观。小明按照老师的意思训练新模型,但是这次之前的损失函数不能优化到0了,效果比之前差。小明心想,老师是不是在忽悠我?但奇怪的是,当他用新的模型去预测新蛋糕时,发现测试集损失函数真的更小了。他十分纳闷,再次去问老师,为什么我训练集的效果变差,预测的效果反而更好呢?

老师说:你一开始损失函数为0的情况叫做过拟合,训练集和测试集是有差异的,过分去拟合了训练集,放大了差异性,衰弱了共性,回归损失函数为0的情况说明你拟合了噪声,最后导致了效果差,换句话说拟合函数的过程中模型需要顾忌每一个点,最终形成的拟合函数波动很大。在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,但是损失函数附加了参数的平方和,导致整个算法不会让参数变的过大,使得拟合函数波动变小。这个参数的平方和就是一种正则化项,用来解决过拟合问题。损失函数加正则项,一般称为目标函数。小明若有所思,感觉自己认识还是太肤浅了,决定再去整理一下相关知识,下文就是他的笔记:

 

损失函数

损失函数(loss function)是用来度量模型预测值f(x)与样本真实标签值y的不一致程度。给定输入的样本数据x,模型函数输出一个f(x),这个输出的f(x)与样本的真实值标签值y可能是相同的,也可能是不同的,为了表示我们拟合的好坏,就用一个函数来度量拟合的程度,比如平方损失:

最小化损失函数,其实就是最小化经验风险,之所以叫经验风险,是因为这是对训练样本集的风险预估,及历史经验。

除了上面这种损失函数之外,还有交叉熵损失函数,对比损失函数,合页损失函数等类型,在这里我们不一一介绍,SIGAI后续的公众号文章中会对它们做全面系统的讲解。

损失函数是一个实值函数࿰

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值