RNN及LSTM

1.RNN

结构图:
在这里插入图片描述
公式:
S i = f ( U X i + W S i − 1 ) S_i=f(UX_i+WS_{i-1}) Si=f(UXi+WSi1) ==> 使用tanh激活函数
O i = g ( V S i ) O_i=g(VS_i) Oi=g(VSi)
反向传播:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

梯度消失:RNN梯度消失是因为激活函数tanh函数的倒数在0到1之间,反向传播时更新前面时刻的参数时,当参数W初始化为小于1的数,则多个(tanh函数’ * W)相乘,将导致求得的偏导极小(小于1的数连乘),从而导致梯度消失。

梯度爆炸:当参数初始化为足够大,使得tanh函数的倒数乘以W大于1,则将导致偏导极大(大于1的数连乘),从而导致梯度爆炸。

参数计算:
设输入为m,隐层为h,输出为n
即count = hm + hh + h*n

LSTM

在这里插入图片描述

遗忘门: f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t = \sigma( W_f \cdot [h_{t-1}, x_t] + b_f) ft=σ(Wf[ht1,xt]+bf)
输入门: i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) it=σ(Wi[ht1,xt]+bi)
输出门: o t = σ ( W o ⋅ [ h t − 1 , x t ] + b 0 ) o_t = \sigma(W_o \cdot [h_{t-1}, x_t ] + b_0 ) ot=σ(Wo[ht1,xt]+b0)
当前单元状态 c_t : c t = f t ∘ c t − 1 + i t ∘ t a n h ( W c ⋅ [ h t − 1 , x t ] + b c ) c_t = f_t \circ c_{t-1} + i_t \circ tanh(W_c \cdot [h_{t-1}, x_t] + b_c ) ct=ftct1+ittanh(Wc[ht1,xt]+bc)
当前时刻的隐层输出: h t = o t ∘ t a n h ( c t ) h_t = o_t \circ tanh(c_t) ht=ottanh(ct)
我们注意到, 首先三个门的激活函数是sigmoid, 这也就意味着这三个门的输出要么接近于0 , 要么接近于1。这就使得 δ c t δ c t − 1 = f t \frac{\delta c_t}{\delta c_{t-1}} = f_t δct1δct=ft δ h t δ h t − 1 = o t \frac{\delta h_t}{\delta h_{t-1}} = o_t δht1δht=ot 是非0即1的,当门为1时, 梯度能够很好的在LSTM中传递,很大程度上减轻了梯度消失发生的概率, 当门为0时,说明上一时刻的信息对当前时刻没有影响, 我们也就没有必要传递梯度回去来更新参数了。所以, 这就是为什么通过门机制就能够解决梯度的原因: 使得单元间的传递 δ S j δ S j − 1 \frac{\delta S_j}{\delta S_{j-1}} δSj1δSj为0 或 1。

参数:3个门加一个细胞更新
count = 4 * (mh+hh+h) 最后一个h是偏置

LSTM如何避免梯度消失或是爆炸?
https://www.zhihu.com/question/34878706
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值