2019-09-07 22:01:45
问题描述:LSTM是如何实现长短期记忆功能的?
问题求解:
与传统的循环神经网络相比,LSTM仍然是基于当前输入和之前的隐状态来计算当前的隐状态,只不过对内部的结构进行了精心的设计,加入了更新门,遗忘门和输出门这三个门和一个内部记忆单元。
在一个训练好的网络中,当输入的序列中没有重要的信息时,LSTM的遗忘门的数值接近于1,更新门的数据接近于0,此时过去的记忆会被保存,从而实现了长期的记忆功能;当输入的序列中出现了重要的信息时,LSTM应该把其存入记忆时,此时更新门的数值将接近于1;当输入的信息中出现了重要的信息,并且该信息意味着之前的记忆不再重要的时候,输入门的数值接近于1,遗忘门的数值接近于0,这样旧的记忆被遗忘,新的重要的信息被记忆。经过这样的设计,整个网络更容易学习到序列之间的长期依赖。
关于激活函数的选择,在LSTM中,更新门,遗忘门,输出门的激活函数选择的是Sigmoid函数;在生成候选记忆的时候,使用的双曲正切函数Tanh作为激活函数。
Sigmoid的输出介于0 - 1之间,符合门控的物理含义,且当输入较大/较小的时候,输出会非常接近1 / 0,从而保证了门控的开和关。
在生成候选记忆的时候,使用Tanh函数,是因为其输出在-1 - 1之间,这与大多数场景下特征分布是0中心的吻合。此外,Tanh函数在输入为0附近相比Sigmoid函数有更大的梯度,通常会帮助模型收敛的更快。