购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 过拟合与正则化

在神经网络中,完全可能试了1个隐层、2个隐层、5个隐层甚至10个隐层,试了各种各样的网络拓扑、激活函数、损失函数,准确率仍然很低。这是神经网络训练中经常出现的问题。此时需要检查神经网络是不是过拟合(overfitting)了。关于过拟合,冯·诺依曼有一个形象的说法,“给我4个参数,我能拟合出一头大象;给我5个参数,我能让大象的鼻子动起来”。当网络层数很多时,神经网络可能会学到一些并不重要甚至错误的特征。例如,训练时用一个拿着黑板擦的人的照片作为人的样本,过拟合时可能会认为人一定是拿黑板擦的,但这不是人的真正特征。

过拟合时,神经网络的泛化能力比较差。深层神经网络具有很强的表示能力,但经常遭遇过拟合。为了提高神经网络的泛化能力,可以使用许多不同形式的正则化方法,包括参数范数惩罚、稀疏化、Bagging集成、Dropout、提前终止等。

2.5.1 过拟合

过拟合指模型过度逼近训练数据,影响了模型的泛化能力。具体表现为在训练数据集上的误差很小,但在测试数据集上的误差很大。尤其是神经网络层数多、参数多时,很容易出现过拟合的情况。除了过拟合,还有欠拟合。欠拟合主要是训练的特征少,拟合函数无法有效逼近训练集,导致误差较大。欠拟合一般可以通过增加训练样本或增加模型复杂度等方法来解决。图2.17a至图2.17c分别是合适的拟合、欠拟合、过拟合的示例。对于这个比较复杂的分类问题,合适的拟合可能是一条弧线,虽然会有一点误差;欠拟合会学出一条很简单的直线,误差比较大;而过拟合会学出奇怪的形状。当深度学习中训练的特征维度很多时,比如有上亿个参数,过拟合的函数可以非常接近数据集,函数形状很奇怪,但泛化能力差,对新数据的预测能力不足。

图2.17 拟合效果示例

再看看图2.18中的例子。如果只有三个变量,可以用二次曲线 y = w 0 + w 1 x + w 2 x 2 把样本点拟合出来。如果用四次曲线去拟合,可能会拟合出一个奇怪的形状,该曲线在训练集上的误差可能会比二次曲线小一些,但在真实场景中,将其应用到没有见过的测试集上,效果是不会好的。为了减小三次项、四次项对模型的影响,可以采用正则化方法。

图2.18 不同拟合函数的效果 HiiA8HQ9IuwshcPIK2HonoBIk10fPfjhNHlsyPaAdyrZfE+i/PjWZmLJaHvEAZzo

点击中间区域
呼出菜单
上一章
目录
下一章
×