<>LSTM 长短期记忆循环神经网络

<>1.LSTM 定义

LSTM 全称是Long Short Term Memory (长短期记忆),是RNN的一种。

基本一般情况下使用RNN都是使用LSTM,最基础的RNN存在一些问题,LSTM的效果更好。

最基础版本的RNN每一时刻的隐藏层不仅由该时刻的输入决定,还有上一时刻的隐藏层的值。如果一个句子很长的时候,到句子末尾的时候,将会记不住句子开头的内容,发生梯度消失和爆炸的问题。而LSTM通过它的“门控装置”有效的缓解了这个问题。

LSTM和普通的RNN不一样,可以将这两者看成一个是贵族,一个是乞丐。RNN什么信息他都要存下来,没有选择的能力。而LSTM会有选择性的存储信息,因为他能力强,有门控装置,可以尽情的选择。

<>2.长短时记忆网络的思路

原始 RNN 的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。
再增加一个状态,即c,让它来保存长期的状态,称为单元状态(cell state)。

把上图按照时间维度展开:

在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 x_t、上一时刻 LSTM 的输出值 h_t-1、以及上一时刻的单元状态 c_t-1;
LSTM 的输出有两个:当前时刻 LSTM 输出值 h_t、和当前时刻的单元状态 c_t.

<>3.如何控制长期状态c

方法是:使用三个控制开关

第一个开关,负责控制继续保存长期状态c;

第二个开关,负责控制把即时状态输入到长期状态c;

第三个开关,负责控制是否把长期状态c作为当前的LSTM的输出。

<>4.如何实现这三个开关

方法:用 门(gate)

定义:gate 实际上就是一层全连接层,输入是一个向量,输出是一个 0到1 之间的实数向量。

公式为:

回忆一下它的样子:

具体实现:用门的输出向量按元素乘以我们需要控制的那个向量

原理:门的输出是 0 到 1 之间的实数向量,

当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;

当门输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。

<>5.LSTM的工作

<>5.1 遗忘门(forget gate)

它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t

<>5.2 输入门(input gate)

它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t

<>5.3 输出门(output gate)

控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t

<>5.4 遗忘门的计算

遗忘门的计算公式中:
W_f 是遗忘门的权重矩阵,[h_t-1, x_t] 表示把两个向量连接成一个更长的向量,b_f 是遗忘门的偏置项,σ 是 sigmoid 函数。

<>5.5 输入门的计算

input
根据上一次的输出和本次输入来计算当前输入的单元状态:

当前输入的单元状态c_t
当前时刻的单元状态 c_t 的计算:

由上一次的单元状态 c_t-1 按元素乘以遗忘门 f_t,再用当前输入的单元状态 c_t 按元素乘以输入门 i_t,再将两个积加和。

这样,就可以把当前的记忆 c_t 和长期的记忆 c_t-1 组合在一起,形成了新的单元状态 c_t。

由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。

当前时刻的单元状态c_t
<>5.6 输出门的计算

output
<>6. 总结

LSTM里常用的激活函数有两个,一个是tanh,一个是sigmoid。

其中 i是input gate的缩写,f是forget的缩写,o是output的缩写。

其中Z是最为普通的输入,可以从上图中看到,Z 是通过该时刻的输入 X_t和上一时刻存在memory cell里的隐藏层信息 h_t-1
向量拼接,再与权重参数向量W点积,得到的值经过激活函数tanh最终会得到一个数值,也就是 Z,注意只有 Z的激活函数是tanh,因为 Z
是真正作为输入的,其他三个都是门控装置。

再来看 Z_i ,也就是输入门的门控装置, Z_i同样也是通过该时刻的输入X_t和上一时刻隐藏状态,也就是上一时刻存下来的信息 h_t-1
向量拼接,在与权重参数向量W_i
点积(注意每个门的权重向量都不一样,这里的下标i代表input的意思,也就是输入门)。得到的值经过激活函数sigmoid的最终会得到一个0-1之间的一个数值,用来作为输入门的控制信号。

经过这个sigmod激活函数后,得到的Z_i,Z_f,Z_o ,都是在0到1之间的数值,1表示该门完全打开,0表示该门完全关闭。

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信