RNN与LSTM的区别

本文介绍了RNN在处理长期依赖问题上的局限性,如梯度消失,并对比了LSTM的网络结构,强调LSTM通过细胞状态、输入门、遗忘门和输出门来解决这一问题,从而具备处理长期依赖的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章简单总结一下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 ) i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) c ~ t = t a n h ( W c ⋅ [ h t − 1 , x t ] + b c ) c t = f t ∗ c t − 1 + i t ∗ c ~ t o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) h t = o t ∗ t a n h ( c t ) \begin{aligned} & f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \\ & i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \\ & \tilde c_t = tanh(W_c \cdot [h_{t-1}, x_t] + b_c) \\ & c_t = f_t * c_{t-1} + i_t * \tilde c_{t} \\ & o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) \\ & h_t = o_t * tanh(c_t) \\ \end{aligned}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值