Understanding LSTM Networks
链接: https://colah.github.io/posts/2015-08-Understanding-LSTMs/
- LSTM比其他Neural Networks有更好的上下文能力.
- RNN的上下文能力, 来自于loop.
- 需要处理上下文中word之间的gap. 比如猜测” I grew up in France… I speak fluent French. “最后一个字French, 需要直到France, 但是France和French之间有gap. 这种gap如果一直存在, 影响随着loop会越来越明显. 虽然理论上不会有这种问题, 但是实际上是经常存在的.
- LSTM就是用来解决上面这个问题的.
- LSTM最大的优势是, 他不只是一个单层的网络结构, 而是四层.
- LSTM使用了gate的概念, gate决定是否让一个information传递到下一个神经元.
- LSTM通常有3个gates.
- 使用forget gate layer (sigmoid) 来遗忘不重要的数据, 0表示完全遗忘, 1表示完全传递.
- 使用input gate layer(sigmoid+tanh)来决定记住那些数据, sigmoid用来判断那个需要update, tanh来决定update多少.
- 最后通过一层的filter layer(tanh)来决定h
- 一个变种是添加了一个peephole(探孔)来让gate有”全局观”, 数学上就是把上次的参数加入这次的gate的计算中.
- 另一个变种是让forget gate和input gate之间产生联系.
- 还有一种变种结合了forget和input, 变成了update gate, 这种方法叫GRU.