流水不争先,争的是滔滔不绝—— 每日渐进,终抵远方
LSTM(Long Short-Term Memory,长短期记忆网络)
他的前身是RNN(循环神经网络),为啥我们拿着好端端的RNN不用,非要寻找其他的网络算法呢?
这是因为RNN本身存在缺陷:
-
RNN的初衷:处理序列数据(如句子、语音、时间序列),因为它有“记忆”,能够利用上文的信息来影响下文的计算。
-
RNN的致命缺陷:梯度消失/爆炸问题
-
比喻:让你复述一个很长很长的故事。你可能还记得最后几句(短期记忆),但故事开头的很多细节(长期依赖)早就模糊或记错了。
-
技术原因:RNN通过循环连接传递信息,在反向传播时,梯度需要一层层往回传。如果梯度值很小,连续相乘后会变得极其微小(消失),导致模型无法学习到远距离的依赖关系;如果梯度值很大,连续相乘后会爆炸(爆炸),导致训练不稳定。
-
LSTM就是为了解决RNN的“长期依赖”问题而设计的! 它能够有效地将重要信息传递到很远的地方。
那LSTM到底干了什么,才解决了RNN的问题呢?
LSTM的关键在于它精巧的“门”结构。就像水龙头一样,门可以选择性地让信息通过。它通过三种门来决定:
-
忘记哪些旧信息?
-
记住哪些新信息?
-
输出什么信息?
LSTM在每个时间步都有一个细胞状态,这是它的“主线剧情”,负责承载长期记忆。门控机制就是用来保护和更新这个细胞状态的。
接下来介绍一下这个门控机制:
我们以一个“细胞”在时间步 t
的操作为例。它的输入是:
-
h_{t-1}
:上一个时间步的隐藏状态(短期记忆) -
x_t
:当前时间步的输入 -
C_{t-1}
:上一个时间步的细胞状态(长期记忆)
它的输出是:
-
h_t
:当前时间步的隐藏状态(新的短期记忆) -
C_t
:当前时间步的细胞状态(新的长期记忆)
现在,来看三个门的计算:
1. 遗忘门
-
作用:决定从旧的细胞状态
C_{t-1}
中丢弃哪些信息。 -
操作:查看
h_{t-1}
和x_t
,为一个在[0, 1]
之间的数。0代表“完全丢弃”,1代表“完全保留”。 -
公式:$f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)$
-
σ
是Sigmoid函数,输出范围(0,1),正好做门控。
-
2. 输入门
-
作用:决定将哪些新信息存入细胞状态。
-
它分为两部分:
-
a) 门控信号:$i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i)$ (决定更新哪些位置)
-
b) 候选值:$\tilde{C}t = \tanh(W_C \cdot [h{t-1}, x_t] + b_C)$ (这是一个新的、待加入的候选值向量)
-
3. 更新细胞状态
-
作用:结合遗忘门和输入门的结果来更新长期记忆。
-
操作:
-
把旧状态
C_{t-1}
乘以f_t
,忘掉我们决定要忘记的东西。 -
加上
i_t * ~C_t
,这是新的候选值, scaled by 输入门(决定每个候选值的重要性)。
-
-
公式:$C_t = f_t * C_{t-1} + i_t * \tilde{C}_t$
4. 输出门
-
作用:基于更新后的细胞状态,决定下一个隐藏状态
h_t
是什么(即短期记忆/输出)。 -
操作:
-
门控信号:$o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o)$ (决定输出哪些部分)
-
将细胞状态
C_t
通过tanh
压到(-1, 1)之间,然后乘以输出门o_t
。
-
-
公式:$h_t = o_t * \tanh(C_t)$
一个生动的比喻:管理你的大脑记忆
想象你的大脑在处理连续的信息流:
-
细胞状态
C_t
:你的长期知识库(例如:法国的首都是巴黎)。 -
隐藏状态
h_t
:你当前正在思考的内容(短期工作记忆)。 -
输入新信息:你读到一句话:
“法国的首都是伦敦。”
-
遗忘门:你的大脑首先决定,从长期知识库中弱化“巴黎是首都”这个旧信息(
f_t
接近0)。 -
输入门:然后决定强烈质疑“伦敦是首都”这个新信息(
i_t
很小),因为你知道这是错的。候选值~C_t
就是“伦敦”这个信息。 -
更新状态:长期知识库几乎保持不变
C_t ≈ C_{t-1}
,因为你拒绝了这个错误信息。 -
输出门:你可能会输出一个反应:
“不对!”
(h_t
),但这个错误信息并没有污染你的长期知识。
-
总结
特性 | RNN | LSTM |
---|---|---|
核心问题 | 存在梯度消失/爆炸,难以学习长期依赖。 | 通过门控机制有效解决长期依赖问题。 |
记忆机制 | 只有一种隐藏状态,既是短期记忆也是输出。 | 分离了记忆:细胞状态(长期记忆)和隐藏状态(短期记忆/输出)。 |
关键结构 | 简单的循环连接。 | 三个门(遗忘、输入、输出) + 一个细胞状态。 |
能力 | 较弱,适合短序列。 | 强大,能够处理和记忆长序列中的复杂依赖关系。 |
RNN 存在长序列依赖问题,无法做并行
self-Attention得到的新的词向量具有句法特征和语义特征(表现的特征更完善)处理50个左右的单词效果最好
LSTM处理长文本任务比较好,处理200个左右的单词效果最好