566 2

[经济学基础] RNN 的家族全面解析! [推广有奖]

  • 3关注
  • 84粉丝

学术权威

93%

还不是VIP/贵宾

-

威望
0
论坛币
395301 个
通用积分
1053.7518
学术水平
25 点
热心指数
23 点
信用等级
10 点
经验
236484 点
帖子
3497
精华
0
在线时间
5965 小时
注册时间
2020-11-11
最后登录
2024-5-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
RNN 的家族全面解析![color=rgba(0, 0, 0, 0.3)]以下文章来源于NewBeeNLP[color=rgba(0, 0, 0, 0.3)] [color=rgba(0, 0, 0, 0.3)],作者Chilia
[color=rgba(0, 0, 0, 0.3)]1. 梯度消失和梯度爆炸1.1 梯度消失【定义】当很多的层都用特定的激活函数(尤其是sigmoid函数),损失函数的梯度会趋近于0,因此模型更加不容易训练。(As more layers using certain activation functions are added to neural networks, the gradients of the loss function approaches zero, making the network hard to train.)以最简单的网络结构为例,假如有三个隐藏层,每层的神经元个数都是1,且对应的非线性函数为sigmoid:
每个节点的输出  , 那么梯度消失的罪魁祸首是sigmoid函数,在sigmoid函数靠近0和1的位置,其导数很小。很多小的值相乘,导致最终的梯度很小。sigmoid函数和其导数由于我们初始化的网络权值通常都小于1,因此当层数增多时,小于0的值不断相乘,最后就导致梯度消失的情况出现。同理,当权值过大时,导致大于1的值不断相乘,就会产生梯度爆炸。如果一个深层网络有很多层,梯度消失导致网络只等价于后面几层的浅层网络的学习,而前面的层不怎么更新了:深层网络在RNN中,也会出现梯度消失的问题,比如下面这个例子:这里应该填"ticket",但是如果梯度非常的小,RNN模型就不能够学习在很久之前出现的词语和现在要预测的词语的关联。也就是说,RNN模型也不能把握长期的信息。「梯度消失有几种常见的解决方法:」
  • 用下文提到的LSTM/GRU
  • 加上一些skip-connection, 让梯度直接流过而不经过bottleneck。例如resnet:


  • 用Relu、Leaky relu等激活函数
    • ReLu:让激活函数的导数为1
    • LeakyReLu:包含了ReLu的几乎所有优点,同时解决了ReLu中0区间带来的影响
1.2 梯度爆炸回忆梯度更新的公式:
那么,如果梯度太大,则参数更新的过快。步子迈的太大就会导致训练非常不稳定(训飞了),甚至最后loss变成「Inf」。梯度爆炸的解决方法:(1)gradient clipping如果梯度大于某个阈值了,就对其进行裁剪,让它不要高于那个阈值。(2) 权重正则化。如果发生梯度爆炸,那么权值的范数就会变的非常大。通过限制正则化项的大小,也可以在一定程度上限制梯度爆炸的发生。2. LSTMVanilla RNN最致命的问题就是,它不能够保留很久之前的信息(由于梯度消失)。这是因为它的隐藏状态在不停的被重写:所以,可不可以有一种RNN,能够有独立的记忆(separated memory)呢?2.1 LSTM 基本思想对于任一时间 t,都有三个概念:
  • hidden state: n维向量
  • cell state: n维向量,存储长期记忆。cell就像一个小小的计算机系统,可以「读、写、擦除」
  • gates: 「n维向量」,每个元素的大小都是0~1之间(之后做element-wise product)。决定哪些信息可以穿过,哪些需要被挡住。
「(1)三个gate的计算」首先,计算三个gate,它们都由上一个hidden state的输出  和当前的input  计算得到。gate是n维向量:「(2) cell 和 hidden state 的更新」「cell」存放长期记忆,t时刻的长期记忆  由两部分组成:①旧信息  遗忘一部分;②新信息  写入一部分。t时刻的「hidden state」  就是选择一部分长期记忆  输出的结果。LSTM图示:LSTM图示图中,每一个绿色方块是一个timestep。和普通的RNN一样,LSTM也是每一步有输入  ,有隐藏状态  作为输出。2.2 为什么LSTM能够解决梯度消失LSTM能够让RNN一直保留原来的信息(preserve information over many timesteps)。如果LSTM的遗忘门被设置成1,那么LSTM会一直记住原来每一步的旧信息。相比之下,RNN很难能够学习到一个参数矩阵  能够保留hidden state的全部信息。所以,可以说LSTM解决梯度消失的主要原因是因为它有「skip-connection」的结构,能够让信息直接流过。而vanilla RNN每一步backprop都要经过  这个bottleneck,导致梯度消失。3. GRU(gated recurrent unit)3.1 GRU的基本思想跟LSTM不同的是,GRU没有cell state,只有hidden state和两个gate。「(1)gate的计算:」
  • update gate: 相当于LSTM中的forget gate(擦除旧信息)和input gate(写入新信息)
  • reset gate: 判断哪一部分的hidden state是有用的,哪些是无用的。
「(2)hidden state的计算」3.2 为什么GRU能解决梯度消失?就像LSTM一样,GRU也能够保持长期记忆(想象一下把update gate设置成0,则以前的信息全部被保留了),也是一种增加skip-connection的方法。3.3 LSTM vs GRU
  • LSTM和GRU并没有明显的准确率上的区别
  • GRU比起LSTM来,参数更少,运算更快,仅此而已。
  • 所以,在实际应用中,我们用LSTM做default方法,如果追求更高的性能,就换成GRU


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:information connection Activation Informatio APPROACHES

已有 1 人评分经验 论坛币 收起 理由
linmengmiki + 100 + 100 奖励积极上传好的资料

总评分: 经验 + 100  论坛币 + 100   查看全部评分

沙发
三重虫 发表于 2022-1-18 15:02:04 |只看作者 |坛友微信交流群

使用道具

藤椅
zpjzpj 发表于 2022-1-19 08:29:58 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 00:08