RNN与LSTM模型

RNN

简介

前馈神经网络的两个局限

  • 难以捕捉到数据之间长距离的依赖关系,即使CNN也只能捕捉到局部或短距离的关系
  • 当训练样本输入是连续序列且长短不一时,不好处理,如一段段连续的语音、连续的文本

为了解决上述局限,提出了循环神经网络RNN的结构如下,右侧是左侧的图按照时间序列展开的结果。

RNN可以做到学习数据间长距离的关系。比如在文本分类中,它模拟了人阅读一篇文章的顺序,从前到后阅读文章中的每一个单词,将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力,可以更好地理解之后的文本。

从图上可以看到,RNN本质上还是一个全连接网络,区别在于全连接网络对一整个样本往前传递,前向传递一次,而RNN对一个样本按照时间序列一部分一部分地往前传递,前向传递多次

基本架构

上图为RNN的经典结构,网络的传递过程如下:

  • 输入:在文本处理中,一个样本是一个句子 x x ,划分为单词 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) ,输入到隐层节点

  • 隐层:接收当前轮的单词 x i x_i 与上一轮的隐层输出 h i 1 h_{i-1} ,计算 h i h_i ,输出至下一轮的隐层和当前轮的输出节点
    (1) h i = W h i 1 + U x i h_i=Wh_{i-1}+Ux_i\tag{1}

  • 输出:接收当前轮隐层的输出 h i h_i ,计算输出 o i o_i
    (2) o i = V h i o_i=Vh_i\tag{2}

可以看到:

  • 每一轮的权值是共享的
  • 每一轮的隐层都包含了前面所有轮的信息,即记忆能力

RNN的一些变体

  1. 经典的RNN的结构可以理解为多个输入神经元,单个输出神经元,如输入是一串文字,输出是类别。
  1. 有时需要单个输入神经元,多个输出神经元的情况,则可以是如下结构。
  1. 有时需要多个输入神经元、多个输出神经元的情况,如机器翻译,则需要两个RNN结构,又称为Seq2Seq。

根据输入输出的不同,RNN可以有多种变体,本质上任何涉及循环的函数都可以被认为是一个循环神经网络

RNN的BP:BPTT

RNN使用基于时间的反向传播(Back-Propagation Through Time)进行训练,本质上还是BP算法。

仍以该结构为例,需要更新的参数有 V W U V、W、U​ ,损失函数为
(3) L = t = 1 T L ( t ) L = \sum_{t=1}^T L^{(t)}\tag{3}
对于 V V ,每次只用到当前轮的信息,即
(4) L V = t = 1 T L ( t ) V = t = 1 T L ( t ) o ( t ) o ( t ) V \frac{\partial L}{\partial V}=\sum_{t=1}^T \frac{\partial L^{(t)}}{\partial V}=\sum_{t=1}^T \frac{\partial L^{(t)}}{\partial o^{(t)}}\frac{\partial o^{(t)}}{\partial V}\tag{4}
对于 W W​ ,需要用到历史信息,以 L ( t ) L^{(t)}​ W W​ 求导为例,有
(5) L ( t ) W = L ( t ) o ( t ) o ( t ) h ( t ) h ( t ) W    h ( t ) W = h ( t 1 ) + W h ( t 1 ) W , \frac{\partial L^{(t)}}{\partial W}=\frac{\partial L^{(t)}}{\partial o^{(t)}}\frac{\partial o^{(t)}}{\partial h^{(t)}}\frac{\partial h^{(t)}}{\partial W}\tag{5}\\ \\\ \ \\ \\ 其中,\frac{\partial h^{(t)}}{\partial W}=h^{(t-1)}+W\frac{\partial h^{(t-1)}}{\partial W},此处省略了激活函数的求导\\
比如当 t = 3 t=3​ 时,有

(注意这里不考虑激活函数时, h ( 3 ) W = h ( 2 ) \frac{\partial h^{(3)}}{\partial W}=h^{(2)} ,与上述符号表示有区别)

