02-BiLSTM:双向长短期记忆网络

02-BiLSTM:双向长短期记忆网络

导出时间:2026/1/14 19:15:18

提出背景:语音识别里“当前这一帧”往往不够判断

论文一开始就点出语音识别的一个核心现象:co-articulation(协同发音)——人说话时,发音器官为了连贯,会把相邻声音“糊在一起”。所以某一时刻的声音,不是独立的,而是被前后音影响的。

通俗解释

你可以把语音切成一帧一帧(像视频的每一帧):
  • 第 t 帧的声音不是“纯净的第 t 帧”
  • 它混着前面几帧、后面几帧的影响
所以判断“这一帧是哪个音素(phoneme)”时:

不仅要看前面,也要看后面

论文用非常直接的话说:

“分类一个语音帧时,看它之后的帧也会有帮助”


普通RNN/LSTM只能“从左到右看”,输出主要依赖过去

通俗解释

普通 LSTM 就像你在读句子时:
  • 你只读到了第 t 个词
  • 后面的词你还没看到
于是你对第 t 个词的理解不完整。
例如这句话:

“他把苹果吃了。”

如果你读到“他把苹…”,你不知道后面是:
  • 苹果吃了
  • 苹果扔了
  • 苹果卖了
很多判断必须靠“后文”。

BiLSTM 的动机:用“双向网络”解决“只能看过去”的问题

论文提出一个优雅解决方案:

bidirectional networks(双向网络)能解决“输出主要依赖过去”这个问题。

它的结构是:
  • 输入序列给 两个 RNN
  • 一个正向看(forward)
  • 一个反向看(backward)
  • 最后连接到同一个输出层
image.png
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(反向):从未来 → 现在 它擅长捕捉“未来反推现在”的规律 例:后文补充、后验修正、未来上下文对当前的解释
这两种规律本质上并不对称。
不共享参数的最大好处:两边可以学到“互补信息”