1、梯度消失、梯度爆炸

  1. 梯度消失和梯度爆炸
  2. 考虑到环境因素的其他问题

1.1 本次课程主要任务

  1. 了解学习梯度消失与梯度爆炸产生的原因以及怎么样解决。
  2. 考虑到环境因素的其他问题(协变量偏移,标签偏移,概念偏移)

1.2 学习收获总结

  1. 当神经网络的层数较多时,模型的数值稳定性容易变差。容易发生梯度消失以及梯度爆炸。
  2. 随机初始化可以有效减缓梯度爆炸。
  3. 协变量偏移:用A训练集训练的模型,被用于B测试集。(A:真实的猫狗图片,B:卡通猫狗图片)
  4. 标签便宜:测试集出现训练集中没有的标签。

2、梯度消失和梯度爆炸

深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion)。

当神经网络的层数较多时,模型的数值稳定性容易变差。

假设一个层数为 L L L的多层感知机的第 l l l层 H ( l ) \boldsymbol{H}^{(l)} H(l)的权重参数为 W ( l ) \boldsymbol{W}^{(l)} W(l),输出层 H ( L ) \boldsymbol{H}^{(L)} H(L)的权重参数为 W ( L ) \boldsymbol{W}^{(L)} W(L)。为了便于讨论,不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping) ϕ ( x ) = x \phi(x) = x ϕ(x)=x。给定输入 X \boldsymbol{X} X,多层感知机的第 l l l层的输出 H ( l ) = X W ( 1 ) W ( 2 ) … W ( l ) \boldsymbol{H}^{(l)} = \boldsymbol{X} \boldsymbol{W}^{(1)} \boldsymbol{W}^{(2)} \ldots \boldsymbol{W}^{(l)} H(l)=XW(1)W(2)…W(l)。此时,如果层数 l l l较大, H ( l ) \boldsymbol{H}^{(l)} H(l)的计算可能会出现衰减或爆炸。举个例子,假设输入和所有层的权重参数都是标量,如权重参数为0.2和5,多层感知机的第30层输出为输入 X \boldsymbol{X} X分别与 0. 2 30 ≈ 1 × 1 0 − 21 0.2^{30} \approx 1 \times 10^{-21} 0.230≈1×10−21(消失)和 5 30 ≈ 9 × 1 0 20 5^{30} \approx 9 \times 10^{20} 530≈9×1020(爆炸)的乘积。当层数较多时,梯度的计算也容易出现消失或爆炸。

2.1 随机初始化模型参数

在神经网络中,通常需要随机初始化模型参数。下面我们来解释这样做的原因。

回顾多层感知机一节描述的多层感知机。为了方便解释,假设输出层只保留一个输出单元 o 1 o_1 o1​(删去 o 2 o_2 o2​和 o 3 o_3 o3​以及指向它们的箭头),且隐藏层使用相同的激活函数。如果将每个隐藏单元的参数都初始化为相等的值,那么在正向传播时每个隐藏单元将根据相同的输入计算出相同的值,并传递至输出层。在反向传播中,每个隐藏单元的参数梯度值相等。因此,这些参数在使用基于梯度的优化算法迭代后值依然相等。之后的迭代也是如此。在这种情况下,无论隐藏单元有多少,隐藏层本质上只有1个隐藏单元在发挥作用。因此,正如在前面的实验中所做的那样,我们通常将神经网络的模型参数,特别是权重参数,进行随机初始化。

2.2 PyTorch的默认随机初始化

随机初始化模型参数的方法有很多。在线性回归的简洁实现中,我们使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。不过,PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略(不同类型的layer具体采样的哪一种初始化方法的可参考源代码),因此一般不用我们考虑。

2.3 Xavier随机初始化

还有一种比较常用的随机初始化方法叫作Xavier随机初始化。
假设某全连接层的输入个数为 a a a,输出个数为 b b b,Xavier随机初始化将使该层中权重参数的每个元素都随机采样于均匀分布

U ( − 6 a + b , 6 a + b ) . U\left(-\sqrt{\frac{6}{a+b}}, \sqrt{\frac{6}{a+b}}\right). U(−a+b6​ ​,a+b6​ ​).

