文章目录
- 长短期记忆网络(LSTM)的结构与原理
-
- 一、LSTM的核心结构
-
- [1. 细胞状态(Cell State)](#1. 细胞状态(Cell State))
- [2. 三大门控机制](#2. 三大门控机制)
- 二、LSTM的工作原理
- 三、LSTM的使用场景
- 四、LSTM的特点
- 五、相关知识
- 六、实例:用LSTM处理文本序列
- 总结
长短期记忆网络(LSTM)的结构与原理
长短期记忆网络(Long Short-Term Memory,LSTM)是循环神经网络(RNN)的一种变体,由Hochreiter和Schmidhuber于1997年提出,专门用于解决传统RNN在处理长序列时的梯度消失或爆炸问题,能够有效捕捉序列数据中的长距离依赖关系。以下从结构、原理、使用场景、特点等方面详细介绍LSTM,并结合实例说明其工作机制。
一、LSTM的核心结构
LSTM的核心是细胞状态(Cell State),类似于一条"信息传送带",允许信息在序列中稳定流动;同时通过三个门控机制(遗忘门、输入门、输出门)对细胞状态进行精准控制,决定信息的保留、更新和输出。
1. 细胞状态(Cell State)
细胞状态是LSTM的"记忆中枢",用 C t C_t Ct表示( t t t为当前时间步)。它类似于一条贯穿整个序列的通道,信息在其中流动时仅会被少量线性交互修改,从而避免了传统RNN中信息在长序列中快速衰减的问题。
2. 三大门控机制
门控机制由sigmoid激活函数 和点积操作组成:sigmoid输出0-1之间的值(1表示"完全保留",0表示"完全丢弃"),点积则用于过滤信息。
-
遗忘门(Forget Gate)
作用:决定从细胞状态中丢弃哪些信息(基于过去的记忆和当前输入)。
输入:前一时刻的隐藏状态 h t − 1 h_{t-1} ht−1和当前输入 x t x_t xt。
输出: 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)( σ \sigma σ为sigmoid函数, W f W_f Wf、 b f b_f bf为参数)。
示例:在句子"小明昨天去了公园,他今天____"中,遗忘门会保留"小明"的信息,丢弃"昨天"的时间细节。
-
输入门(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)(决定更新哪些位置)。
- 候选信息生成: 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)(生成待存入的新信息,tanh输出范围为-1到1)。
示例:在上述句子中,输入门会将"今天"作为新信息存入细胞状态。
-
细胞状态更新
结合遗忘门和输入门的结果,更新细胞状态:
C t = f t ⊙ C t − 1 + i t ⊙ C ~ t C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t Ct=ft⊙Ct−1+it⊙C~t( ⊙ \odot ⊙为点积)。即:先"忘记"部分旧记忆( f t ⊙ C t − 1 f_t \odot C_{t-1} ft⊙Ct−1),再"加入"新记忆( i t ⊙ C ~ t i_t \odot \tilde{C}_t it⊙C~t)。
-
输出门(Output Gate)
作用:基于当前细胞状态,决定输出哪些信息作为下一时间步的隐藏状态 h t h_t ht。
步骤:
- 输出筛选: 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)(决定输出哪些信息)。
- 生成隐藏状态: h t = o t ⊙ tanh ( C t ) h_t = o_t \odot \tanh(C_t) ht=ot⊙tanh(Ct)( tanh \tanh tanh将细胞状态压缩到-1到1,再通过输出门筛选)。
示例:在句子中,输出门可能输出"小明今天去了____"中的"小明今天"作为下一时间步的输入。
二、LSTM的工作原理
LSTM通过"门控-记忆"机制处理序列数据,每个时间步的操作可总结为:
- 遗忘:遗忘门筛选细胞状态中无关的旧信息;
- 输入:输入门生成并筛选新信息,更新细胞状态;
- 输出:输出门基于更新后的细胞状态,生成当前隐藏状态,传递给下一时间步。
通过这种机制,LSTM能够在长序列中"记住"重要信息(如句子中的主语),"忘记"次要信息(如无关的修饰词),从而捕捉长距离依赖。
三、LSTM的使用场景
LSTM因擅长处理序列数据的长距离依赖,被广泛应用于以下领域:
-
自然语言处理(NLP)
- 文本生成:生成诗歌、小说等(需记住前文逻辑);
- 机器翻译:如将"我明天去北京"译为英文,需保留"明天"与"去"的时间关系;
- 情感分析:分析句子"虽然开头无聊,但结局很棒"的整体情感(依赖前后转折)。
-
时间序列预测
- 股票价格预测:需结合过去数周的价格趋势;
- 天气预测:基于连续多天的温度、湿度数据预测未来天气。
-
语音识别
将语音信号(时序数据)转换为文本,需关联前后发音(如"sh"和"i"组合为"shi")。
-
视频分析
识别视频中动作的连贯性(如"开门-走进来"的动作序列)。
四、LSTM的特点
优点 | 缺点 |
---|---|
有效缓解梯度消失/爆炸,能捕捉长距离依赖 | 结构复杂,计算成本高于传统RNN |
记忆能力可通过门控灵活调节,适应不同序列长度 | 训练过程较慢,需更多数据和算力 |
对噪声序列的鲁棒性较强 | 可能存在过拟合,需正则化(如dropout) |
五、相关知识
-
GRU(门控循环单元)
LSTM的简化版本,将遗忘门和输入门合并为"更新门",去掉细胞状态,仅保留隐藏状态,计算效率更高,在许多场景下性能接近LSTM。
-
双向LSTM
同时使用两个LSTM:一个按序列正序处理(过去→现在),一个按逆序处理(未来→现在),能同时捕捉上下文信息(如句子"他批评了她,因为____"需结合后文原因)。
-
与注意力机制结合
在长序列中,LSTM可能对早期信息的记忆衰减,注意力机制可让模型"聚焦"于关键时间步(如机器翻译中,让目标词更关注源句中的对应词)。
六、实例:用LSTM处理文本序列
以中文句子"猫追老鼠,它跑得很快"为例,展示LSTM如何处理序列中的指代关系("它"指"猫")。
序列拆解
时间步 t = 1 t=1 t=1:输入"猫";
t = 2 t=2 t=2:输入"追";
t = 3 t=3 t=3:输入"老鼠";
t = 4 t=4 t=4:输入",";
t = 5 t=5 t=5:输入"它";
t = 6 t=6 t=6:输入"跑";
t = 7 t=7 t=7:输入"得";
t = 8 t=8 t=8:输入"很";
t = 9 t=9 t=9:输入"快"。
各时间步处理
-
t = 1 t=1 t=1(输入"猫")
- 遗忘门:初始细胞状态 C 0 C_0 C0为空, f 1 ≈ 0 f_1 \approx 0 f1≈0(无旧信息可忘);
- 输入门: i 1 ≈ 1 i_1 \approx 1 i1≈1("猫"是核心主语,需存入),候选值 C ~ 1 \tilde{C}_1 C~1编码"猫"的信息;
- 细胞状态 C 1 = 0 ⋅ C 0 + 1 ⋅ C ~ 1 = "猫"的信息 C_1 = 0 \cdot C_0 + 1 \cdot \tilde{C}_1 = \text{"猫"的信息} C1=0⋅C0+1⋅C~1="猫"的信息;
- 输出门 o 1 ≈ 1 o_1 \approx 1 o1≈1,隐藏状态 h 1 = 1 ⋅ tanh ( C 1 ) = "猫"的信息 h_1 = 1 \cdot \tanh(C_1) = \text{"猫"的信息} h1=1⋅tanh(C1)="猫"的信息。
-
t = 2 t=2 t=2(输入"追")
- 遗忘门:保留"猫"的信息( f 2 ≈ 1 f_2 \approx 1 f2≈1);
- 输入门:存入"追"的动作( i 2 ≈ 1 i_2 \approx 1 i2≈1);
- C 2 = 1 ⋅ C 1 + 1 ⋅ C ~ 2 = "猫+追"的信息 C_2 = 1 \cdot C_1 + 1 \cdot \tilde{C}_2 = \text{"猫+追"的信息} C2=1⋅C1+1⋅C~2="猫+追"的信息;
- h 2 h_2 h2传递"猫追"的信息。
-
t = 3 t=3 t=3(输入"老鼠")
- 细胞状态更新为 C 3 = "猫+追+老鼠"的信息 C_3 = \text{"猫+追+老鼠"的信息} C3="猫+追+老鼠"的信息;
- h 3 h_3 h3传递"猫追老鼠"的事件。
-
t = 5 t=5 t=5(输入"它")
- 遗忘门:仍保留"猫"的核心信息( f 5 ≈ 1 f_5 \approx 1 f5≈1);
- 输入门:"它"是代词,无需存入新实体( i 5 ≈ 0 i_5 \approx 0 i5≈0);
- C 5 ≈ C 4 C_5 \approx C_4 C5≈C4(保留"猫追老鼠"的信息);
- 输出门: h 5 h_5 h5基于 C 5 C_5 C5,理解"它"指代"猫"。
-
最终结果
LSTM通过细胞状态记住"猫"是主体,从而正确解析"它跑得很快"中的"它"指"猫",解决了长距离指代问题。
总结
LSTM通过细胞状态和门控机制,突破了传统RNN的局限,成为处理序列数据的核心模型之一。尽管结构复杂,但其对长距离依赖的捕捉能力使其在NLP、时间序列等领域不可或缺,至今仍是许多实际应用的基础模型。