学习分享:RNN(持续更新)

1 RNN基础

1.1 what RNN?

用于处理序列数据(可变长)的NN

1.2 why RNN?

在模型不同部分,共享参数
在几个时间步内,不需要分别学习权重
也能能泛化到不同长度的样本

为什么每个时间步用相同参数?
(1)减少参数数量
(2)实现可变长度
如果每步一个权重,不同长度的输入,权重的个数不一样,无法实现。
(3)泛化到新序列
如果每步一个权重,不能泛化到训练时没有见过的序列长度。

1.3 how RNN?

1.3.1 隐含到隐含

学习分享:RNN(持续更新)
横向:时间轴
纵向:深度方向

1.3.2 输出到隐含

学习分享:RNN(持续更新)

1.3.3 标签到隐含(导师驱动)

学习分享:RNN(持续更新)

1.4 RNN的问题

(1)灾难性遗忘
记忆的时间长度有限

(2)梯度消失/爆炸
Jacobian矩阵
最大特征值<1:梯度呈指数级减小
最大特征值>1:梯度呈指数级增大

2 Bi-RNN

学习分享:RNN(持续更新)

3 gated RNN

门控RNN

缓解RNN的两个问题,实现:
(1)长期记忆
(2)减缓梯度消失/爆炸

3.1 LSTM

学习分享:RNN(持续更新)

3个门——遗忘门,输入门,输出门:
学习分享:RNN(持续更新)
候选单元:
学习分享:RNN(持续更新)

单元状态:
学习分享:RNN(持续更新)

隐藏状态:
学习分享:RNN(持续更新)

LSTM为什么用sigmoid和tanh两种**?
这两类函数都是饱和的
sigmoid输出在0~1,可以实现门的开关
tanh输出在-1~1,数据中心化,且0附近的梯度比sigmoid大,收敛快

在LSTM中用tanh的直觉

在LSTM中加dropout:
学习分享:RNN(持续更新)

3.2 窥孔LSTM

窥孔peehole:每个门接收单元状态的输入
学习分享:RNN(持续更新)

3.3 耦合LSTM

耦合couple遗忘门、输入门
学习分享:RNN(持续更新)

3.4 GRU

学习分享:RNN(持续更新)

参考

花书deep learning

https://ask.****.net/questions/699420

https://www.jianshu.com/p/9dc9f41f0b29