长短期记忆网络 LSTM(输入门、遗忘门、输出门)
长短期记忆网络(Long Short-Term Memory,LSTM)是一种循环神经网络(RNN)的变体,用于处理序列数据。LSTM通过引入输入门、遗忘门和输出门的机制,解决了传统RNN中的梯度消失和梯度爆炸问题,同时能够更好地捕捉长期依赖关系。
使用tanh函数的RNN:
拥有更加复杂的内部结构和输入输出的LSTM:
LSTM的核心思想是通过控制信息的流动和遗忘,从而有效地管理和利用过去的信息。LSTM中包含三个关键的门控单元,分别是输入门、遗忘门和输出门。这些门是一种特殊的神经网络层,用于控制信息的流入、流出和存储。
- 输入门(Input Gate):控制新信息进入记忆单元的流量。输入门决定了当前时刻输入的信息中哪些部分应该被保留。它通过使用sigmoid激活函数来生成一个0到1之间的输出向量,表示每个输入的重要程度。然后,该输出向量与输入信息进行逐元素相乘,以选择性地保留相关信息。
- 遗忘门(Forget Gate):控制旧信息从记忆单元中丢弃的流量。遗忘门决定了上一时刻的记忆状态中哪些部分应该被遗忘。类似于输入门,遗忘门也使用sigmoid激活函数来生成一个0到1之间的输出向量,表示每个记忆状态的保留程度。这个输出向量与上一时刻的记忆状态进行逐元素相乘,以决定遗忘哪些信息。
- 输出门(Output Gate):控制从记忆单元中提取的信息流量。输出门决定了当前时刻的输出信息。它结合当前输入和记忆状态,并使用sigmoid激活函数生成一个0到1之间的输出向量,表示每个记忆状态的输出程度。然后,将输出向量与经过tanh激活函数处理的记忆状态相乘,以产生LSTM单元的最终输出。
这些门控单元的设计使得LSTM能够在时间上长距离地传播和保持信息,并具有更好的记忆能力。通过自适应地控制输入、遗忘和输出的权重,LSTM可以更好地处理输入序列中的长期依赖关系,并在各种任务中取得较好的性能,如语音识别、机器翻译和文本生成等。
LSTM如何克服梯度消失
LSTM通过引入遗忘门、输入门和输出门的机制,有效地克服了传统循环神经网络(RNN)中的梯度消失问题。下面是一些LSTM如何克服梯度消失的关键点:
-
遗忘门(Forget Gate):LSTM中的遗忘门允许网络选择性地遗忘过去的信息。它通过使用sigmoid激活函数来生成一个介于0到1之间的门控向量,决定哪些过去的记忆状态应该被遗忘。这个机制使得LSTM能够在训练过程中选择性地保留或丢弃对当前任务不重要的信息,从而减少梯度消失的可能性。
-
输入门(Input Gate):LSTM中的输入门允许网络选择性地更新和存储新的信息。类似于遗忘门,输入门使用sigmoid激活函数来生成一个介于0到1之间的门控向量,决定当前输入的哪些部分应该被添加到记忆状态中。这个机制使得LSTM能够根据当前任务的需求,有选择地接受新的信息,从而减少了梯度消失的风险。
-
输出门(Output Gate):LSTM中的输出门决定了当前时刻的输出信息。输出门使用sigmoid激活函数生成一个介于0到1之间的门控向量,表示每个记忆状态的输出程度。通过与经过tanh激活函数处理的记忆状态相乘,LSTM可以生成最终的输出。这个机制使得LSTM能够控制输出的范围,减少梯度消失的可能性。
通过遗忘门、输入门和输出门的组合,LSTM能够在训练过程中自适应地更新记忆状态,选择性地保留或遗忘过去的信息,并生成适当的输出。这种门控机制能够减少梯度消失的影响,使得LSTM能够更好地处理序列数据中的长期依赖关系。
门控循环单元神经网络 GRU(更新门、重置门)
门控循环单元(Gated Recurrent Unit,GRU)是一种改进的循环神经网络(RNN)架构,与长短期记忆网络(LSTM)相似,但参数更少。GRU通过引入更新门和重置门的机制,实现了更好的梯度流动和长期依赖关系的建模。
GRU的核心是以下两个关键门控单元:
-
更新门(Update Gate):更新门控制了上一时刻的记忆状态如何被更新和传递给当前时刻。它使用sigmoid激活函数生成一个介于0到1之间的输出向量,表示应该保留多少上一时刻的记忆状态。接着,该输出向量与当前输入进行逐元素相乘,以决定更新哪些信息。
-
重置门(Reset Gate):重置门决定了如何组合上一时刻的记忆状态和当前输入来计算当前时刻的候选记忆状态。类似于更新门,重置门也使用sigmoid激活函数生成一个介于0到1之间的输出向量。它的作用是控制上一时刻的记忆状态在当前时刻的使用程度。同时,重置门还使用tanh激活函数生成一个介于-1到1之间的输出向量,用于计算当前时刻的候选记忆状态。
GRU通过灵活地使用更新门和重置门,可以选择性地更新和遗忘信息。相比于LSTM,GRU在门控机制上更加简化,减少了参数的数量。这使得GRU在计算效率和模型复杂度之间取得了一定的平衡,并在很多序列建模任务中取得了很好的表现。
总结来说,GRU通过更新门和重置门的引入,实现了更好的梯度流动和长期依赖建模,同时减少了参数的数量。它是一种比较简洁而有效的门控循环神经网络架构。
参考资料: