LSTM结构中的C(cell),和GRU结构中的H(隐藏单元),有什么联系和区别?
LSTM中的C和GRU中的H都是经过了遗忘和输入门(GRU中的更新们也是由遗忘和输入门组成的),也都是未经过输出门而直接往后传递的。他们有什么区别呢?
我自己的猜想:GRU的重置门就相当于LSTM中的更新门。
LSTM中的C经过输出门之后形成了H,因为有输出门所以H更关注当前状态的信息,而C携带者之前的所有状态的信息。GRU中的H就相当于LSTM中的C同样也携带者之前状态的信息,GRU中的重置门就相当于LSTM中的输出门,重置之后的H就相当于LSTM中更关注当前状态的H。
如图所示,左边为第一种形式也是网上常见的GRU画法。但是为了方便和LSTM对比,我画成了右边的形式,请先行对比。
然后我们再来将LSTM与上面右边的GRU结构放到一起进行对比。
- 先对比两者的输出:
在LSTM中,单元状态经非线性变换tanh作用后,再经过输出门作用后得到整个单元的输出;而在GRU中,融入新信息后的单元状态就直接作为了 整个单元的输出。因此在LSTM中,单元输出可以看成是对单元状态的再次筛选,而在GRU中去掉了这一步。
- 再对比两者的遗忘门与输入门:
在LSTM中,遗忘门是通过单元输出,与新输入 训练得到的;而在GRU中,遗忘门也是通过单元输出 与新输入训练得到的。不同点在于,LSTM通过 和 分别训练了一个遗忘门和输入门;而在GRU中这两者是互补的,也就是遗忘门和输入门在对信息进行筛选时有一种互补的效果。脑子想象出一个位置矩阵,在GRU中如果历史信息中某些位置的信息应该被减弱,那么在历史信息结合新输入的信息时,这些位置的信息就应该得到加强(并且从动机上来说也很有道理,同时还简化了模型)。
- 最后对比两者对新输入的处理:
在LSTM中,新的输入由当前时刻的输入 和历史单元输出 组成;而在GRU中,新的输入由当前时刻的输入 和经筛选后的历史单元输出 组成。在GRU中, 经过再次筛选后才同 结合,而在LSTM中没有(但可以看成是LSTM在输出的时候就已经进行筛选了,即LSTM中的输出门可以等价的看成是GRU中的重置门)。两者在这方面差别不算太大。
总结就是,LSTM中的和GRU中的 在整体形式上没有区别,都是先对历史信息就行筛选,然后再融入新的信息。但是,在细节GRU通过同一个共用的门,以互补的形式来减弱和加强信息,这应该算得上是GRU中最核心的部分。至于最后在对新输入的处理,基本没有太大的差别。