Q
网上有很多对于LSTM以及GRU的介绍,主要从构造方面进行了进行了介绍。但是由于构造相对较复杂,而且涉及到的变量较多,往往不那么容易记住。下面我们从直觉的角度来对这两者进行介绍,方便理解和记忆。其中的更深刻的理论原理,可以参看相关的文章和论文。
LSTM
对于LSTM的经常被提到的一篇文章就是 理解LSTM 。我们也基于此进行介绍。
首先, LSTM最常见到的结构如下图:
每个矩形称之为一个Unit。每个Unit有两个输入和两个输出:C 和 h。其中, C是Unit或者Cell的信息。这个信息不仅仅包含本unit的信息,还包含了之前所有Unit的信息。这种包含不是全部的包含,而是有所取舍的。这种取舍体现在了该Unit以及其余Unit的构造当中。而h里面包含的,主要是重点用于当前unit的信息,当前这部分的信息会进行输出。也就是说,会影响输出的,主要就是这部分的信息。
C之间信息传递如图。在最上面的一层中,
到
主要有两步:丢弃一部分信息(对应乘号),加上一部分信息(对应加号)。这样就完成了上面一个Unit信息到本Unit信息的传递了。
那么要丢弃多少,就要由forget门来决定了:
这也是forget门的来历。通过学习,让forget门来学习究竟应该忘掉多少。
那么添加的信息来自哪一部分呢?来自
和
。
它分为了两部分:
一部分是生成新信息,也就是
。
但是这部分新生成的信息要把多少给
, 这个要由
输入门这部分来决定。
这样经过
之后,跟之前保留的信息相加,
的信息就完成了。
但是
还没有完成:还需要搞清楚, 在所有的信息
里面,哪些是我本Unit需要关注,并用于输出的。
这一部分就是:
这个也是分为了两部分:
一部分是根据
生成了信息,但是至于要多少, 让输出门
来决定吧。
GRU
在GRU里面,不再有C和h两部分,而是只用了h。
h同样有一个忘记一部分旧信息、添加一部分新信息的过程,如上面红线圈出的部分。这个忘记、添加跟LSTM有点不同:在LSTM中,忘记和添加的比例是学习来的,两者没什么相关;而在GRU中,这个比例是固定的:忘记了多少比例,那么新的信息就添加多少比例。这个由 (1-)来进行控制。
而新的信息的生成,是由下图中红色部分来标识的。
可以看出
作为update们,控制了忘记和输入。
而新的信息时怎么生成的呢?
由上图中可以看到,这部分是由
和
共同生成的。但是
并不是用了全部,而是用了一部分。至于这个“一部分”究竟是多少,这个由 reset门
来控制。
隐藏信息和输入信息决定了所有的“门”,通常一个sigmoid称之为一个门,它来控制信息的传递。