Task03:过拟合、欠拟合及其解决方案;梯度消失、梯度爆炸;循环神经网络进阶

一、过拟合、欠拟合及其解决方案

过拟合:模型在训练集上取得的效果较好,误差较低,但是在训练集上出现较大误差
欠拟合:建立的模型在训练集和测试集上均出现较高的误差。

解决方案

1.模型复杂度

假设我们要预测的目标函数是个 y关于x的平方函数。
(1)我们在建立模型的时候 选择了 y关于x的一次函数,那么预测出来的效果可能会很差,这时候 会造成欠拟合。过于简单的模型会造成欠拟合
(2)如果我们选择了y关于x的三次函数,那么在预测的时候可能在训练集上会得到较好的预测结果,但是一用到测试集上,可能效果就非常差,这就是过拟合。过于复杂的模型会造成过拟合

所以我们在构建模型的时候不能过于简单和复杂

2.权重衰减

也是我们说的正则化,有L2范数正则化,L1范数正则化等。
正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。
L2范数是 对模型里每个权重参数的平方进行加总乘以一个正常数,这个常数是一个超参数
在这里插入图片描述
但常数接近于0时,表示施加的惩罚很小,对前面的模型影响不大。正常数越大对模型影响也越大。
而L1范数 则是在L2范数的情况上开根号

这里复习一下pytorch的简洁拟合:

w = torch.randn((num_inputs, 1), requires_grad = True)
b = torch.zeros(1, require_grad=True)
optim = nn.optimizer.SGD(lr=0.03)
for epoch in epochs:
	for x,y in data:
		y_hat = nn.Linear(x)  ##写错了
		l  = nn.MSELoss(y_hat, y)
		if w.grad is not None:
			w.grad.data.zero_()
			b.grad.data.zero_()
		l.backward()
		optim.step()

3.Dropout

在多层感知器中,我们对每个隐藏层的神经单元都做了全连接,使得数据生成要基于所有隐藏神经单元,这有可能会造成过拟合.所以我们在训练层上进行模拟的时候,每次的训练都会随机丢弃几个隐藏层里的神经单元,使得模型不过过度依赖某个神经单元.

二、梯度消失和爆炸

当我们构建的神经网络层数比较多的时候,我们的函数就会嵌套很多层.假设输入和所有层的权重参数都是标量,如权重参数为0.2和5,多层感知机的第30层输出为输入X分别与0.230(消失)和530(爆炸)的乘积。
我们通过梯度裁剪和选用relu等激活函数,对梯度消失和爆炸有一定抑制作用
对于循环神经网络 可以通过LSTM和GRU的设计等

三、循环神经网络进阶

LSTM/GRU/双向/深层

LSTM

在这里插入图片描述
图片源自https://zhuanlan.zhihu.com/p/32085405
LSTM主要原理就是在进行预测的时候,我们预测公式应该对邻近的话语(也就是短期记忆)和相隔较远的词语(长期记忆)有不同的权重影响,这样才能更贴合人类思维模式,而不是对含有前面所有信息的隐藏状态进行同等对待.
lstm不同于RNN. 在原有的隐藏状态下新增一个记忆细胞C, C t C_t Ct的状态是对上个 C t − 1 C_{t-1} Ct1加上一些数值。所以状态会改变的比较慢,作为长期记忆细胞.而 h h h每次状态改变比较大,我们可以作为短期记忆细胞.
这里我们引入四个新的数据 z f z^f zf, z i z^i zi, z z z, z o z^o zo, 这四个数据都是基于 当前输入 x t x^t xt和上个隐藏状态 h t − 1 h^{t-1} ht1进行矩阵拼接之后做的函数变换.其中每个参数w和b都需要学习. 其中 z z z代表输入数据,而不是控制的开关

lstm三个主要阶段:
1.忘记阶段.对上个节点传进来的输入进行选择性忘记.“忘记不重要,记住重要的”.通过 z f z^f zf作为遗忘的权重系数乘以 c t − 1 c_{t-1} ct1,来控制那些需要遗忘,那些需要留下.
2.选择记忆阶段.这个阶段我们将输入进行有选择的记忆,这次我们选择 z i z^i zi作为记忆权重系数乘以 z z z.
3.输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。我们先将1.2两步的信息加总生成 c t c_t ct(并通过通过一个tanh激活函数进行变化).再通过 z o z^o zo 来进行控制的。生成 h t h_t ht.
-------引用自 https://zhuanlan.zhihu.com/p/32085405

GRU

在这里插入图片描述
图片来自 https://zhuanlan.zhihu.com/p/32481747
有了LSTM之后我们发现,需要求的系数有点多,计算速度偏慢,这时候又诞生一个新的模型就是GRU,在LSTM的基础上,缩减了参数个数,使得能得到差不多的效果但是更易于计算
这里我们有三个中间数据 r r r , z z z, h ′ h' h 分别是 重置门, 更新门, 和输入数据.

1.我们先使用 r r r乘以 h t − 1 h^{t-1} ht1 生成一个新的 h t − 1 ′ h^{t-1'} ht1,也就是 重置上个隐藏状态
2.再有当前输入x和重置隐藏状态 h t − 1 ′ h^{t-1'} ht1 通过tanh生成 h ′ h' h (先重置上个隐藏状态,在于当前x concat生成新状态)
3.最后我们 更新记忆,在这个阶段,我们同时进行了遗忘了记忆两个步骤。我们使用了先前得到的更新门控 z z z,
h t h^t ht = z * h t − 1 h^{t-1} ht1 + (1-z) * h ′ h' h
-------引用自 https://zhuanlan.zhihu.com/p/32085405

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO和SSD是两种常用的目标检测算法。针对过拟合欠拟合问题,可以使用一些正则化技术进行处理。 正则化技术有助于避免过拟合问题。其中,L1和L2正则化可以通过对模型的权重进行惩罚来降低过拟合的风险。Dropout技术可以在训练过程中随机丢弃一部分神经元,以减少模型的复杂度和依赖性,从而降低过拟合的可能性。Early Stopping是一种基于验证集性能的策略,当验证集性能不再提升时停止训练,以防止过拟合。数据增强是一种通过对训练数据进行扩充来增加样本多样性的方法,可以减少过拟合。 对于欠拟合问题,可以考虑增加模型的复杂度或增加训练数据量。通过增加模型的复杂度,例如增加网络层数或增加每层的神经元数量,可以提高模型的表达能力,从而减少欠拟合。如果训练数据量较少,可以使用数据增强技术来扩充数据集,提高模型的泛化能力。 综上所述,针对过拟合问题,可以使用正则化技术如L1和L2正则化、Dropout、Early Stopping和数据增强。对于欠拟合问题,可以增加模型复杂度或增加训练数据量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [目标检测YOLO实战应用案例100讲-自动驾驶场景下的三维目标检测技术研究](https://blog.csdn.net/qq_36130719/article/details/130657588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [《从零深入理解Yolo系列v1-v8全家桶 + 目标检测面试提问+目标检测算法总览》](https://blog.csdn.net/weixin_54338498/article/details/128714742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值