它的设计主要考虑到,模型参数初始化后,每层输出的方差不该受该层输入个数影响,且每层梯度的方差也不该受该层输出个数影响。

3、考虑环境因素

3.1 协变量偏移

这里我们假设,虽然输入的分布可能随时间而改变,但是标记函数,即条件分布P(y∣x)不会改变。虽然这个问题容易理解,但在实践中也容易忽视。

想想区分猫和狗的一个例子。我们的训练数据使用的是猫和狗的真实的照片,但是在测试时,我们被要求对猫和狗的卡通图片进行分类。

cat cat dog dog

测试数据:

cat cat dog dog

显然,这不太可能奏效。训练集由照片组成,而测试集只包含卡通。在一个看起来与测试集有着本质不同的数据集上进行训练,而不考虑如何适应新的情况,这是不是一个好主意。不幸的是,这是一个非常常见的陷阱。

统计学家称这种协变量变化是因为问题的根源在于特征分布的变化(即协变量的变化)。数学上,我们可以说P(x)改变了,但P(y∣x)保持不变。尽管它的有用性并不局限于此,当我们认为x导致y时,协变量移位通常是正确的假设。

3.2 标签偏移

当我们认为导致偏移的是标签P(y)上的边缘分布的变化,但类条件分布是不变的P(x∣y)时,就会出现相反的问题。当我们认为y导致x时,标签偏移是一个合理的假设。例如,通常我们希望根据其表现来预测诊断结果。在这种情况下,我们认为诊断引起的表现,即疾病引起的症状。有时标签偏移和协变量移位假设可以同时成立。例如,当真正的标签函数是确定的和不变的,那么协变量偏移将始终保持,包括如果标签偏移也保持。有趣的是,当我们期望标签偏移和协变量偏移保持时,使用来自标签偏移假设的方法通常是有利的。这是因为这些方法倾向于操作看起来像标签的对象,这(在深度学习中)与处理看起来像输入的对象(在深度学习中)相比相对容易一些。

病因(要预测的诊断结果)导致 症状(观察到的结果)。

训练数据集,数据很少只包含流感p(y)的样本。

而测试数据集有流感p(y)和流感q(y),其中不变的是流感症状p(x|y)。

3.3 概念偏移

另一个相关的问题出现在概念转换中,即标签本身的定义发生变化的情况。这听起来很奇怪,毕竟猫就是猫。的确,猫的定义可能不会改变,但我们能不能对软饮料也这么说呢?事实证明,如果我们周游美国,按地理位置转移数据来源,我们会发现,即使是如图所示的这个简单术语的定义也会发生相当大的概念转变。

美 国 软 饮 料 名 称 的 概 念 转 变 美国软饮料名称的概念转变 美国软饮料名称的概念转变
如果我们要建立一个机器翻译系统,分布P(y∣x)可能因我们的位置而异。这个问题很难发现。另一个可取之处是P(y∣x)通常只是逐渐变化。

4、K折交叉验证

我们在模型选择、欠拟合和过拟合中介绍了 K K K折交叉验证。它将被用来选择模型设计并调节超参数。下面实现了一个函数,它返回第i折交叉验证时所需要的训练和验证数据。
在 K K K折交叉验证中我们训练 K K K次并返回训练和验证的平均误差

5、模型选择

我们使用一组未经调优的超参数并计算交叉验证误差。可以改动这些超参数来尽可能减小平均测试误差。
有时候你会发现一组参数的训练误差可以达到很低,但是在 K K K折交叉验证上的误差可能反而较高。这种现象很可能是由过拟合造成的。因此,当训练误差降低时,我们要观察 K K K折交叉验证上的误差是否也相应降低。

