文章目录

  • 相关定义
  • 欠拟合和过拟合
    • 欠拟合原因
    • 欠拟合解决方案
    • 过拟合原因
    • 过拟合解决方案

相关定义

  • 训练误差: 模型在训练数据集上表现出的误差。
  • 泛化误差: 模型在任意⼀个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似,这里可以理解成测试集。
  • 欠拟合: 模型⽆法得到较低的训练误差。
  • 过拟合: 模型的训练误差远小于它在测试数据集上的误差。


通过上面的图,可以简单推出:
loss不下降,分多种情况:训练集不下降,验证集不下降,本文结合其它博客,做个小的总结:

训练损失与测试损失结果分析

训练损失不断下降↓\downarrow↓,测试损失不断下降↓\downarrow↓,说明网络仍在学习;

训练损失不断下降↓\downarrow↓,测试损失趋于不变→\rightarrow→,说明网络过拟合;

训练损失趋于不变→\rightarrow→,测试损失不断下降↓\downarrow↓,说明数据集有问题;

训练损失趋于不变→\rightarrow→,测试损失趋于不变→\rightarrow→,说明学习遇到瓶颈,需要减小学习率或批量数目;

训练损失不断上升↑\uparrow↑,测试损失不断上升↑\uparrow↑,说明网络结构设计不当,训练超参数设置不当。

欠拟合和过拟合

“欠拟合”常常在模型学习能力较弱,而数据复杂度较高的情况出现,此时模型由于学习能力不足,无法学习到数据集中的“一般规律”,因而导致泛化能力弱。与之相反,“过拟合”常常在模型学习能力过强的情况中出现,此时的模型学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并将其认为是“一般规律”,同样这种情况也会导致模型泛化能力下降。过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。在神经网络训练的过程中,欠拟合主要表现为输出结果的高偏差,而过拟合主要表现为输出结果的高方差。注意,过拟合并不总是一件坏事,因为过拟合很容易调整。 在深度学习领域, 最好的预测模型在训练数据上的表现往往比在保留(验证)数据上好得多。 最终,我们通常更关心验证误差,而不是训练误差和验证误差之间的差距。

欠拟合原因

根本的原因是特征维度过少,导致拟合的函数无法满足训练集,误差较大。因此欠拟合问题可以通过增加特征维度来解决。

  • 模型复杂度过低
  • 特征量过少

欠拟合解决方案

欠拟合的解决方案有不少,下面几个仅供参考:

  • 模型复杂化
    对于同一个算法,通过添加其它层或者深度等来增加该算法的复杂度。例如回归模型添加更多的高次项,增加决策树的深度,增加神经网络的隐藏层数和隐藏单元数等,这个在机器学习算法里面用的很普遍,使模型泛化能力更强。
    另外还可以弃用原来的算法,使用一个更加复杂的算法或模型。使用非线性模型,比如核SVM 、决策树、深度学习等模型(即使用非线性激活函数),例如用神经网络来替代线性回归,用随机森林来代替决策树。
  • 增加更多的特征,使输入数据具有更强的表达能力
    特征挖掘十分重要,尤其是具有强表达能力的特征,往往可以抵过大量的弱表达能力的特征。
    特征的数量往往并非重点,质量才是,总之强表达能力的特征最重要。能否挖掘出强表达能力的特征,还在于对数据本身以及具体应用场景的深刻理解,往往依赖于经验。增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间。
  • 调整参数和超参数
    神经网络中:学习率、学习衰减率、隐藏层数、隐藏层的单元数、Adam优化算法中的β1和β2参数、batch_size数值等。其他算法中:随机森林的树数量,k-means中的cluster数,正则化参数λ等。
  • 降低正则化约束
    正则化约束是为了防止模型过拟合,如果模型压根不存在过拟合而是欠拟合了,那么就考虑是否降低正则化参数λ或者直接去除正则化项。减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数(正则化有很多种,可以适当减少正则化)
  • 增加训练数据往往没有用
    欠拟合往往是因为模型的学习能力不足,一味地增加数据,训练效果并不明显。这里需要注意一下。

过拟合原因

