(2019)CS224N Lecture 7 Vanishing Gradients, Fancy RNNs 笔记 (1)

基本上是ppt截图,自用。

本节课内容
梯度消失
LSTM GRU(应该不会记)
梯度消失或梯度爆炸的解决方案:gradient clipping,skip connections
双向RNN,多层RNN

在这里插入图片描述
四步的RNN
假设有某种损失,J4 是基于四个隐藏状态计算的,求J4对h1的导数
根据chain rule 链式法则,如果ht对h(t-1)的导数很小,会发生什么?
所以梯度消失的问题就是,当这些梯度很小的F时候,然后我们的整体梯度会变得越来越小,当它进一步传播的时候,因为累积梯度是所有这些中间梯度的乘积,

在这里插入图片描述
回顾之前隐藏状态的计算公式,这里先暂时忽略输入的形式,抽象化的来思考,xt可能是任何形式的矢量,因此,ht对h(t-1)的导数如图,在之前的反向传播有证明,最后乘以Wh是因为sigma()内部有Wh乘h(t-1),考虑刚刚第i步的损失Ji(),对先前第j步的隐藏状态hj的导数,也许j之前还有很多步骤,那么这个导数就可以写成图上的形式,
注意这个权值矩阵Wh,被乘了(i-j)次,也就是这个梯度经过的距离。如果这个权值矩阵Wh很小,那这个梯度会变得非常小,指数级变小。

在这里插入图片描述
再加一点细节,L2范数……
由于左边小于右边,右边乘以Wh的i-j次,
如果Wh的最大特征值小于1(边界1是因为用了sigmoid非线性函数?),那么左边小于右边,梯度会指数缩小;大于1,会梯度爆炸。
Source: “On the difficulty of training recurrent neural networks”, Pascanu et al, 2013. http://proceedings.mlr.press/v28/pascanu13.pdf

第一个的考虑梯度消失的原因
在这里插入图片描述
附近的梯度信号远远大于远处的梯度信号,所以当更新优化模型权重的时候,只与附近影响有关,而不是长期影响,所以会在附近的影响中失去远处的影响。
为什么考虑dj/dh h是activation而不是weight?因为如果考虑dj/dw,W是我们想要更新的,它总是和某点的dj/dh有关,比如h1–h2的W,那么dj4/dw会经过dj4/dh2 ??,所以当我们反向传播更深入,得到消失的梯度,就像瓶颈,我们得到他们影响的消失的梯度,the recurrent matrix ,然后这些梯度确实应用到了输入上。

第二个考虑梯度消失的原因
在这里插入图片描述
把梯度看做过去对未来的影响的衡量标准,梯度就是如果改一点activation或weight,那么它将来会对这件事产生多大影响。
如果梯度在较长距离上变得越来越小(从第t步到t+n步),就不能分辨两种情况:
1.可能数据中第t步到t+n步之间不存在依赖关系,假设我们正在学习一项任务,而任务中没有第t步和第t+n步的联系或关系,所以不能学到任何东西,然而事实上这里应该有这两件事的小梯度
2.可能在数据和任务中两件事之间确实存在联系,理想情况下也应该学习这种联系,但是模型中有错误的参数来捕捉这种联系,这也就是为什么梯度很小,因为模型没有看到他们之间是联系的,所以此时没有学习到这两件事情之间真正的依赖关系。
梯度消失问题就在于不能区分我们正处于以上两种情况的哪一种。

