神经⽹络中的过拟合
先说下⼀般对原始数据的划分为什么分为训练集、验证集、测试集三个部分?
train data的作⽤是训练模型,validation data的作⽤是对模型的超参数进⾏调节,为什么不直接在test data上对参数进⾏调节?因为如果在test data上来调节参数,那么随着训练的进⾏,我们的⽹络实际上就是在⼀点⼀点地向我们的test data过度拟合,导致最后得到的test data的指标参考意义下降。正则化可以防止过拟合
⾸先明确我们训练神经⽹络模型的⽬标是使得其在未知数据上也有很好的拟合能⼒(⼀般测试集充当未知数据的⾓⾊),所以如何直观的判断模型是否过拟合了?如果模型在训练集上有良好的表现,但是在测试集上表现却没那么好,很可能就是过拟合了。
那么在神经⽹络中该如何解决过拟合问题?
根据问题解决问题
(⼀)数据⽅⾯导致的过拟合
1.训练数据集过⼩导致过拟合
如果数据集过⼩,由于神经⽹络中的参数过多,这时很容易就导致过拟合,此时应该增⼤训练数据,或者选⽤别的更合适的模型。
2.训练数据不均衡导致过拟合
如果训练数据不均衡,显然模型会趋向于拟合数据较多的⼀类,因为它提供的信息更多,这种情况应该⾸先考虑的是均衡数据、数据增强等,具体可以参照如何处理数据不均衡问题。
(⼆)由模型导致的过拟合
如果数据相对均衡且训练数据⾜够仍出现过拟合,应该从模型⾓度着⼿
1.简化模型
简化模型最直接的⼿段是减少模型层数或者减⼩模型中隐层节点的个数。
L1正则化:L1正则化倾向于使得接近于0的参数变成0,这样就相当于减少了参数,模型⾃然变得更简单。
L2正则化:L2正则化加快了参数的减⼩速度,参数⼩模型能够拟合的数据变少且拟合的刚刚好(这个法则也叫做奥卡姆剃⼑),过拟合的可能性就降低。
此外参数过多使得⽹络能够拟合更多的数据,且为了拟合⼀些数据,这些数据中特有的⼀些特征可能相应的参数就很⼤,很容易导致过拟合,简化模型、减⼩权值从⽽防⽌过拟合。
2.提取更泛化的表征
神经⽹络可以理解为⼀个⾮线性多元函数簇,训练神经⽹络是为了很好的完成输⼊到输出的映射,且模型的泛化能⼒⾜够好,这就需要提取鲁棒的表征
产⽣过拟合使得模型泛化性降低,说明抽取的表征泛化性不够强。
引⼊dropout,训练时随机使得⼀些⽹络节点失活,因为每次失活的节点不固定,因此相应的权重都不会过⼤,⼀⽅⾯使得模型更简单了,另⼀⽅⾯避免提取到那些特有组合下才起作⽤的表征,从⽽促使模型提取更泛化的表征。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。