可写成连乘的形式如下,
(6) L ( t ) W = k = 1 t L ( t ) o ( t ) o ( t ) h ( t ) ( j = k + 1 t h ( j ) h ( j 1 ) ) h ( k ) W \frac{\partial L^{(t)}}{\partial W}=\sum_{k=1}^t\frac{\partial L^{(t)}}{\partial o^{(t)}}\frac{\partial o^{(t)}}{\partial h^{(t)}}(\prod_{j=k+1}^t\frac{\partial h^{(j)}}{\partial h^{(j-1)}})\frac{\partial h^{(k)}}{\partial W}\tag{6}
所以对于 W W 的求导同样对各个 L ( t ) L^{(t)} 求导的结果求和即可,即
(7) L W = t = 1 T L ( t ) W \frac{L}{W}=\sum_{t=1}^T\frac{\partial L^{(t)}}{\partial W}\tag{7}
对于 U U 的求导与 W W​ 类似。

梯度消失

对于求导公式中间部分的累乘,当激活函数是 t a n h tanh s i g m o i d sigmoid 时,由于两者的导数绝对值小于1,累乘后容易导致梯度消失,从而无法学习长距离的依赖关系(距离长的梯度消失了)。针对这个问题,有2种思路——

  1. 选择更合适的激活函数。如ReLU,有较大的激活区域,且导数为1,避免梯度消失的发生
  2. 改变网络结构。使用LSTM可以解决

LSTM

LSTM,long short-term memory,长短期记忆,是RNN的一种改进。RNN由于梯度消失,只能维持短期记忆,LSTM通过引入记忆单元和门控制单元(将短期记忆与长期记忆结合),在一定程度上解决了梯度消失的问题。

具体地,RNN是一个循环的网络结构,在原来的RNN中,循环的结构如下:

LSTM在这个结构的基础上引入了记忆单元和门控制单元,如下:

在结构中的横线传播的称为记忆单元 C t C_t​ 。LSTM的上述结构中包含了遗忘门、输入门、输出门。

  • 遗忘门控制前一步记忆单元中的信息有多大程度被遗忘掉
    (8) C t 1 = C t 1 σ ( f 1 ( h t 1 , x t ) ) C_{t-1}=C_{t-1}*\sigma(f_1(h_{t-1},x_t))\tag{8}

  • 输入门控制当前计算的新状态以多大程度更新到记忆单元
    (9) C t = C t 1 + σ ( f 2 ( h t 1 , x t ) ) t a n h ( f 3 ( h t 1 , x t ) ) C_t=C_{t-1}+\sigma(f_2(h_{t-1},x_t))*tanh(f_3(h_{t-1},x_t))\tag{9}

  • 输出门控制当前的输出有多大程度上取决于当前的记忆单元
    (10) h t = t a n h ( C t ) σ ( f 4 ( h t 1 , x t ) ) h_t=tanh(C_t)*\sigma(f_4(h_{t-1},x_t))\tag{10}

对于激活函数的选择——

sigmoid的输出是0-1,符合遗忘和记忆的物理意义,当输入较大或较小时,其输出会非常接近1或0,从而保证该门开或关。在生成候选记忆时,使用Tanh函数,是因为其输出在-1~1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh函数在输入为0附近相比Sigmoid函数有更大的梯度,通常使模型收敛更快。

GRU

GRU是LSTM的一个变体,将遗忘门和输入门合并为单一的更新门,同时混合了记忆单元和隐藏状态,结构如下:

  • 重置门,reset gate,控制候选(candidate)状态多大程度取决于旧状态
    (11) r t = σ ( f 1 ( h t 1 , x t ) ) r_t=\sigma(f_1(h_{t-1},x_t)\tag{11})

    (12) h t c = t a n h ( f 2 ( r t h t 1 , x t ) ) h_t^c=tanh(f_2(r_t*h_{t-1},x_t))\tag{12}

  • 更新门,update gate,控制新状态由旧状态候选状态相加的权重
    (13) z t = σ ( f 3 ( h t 1 , x t ) ) z_t=\sigma(f_3(h_{t-1},x_t))\tag{13}

    (14) h t = ( 1 z t ) h t 1 + z t h t c h_t=(1-z_t)h_{t-1}+z_th^c_t\tag{14}

Reference

[1] https://blog.csdn.net/zhaojc1995/article/details/80572098

[2] 《百面机器学习》

猜你喜欢

转载自blog.csdn.net/qq_36153312/article/details/88698410