RNN

首先通过一个例子说一下语言模型:
这里写图片描述

RNN优点:

  1. 可以处理任意长度的输入
  2. weights在所有时刻都是共享的
  3. 可以利用前面时刻的信息

RNN缺点:

  1. 耗时,无法并行
  2. 实际中,很难利用前面很远时刻的信息

这里写图片描述

RNN公式:
h t = t a n h ( W h h t − 1 + W e e t + b 1 ) h_t = tanh (W_hh_{t-1} + W_ee_t + b_1) ht=tanh(Whht1+Weet+b1)
o t = s o f t m a x ( U h t + b 2 ) o_t = softmax(Uh_t+b_2) ot=softmax(Uht+b2)
其中, W h , W e , b 1 , U , b 2 W_h, W_e, b_1, U, b_2 Wh,We,b1,U,b2只有一套。

RNN可能会遭遇梯度消失或梯度爆炸问题:
∂ E ∂ W = ∑ 1... T ∂ E t ∂ W \frac{\partial E}{\partial W} = \sum_{1 ... T} \frac {\partial E_t}{\partial W} WE=1...TWEt
其中
∂ E t ∂ W = ∑ 1... t ∂ E t ∂ o t ∂ o t ∂ h t ∂ h t ∂ h k ∂ h k ∂ W \frac {\partial E_t}{\partial W} = \sum_{1 ... t } \frac {\partial E_t}{\partial o_t} \frac {\partial o_t}{\partial h_t}\frac {\partial h_t}{\partial h_k} \frac {\partial h_k}{\partial W} WEt=1...totEthtothkhtWhk
其中
∂ h t ∂ h k \frac {\partial h_t}{\partial h_k} hkht 可以很大或很小。注意到 ∂ h j ∂ h j − 1 \frac {\partial h_j}{\partial h_{j-1}} hj1hj是向量对向量求导,结果是一个Jacobian矩阵,矩阵元素是每个点的导数。
这里写图片描述

RNN很难训练,主要是因为存在梯度消失和梯度爆炸的问题。

对于梯度爆炸,使用Gradient clipping(梯度截断)。
这里写图片描述

对于梯度消失,可以选择好的初始化,使用Relu激活函数。但是主要的方法还是使用GRU和LSTM。

[1] https://blog.youkuaiyun.com/apsvvfb/article/details/52848554
[2] https://www.toutiao.com/i6491156699737489933/?group_id=6491156699737489933&group_flags=0
[3] https://blog.youkuaiyun.com/zhangxb35/article/details/70060295

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值