能够让你可以在序列中学习非常深的连接 ,LSTM 即长短时记忆网络,甚至比 GRU更加有效
GRU and LSTM
记忆细胞 c ,使用̃<> = ℎ([<−1>, <>] +
来更新它的候选值̃<>
注意了,在LSTM 中我们不再有<> = <>的情况,这是现在我们用的是类似于左边这个式子,但是有一些改变,现在我们专门使用<>或者<−1>,而不是用<−1>,我们也不用,即相关门。像以前那样有一个更新门和表示更新的参数,= ([<−1>, <>] + )
,用遗忘门(the forget gate),我们叫它,所以这个
= ([<−1>, <>] + )
,新的输出门,= ([<−1>, <>]+> )
;于是记忆细胞的更新值<> = ∗ ̃<> + ∗ <−1>
,这给了记忆细胞选择权去维持旧的值<−1>或者就加上新的值̃<>,所以这里用了单独的更新门和遗忘门,最后<> = <>的式子会变成<> = ∗ <>
.
LSTM
在这张图里是用<−1>, <>一起来计算遗忘门的值,还有更新门以及输出门。然后它们也经过 tanh 函数来计算̃<>,这些值被用复杂的方式组合在一起,比如说元素对应的乘积或者其他的方式来从之前的<−1>中获得<>.
你在这一堆图中看到的,把他们连起来,就是把它们按时间次序连起来,输入<1>,然后<2>,<3>,然后你可以把这些单元依次连起来,这里输出了上一个时间的,会作为下一个时间步的输入,同理。你会注意到上面这里有条线,这条线显示了只要你正确地设置了遗忘门和更新门,LSTM 是相当容易把<0>的值一直往下传递到右边,比如<3> = <0>。这就是为什么 LSTM 和 GRU 非常擅长于长时间记忆某个值,对于存在记忆细胞中的某个值,即使经过很长很长的时间步。
Q:GRU和LSTM选择哪个更好呢?
A:GRU 的优点是这是个更加简单的模型,所以更容易创建一个更大的网络,而且它只有两个门,在计算性上也运行得更快,然后它可以扩大模型的规模。
但是 LSTM 更加强大和灵活,因为它有三个门而不是两个。如果你想选一个使用,我认为 LSTM 在历史进程上是个更优先的选择,所以如果你必须选一个,我感觉今天大部分的人还是会把 LSTM 作为默认的选择来尝试。虽然我认为最近几年 GRU 获得了很多支持,而且我感觉越来越多的团队也正在使用 GRU,因为它更加简单,而且还效果还不错,它更容易适应规模更加大的问题。