也来谈谈RNN的梯度消失/爆炸问题

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

尽管 Transformer 类的模型已经攻占了 NLP 的多数领域,但诸如 LSTM、GRU 之类的 RNN 模型依然在某些场景下有它的独特价值,所以 RNN 依然是值得我们好好学习的模型。而于 RNN 梯度的相关分析,则是一个从优化角度思考分析模型的优秀例子,值得大家仔细琢磨理解。君不见,诸如“LSTM 为什么能解决梯度消失/爆炸”等问题依然是目前流行的面试题之一。

▲经典的LSTM

关于此类问题,已有不少网友做出过回答,然而笔者查找了一些文章(包括知乎上的部分回答、专栏以及经典的英文博客),发现没有找到比较好的答案:有些推导记号本身就混乱不堪,有些论述过程没有突出重点,整体而言感觉不够清晰自洽。为此,笔者也尝试给出自己的理解,供大家参考。

RNN及其梯度

RNN 的统一定义为:

其中 是每一步的输出,它由当前输入 和前一时刻输出 共同决定,而 则是可训练参数。在做最基本的分析时,我们可以假设 都是一维的,这可以让我们获得最直观的理解,并且其结果对高维情形仍有参考价值。之所以要考虑梯度,是因为我们目前主流的优化器还是梯度下降及其变种,因此要求我们定义的模型有一个比较合理的梯度。我们可以求得:

可以看到,其实 RNN 的梯度也是一个 RNN,当前时刻梯度 是前一时刻梯度 与当前运算梯度 的函数。同时,从上式我们就可以看出,其实梯度消失或者梯度爆炸现象几乎是必然存在的:

时,意味着历史的梯度信息是衰减的,因此步数多了梯度必然消失(好比 ;当 ,因为这历史的梯度信息逐步增强,因此步数多了梯度必然爆炸(好比 。总不可能一直 吧?当然,也有可能有些时刻大于 1,有些时刻小于 1,最终稳定在 1 附近,但这样概率很小,需要很精巧地设计模型才行。

所以步数多了,梯度消失或爆炸几乎都是不可避免的,我们只能对于有限的步数去缓解这个问题。

消失还是爆炸?

说到这里,我们还没说清楚一个问题:什么是 RNN 的梯度消失/爆炸?梯度爆炸好理解,就是梯度数值发散,甚至慢慢就 NaN 了;那梯度消失就是梯度变成零吗?并不是,我们刚刚说梯度消失是

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值