Skip to content

第 14 章 序列模型

序列模型用来处理有先后顺序的数据,例如文本、语音、时间序列、用户点击记录。和普通表格数据不同,序列中的每个位置不是孤立的,前后文会影响当前含义。

例如“我喜欢这部电影”和“我不喜欢这部电影”只差一个“不”,但整个句子的含义完全不同。序列模型需要在当前位置的表示中利用前后文信息。

14.1 什么是序列数据

序列数据可以看成一串按顺序排列的元素:

text
x1, x2, x3, ..., xt

其中每个元素可以是一个词、一个语音片段、一个时间点的数值,也可以是一次用户行为。

常见任务包括:

任务形式例子
一个序列对应一个结果情感分类、用户是否流失
一个序列对应另一个序列机器翻译、摘要生成
每个位置都要预测词性标注、序列标注
根据历史预测未来股票趋势、销量预测

序列模型关心的不只是“有哪些元素”,还关心“这些元素按什么顺序出现”。

14.2 RNN 的基本思想

RNN 是循环神经网络(Recurrent Neural Network)。它按时间步处理序列,每读入一个新元素,就根据当前输入和上一时刻的隐藏状态计算新的隐藏状态。

可以把它理解成:

text
读入 x1 -> 得到记忆 h1
读入 x2 -> 结合 h1 得到记忆 h2
读入 x3 -> 结合 h2 得到记忆 h3

这里的 h 叫隐藏状态。它不是标签,而是模型内部保存的序列历史表示。

RNN 和普通全连接网络的区别在于:普通网络只看当前输入,RNN 会同时看当前输入和上一步留下的隐藏状态。

可以简写为:

=f(,)

这个式子表示隐藏状态由当前输入和上一时刻隐藏状态共同决定。

14.3 参数共享

RNN 处理不同时间步时,使用的是同一套参数。

也就是说,读第一个词、第二个词、第三个词时,模型使用的是同一种处理规则。这样做有两个好处:

  • 序列长一点或短一点都能处理。
  • 参数数量不会随着序列长度变长而无限增加。

参数共享使同一递推规则可以作用于不同长度的序列。

14.4 RNN 的问题

普通 RNN 的问题是长期记忆能力弱。

如果一句话很短,RNN 通常还能把前面的信息传到后面。但如果序列很长,早期信息要经过很多次传递,容易被后面的信息覆盖。

训练时还会出现两个典型问题:

问题含义结果
梯度消失早期信息传不回来学不到长期依赖
梯度爆炸梯度变得过大训练不稳定

所以普通 RNN 可以帮助理解序列建模,但实际面对长文本、长时间序列时,往往不够用。

14.5 LSTM 的基本思想

LSTM 是长短期记忆网络(Long Short-Term Memory),是为了解决普通 RNN 长期记忆弱的问题提出的。

LSTM 在隐藏状态之外引入细胞状态,并用门控机制控制信息的保留、写入和输出。模型每一步都要决定三件事:

  • 旧信息哪些要忘掉。
  • 新信息哪些要写入。
  • 当前要输出哪些信息。

这三件事分别对应 LSTM 的三个门:

作用
遗忘门控制旧记忆保留多少
输入门控制新信息写入多少
输出门控制当前输出使用多少记忆

门的取值通常在 0 到 1 之间。接近 1 表示更多通过,接近 0 表示更多抑制。

14.6 LSTM 为什么更适合长序列

普通 RNN 每一步都直接更新隐藏状态,旧信息容易被覆盖。

LSTM 多了一个细胞状态,可以让重要信息沿着序列传得更远。比如在一句很长的话里,开头出现了主语,后面才出现谓语,LSTM 更有机会把这个主语信息保留下来。

二者对比如下:

模型记忆方式特点
RNN只靠隐藏状态传递信息简单,但长期依赖弱
LSTM用门控控制记忆保留和更新更适合长序列

LSTM 不是万能的。序列特别长时,它仍然要一步一步处理,计算不能很好并行。

14.7 GRU

GRU 是门控循环单元(Gated Recurrent Unit),可以看成 LSTM 的简化版本。

它也使用门控机制,但结构更简单,参数更少,训练速度通常更快。很多任务中,GRU 和 LSTM 的效果接近。

三类循环结构的关系如下:

模型适合理解为
RNN最基础的序列记忆模型
LSTM加强长期记忆的 RNN
GRU简化版 LSTM

学习顺序上,可以先理解 RNN 的递推结构,再看 LSTM 和 GRU 如何通过门控缓解长期依赖问题。

14.8 Transformer 和序列模型

Transformer 也是处理序列的模型,但它不再像 RNN 那样一步一步递推。

RNN、LSTM 读序列的方式更像:

text
从左到右,一个接一个读

Transformer 的方式更像:

text
序列中每个位置都可以直接看其他位置

这靠的是注意力机制。注意力机制可以让模型判断:当前词应该重点关注句子里的哪些词。

因此 Transformer 有两个重要优势:

  • 更容易捕捉长距离依赖。
  • 更适合并行计算。

这也是现在自然语言处理(Natural Language Processing, NLP)和大语言模型大量使用 Transformer 的原因。

14.9 序列模型的比较

几种序列模型的主要区别如下:

模型解决什么问题
RNN让模型能按顺序读数据
LSTM缓解 RNN 长期记忆弱的问题
GRU用更简单的门控结构处理序列
Transformer用注意力机制直接建模位置之间的关系

Powered by VitePress