一些例子
在这里插入图片描述
在这里插入图片描述
“Assessing the Ability of LSTMs to Learn Syntax-Sensitive Dependencies”, Linzen et al, 2016. https://arxiv.org/pdf/1611.01368.pdf
语法recency 顺序recency
由于梯度消失,RNN语言模型在学习顺序recency上优于句法recency 顺序近因?
尤其是当相关词距离预测词远的时候,很难利用语法上最近的单词的信息,尤其顺序上近的单词有很强的信号
在这里插入图片描述
模型的新参数θ,为了最小化损失J,旧参数在负梯度的方向上走了几步。
如果梯度非常大,那么SGD更新后也将变得非常大,所以要迈一大步,彻底改变模型参数θ。这会导致不好的更新:迈了一大步之后,落在参数不好的区域,比如损失变得更大,
在最坏的情况下,会在网络中出现Inf(infinity)或NaN(not a number) ,这是因为在更新参数的时候,可能减去了无穷大的数,那么激活中会出现所有这些无穷大,所有的损失也是无穷大,SGD就不再起作用。
遗憾的是,这种事情经常会发生,发生之后就要从早期检查点重新训练,因为从Inf或NaN的新状态中找不到解决方案。
在这里插入图片描述
Source: “On the difficulty of training recurrent neural networks”, Pascanu et al, 2013. http://proceedings.mlr.press/v28/pascanu13.pdf
梯度爆炸的解决办法
梯度裁剪,如果梯度的范数大于某个阈值,阈值是设定的超参数,如果想在应用SGD更新之前缩小梯度,直观上看就是仍然要向某个方向迈出一步,但要保证这是较小的一步。
伪代码,来自相关论文,某种版本的梯度裁剪,g-hat是error对参数θ的梯度,如果这个梯度大于阈值,那么就缩小它,重要的是要注意它仍然是同一方向,只是一小步。

在这里插入图片描述
Source: “Deep Learning”, Goodfellow, Bengio and Courville, 2016. Chapter 10.11.1. https://www.deeplearningbook.org/contents/rnn.html

梯度爆炸如何在实践中发挥作用,图是一个简单RNN的损失面,没有一系列向量作为隐藏状态,它假设每个隐藏状态是一个标量,也就意味着没有权值矩阵W,偏差向量b,只有标量w和标量b,这就是为什么图片中展现出来的是一个二维参数空间,z轴为损失,损失越低对目标越好。
可以看到图片中有一个悬崖面,损失变化很快,在这里更新一步要冒很大的风险,因为这个区域有一个非常陡峭的梯度,所以在左边的图中,没有应用梯度裁剪,可以看到一开始在悬崖底部,它在离开悬崖之前有一个小的倾角,那么真正的局部最小值,也就是我们试图达到的最佳状态是沟渠的底部。在一个小更新之后,由于这个更新是不好的更新,刚开始它靠近那个沟的边缘,之后应用了一个负梯度,然而这次更新调整过多,使结果最终远离了悬崖,这就是差更新的情况,损失要比之前大得多。
现在它在悬崖上,再次测量梯度,而梯度很大,当应用了这次梯度的更新,因为梯度太大了,需要迈出一大步,也就是左图到右边的点的这一步,仅仅把它扔到很远的地方,可能对w和b的配置非常随机。所以在左图可以看到在非常陡峭的梯度区域迈出一大步的结果。相比之下可以从右图中看出应用梯度裁剪之后会发生什么,那么,在和左图类似的模式下,需要几步进入沟渠,最终沿着悬崖向上一点点,由于梯度裁剪,这一步不会走太多,然后在悬崖上又有一个陡峭的梯度,再次因为梯度剪裁,这一步仍然不是非常大。
从以上的证明来看,梯度裁剪方法是合理的,这种方法提供了一个更安全的更新规则,每一步不会走太多,也就更容易找到沟渠底部真正的最小值。

在这里插入图片描述
怎么解决梯度消失问题?
这个问题主要在于RNN很难去学会一个信息并在以后使用。
对于普通/标准RNN计算隐藏状态的公式,它是基于非线性激活函数,很难将信息从一个隐藏状态保存到另一个隐藏状态
那么有独立记忆的RNN呢?
如果我们有一些单独的地方来存储想要在以后使用的信息,就能让RNN很容易把信息保存到几个时间步之后。

在这里插入图片描述
“Long short-term memory”, Hochreiter and Schmidhuber, 1997. https://www.bioinf.jku.at/publications/older/2604.pdf

