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