02-BiLSTM:双向长短期记忆网络
导出时间:2026/1/14 19:15:18
提出背景:语音识别里“当前这一帧”往往不够判断
论文一开始就点出语音识别的一个核心现象:co-articulation(协同发音)——人说话时,发音器官为了连贯,会把相邻声音“糊在一起”。所以某一时刻的声音,不是独立的,而是被前后音影响的。
通俗解释
你可以把语音切成一帧一帧(像视频的每一帧):
- 第 t 帧的声音不是“纯净的第 t 帧”
- 它混着前面几帧、后面几帧的影响
所以判断“这一帧是哪个音素(phoneme)”时:
不仅要看前面,也要看后面。
论文用非常直接的话说:
“分类一个语音帧时,看它之后的帧也会有帮助”
普通RNN/LSTM只能“从左到右看”,输出主要依赖过去
通俗解释
普通 LSTM 就像你在读句子时:
- 你只读到了第 t 个词
- 后面的词你还没看到
于是你对第 t 个词的理解不完整。
例如这句话:
“他把苹果吃了。”
如果你读到“他把苹…”,你不知道后面是:
- 苹果吃了
- 苹果扔了
- 苹果卖了
很多判断必须靠“后文”。
BiLSTM 的动机:用“双向网络”解决“只能看过去”的问题
论文提出一个优雅解决方案:
bidirectional networks(双向网络)能解决“输出主要依赖过去”这个问题。
它的结构是:
- 输入序列给 两个 RNN
- 一个正向看(forward)
- 一个反向看(backward)
- 最后连接到同一个输出层
BiLSTM = 两个 LSTM 叠在一起:
- 一个从左到右读序列(Forward)
- 一个从右到左读序列(Backward)
最后把两边学到的“信息”合并起来再输出。
(1)最下面:Input(输入序列)
橙色圆点:
- xt−1 、xt、xt+1
就是时间序列的每个时刻输入数据。
(2)中间:两个方向的 LSTM
你图里有两排绿色 LSTM 方块:
✅ 上排:Forward(正向)
橙色水平箭头 →
表示从左到右:
- 先看 xt−1
- 再看 xt
- 再看 xt+1
它产生正向隐藏状态:
✅ 下排:Backward(反向)
青色水平箭头 ←
表示从右到左:
- 先看 xt+1
- 再看 xt
- 再看 xt−1
它产生反向隐藏状态:
(3)最上面:Output(输出)
蓝绿色圆点:
- yt−1,yt,yt+1
每个时刻都会输出一个结果。
BiLSTM 特别适合哪些任务?
因为它用到了“未来信息”,所以特别适合 理解类任务:
✅ 特别适合
- NLP:词性标注、命名实体识别(NER)、分词
- 文本分类(整段输入都已知)
- 音频/语音识别(离线场景)
- 时间序列“离线分析”(比如用整段历史做诊断分类)
⚠️ 不适合/需小心
- 实时预测未来(时间序列预测常见场景)
原因很关键:
在真实预测时刻 t,你根本拿不到 t+1,t+2 的输入。但 BiLSTM 训练时默认可以看到右边的数据,这会造成“作弊”。
所以在预测未来时:
- 一般用 LSTM / GRU / Transformer causal
- 除非你的任务是“给定完整窗口,预测窗口中间或分类”,那 BiLSTM 仍很强
8)你这张图还隐含了一个重点:BiLSTM 参数不是共享的
图里两排 LSTM:
- 上排 forward LSTM:一套参数
- 下排 backward LSTM:另一套参数
相当于:
两个人从两头读同一本书,各自做摘要,最后把摘要合并。
虽然它们输入的是同一段序列,但两者的“视角”完全不同:
- Forward LSTM(正向):从过去 → 现在 它擅长捕捉“过去导致现在”的规律 例:趋势、累积效应、历史惯性
- Backward LSTM(反向):从未来 → 现在 它擅长捕捉“未来反推现在”的规律 例:后文补充、后验修正、未来上下文对当前的解释
这两种规律本质上并不对称。
不共享参数的最大好处:两边可以学到“互补信息”