当前位置:   article > 正文

RNN与LSTM的区别_lstm和rnn的区别

lstm和rnn的区别

这篇文章简单总结一下RNN与LSTM的区别。
首先,对于基本RNN来说,它能够处理一定的短期依赖,但无法处理长期依赖问题。比如句子The cat, which already ate …, was full.和句子The cats, which already ate …, were full.,两句话的差别在于主语和谓语动词的单复数,由于句子比较长,RNN就无法处理这种问题。那么RNN为什么无法处理这种问题呢?因为当序列较长时,序列后部的梯度很难反向传播到前面的序列,比如10个元素以前,这就产生了梯度消失问题。当然,RNN也存在梯度爆炸问题,但这个问题一般可以通过梯度裁剪(gradient clipping)来解决。
了解了RNN的问题后,我们再具体的看RNN和LSTM的网络结构,RNN网络结构如下图所示(按时间展开):
RNN.png
图中 h t h_t ht为timestep t的隐藏层状态值, x t x_t xt为输入, h t h_t ht实际上还要经过softmax或者别的函数处理得到输出 y ^ t \hat y_t y^t,这里并没有画出来。
上图中RNN单元的计算公式为:
h t = t a n h ( W h ⋅ [ h t − 1 , x t ] + b h ) h_t = tanh(W_h \cdot [h_{t-1}, x_t] + b_h) ht=tanh(Wh[ht1,xt]+bh)
由公式我们可以看到,RNN本时刻的隐藏层信息只来源于当前输入和上一时刻的隐藏层信息,没有记忆功能。
为了解决RNN的长期依赖也即梯度消失问题 ,LSTM应运而生。下面我们看一下LSTM的网络结构图:
LSTM.png
显然,LSTM的网络结构相比于RNN复杂了很多。从微观上看,LSTM引入了细胞状态,并使用输入门、遗忘门、输出门三种门来保持和控制信息。具体的,LSTM某个timstep t的计算公式如下所示:
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/354583
推荐阅读
相关标签
  

闽ICP备14008679号