概述
LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN)结构,通常被用于处理和学习时间序列数据。因此,LSTM属于深度学习领域中的一种神经网络模型。
在深度学习中,LSTM被广泛应用于需要处理长期依赖关系的任务,如语音识别、自然语言处理、时间序列预测等。
相较于传统的RNN结构,LSTM通过引入门控单元的机制,能够更好地捕捉和利用时间序列数据中的长期依赖关系,从而提高模型的性能和泛化能力。
RNN
循环神经网络(Recurrent Neural Network,RNN)是一种具有循环连接的神经网络结构,专门设计用于处理序列数据和具有时间依赖性的数据。在循环神经网络中,神经元之间的连接形成了循环路径,使得网络可以对序列数据进行逐步处理,并保留之前的信息状态。
循环神经网络的主要特点包括:
-
循环连接:神经元之间的连接形成了循环路径,使得网络可以捕捉到序列数据中的时间依赖关系,从而能够处理不定长的序列数据。
-
共享权重:在RNN中,相同层的神经元之间共享相同的权重参数,这使得网络可以通过时间共享参数来学习序列数据中的模式和特征。
-
状态传递:RNN中每个时间步的输出不仅取决于当前输入,还取决于之前的状态信息,因此网络可以保持记忆并利用历史信息来影响当前的计算。
尽管RNN在处理序列数据方面具有很强的表达能力,但也存在一些问题,例如难以捕捉长距离依赖关系、梯度消失和爆炸等问题。为了解决这些问题,出现了一些改进的RNN结构,如长短时记忆网络(LSTM)和门控循环单元(GRU),它们通过引入门控机制来更好地处理长期依赖关系。
这是典型的RNN网络在 t 时刻展开的样子:
LSTM
原始的RNN的内部结构如下:
在一个单元里只包含一个激活函数。
LSTM内部结构如下:
详细视频讲解
LSTM设置了两个关键变量:
- 主要负责记忆短期信息、尤其是当前时间步信息的隐藏状态h,以及
- 主要负责长期记它的细胞状态C
LSTM(Long Short-Term Memory)是一种特殊类型的循环神经网络结构,具有三个关键的门控单元,分别是输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。这些门控单元通过学习来控制信息的流动,帮助LSTM网络更好地处理长期依赖关系。
下面是这三个门的工作原理:
- 遗忘门(Forget Gate):
- 遗忘门确定了细胞状态中哪些信息应该被遗忘或丢弃。它也包含一个sigmoid激活函数,根据输入数据和前一个时间步的隐藏状态来输出一个介于0和1之间的值。
- 通过乘法操作,遗忘门控制着细胞状态中历史信息的保留程度,决定哪些信息会在细胞状态中持续存在。
- 输入门(Input Gate):
-
输入门控制着新输入信息对当前单元状态的影响程度。它包括一个sigmoid激活函数,用于生成一个介于0和1之间的值,表示每个单元状态中的哪些值应该被更新。
-
通过使用乘法操作,输入门决定将新的输入信息加入到细胞状态中的哪些部分,并将结果传递给细胞状态。
-
更新状态:
- 输出门(Output Gate):
- 输出门控制着当前时刻的隐藏状态以及下一个时刻的细胞状态如何影响最终的输出。它包含一个sigmoid激活函数来确定输出状态的哪些部分将被激活。
- 输出门还包含一个tanh激活函数,用于生成一个介于-1和1之间的值,表示当前时间步的细胞状态的候选值。
- 通过乘法操作,输出门将细胞状态中经过筛选和更新后的信息发送到下一时间步的隐藏状态,并基于这个隐藏状态生成最终的输出。
这三个门控单元共同协作,使得LSTM网络能够更有效地处理长期依赖关系,控制信息流动和记忆存储,从而提高模型性能和泛化能力。
三个门是如何工作的
LSTM进行时间序列预测的步骤
LSTM在时间序列预测任务中通常是逐步进行预测的。具体流程如下:
- 初始化模型:
- 首先,将历史时间步的输入数据提供给LSTM模型,获取初始的隐藏状态和细胞状态。
- 逐步预测:
- 预测过程中,每次输入模型的是当前时间步的输入数据和上一时间步的隐藏状态,通过模型计算得到当前时间步的输出结果。
- 模型输出的结果可以是一个预测值,也可以是多个预测值(根据任务需求和模型设计)。
- 将当前时间步的输出结果作为下一时间步的输入,并重复这个过程,直到达到预测的时间范围或满足停止条件。
- 迭代预测:
- 在每次预测后,可以将预测结果与真实值进行比较,评估预测误差,并将预测结果加入到输入序列中。
- 可以选择将真实值作为下一时间步的输入,或者使用模型预测的结果作为下一时间步的输入,依赖于具体的预测策略和应用需求。
通过逐步预测的方式,LSTM可以对未来时间步的数值进行预测,并根据预测结果不断迭代调整模型输入,实现更长期的时间序列预测。需要注意的是,预测的准确性可能会随着时间步的增加而下降,因为误差会逐步累积。因此,在实际应用中,需要根据具体情况来选择预测的时间范围和迭代次数,以平衡预测精度和计算效率。