根本的原因则是特征维度过多,导致拟合的函数完美的经过训练集,但是对新数据的预测结果则较差。

过拟合解决方案

  • 降低模型复杂度
    其实过拟合正好与欠拟合相反,既然特征维度过多,就应该降低特征维度,即降低模型复杂度。
    为了降低复杂度,我们可以简单地移除层或者减少神经元的数量使得网络规模变小。与此同时,计算神经网络中不同层的输入和输出维度也十分重要。虽然移除层的数量或神经网络的规模并无通用的规定,但如果你的神经网络发生了过拟合,就尝试缩小它的规模。
  • 数据扩增,即增加训练数据样本,使用更大的数据集训练模型。
  • 数据增强
    使用数据增强可以生成多幅相似图像。这可以帮助我们增加数据集规模从而减少过拟合。因为随着数据量的增加,模型无法过拟合所有样本,因此不得不进行泛化。计算机视觉领域通常的做法有:翻转、平移、旋转、缩放、改变亮度、添加噪声等等,音频数据增强方法有:增加噪音、增加混响、时移、改变音调和时间拉伸。
  • Dropout
    该操作在深度学习里经常遇到,就是在学习过程中,丢掉一些神经元,即丢掉了一些特征维度,达到降低特征维度的效果。
  • Early stopping
    过拟合很多时候与学习次数过多有关,早期停止模型的训练也可以组织过拟合,我们最终的目标是在测试集达到更高的准确度。
  • 正则化(Regularization)(L1和L2)
    在损失函数后面加一个正则化项,常见的有L1正则化和L2正则化
    L1惩罚项的目的是使权重绝对值最小化。公式如下:
    L(x,y)=∑i=1n(yi−hθ(xi))2+λ∑i=1n∣θi∣L(x, y)=\sum_{i=1}^n(y_i-h_\theta(x_i))^2+\lambda\sum_{i=1}^n|\theta_i| L(x,y)=i=1∑n​(yi​−hθ​(xi​))2+λi=1∑n​∣θi​∣
    L2惩罚项的目的是使权重的平方最小化。公式如下:
    L(x,y)=∑i=1n(yi−hθ(xi))2+λ∑i=1n∣θi2∣L(x, y)=\sum_{i=1}^n(y_i-h_\theta(x_i))^2+\lambda\sum_{i=1}^n|\theta_i^2| L(x,y)=i=1∑n​(yi​−hθ​(xi​))2+λi=1∑n​∣θi2​∣
L1正则化 L2正则化
L1惩罚权重绝对值的总和 L2惩罚权重平方和的总和
L1生成简单、可解释的模型 L2正则化能够学习复杂数据模式
L1受极端值影响较小 L2受极端值影响较大

如果数据过于复杂以至于无法准确地建模,那么L2是更好的选择,因为它能够学习数据中呈现的内在模式。而当数据足够简单,可以精确建模的话,L1更合适。对于我遇到的大多数计算机视觉问题,L2正则化几乎总是可以给出更好的结果。然而L1不容易受到离群值的影响。所以正确的正则化选项取决于我们想要解决的问题。

  • 批量正则化(BN)
    批量正则化在深度学习里经常被用到,特别是当容易发生过拟合的时候。批量正则化就是将卷积神经网络的每层之间加上将神经元的权重调成标准正态分布的正则化层,这样可以让每一层的训练都从相似的起点出发,而对权重进行拉伸,等价于对特征进行拉伸,在输入层等价于数据增强。注意正则化层是不需要训练。