学习笔记5-梯度爆炸和梯度消失(K折交叉验证)相关推荐

  1. 【深度学习】深度学习预测房价:回归问题,K折交叉

    机器学习中,大部分是分类问题,另一种常见的机器学习问题是回归问题,它预测一个连续值而不是离散的标签,例如,根据气象数据预测明天的气温,或者根据软件说明书预测完成软件项目所需要的时间.根据消费行为预测用 ...

  2. 深度学习技巧应用7-K折交叉验证的实践操作

    大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用7-K折交叉验证的实践操作.K折交叉验证是一种机器学习中常用的模型验证和选择方式,它可以将数据集分为K个互斥的子集,其中K-1个子集作为训练集, ...

  3. 梯度爆炸与梯度消失是什么?有什么影响?如何解决?

    文章目录 一.梯度爆炸 1.什么是梯度爆炸? 2.有何影响? 二.梯度消失 1.定义 2.有何影响? 三.共同点 1.产生原因 2.解决办法 a. 方案1-预训练加微调 b. 方案2-梯度剪切.正则化 ...

  4. 什么是梯度爆炸与梯度消失

    梯度爆炸(Gradient Explosion)和梯度消失(Gradient Vanishing)是深度学习训练过程中的两种常见问题. 梯度爆炸是指当训练深度神经网络时,梯度的值会快速增大,造成参数的 ...

  5. 【转载】梯度爆炸和梯度消失

    写得很全的一篇知乎上的介绍 一.梯度消失 梯度消失出现的原因: 在深层网络中,如果激活函数的导数小于1,根据链式求导法则,靠近输入层的参数的梯度因为乘了很多的小于1的数而越来越小,最终就会趋近于0,例 ...

  6. 为什么会出现梯度爆炸和梯度消失现象?怎么缓解这种现象的发生?

    前言:梯度消失现象在深度神经网络训练过程中表现得尤为突出,随着网络层数的加深,损失在反向传播时梯度在不断减小,导致浅层网络的学习进行不下去,参数得不到有效更新.为什么会出现这种现象呢?下面小编将从神经 ...

  7. 梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法

    一.引入:梯度更新规则 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值.这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来 ...

  8. 如何理解梯度爆炸和梯度消失

    如何理解梯度爆炸和梯度消失 何为梯度消失,产生的原因是什么? 梯度消失的最核心原因是,选择的优化方法不能很好的应对多层结构.在利用链式法则,求导的过程中导致梯度逐层衰减,最后消失.反之如果每次求导之后 ...

  9. 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip

    梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...

最新文章

  1. 【案例分析】android广播接收不到原因分析
  2. 如何在CentOS 5.x 中安装Windows Azure Linux Agent (WALA)
  3. 安卓开发 adb命令使用
  4. 2017 Vue.js 2快速入门指南
  5. ETL安装前的准备 - 数据库创建方法
  6. 编写安装配置ftp-samba服务脚本
  7. Excel VBA遍历文件
  8. 南京大学计算机考研分数线2021,南京大学2021年硕士研究生复试基本分数线
  9. 曝光!衡中教室高清摄像头记录:不想一辈子吃苦,就必须闻鸡起舞!(转给学生)...
  10. magento开启模板路径提示
  11. day20 java的String
  12. 神奇的Gamma函数(scipy)
  13. MOQL—转换器(Translator)
  14. python监控错误语句_Sentry错误日志监控使用方法解析
  15. GBK点阵字库制作工具说明及下载
  16. [词汇] 十四、动词
  17. 高德sdk定位当前位置_高德api获取当前位置
  18. java金蝉素数_回文素数 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. 内核驱动 (二)Linux按键驱动分析
  20. html+css画虚线,实线

热门文章

  1. java和php哪个更有发展前景_Java与php比较哪个更有发展
  2. 方建生:阿里巴巴助力打造数字经济县域发展新样本
  3. python渗透测试编程技术基础书评_【新手必看】渗透测试学习书籍推荐
  4. 项目实训--Unity多人游戏开发(十二、PUN框架--摄像机跟随)
  5. ZYNQ PS-PL ILA联调注意事项
  6. 2021年A特种设备相关管理(电梯)试题及解析及A特种设备相关管理(电梯)模拟考试题库
  7. 计算机图形流水线的主要步骤,计算机图形学试题.pdf
  8. Mac 升级Python 2.7 到 Python 3.8
  9. cv::cuda与CUDA的NPP库、距离变换和分水岭并行版本尝试
  10. 高仿喜马拉雅听Android客户端,Zhumulangma