LSTM被提出作为RNN梯度消失问题的解决方案,
1.在每一个step t ,有隐藏状态ht和cell state ct,
两个都是长度相同为n的向量
cell:存储长期信息,即存储单元
LSTM能从cell中读写消除信息,有些像计算机中的内存
2.门来决定是否读取写入擦除信息,并决定多少和哪些信息。
门也是长度为n的向量
门的每个元素,也是向量,1表示开放的门,0表示关闭的门,0到1之间都可以有值
如果门是开的,代表信息可以通过,门是关的则不能通过.
门是动态的,不是设置了一些定值,在每个时间步t上都有不同的值,决定门是关闭还是开放是根据当前的上下文计算的。
在这里插入图片描述
LSTM的方程,
假设一个输入序列xt,计算隐藏状态ht,cell状态ct,
在时间步t,发生了什么
ft,it,ot 三个门
ft:遗忘门,决定保留还是遗忘,从前一个cell state(前一个记忆),基于前一个隐藏状态ht-1和当前输入xt,这就是说它是根据上下文计算的原因,用sigmoid函数意味着它介于0和1之间。
it:输入门,控制新cell内容的那些内容被写入cell
ot:输出门,cell的哪一部分写入到隐藏状态ht,可以看做读取功能,从cell中读取信息到隐藏状态,输出门则控制这个过程
以下三个方程显示了怎么用这三个门
c_tilde t:写入cell的新内容也是基于前一步的隐藏状态和当前输入,用了tanh()非线性函数。这是主要内容,你正在根据上下文计算,希望把它写入memory
ct:用遗忘门选择性的忘记上一个cell state的一些信息,ft是一个介于0 1之间的向量,在ft与前一个cell state ct-1之间做element-wise product,f是1,复制信息,f是0,删除或忘记信息。it times c_tilde t 是输入门控制新cell 内容的哪些部分被写入cell.
ht:让cell经过tanh,非线性函数,然后通过输出门,得到隐藏状态。
在LSTM ,把隐藏状态视为RNN的输出,这样做的原因是 用cell state这种内部memory通常无法从内部访问,而隐藏状态转到模型下一部分,所以把隐藏状态看做RNN的输出

在这里插入图片描述
Source: http://colah.github.io/posts/2015-08-Understanding-LSTMs/

在这里插入图片描述
在这里插入图片描述
1.LSTM架构让RNN很容易在很多时间步中保存信息,尽管标准RNN很难保存所有的隐藏状态的信息,但是这也是一个很简单的策略让LSTM保存信息,例如如果遗忘门设置成记住每一步的所有信息,那么cell中的信息会被无限期的保留。这对一些任务确实起到了好的作用,相比较而言,标准RNN确实很难做到。
2.LSTM不能保证没有梯度消失或梯度爆炸问题,但LSTM让模型更容易避免这些问题。
LSTM为什么解决了梯度消失问题??

在这里插入图片描述
LSTMs: real-world success
• In 2013-2015, LSTMs started achieving state-of-the-art results
• Successful tasks include: handwriting recognition, speech
recognition, machine translation, parsing, image captioning
• LSTM became the dominant approach
• Now (2019), other approaches (e.g. Transformers) have become
more dominant for certain tasks.
• For example in WMT (a MT conference + competition):
• In WMT 2016, the summary report contains ”RNN” 44 times
• In WMT 2018, the report contains “RNN” 9 times and
“Transformer” 63 times
27
Source: “Findings of the 2016 Conference on Machine Translation (WMT16)”, Bojar et al. 2016, http://www.statmt.org/wmt16/pdf/W16-2301.pdf
Source: “Findings of the 2018 Conference on Machine Translation (WMT18)”, Bojar et al. 2018, http://www.statmt.org/wmt18/pdf/WMT028.pdf

在这里插入图片描述
”Learning Long-Term Dependencies with Gradient Descent is Difficult", Bengio et al. 1994, http://ai.dinfo.unifi.it/paolo//ps/tnn-94-gradient.pdf

在这里插入图片描述
情感分类的例子,用RNN作为一种句子的编码器,隐藏状态代表句子,在看terribly这个词的时候,需要利用左侧和右侧的信息,在上下文的环境中来看这个词。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值