一:LSTM结构
复杂版:
简单版:
(一)结构剖析
lstm结构:三个门的特殊结构。lstm靠一些门的结构,让信息有选择性的影响循环神经网络中每个 时刻的状态。所谓的门的结构,就是一个使用sigmoid神经网络和一个按位做乘法的操作。这两个操作结合在一起,就是一个门的结构。之所以称为门的结构,是因为sigmoid 作为激活函数的全连接神经网络,输出结果为0到1之间的数值,他就能描述当前有多少信息可以通过这个结构。因此类似一道门。
从上图我们可以看出lstm除了隐藏状态h(t)以外,还多了一个隐藏状态C(t),如图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State)。
遗忘门
遗忘门和输入门是lstm结构的核心。遗忘门的作用就是让循环神经网络忘记之前没用的信息。根据上一时刻的输出
h(t-1)和当下时序号的输入xt来计算出一个假设状态为C的n维向量f = sigmoid(w1xt+w2h(t-1)),f在每个
维度上的输出都处于(0,1)之间,再将上一时刻的状态C(t-1)与f按位相乘,那么得到的f的取值信息若趋近
于0则会被忘记,趋近于1的信息则会被保留。
结构图:
候选值
概念:
候选值是包含当前时间步长信息的张量, 它可能会存储在当前单元状态中.
传递候选值的哪些部分取决于更新门.
候选值是一个张量, 它的范围从 - 1 到 1.
代字号 “” 用于将候选值与单元状态区分开.
公式:
公式的解释:
'tanh’函数产生的值介于-1和+1之间。
在代码中的变量名:
cct: 候选值
更新门
概念:
我们使用更新门来确定候选的哪些部分要添加到单元状态中。
更新门是包含0到1之间值的张量。
当更新门中的单位接近于0时,它将阻止候选值中的相应值传递到。
当更新门中的单位接近1时,它允许将候选的值传递到。
注意,我们使用下标“i”而不是“u”来遵循文献中使用的约定。
公式:
公式的解释:
类似于遗忘门(此处为),用sigmoid函数乘后值就落在了0到1之间。
将更新门与候选元素逐元素相乘,并将此乘积()用于确定单元状态。
在代码中的变量名:
在代码中,我们将使用学术文献中的变量名。这些变量不使用“ u”表示“更新”。
wi是更新门的权重
bi是更新门的偏差
it是更新门
单元状态
概念:
单元状态是传递到未来时间步长的“记忆/内存(memory)”。
新单元状态是先前单元状态和候选值的组合。
公式:
公式的解释:
之前的单元状态通过遗忘门调整(加权)。
候选值通过更新门调整(加权)。
在代码中的变量名:
c: 单元状态,包含所有的时间步长,c的shape是(na, m, T)
c_next: 下一个时间步长的单元状态,的shape (na, m)
c_prev: 之前的单元状态,的shape (na, m)
输出门
概念:
输出门决定时间步长要输出的预测值。
输出门与其他门一样,它包含从0到1的值。
公式的解释:
输出门由之前的隐藏状态和当前的输入 决定。
sigmoid函数让值的范围在0到1之间。
在代码中的变量名:
wo: 输出门的权重
bo: 输出门的偏差
ot: 输出门
隐藏状态
概念:
隐藏状态:将传递到LSTM单元的下一个时间步长。
它用于确定下一个时间步长的三个门()。
隐藏状态也用于预测。
公式:
公式的解释:
隐藏状态由单元状态结合输出门确定。
单元状态通过“ tanh”函数把值缩放到-1和+1之间。
输出门的作用就像一个“掩码mask”,它既可以保留的值,也可以使这些值不包含在隐藏状态中。
在代码中的变量名:
a: 隐藏状态,包含时间步长,shape (na, m, Tx)
a_prev: 前一步的隐藏状态,的shape (na, m)
a_next: 下一步的隐藏状态,的shape (na, m)
预测值
概念:
此用例的预测是分类,所以我们用softmax。
公式:
在代码中的变量名:
y_pred: 预测,包含所有的时间步长,的shape (ny, m, Tx),注意,本例中Tx=Ty。
yt_pred: 当前时间步长t的预测值,shape是(ny, m)
二:LSTM前向传播算法
三: LSTM反向传播
LSTM 的局限性
LSTM 有效的截断版本无法轻松解决类似于「强延迟的异或(strongly delayed XOR)」这样的问题。
每个记忆单元模块都需要一个输入门和一个输出门。并不一定需要其它循环方法。
在记忆单元内穿过「常量误差传送带(Constant Error Carrousels)」的常量误差流可以得到与传统的前馈架构(会一次性获得整个输入串)一样的效果。
和其它前馈方法一样,LSTM 也有「regency」概念上的缺陷。如果需要精密的计数时间步骤,那么可能就需要额外的计数机制。
LSTM 的优点
该算法桥接长时间滞后的能力来自其架构的记忆单元中的常量误差反向传播。
LSTM 可以近似有噪声的问题域、分布式表征和连续值。
LSTM 可以很好地泛化其所考虑的问题域。这是很重要的,因为有的任务无法用已有的循环网络解决。
在问题域上对网络参数进行微调看起来是不必要的。
在每个权重和时间步的更新复杂度方面,LSTM 基本上就等于 BPTT。
LSTM 很强大,在机器翻译等领域实现了当前最佳的结果。