深度学习笔记——LSTM
深度学习笔记——LSTM
LSTM(Long Short-Term Memory)是循环神经网络(RNN)的一种改进版本,旨在解决RNN的长时间依赖问题。通过引入记忆单元和门控机制,LSTM能够有效地控制信息流动,在长序列建模中表现出色。本文将详细介绍LSTM的核心部件、工作原理及其优缺点。
LSTM(Long Short-Term Memory)
LSTM 是 RNN 的一种改进版本,旨在解决 RNN 的长时间依赖问题。LSTM 通过引入记忆单元(cell state)和门控机制(gates)来有效地控制信息流动,使得它在长序列建模中表现优异。
LSTM 的核心部件
LSTM 的核心结构由以下几部分组成:
- 记忆单元(Cell State):贯穿整个序列的数据流【图中的C】,能够存储序列中的重要信息,允许网络长时间保留重要的信息。
- 隐藏状态(Hidden State):每个时间步的输出,LSTM 通过它来决定当前的输出和对下一时间步的传递信息。【RNN中就有】
- 三个门控机制(Forget Gate、Input Gate、Output Gate):通过这些门控机制,LSTM 可以选择性地遗忘、存储、或者输出信息(具体在图中的结构参考下面具体介绍)。
LSTM 中最重要的概念是记忆单元状态和门控机制,它们帮助网络在长时间序列中保留重要的历史信息。
在 LSTM 中,隐藏状态是对当前时间步的即时记忆(短期记忆),而记忆单元是对整个序列中长期信息的存储(长期记忆)。
- 遗忘门(Forget Gate):根据当前输入和前一个时间步的隐藏状态,决定记忆单元哪些信息需要被遗忘;
- 输入门(Input Gate):根据当前输入和前一时间步的隐藏状态,决定当前时间步输入对记忆单元的影响;
- 输出门(Output Gate):根据当前的输入和前一时间步的隐藏状态以及记忆单元状态,决定当前时间步隐藏状态的输出/影响;(输出内容是从记忆单元中提取的信息);
LSTM 的公式和工作原理
在 LSTM 中,每个时间步 ( t ) 的计算分为以下几步:
图像参考:LSTM(长短期记忆网络)
(1) 遗忘门(Forget Gate)
- 计算公式:
f t = σ ( W f ⋅ [ h t − 1 , x t ] + b f ) f_t=\sigma(W_f\cdot[h_{t - 1},x_t]+b_f)ft =σ(Wf ⋅[ht−1 ,xt ]+bf ) - f t f_tft :遗忘门的输出,值介于0到1之间,表示记忆单元中的每个值需要被保留的比例。
- h t − 1 h_{t - 1}ht−1 :上一时间步的隐藏状态(短期记忆)。
- x t x_txt :当前时间步的输入。
- W f W_fWf 、b f b_fbf :遗忘门的权重和偏置。
- σ \sigmaσ:sigmoid函数,将值限制在0到1之间。
遗忘门的作用:它根据当前输入和前一个时间步的隐藏状态,选择哪些来自过去的记忆单元信息需要被遗忘。
(2) 输入门(Input Gate)
- 计算公式:
i t = σ ( W i ⋅ [ h t − 1 , x t ] + b i ) i_t=\sigma(W_i\cdot[h_{t - 1},x_t]+b_i)it =σ(Wi ⋅[ht−1 ,xt ]+bi ) - i t i_tit :输入门的输出,值介于0到1之间,表示是否更新记忆单元。
- W i W_iWi 、b i b_ibi :输入门的权重和偏置。
- 候选记忆生成:
C ~ t = tanh ( W c ⋅ [ h t − 1 , x t ] + b c ) \tilde{C}t=\tanh(W_c\cdot[h{t - 1},x_t]+b_c)C~t =tanh(Wc ⋅[ht−1 ,xt ]+bc ) - C ~ t \tilde{C}_tC~t :候选记忆,是根据当前输入生成的新的记忆内容,值在[ − 1 , 1 ] [- 1,1][−1,1]之间。
- W c W_cWc 、b c b_cbc :生成候选记忆的权重和偏置。
输入门的作用:输入门通过 sigmoid 激活函数决定当前输入(x t x_txt ) 和前一时间步的隐藏状态(h t − 1 h_{t-1}ht−1 )对记忆单元的影响。结合候选记忆 (C ~ t \tilde{C}_tC~t ),输入门决定是否将当前输入的信息入到记忆单元中。
(3) 更新记忆单元状态
- 记忆单元状态更新公式:
C t = f t ∗ C t − 1 + i t ∗ C ~ t C_t=f_tC_{t - 1}+i_t\tilde{C}_tCt =ft ∗Ct−1 +it ∗C~t - f t ∗ C t − 1 f_t*C_{t - 1}ft ∗Ct−1 :遗忘门决定了哪些来自前一时间步的记忆单元信息被保留。
- i t ∗ C ~ t i_t*\tilde{C}_tit ∗C
t :输入门决定了新的候选记忆C ~ t \tilde{C}_tCt 需要被加入到记忆单元中的比例。
记忆单元的作用:记忆单元 (C t C_tCt ) 根据遗忘门和输入门的输出,保留了来自过去的长期信息,使得重要的历史信息能够长时间存储。
(4) 输出门(Output Gate)
输出门控制从记忆单元中提取多少信息作为当前时间步的隐藏状态h t h_tht 并输出。
- 计算公式:
o t = σ ( W o ⋅ [ h t − 1 , x t ] + b o ) o_t=\sigma(W_o\cdot[h_{t - 1},x_t]+b_o)ot =σ(Wo ⋅[ht−1 ,xt ]+bo ) - o t o_tot :输出门的输出,决定隐藏状态的输出比例。
- W o W_oWo 、b o b_obo :输出门的权重和偏置。
- 生成当前隐藏状态:
h t = o t ∗ tanh ( C t ) h_t=o_t*\tanh(C_t)ht =ot ∗tanh(Ct ) - tanh ( C t ) \tanh(C_t)tanh(Ct ):对当前的记忆单元状态C t C_tCt 进行非线性变换,生成当前时间步的隐藏状态。
- 输出门o t o_tot 决定了多少信息从记忆单元状态C t C_tCt 中提取,并输出为当前时间步的隐藏状态。
输出门的作用:输出门根据当前的输入和前一时间步的隐藏状态以及记忆单元状态,决定当前的隐藏状态 (h t h_tht ) 的值,它不仅作为当前时间步的输出,还会传递到下一时间步。
LSTM 的流程总结
在每个时间步 (t tt),LSTM 会执行以下步骤:
- 遗忘门:根据当前输入和前一个时间步的隐藏状态,控制哪些来自上一个时间步的记忆单元信息需要被保留或遗忘。
- 输入门:根据当前输入和前一时间步的隐藏状态,决定当前输入信息是否更新到记忆单元中,通过候选记忆生成新的信息。
- 记忆单元状态更新:根据遗忘门和输入门的输出,更新当前时间步的记忆单元状态 (C t C_tCt )。
- 输出门:根据当前的输入和记忆单元状态,控制当前时间步的隐藏状态 (h t h_tht ) 的输出,隐藏状态会传递到下一时间步,作为当前的输出结果。
LSTM 的优点
LSTM 通过引入门控机制,可以选择性地控制信息的流动;记忆单元可以有效地保留长期信息,避免了传统 RNN 中的梯度消失问题。因此,LSTM 能够同时处理短期和长期的依赖关系,尤其在需要保留较长时间跨度信息的任务中表现优异。
LSTM 的局限性
LSTM 的门控机制使得它的结构复杂,训练时间较长,需要更多的计算资源,尤其是在处理大规模数据时。依赖于序列数据的时间步信息,必须按顺序处理每个时间步,难以并行化处理序列数据。