分享好友 人工智能首页 频道列表

动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶

循环神经网络  2023-02-09 19:326330

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

过拟合和欠拟合

  1. 一类是模型无法得到较低的训练误差,我们将这一现象称作欠拟合(underfitting);
  2. 另一类是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。 在实践中,我们要尽可能同时应对欠拟合和过拟合。虽然有很多因素可能导致这两种拟合问题,在这里我们重点讨论两个因素:模型复杂度和训练数据集大小。

模型复杂度与过拟合、欠拟合的关系如下图:
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
训练数据集大小:
影响欠拟合和过拟合的另一个重要因素是训练数据集的大小。一般来说,如果训练数据集中样本数过少,特别是比模型参数数量(按元素计)更少时,过拟合更容易发生。此外,泛化误差不会随训练数据集里样本数量增加而增大。因此,在计算资源允许的范围之内,我们通常希望训练数据集大一些,特别是在模型复杂度较高时,例如层数较多的深度学习模型。

应对过拟合的方法

1.权重衰减

权重衰减等价于 ????2 范数正则化(regularization)。正则化通过为模型损失函数添加惩罚项使学出的模型参数值较小,是应对过拟合的常用手段。
L2 范数正则化(regularization)
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶

2.丢弃法

动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
总结:
欠拟合现象:模型无法达到一个较低的误差
过拟合现象:训练误差较低但是泛化误差依然较高,二者相差较大

梯度消失、梯度爆炸

梯度消失和梯度爆炸:当神经网络的层数较多时,模型的数值稳定性容易变差。
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
即根据权重参数的取值情况,(取值小可能出现梯度消失,取值大可能出现梯度爆炸)

随机初始化模型参数¶

随机初始化模型参数的原因:
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
即避免神经元的参数一致,取相同的参数值,所以要进行随机初始化。
初始化方法:

PyTorch的默认随机初始化
随机初始化模型参数的方法有很多。在线性回归的简洁实现中,我们使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。不过,PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略(不同类型的layer具体采样的哪一种初始化方法的可参考源代码),因此一般不用我们考虑。
Xavier随机初始化
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶

考虑环境因素

协变量偏移
这里我们假设,虽然输入的分布可能随时间而改变,但是标记函数,即条件分布P(y∣x)不会改变。虽然这个问题容易理解,但在实践中也容易忽视。
想想区分猫和狗的一个例子。我们的训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类。
标签偏移
当我们认为导致偏移的是标签P(y)上的边缘分布的变化,但类条件分布是不变的P(x∣y)时,就会出现相反的问题。当我们认为y导致x时,标签偏移是一个合理的假设。例如,通常我们希望根据其表现来预测诊断结果。在这种情况下,我们认为诊断引起的表现,即疾病引起的症状。有时标签偏移和协变量移位假设可以同时成立。例如,当真正的标签函数是确定的和不变的,那么协变量偏移将始终保持,包括如果标签偏移也保持。有趣的是,当我们期望标签偏移和协变量偏移保持时,使用来自标签偏移假设的方法通常是有利的。这是因为这些方法倾向于操作看起来像标签的对象,这(在深度学习中)与处理看起来像输入的对象(在深度学习中)相比相对容易一些。
病因(要预测的诊断结果)导致 症状(观察到的结果)。
训练数据集,数据很少只包含流感p(y)的样本。
而测试数据集有流感p(y)和流感q(y),其中不变的是流感症状p(x|y)。
概念偏移
另一个相关的问题出现在概念转换中,即标签本身的定义发生变化的情况。这听起来很奇怪,毕竟猫就是猫。的确,猫的定义可能不会改变,但我们能不能对软饮料也这么说呢?事实证明,如果我们周游美国,按地理位置转移数据来源,我们会发现,即使是如图所示的这个简单术语的定义也会发生相当大的概念转变。

循环神经网络进阶

RNN
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
GRU
GRU 有两个有两个门,即一个重置门(reset gate)和一个更新门(update gate)。从直观上来说,重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。如果我们将重置门设置为 1,更新门设置为 0,那么我们将再次获得标准 RNN 模型。使用门控机制学习长期依赖关系的基本思想和 LSTM 一致,但还是有一些关键区别:

  1. GRU 有两个门(重置门与更新门),而 LSTM 有三个门(输入门、遗忘门和输出门)。
  2. GRU 并不会控制并保留内部记忆(c_t),且没有 LSTM 中的输出门。
  3. LSTM 中的输入与遗忘门对应于 GRU 的更新门,重置门直接作用于前面的隐藏状态。
    在计算输出时并不应用二阶非线性。
    动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
    动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
    参考链接:
    https://www.jiqizhixin.com/articles/2017-12-24
    GRU原理:
    为了解决标准 RNN 的梯度消失问题,GRU 使用了更新门(update gate)与重置门(reset gate)。基本上,这两个门控向量决定了哪些信息最终能作为门控循环单元的输出。这两个门控机制的特殊之处在于,它们能够保存长期序列中的信息,且不会随时间而清除或因为与预测不相关而移除。
    1.更新门
    在时间步 t,我们首先需要使用以下公式计算更新门 z_t:
    动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
    动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
    动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
    更新门帮助模型决定到底要将多少过去的信息传递到未来,或到底前一时间步和当前时间步的信息有多少是需要继续传递的
    。这一点非常强大,因为模型能决定从过去复制所有的信息以减少梯度消失的风险。我们随后会讨论更新门的使用方法,现在只需要记住 z_t 的计算公式就行。
    重置⻔有助于捕捉时间序列⾥短期的依赖关系;
    更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。

2. 重置门
重置门主要决定了到底有多少过去的信息需要遗忘
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
该表达式与更新门的表达式是一样的,只不过线性变换的参数和用处不一样而已。下图展示了该运算过程的表示方法。
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
如前面更新门所述,h_(t-1) 和 x_t 先经过一个线性变换,再相加投入 Sigmoid **函数以输出**值。
LSTM:
长短期记忆long short-term memory :
遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶
双向循环神经网络
动手学 task03 过拟合、欠拟合及其解决方案+梯度消失、梯度爆炸+循环神经网络进阶

查看更多关于【循环神经网络】的文章

展开全文
相关推荐
反对 0
举报 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
第六讲 循环神经网络--LSTM--stock
1 !pip install tushare2 import tushare as ts3 import numpy as np4 import tensorflow as tf5 from tensorflow.keras.layers import Dropout, Dense, LSTM6 import matplotlib.pyplot as plt7 import os8 import pandas as pd9 from sklearn.preprocessing

0评论2023-02-10476

基于循环神经网络的图像特定文本抽取方法
 作者的模型整体框架包含两部分,分别为OCR 部分 (采用人家的模型, 输出文本)特定文本抽取部分 (作者的工作)1. 引言早期图像特定文本抽取主要是通过 OCR 中的版面分析(Layout analysis)来实现。即首先利用 版面分析 的方法得到图像中特定的文本区域,然后

0评论2023-02-09946

更多推荐