Ch08 RNN序列模型修订于 二〇二六年七月二日

8.4 双向 RNN:同时看过去和未来

前面讲的 RNN 都是单向的——从左到右读,只能看到”过去”的信息。但有些任务需要同时看到上下文:

  • “我今天很___,因为考试得了满分” —— 只看前面不知道填什么,看到后面”满分”才知道是”开心”
  • 命名实体识别中,“华盛顿”是人名还是地名,取决于前后文

双向 RNN 的做法:跑两个 RNN,一个从左到右,一个从右到左。每个时间步的输出 = 两个方向的隐藏状态拼接。

前向 RNN:  →  →  →  →  →
输入:     "我" "今天" "很" "开心"
后向 RNN:  ←  ←  ←  ←  ←
                ↓
输出:     [前向h + 后向h] 对每个词

双向 RNN 在 NLP 的”理解”任务中(如文本分类、命名实体识别)效果显著优于单向 RNN。但它不能用于”生成”任务——生成下一个词时,你还没有”未来”的信息。


← 上一节:8.3 梯度消失与梯度爆炸:为什么深层 RNN 训练不好 | 下一节:8.5 Seq2Seq:输入一串,输出一串 →

关联5

知识图谱

局部图谱 · 点节点跳转