前言 《从零搭建pytorch模型教程》系列完结了,准备开启一个新的系列,叫《入门必读系列》,但由于本人事情多到根本忙不完,这次决定改一改,不再由本人全部原创了,而是从公众号以往的文章或现有书中截图或从别人的知乎博客上转载,拼凑出一个完整的入门必读系列。用于弥补很多人基础不牢的问题。
欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。
【技术文档】《从零搭建pytorch模型教程》122页PDF下载
QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题,群文件里也有很多计算机视觉入门的电子版资料,想要领取的朋友请加群自行下载。
机器学习的模式是通过大量的数据喂给一个模型,模型会根据数据不断调整自身参数,最终具备判别这些数据的模式或特征的能力。若模型无法从这些数据中训练出一个很好的效果,则认为它是欠拟合。若模型在训练的时候达到很好的效果,而在未参与训练的数据上测试,效果不好,则认为它是过拟合。
在本文,将介绍欠拟合与过拟合的概念、特点、产生的原因、解决的方法。在认真阅读本文后,读者将会对欠拟合与过拟合有个全面的认识。
群里经常有人问,怎么验证集loss一直在增加,怎么这样那样,其实都是对欠拟合和过拟合不理解,如果问他们欠拟合过拟合概念是什么,他们肯定对答如流,但放到具体的loss曲线图上,他们就一无所知了。
欠拟合与过拟合的概念
在训练模型的过程中,我们通常希望达到以下两个目的:
1. 训练的损失值尽可能地小。
2. 训练的损失值与测试的损失值之间的差距尽可能地小。
当第一个目的没有达到时,则说明模型没有训练出很好的效果,模型对于判别数据的模式或特征的能力不强,则认为它是欠拟合的。
当第一个目的达到,第二个没有达到时,说明模型训练出了很好的效果,而测试的损失值比较大,则说明模型在新的数据上的表现很差,此时可认为模型过度拟合训练的数据,而对于未参与训练的数据不具备很好的判别或拟合能力,这种情况下,模型是过拟合的。
用一个通俗的例子来说明:
假定你家里安排你去相亲,告诉你女方在某某餐厅等你。
若你家里人告诉你,女方穿裙子,披肩长发。结果你进去,发现有好几个位置都是穿裙子、披肩长发的女生,此时你无法判断是哪一个,这说明你了解女生身上的特征不够多,是欠拟合的。
若你家里人告诉你,女方穿裙子,戴了个帽子,披肩长发,手机壳是哆啦A梦,眉角有颗痣。结果女方觉得餐厅太热,进餐厅没多久就脱了帽子,你进去后发现有一个女生其它条件都符合,就是没戴帽子,你就因此认定她不是你相亲对象,这说明你了解的女生的特征太多,对于稍微有点不同的特征,你就做出了错误判断,这是过拟合的。
若家里人告诉你,女方穿裙子,披肩长发,眉角有颗痣。你进去后发现,虽然穿裙子的有好几个,披肩长发的也不少,但眉角有痣的就那一位,即便那位还戴了个帽子,也不妨碍你认为她就是你相亲对象,于是你准确地走到了她面前开始了尴尬的交流,这是合理的拟合。
在这个例子中,裙子,披肩长发都是女生很普遍的特征,眉角的痣和裙子、披肩长发的组合是她特有的特征,手机壳和戴帽子这属于偶然的特征,不能因为她换了手机壳或没戴帽子就不认识这人了。
过拟合在于将偶然的特征也作为识别身份的标志,而欠拟合在于了解的特征的特征不够多,在机器学习中表示模型的学习能力不够,无法学到足够的数据特征。
欠拟合的特点:训练的损失值很大,且测试的损失值也很大。
过拟合的特点:训练的损失值足够小,而测试的损失值很大。
对于一个足够复杂度或足够参数量的模型或神经网络来说,随着训练的进行,会经历一个“欠拟合-适度拟合-过拟合”的过程。
对于一个复杂度不够的模型或参数量太少的神经网络来说,只有欠拟合。
欠拟合产生的原因与解决方法
根据欠拟合的特点来看,产生欠拟合的主要原因有两个:
1. 模型的容量或复杂度不够,对神经网络来说是参数量不够或网络太简单,没有很好的特征提取能力。通常为了避免模型过拟合,会添加正则化,当正则化惩罚太过,会导致模型的特征提取能力不足。
2. 训练数据量太少或训练迭代次数太少,导致模型没有学到足够多的特征。
根据欠拟合产生的原因来分析,解决方法有两个:
1. 换个更复杂的模型,对神经网络来说,换个特征提取能力强或参数量更大的网络。或减少正则化的惩罚力度。
2. 增加迭代次数或想办法弄到足够的训练数据或想办法从少量数据上学到足够的特征。如适度增大epoch,数据增强,预训练,迁移学习,小样本学习,无监督学习等。
过拟合产生的原因与解决方法
根据过拟合的特点来看,过拟合产生的原因有以下四个:
1. 模型太复杂,对神经网络来说,参数太多或特征提取能力太强,模型学到了一些偶然的特征。
2. 数据分布太单一,例如训练用的所有鸟类都在笼子里,模型很容易把笼子当成识别鸟的特征。
3. 数据噪声太大或干扰信息太多,如人脸检测,训练图像的分辨率都是几百乘几百,而人脸只占了几十到几百个像素,此时背景太大,背景信息都属于干扰信息或噪声。
4. 训练迭代次数太多,对数据反复地训练也会让模型学到偶然的特征。
根据过拟合产生的原因来看,解决方法有以下四个:
1. 换一个复杂度低一点的模型或正则化,对神经网络来说,使用参数量少一点的网络,或使用正则化。
2. 使用不同分布的数据来训练。如数据增强,预训练等。
3. 使用图像裁剪等方法对图像进行预处理。
4. 及时地停止训练。如何判断什么时候该停止训练?使用K折交叉验证,若训练损失还在减少,而验证损失开始增加,则说明开始出现过拟合。
【技术文档】《从零搭建pytorch模型教程》122页PDF下载
QQ交流群:444129970。群内有大佬负责解答大家的日常学习、科研、代码问题,群文件里也有很多计算机视觉入门的电子版资料,想要领取的朋友请加群自行下载。
欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。
其它文章
图像超分多尺度注意网络MAN开源:大核分解与注意力机制的巧妙结合
AdaptivePose++:开辟多人姿态估计新思路,速度快、精度高
多个任务超越moco v3!OPERA:监督学习和自监督统一的框架!
资源分享 | detre:面向DETR系列的目标检测开源框架
【技术文档】《从零搭建pytorch模型教程》122页PDF下载