深度学习的过拟合与欠拟合问题的介绍与解决方案
文章目录
- 过拟合与欠拟合
- 一、神经网络模型的表现能力
- 二、欠拟合
- 三,过拟合
- 四,过拟合的解决方法
- 针对数据集的处理:
- 针对降低模型的复杂度的处理:
- 另一种常见的方法——Dropout
- 针对动量的处理:
过拟合与欠拟合
提示:以下是本篇文章正文内容,下面案例可供参考
一、神经网络模型的表现能力
神经网络的表现能力与所选取的公式有很大关系,例如之前一直用来论述的线性模型Y=W*X+b。先将公式用多项式的方式列举,函数越复杂,模型的表达能力就越强,如图1:
图1
如果不加激活函数,degree=0或1时的神经网络模型,只能处理线性问题。
二、欠拟合
当模型的表现能力弱于事件的真实表现时,会出现欠拟合现象,如图蓝色的线是模型合适的解,如果用线性模型(红线)去训练非线性问题,自然难以得到合适的解。
欠拟合现象在训练中的表现为:训练集的loss较大,acc(准确率)较低,测试集的准确率也较低。
由于硬件设备的快速更新和理论知识是逐渐完善,欠拟合现象一般不容易出现,即使出现也可以通过增加模型难道或者神经网络层数来解决问题。相比较与欠拟合,过拟合是深度学习中比较容易出现且较难解决的问题。
三,过拟合
当模型的表现能力强于事件的真实表现时,会出现过拟合现象,过拟合现象是指模型为了追求训练集的准确率,过多的学习一些非普遍的特征,导致模型的泛化能力下降,虽然能很好的拟合训练集,但是在测试集上表现不佳。如图,蓝色曲线是合适的模型,黄色曲线的过拟合的模型。
过拟合现象在训练中的表现为:训练集loss较小,acc(准确率)较高,测试集的准确率却较低。
四,过拟合的解决方法
针对数据集的处理:
增大数据集:增加数据集是减少过拟合的直接方法,也是代价最大的方法;而且一般情况下数据集的一定量的,难以增加。
数据集的划分:数据集的合理划分可用于解决过拟合问题,常见的划分方式有两种。
方式一:训练集和测试集。训练集用于训练和更新模型,以得到不同的参数;测试集用于根据不同的标准评价模型的好坏,如acc(准确率)。
方式二:可用于早停法,早停法是减少过拟合现象的一个简单技巧。不同于方式一的数据集划分,方式二将数据集划分为训练集,验证集和测试集。训练集作用不变;验证集用于比较训练集每次更新的模型参数是否最佳,若以经达到最佳,比如训练集的loss较小,acc较大,验证集的acc也较大,且继续拟合验证集的acc开始减少,此时即跳出训练,防止继续训练下去出现验证集acc下降的情况,即过拟合现象。而测试集是用来测试最终模型准确度的,一般用于模型的验收。不把验证集和测试集合二为一的理由是保证测试集的数据未经模型训练,已保证模型泛化能力的真实性。
交叉验证:交叉验证是针对于训练集和验证集的划分与处理。首先将两个集合合二为一,在划分方式上一般随机划分K-1/K作为训练集,1/K作为验证集;这种方式保证了神经网络每进行一次循环所用的训练集和验证集都不相同。
交叉验证又叫K折交叉验证,其好处有两点:其一防止神经网络的记忆能力太强,而记住一些不必要的特征。如一组照片数据排列为(鼠,牛,虎,兔…)
如果不打乱训练集顺序,再网络多次训练之后,当要判断第二张图片是什么的时候,神经网络甚至不用分辨图片,仅仅依靠记忆的顺序来判断是牛。而‘顺序’这个特征显然是我们不希望网络进行记忆的。其二是保证了训练集和验证集数据的充分利用。这在数据较少时,是很有意义的。
针对降低模型的复杂度的处理:
可以通过人为的降低模型复杂度防止过拟合现象。针对不同的数据集选取不同复杂度的模型。除了人为选取,这里介绍一种常用的方式——regularization。
也称权重衰减(weight decay),常见的两种方式是L1正则化和L2正则化。
另一种常见的方法——Dropout
其原理是通过减少连接层间权值的链接来降低模型的复杂度,如图:
换句话说,在前向传播的过程中,让某个神经元的激活值以一定概率p停止工作,这样可以使模型泛化能力更强,因为它不会太依赖某些局部的特征。
针对动量的处理:
Loss函数可以通过添加动量的方式,让梯度更新变得更圆滑。动量从物理上解释为:物体所受合力的冲量等于物体的动量变化。打个通俗的比方,动量从某种意义上可以理解为人在滑雪时的惯性,所以当某一时刻人想向正右方向拐弯时,由于前一时刻存在的能量,使得人不能向正右放拐弯,而是向斜右方向拐弯,也可以理解为惯性的影响。转移到梯度更新曲线是可以解释为:当某一时刻曲线按梯度反方向更新时,由于考虑前一时刻的梯度影响,使得梯度更新不是向正反方向,所以曲线变的更圆滑,从而防止过拟合现象。除此之外,添加动量还可能使loss更新跳出局部最小值。图1是没有添加动量的模型更新曲线;如图2是添加动量后的模型曲线。
深度学习的过拟合与欠拟合问题的介绍与解决方案相关推荐
- 过拟合解决方法python_《python深度学习》笔记---4.4、过拟合与欠拟合(解决过拟合常见方法)...
<python深度学习>笔记---4.4.过拟合与欠拟合(解决过拟合常见方法) 一.总结 一句话总结: 减小网络大小 添加权重正则化 添加 dropout 正则化 1.机器学习的根本问题? ...
- 动手学深度学习(PyTorch实现)(三)--过拟合与欠拟合
过拟合与欠拟合 1. 过拟合与欠拟合 1.1 训练误差和泛化误差 1.2 模型选择 1.2.1 验证数据集 1.2.2 K折交叉验证 1.3 过拟合与欠拟合 1.3.1 模型复杂度 1.3.2 训练数 ...
- 过拟合和欠拟合_现代深度学习解决方案中的两大挑战:拟合和欠拟合
全文共2306字,预计学习时长5分钟 对机器学习模型而言,最糟糕的两种情况无非是构建无用的知识体系,或是从训练数据集中一无所获.在机器学习理论中,这两种现象分别被称为过拟合和欠拟合,是现代深度学习解决 ...
- 动手学深度学习-过拟合、欠拟合及其解决方案;梯度消失、梯度爆炸;循环神经网络进阶
一.过拟合.欠拟合及其解决方案 前序知识点 模型选择 正则化:添加参数的惩罚项,防止过拟合.有L2正则化与L1正则化. 奥卡姆剃刀原则:有多个假设模型时,应该选择假设条件最少的. 模型的泛化能力:指模 ...
- 什么是欠拟合现象_深度学习中过拟合、欠拟合问题及解决方案
在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据 ...
- 深度学习相关概念:过拟合与欠拟合
深度学习相关概念:过拟合与欠拟合 1.过拟合与欠拟合 2.应对过拟合 2.1最优方案 2.1次优方案 2.1.1L2正则化 2.1.2Dropout 随机失活 3.应对欠拟合 3.1解决方案: 在 ...
- 动手学深度学习V2.0(Pytorch)——11.模型选择+过拟合和欠拟合
文章目录 1. 模型选择 2. 过拟合和欠拟合 3. 代码 4. Q&A 4.1 SVM和神经网络相比,缺点在哪里 4.2 训练集验证集测试集比例 4.3 时序预测问题中的测试集训练集 4.4 ...
- 深度学习之过拟合和欠拟合
1.过拟合和欠拟合的相关概念:在训练模型时可能会出现两个问题:信号不足或噪声过多. 过拟合(Overfitting)是指由于模型学习了太多噪声造成损失没有达到应有的水平. 欠拟合(Underfitti ...
- Pytorch深度学习笔记(02)--损失函数、交叉熵、过拟合与欠拟合
目录 一.损失函数 二.交叉熵损失函数详解 1.交叉熵 2.信息量 3.信息熵 4.相对熵(KL散度) 5.交叉熵 6.交叉熵在单分类问题中的应用 7.总结: 三.过拟合和欠拟合通俗解释 1.过拟合 ...
最新文章
- 04- CoreData轻量级版本的迁移
- thinkphp去掉index.php
- crt中 新建的连接存储在哪_连接昌邑路和浦东大道,这条新建道路的规划设计方案公示中...
- 常用正则表达式大全!
- Android3个页面跳转代码,从零开始Android组件化改造(三) - 页面跳转与路由组件...
- django - 替换admin的textarea为 富文本
- 非递归生成的TreeView
- 宝塔php漏洞,[安全预警]关于最近宝塔闹得很厉害的PMA漏洞BUG
- Cisco IOS Unicast NAT 工作原理 [一]
- js操作动态表格内元素
- 能当「公务员」、服务员,商用服务机器人今年为啥这么火?
- RestTemplate获取HTTP状态码
- 从零开始SpringCloud Alibaba实战(48)——阿里开发手册泰山版学习笔记二 日期时间 集合处理 并发处理
- HealthKit入门:第2部分
- 微信公号DIY:一小时搭建微信聊天机器人
- 细粒度粗粒度_粗粒度基准
- python安装pytorch
- 在word中同时输入上下标设置
- runtime无法执行grep_Runtime.getRuntime.exec()执行linux脚本导致程序卡死有关问题
- 细述QQ与TIM的不同之处