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.