RNN/LSTM/GRU 学习笔记

RNN/LSTM/GRU

一、RNN

1、为何引入RNN?

循环神经网络(Recurrent Neural Network,RNN) 是用来建模序列化数据的一种主流深度学习模型。我们知道,传统的前馈神经网络一般的输入都是一个定长的向量,无法处理变长的序列信息,即使通过一些方法把序列处理成定长的向量,模型也很难捕捉序列中的长距离依赖关系。RNN则通过将神经元串行起来处理序列化的数据。由于每个神经元能用它的内部变量保存之前输入的序列信息,因此整个序列被浓缩成抽象的表示,并可以据此进行分类或生成新的序列1


2、RNN的基本结构

RNN的朴素形式可分别由如下两幅图表示2

在这里插入图片描述

其中 x 1 , x 2 , ⋯   , x T x_1,x_2,\cdots,x_T x1,x2,,xT 是输入,每一个位置是一个实数向量; U U U V V V W W W 是权重矩阵,通常在模型初始化时随机生成,通过梯度下降进行优化; h t h_t ht 是位于隐藏层上的活性值,很多文献上也称为状态(State)或隐状态(Hidden State); p t p_t pt 表示第 t t t 个位置上的输出。

h t h_t ht p t p_t pt 可由下列公式得出( b b b 是偏置项):
h t = tanh ⁡ ( U ⋅ h t − 1 + W ⋅ x t + b ) h_t=\tanh\left(U\cdot h_{t-1}+W\cdot x_t+b\right) ht=tanh(Uht1+Wxt+b)

p t = s o f t m a x ( V ⋅ h t + c ) p_t=\mathrm{softmax}(V\cdot h_t+c) pt=softmax(Vht+c)

3、各种形式的RNN及其应用

(图片来自于cs231n)

在这里插入图片描述

模式 描述 应用领域
One to One 单个输入对应单个输出 图像分类、回归任务
One to Many 单个输入生成序列输出 图像字幕生成、音乐生成
Many to One 序列输入生成单个输出 情感分析、时间序列分类
Many to Many 序列输入对应序列输出 机器翻译、语音识别
Many to Many(同步) 同步序列输入输出 视频帧分类、实时语音处理

4、RNN的缺陷

RNN通过在所有时间步共享相同的权重,使得可以在不同时间步之间传递和积累信息,从而更好地捕捉序列数据中的长期依赖关系,但是缺点也很明显:在RNN的学习过程中,由于共享权重 W W W,导致随着时间步的增加,权重矩阵 W W W 不断连乘,最终产生梯度消失(即 ∂ L t ∂ h k \frac{\partial \mathcal{L}_{t}}{\partial \boldsymbol{h}_{k}} hkLt 消失, 1 ≤ k ≤ t 1 \le k\le t 1kt )和梯度爆炸,具体解释如下:

首先由RNN前向传播公式:
h t = f ( W ⋅ h t − 1 + U ⋅ x t + b ) h_t=f(W\cdot h_{t-1}+U\cdot x_t+b) ht=f(Wht1+Uxt+b)
其中 f f f 为激活函数。

在反向传播时(BPTT),损失函数 L \mathcal{L} L 对某一时间步长的梯度涉及到时间上所有的前置状态,因此梯度会被多个矩阵连乘表示为:
∂ L ∂ h t = ∂ L ∂ h T ⋅ ∏ k = t T − 1 A k \frac{\partial\mathcal{L}}{\partial h_t}=\frac{\partial\mathcal{L}}{\partial h_T}\cdot\prod_{k=t}^{T-1}A_k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值