LSTM
RNN 基本的算法思想是随时间反向传播算法,但在随时间反向传播过程中,跨时间步和长时间学习使后续节点的梯度往往不能按照初值传到最初的位置,容易出现梯度弥散问题。
为了克服梯度弥散的缺点,RNN的众多变体被提出,其中 LSTM 就是 RNN 变体中一种广泛应用的经典变体。LSTM 单个神经 元的具体结构如图 2 所示。
LSTM 的具体工作原理可以通过以下几个公式进行理解:
从图 2 和公式可以看出,LSTM 由输入门、记忆单元、输出门和遗忘门四部分组成。其中, t x 表示 t 时刻的输入向量, ht-1 表示上一个时刻的输出向量, {W f ,W i W c ,W o , } 表示各个相应部分 的权重系数矩阵, { bf,bi,bc ,bo } 表示各个相应部分的偏移向量, sigmoid 表示激活函数,
式(1)计算的是遗忘门的值,看有多少 信息可以进行保留,由式(1)的形式可以看出 t 时刻遗忘门的值 由 t x 和 ht-1 共同决定;
式(2)计算的是用 sigmoid 函数去激活的
细胞状态的值,
式(3)计算的是由 ht-1 和 t x 决定的候选记忆单元的值;
式(4)计算的是记忆状态单元通过 Ct-1 和 Ct 对 tf 和 ti 的调节作用后的值;
式(5)(6)计算的是 t 时刻由 ht-1 和 t x 决 定的经过内部循环和更新的 LSTM 最后的隐层状态的输出 th
----I grow up in france ................I speak fluent france
But,RNN 如果序列过长会导致优化时出现梯度消散的问题
LSTM:Long Short Term Memory 网络—— 一般就叫做 LSTM ——是一种特殊的 RNN 类型,可以学习长期依赖信息
LSTM 通过刻意的设计来避免长期依赖问题。所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。
LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。LSTM是一种拥有三个“门”结构的特殊网络结构。
之所以该结构叫做门是因为使用sigmod作为激活函数的全连接神经网络层会输出一个0到1 之间的值,描述当前输入有多少信息量可以通过这个结构,于是这个结构的功能就类似于一扇门,当门打开时(sigmod输出为1时),全部信息都可以通过;当门关上时(sigmod输出为0),任何信息都无法通过。
细胞层:---信息交互存放cell
遗忘门:--‘喜新厌旧’【主语更替,产出一个概率值】
输入门:--
输出门:--
1)更新遗忘门输出:
f(t)=σ(Wfh(t−1)+Ufx(t)+bf)f(t)=σ(Wfh(t−1)+Ufx(t)+bf)
2)更新输入门两部分输出:
i(t)=σ(Wih(t−1)+Uix(t)+bi)i(t)=σ(Wih(t−1)+Uix(t)+bi)
a(t)=tanh(Wah(t−1)+Uax(t)+ba)a(t)=tanh(Wah(t−1)+Uax(t)+ba)
3)更新细胞状态:
C(t)=C(t−1)⊙f(t)+i(t)⊙a(t)C(t)=C(t−1)⊙f(t)+i(t)⊙a(t)
4)更新输出门输出:
o(t)=σ(Woh(t−1)+Uox(t)+bo)o(t)=σ(Woh(t−1)+Uox(t)+bo)
h(t)=o(t)⊙tanh(C(t))h(t)=o(t)⊙tanh(C(t))
5)更新当前序列索引预测输出:
y^(t)=σ(Vh(t)+c)