1.问题背景
最近在做深度学习实验的时候,遇到了一个棘手的问题,就是大家熟知的“过拟合”,直观的表现在图中。分析来说就是在拟合训练集的时候可以很好的实现深层网络,损失小,准确率高(我这里可以达到99.99%)。
然而,测试集的损失非常大,准确性在相对较低的范围内波动(在我的情况下为70%-80%)。并非如文中所述,测试集的损失随着迭代次数的增加而减少,而是精度随着迭代次数的增加而增加。
如果你看不出上图有什么问题,我就放一张理想状态下的结果图来对比一下(如下图粗线所示),不过大概意思在那里。随着迭代次数的增加,训练集和测试集的精度应该会上升。我们可以容忍测试集的精度没有训练集的精度高。毕竟有拟合误差,但是和我上图做的结果一样,肯定是“过拟合”。
白话文里的“过拟合”是指老师给你的题你都可以做,考试时改变模式你会犯难。好了,老师给的题相当于我们的训练数据,考试的题相当于考试数据。“过拟合”是指深度网络非常好地拟合训练数据。
但是有点太好了。训练数据100%好用,但是测试数据很疯狂,网上训练没用。训练集已经是监督学习了,再拟合也没用。功能体现如下图
2.网络结构介绍
我的实验中使用的深层网络结构原型是完全自愿的网络,在参考文献中也被称为U-Net。简而言之,它是用于图像分割的深度网络。原理图如下:
用Keras实现的代码是:
3.问题分析
当时的LeNet-5在手写识别方面有很大的闪光点,但是当LeNet-5应用到其他数据集时,就出现了很多问题。此后,学者们开始了疯狂的理论和实践探索。“过拟合”问题是深度学习中特别重要的一个问题。这是一个老生常谈的问题,有许多解决方案可供我选择。
1.添加滴水层
2.检查数据集是否太小(数据扩充)
3.运用迁移学习的思想
4.用小技巧调整参数。
降低学习率(学习率)
减少每次反向传播的训练样本数(批量)
5.尝试另一个优化器(优化器)
6.Keras的回调函数EarlyStopping()
评价:我觉得第一种更可行,因为“教科书”确实说退学是专门用来处理“过拟合”问题的。
至于数据集的大小,这也是过拟合的原因。太小的话,容易超配。那么一个数据集有多大就够了?反正我肯定够了。我的深度网络输入图像是369,468,68.80像素,双通道输入,总大小19.5GB。
这个数据量可以说是相当可观的,所以对于我来说,第二个可能不适用。然后,如果要扩展数据集,就需要使用医学图像中非常常见的手段——数据增强(Data Exconsion),包括平移、旋转、拉伸、扭曲等,来创建新的数据,以增加数据量。
第三种是深度学习的有效方法。英文名是微调,就是用已有的训练好的网络参数作为初始化,在此基础上继续训练。
原来的网络参数经常可以在很多论文和github上找到。这是一个在大型图像数据集中训练的网络。根据图形和图像的“语义”相似性(不知道怎么形容,就是觉得世界上的图片有些相似性,就像人类一样,每个人看起来都不一样,但是你不要把人和其他动物混在一起。这是一个宏观的、抽象的相似性),这个网络,因为时间的关系,我还没有采用这个。
第四种是比较不可理解的参数,这几乎是机器学习的主要课题。人们说“智力和劳动力一样多”,这个参数真的需要“经验”。知乎上有一篇很精彩的帖子:你有什么深度学习的经历(rnn,cnn)?
不好意思,第五个是试错。。。有许多优化器可供选择。全部尝试一下,看看哪里做的好。听起来有点疯狂。第六个方法是一个叫EarlyStopping的小函数,代码如下
功能是监控每次迭代的指标,比如这里监控val_Loss(测试集的损失)。随着迭代次数的增加,当val_loss不再变化较大时,可以在过拟合前终止并阻塞训练。这个策略也叫“n中无改善”,其中n是Epoch的个数。
遗憾的是,以上六种方案,在我试用后,并没有很好地解决“过拟合”的问题。
4.正则化方法
正则化方法是指在优化目标函数或代价函数时,在目标函数或代价函数后加入正则项,一般包括L1正则和L2正则。这个很理论,涉及到一些公式。
我在研究这部分的时候,觉得纯粹是理论上的。当时我从没想过自己真的会用。看来我现在必须试试了。
要修改Keras中这部分Objectives函数的代码,可以参考这部分,这部分包括几个成本函数,成本函数可以自己写。根据这个博客:Keras Learning短文08,一个基于antano的深度学习框架,被正则化(规格化),过拟合的有效解决方案是添加规则项。
5.问题解决
最终过拟合现象基本得到控制。总的来说,L1/L2标准化真的很牛逼,这也体现在学术论文上:
网络调整如下:
配置:)
1.滴水层(0.3)
2.全连接层的L2归一化
3.优化器(adadelta)
4.学习率(1e-9)
取得了满意的效果。不仅训练集的Loss在减少,测试集的Acc也在增加,整体网络学习性能比以前更好。
觉得这篇文章有帮助?请与更多人分享
关注“猿助猿”,实现顶层发展
技术交流QQ群:517877452
1.《过拟合 深度网络的过拟合问题讨论》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《过拟合 深度网络的过拟合问题讨论》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1160841.html