神经网络过拟合的判断与解决
第一:过拟合来源。
关于过拟合是源于模型对于数据的适配性的问题。如果模型容易拟合比较震荡的函数而且数据的随机误差比较大,这个时候就容易发生过拟合现象,也导致了泛化性能不好。
泛化性能差就是说在训练集上效果好但是在测试集上效果差。但是泛化性能差有很多可能:
1.数据量不够,不足以拟合完整的模型。
2.训练集和测试集事实上处于不同的区域,可以去检查训练集任意一点和测试集数据任意一点之间的交叉平均距离,以及训练集和测试集自己本身任意两点的平均距离。如果交叉距离明显大于训练集自己的两点平均距离。那么说明训练集和测试集处于不同的区域。必然不可能泛化好。
3.过拟合,这个情况需要判断。
第二:如何检验过拟合。
检验的方法1:训练集测试集混合切分多重学习法。
举例:
学习的时候先分成大量训练集和少量测试集。然后训练。
这时候比如训练集误差为1%,测试集误差为5%.
然后保存模型再把两个集合混合打乱,重新导入刚才的模型重新训练同样的步数。
这个时候会发现一开始训练集和测试集的误差可能都是1.3%.这个是因为训练集的误差把测试集的误差平均了。继续训练会发现训练集误差会下降,测试集误差会上升。结果可能是训练集误差为1.1%,测试集误差为4.2%
然后再混合打乱重复上面的步骤,如果两三次打乱之后发现:
训练集和测试集的误差还是有一个明显的区别比如训练集误差为1.5%, 测试集误差为4%。这种差别就量化了过拟合的性质。那么说明模型在一部分集合上过拟合,另外一部分集合上误差大。
检验的方法2:批次最大误差与平均误差的比较
训练是一个epoch事实上分为多个批次(batch)。可以检查一个epoch的所有批次中误差的最大值于误差的平均值的比较。如果最大值与平均值相差较大,比如两倍以上,那么说明数据在不同的批次上拟合情况差异较大。也就说明了可能过拟合。
第三:解决过拟合可能的方法。
方法1:改进模型,有些神经网络的层由于其理论性质本身可能导致结果函数的震荡从而导致过拟合。比如BatchNorm, self-Attention. 去掉这样的层会改善过拟合现象。关于这个问题有很多深刻的理论分析。还有一些手段比如dropout,或者降低神经网络层数等等,相当于降低神经网络的解空间。
方法2:加大训练的batch_size. 使得训练的过程更加关注大量数的平均误差值。但是batch_size不能随意加大,因为batch_size太大会导致mini_batch太大,导致随机梯度下降的时候梯度的随机性下降从而导致训练结果不容易逃逸出局部极小值。
方法3:改进数据设计,使得数据设计更加合理。比如如果特征1对应标签1.特征2对应标签2.当我们发现标签1和标签2的区别可能是比较大的时候,那么设计特征1和特征2的参数化的时候就可以把数据设计得使得其区别更大。这样相当于把样本(x,y)的x值整体拉伸,在y值不变的基础上就可以使得数据的震荡性下降。
方法4: 增加数据量,改善采样方法。 数据量的增加可以多样化数据。采样方法更加均匀可以避免数据在少数类型的样本上权重过大。可以的办法比如Gibbs采样,或者数据分类,每一类选取一些样本,或者直接分类学习,每一类一个神经网络。
方法5:换优化器。如果使用了Adam这类优化器,那么就会提高过拟合风险。把Adam换成SGD可以提升模型的泛化性能,但是会增加训练时间。对于这个问题,也有很多理论解释。但是这也取决于数据的形式。如果特征到标签这个映射是平缓的,那么adam是有不错的效果的而SGD会特别慢。但是如果特征到标签这个映射是很震荡的,那么adam优化器的结果会过拟合,SGD就会更好。
方法6:如果有办法把标签的数据变动变得平缓的话,那么对于神经网络的学习是非常有利的。因为神经网络的学习有一个原理叫频率原理,也就是说神经网络喜欢先学习比较平缓的函数,这样得出的模型可能会偏向于平缓。这样的话就不容易过拟合。
神经网络过拟合的判断与解决相关推荐
- 神经网络怎么解决过拟合,解决神经网络过拟合
如何防止神经网络过拟合,用什么方法可以防止? 你这个问题本来就问的很模糊,你是想问神经网络的过拟合变现什么样还是为什么出现过拟合呢. 为此针对于第一个问题,神经网络的过拟合与支持向量机.高斯混合模型等 ...
- 神经网络过拟合什么意思,神经网络中解决过拟合
神经网络,什么过拟合?,什么是欠拟合? 欠拟合是指模型不能在训练集上获得足够低的误差.而过拟合是指训练误差和测试误差之间的差距太大.相关介绍:人工神经网络(ANN)或联结主义系统是受构成动物大脑的生物 ...
- 解决神经网络过拟合问题—Dropout方法、python实现
解决神经网络过拟合问题-Dropout方法 一.what is Dropout?如何实现? 二.使用和不使用Dropout的训练结果对比 一.what is Dropout?如何实现? 如果网络模型复 ...
- 使用权值衰减算法解决神经网络过拟合问题、python实现
使用权值衰减算法解决神经网络过拟合问题.python实现 一.what is 过拟合 二.过拟合原因 三.权值衰减 四.实验验证 4.1制造过拟合现象 4.2使用权值衰减抑制过拟合 一.what is ...
- 神经网络过拟合怎么解决,神经网络过拟合怎么办
神经网络如何防止过拟合? 你这个问题本来就问的很模糊,你是想问神经网络的过拟合变现什么样还是为什么出现过拟合呢. 为此针对于第一个问题,神经网络的过拟合与支持向量机.高斯混合模型等建模方法的过拟合类似 ...
- 【深度学习】模型过拟合的原因以及解决办法
[深度学习]模型过拟合的原因以及解决办法 1.背景 2.模型拟合 3.简述原因 4.欠拟合解决办法 5.过拟合解决办法 1.背景 所谓模型过拟合现象: 在训练网络模型的时候,会发现模型在训练集上表现很 ...
- 避免神经网络过拟合的5种技术(附链接) | CSDN博文精选
作者 | Abhinav Sagar 翻译 | 陈超 校对 | 王琦 来源 | 数据派THU(ID:DatapiTHU) (*点击阅读原文,查看作者更多精彩文章) 本文介绍了5种在训练神经网络中避免过 ...
- 欠拟合的原因以及解决办法(深度学习)
之前这篇文章,我分析了一下深度学习中,模型过拟合的主要原因以及解决办法: 过拟合的原因以及解决办法(深度学习)_大黄的博客-CSDN博客 这篇文章中写一下深度学习中,模型欠拟合的原因以及一些常见的解决 ...
- 过拟合的原因以及解决办法(深度学习)
过拟合:模型在训练集上表现的非常好,但在测试集的数据下表现很差. 具体观察loss函数就是,train loss一直降低,而test loss先降低,而后随着epoach的增加,而不断增加. 这张图可 ...
最新文章
- 使用相对路径时,./、../、../../,代表的什么?
- Ansible-list-Dictionary-数据格式
- java房源信息管理的代码_crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫
- php主键自增sql语句,sql 自动增长的主键
- Boost.Asio基础(五) 异步编程初探
- python-图书管理系统4-最终完成界面代码文件
- 简述Java三大特性
- 全球40个免费电子图书馆网址~收藏
- 43. TA镜像文件的签名
- 【软件工程】系统流程图——期末快速复习用
- 声纹鉴定(语音同一性司法鉴定)是什么?
- AI语音红外遥控配网教程
- 利用阿里云短信找回密码 SpringBoot集成Mybatis
- 标准10进制公制度量系统单位换算
- 猿圈19年校招笔试题
- HTML CSS游戏官网网页模板 大学生游戏介绍网站毕业设计 DW游戏主题网页模板下载 游戏娱乐网页成品代码
- 最受欢迎的11个Python编程软件,让你的工作效率直接原地起飞
- UWB室内高精度定位在物联网的“C”位
- 【每日前端】京东1号店注册——登录页面CSS实现
- Java实现解压缩文件和文件夹
热门文章
- linux 两个配置文件,Vivaldi 2.4发布,多个用户配置文件和新的自定义选项
- Ubuntu桌面版工作环境配置(一、常用命令及软件介绍)
- 2018年腾讯游戏安全技术竞赛进阶版writeup
- 许巍:顺其自然地从另类音乐走向主流(SB的標題,那不是另類,那是真正的音樂,現在的主流只是白開水)...
- 一篇文章搞懂Java设计模式之责任链模式
- 透过 Delphi 使用二进位金钥做 AES 加密.
- SQL条件查询/动态SQL
- Promethus(普罗米修斯)监控随笔
- 国产3G详细资费标准曝光 完整体验最低消费118元
- html 灯光效果,基于 HTML5 WebGL 的 3D 场景中的灯光效果