欠拟合、过拟合、训练误差与泛化误差与模型复杂度的关系相关推荐

  1. 训练误差与泛化误差的说明

    1. 训练误差与泛化误差的定义 在机器学习中,评价一个模型"优劣"的最直观的数据就是模型的误差,其中误差又分为以下两种误差: - 训练误差(training error):模型在训 ...

  2. 训练误差和泛化误差分别是什么,如何区分?

     在我们学习机器学习或深度学习的时候,经常会遇见一些迷惑词汇,让人傻傻分不清,比如博主刚开始学习的时候,就没有太过于区分,导致一些地方弄混.  今天就让我带着大家一起区分一下训练误差和泛化误差吧~有什 ...

  3. 机器学习中的误差、经验误差、泛化误差

    误差:学习器的实际预测输出与样本的真实输出之间的差异称为"误差". 经验误差(训练误差):模型在训练集上的误差称为"经验误差"(empirical error) ...

  4. PAC理论、训练误差和测试误差、模型复杂度

    PAC理论 https://baike.baidu.com/item/PAC%E7%90%86%E8%AE%BA/1096070?fr=aladdin 训练误差和测试(泛化)误差的区别及其与模型复杂度 ...

  5. 机器学习模型调优方法(过拟合、欠拟合、泛化误差、集成学习)

    机器学习模型调优方法 过拟合和欠拟合 降低过拟合风险的方法 降低欠拟合风险的方法 泛化误差.偏差和方差 泛化误差 偏差和误差 模型评估 Holdout检验 交叉检验 自助法 集成学习 Boosting ...

  6. 深度学习中的欠拟合和过拟合简介

    通常情况下,当我们训练机器学习模型时,我们可以使用某个训练集,在训练集上计算一些被称为训练误差(training error)的度量误差,目标是降低训练误差.机器学习和优化不同的地方在于,我们也希望泛 ...

  7. [pytorch、学习] - 3.11 模型选择、欠拟合和过拟合

    参考 3.11 模型选择.欠拟合和过拟合 3.11.1 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error ...

  8. 欠拟合和过拟合以及如何选择模型

    模型选择.欠拟合和过拟合 在前几节基于Fashion-MNIST数据集的实验中,我们评价了机器学习模型在训练数据集和测试数据集上的表现.如果你改变过实验中的模型结构或者超参数,你也许发现了:当模型在训 ...

  9. 从零开始学Pytorch(五)之欠拟合和过拟合

    本文首发于微信公众号"计算机视觉cv" 模型选择.过拟合和欠拟合 训练误差和泛化误差 训练误差(training error)指模型在训练数据集上表现出的误差,泛化误差(gener ...

最新文章

  1. 高岭土吸附阳离子_工业中高岭土、高岭石中的应用特点!
  2. 英语计算机单词mp3,计算机英语会话(MP3+中英字幕) 第1期:计算机系统(1)
  3. 个推通知栏修改_浙大一院五一劳动节放假通知!手机办住院手续!还有这些攻略不能错过!...
  4. 爬虫_微信小程序社区教程(crawlspider)
  5. 相机成像原理_数码相机的工作原理
  6. 华为数通HCIE面试题目解密系列之RSTP边缘端口
  7. CF757F-Team Rocket Rises Again【最短路,DAG支配树】
  8. inner join 与 left join 、right join之间的区别
  9. php 上传加水印,PHP 图片上传加水印实例
  10. Devcpp使用技巧
  11. 会议预约及信息发布服务器,会议预约系统
  12. 做自媒体必备的神器:文章相似度检测工具
  13. 纬地道路纵断面设计教程_道路BIM模型快速生成
  14. c语言代码混淆器,代码混淆
  15. Content negotiation
  16. 计算机管理用户拒绝访问,win10系统管理员账户拒绝访问怎么办
  17. 高通MSM8998芯片参考资料免费下载
  18. python将txt坐标批量打印到原图上
  19. 学计算机会学dos,DOS操作系统和上课学习的应用软件_CPUCPU评测-中关村在线
  20. tabindex的微妙使用

热门文章

  1. 网游防沉迷系统 明年有望全行业推行
  2. c语言周欢,c语言经典案例100题
  3. MyBatisPlus 快速入门
  4. 价值19.9元 问药师 - 儿童维生素D的补充 总结
  5. c语言程序中间改变数组大小,结构中间的可变长度数组 – 为什么这个C代码对gcc有效...
  6. 美国主机常见的安全漏洞与防范方法详解
  7. 计算机信息检索系统,信息检索系统
  8. Java DataSourceBeanCreationException: Failed to determine a suitable driver class问题解决
  9. 《微课实战:Camtasia Studio入门精要》——2.5 案例
  10. 计算机二级两个控件之间求偶,计算机二级C语言1.doc