字体大小
第四编 序列建模与生成学习的发展 · 04_第四编_序列建模与生成学习的发展/第15章_序列模型的早期形式/chapter.md

第15章 序列模型的早期形式

本章核心问题

当数据不再是彼此独立的静态样本,而是带有顺序、上下文和历史依赖的序列时,机器学习应当如何建立相应的数学模型?

更具体地说,本章要回答:为什么第三编中以静态输入为中心的深层表示框架,仍不足以直接处理语言、语音和一般时间序列;条件概率链、马尔可夫假设、n-gram 与隐马尔可夫模型分别提供了怎样的序列建模语言;以及为什么这些早期模型虽然构成了序列建模的统计起点,却最终仍会推动神经序列模型出现。

1. 问题背景

第三编已经把深度学习推进到“表示学习”这一高度统一的视角。无论是多层前馈网络、卷积网络,还是对深度表示学习本身的理论理解,都共同说明:机器学习的关键不再只是最终输出规则,而是能否在模型内部逐层形成更有用的表示。然而,到这一阶段为止,一个重要前提仍然经常被默认:输入对象可以被视为相对静态的整体。

对于图像,这种处理往往是合理的。即使图像具有内部空间结构,它至少可以被作为同一时刻同时呈现的对象来处理;卷积网络正是通过局部空间结构来组织这种静态表示。但语言、语音、金融时间序列、传感器流和行为日志则不同。它们的核心信息不只存在于“当前观测长什么样”,还存在于“当前观测出现在什么历史之后”。也就是说,这类数据不是简单的静态样本集合,而是有顺序、有上下文、有时间方向的对象。

这就使第四编的任务与第三编明显不同。第三编的关键困难是“如何学习更强表示”,第四编的起点则是“表示必须随着时间或顺序展开”。若我们仍然像处理静态样本那样,只把每个时刻看成独立输入,那么许多最重要的结构就会消失。例如,一个词的意义依赖前文,一个音素的识别依赖邻近片段,一个时间点的预测依赖历史轨迹。换言之,在序列问题中,“历史本身”成为建模对象的一部分。

因此,早期序列模型首先做的工作,并不是一开始就引入神经网络,而是建立一套适合处理顺序依赖的统计语言。研究者必须回答:一个序列的联合分布如何分解;若完整历史过于复杂,能否用某种简化假设保留最重要的依赖;若真实状态不可直接观察,能否引入潜在状态来解释观测序列。正是在这些问题上,条件概率链、马尔可夫假设、n-gram 模型和隐马尔可夫模型逐渐形成。

从全书位置看,第15章是第四编的起点,其作用与第10章在第三编中的作用有些相似:它不是最终成熟方案,却给出了后面一整条技术路线的基本问题框架。若没有这一章,后续循环神经网络、序列生成模型、注意力机制和语言模型的发展就会显得像突然冒出的新技术;而有了这一章,它们就能被理解为对“如何表示历史、如何建模依赖、如何生成序列”这一长期问题的继续深化。

2. 数学原理

2.1 序列的联合分布如何展开

设一个长度为 $T$ 的序列写成

$$ x_{1:T}=(x_1,x_2,\dots,x_T), $$

其中 $x_t$ 表示第 $t$ 个时刻或第 $t$ 个位置上的观测,$T$ 表示序列长度。对任何概率模型来说,描述整个序列最自然的对象是其联合分布

$$ P(x_1,x_2,\dots,x_T). $$

这里 $P(\cdot)$ 表示概率分布。利用概率链式法则,这个联合分布总可以严格写成

$$ P(x_1,x_2,\dots,x_T)=\prod_{t=1}^T P(x_t\mid x_1,\dots,x_{t-1}). $$

其中条件概率

$$ P(x_t\mid x_1,\dots,x_{t-1}) $$

表示在全部历史 $x_1,\dots,x_{t-1}$ 已知时,第 $t$ 个符号或观测出现的概率。这个分解极其重要,因为它说明:序列建模的本质,就是不断建模“下一个元素在给定历史下如何分布”。

这个公式本身完全一般,没有做任何近似。但它也立即暴露出困难。若历史长度不断增长,那么条件对象的维数会越来越大;对语言或长时间序列来说,直接估计依赖完整历史的条件分布几乎不可能。因此,早期序列模型的核心任务之一,就是在保持链式分解基本思想的同时,用某种可处理的方式压缩历史信息。

2.2 马尔可夫假设为何成为第一步简化

为了降低条件分布的复杂度,最经典的简化是假设“当前只依赖有限历史”,也就是马尔可夫假设。最简单的一阶情形写成

$$ P(x_t\mid x_1,\dots,x_{t-1})\approx P(x_t\mid x_{t-1}). $$

这里的近似符号意味着:模型不再保留全部过去,而只保留最近一个状态。更一般地,若假设当前时刻只依赖前 $n-1$ 个元素,则可写成

$$ P(x_t\mid x_1,\dots,x_{t-1})\approx P(x_t\mid x_{t-n+1},\dots,x_{t-1}). $$

这个写法的含义是:长度无限增长的历史,被压缩成一个有限窗口。这样做当然会损失信息,但也带来可估计性。换言之,马尔可夫假设并不是说真实世界一定只有短程依赖,而是说在建模能力有限的前提下,我们先用有限记忆去逼近真实依赖结构。

从数学上看,这一步把原本极其复杂的条件概率族,变成了一个由有限上下文索引的条件概率表或条件模型。因此,它构成了早期统计序列模型的第一块基石。

2.3 n-gram 模型如何从马尔可夫假设得到

在语言建模中,最直接的马尔可夫化结果就是 n-gram 模型。设文本序列为

$$ w_1,w_2,\dots,w_T, $$

其中 $w_t$ 表示第 $t$ 个词或符号。若采用 $(n-1)$ 阶马尔可夫假设,则有

$$ P(w_t\mid w_1,\dots,w_{t-1})\approx P(w_t\mid w_{t-n+1},\dots,w_{t-1}). $$

于是整个序列的概率可以近似写成

$$ P(w_1,\dots,w_T)\approx \prod_{t=1}^T P(w_t\mid w_{t-n+1},\dots,w_{t-1}). $$

当 $n=2$ 时,这就是 bigram 模型;当 $n=3$ 时,就是 trigram 模型。其核心思想非常清楚:对当前词的预测只依赖一个固定长度的上下文窗口。

在统计估计上,若某个上下文

$$ c=(w_{t-n+1},\dots,w_{t-1}) $$

已经给定,则条件概率常可由频率估计近似为

$$ P(w_t=w\mid c)\approx \frac{\mathrm{Count}(c,w)}{\mathrm{Count}(c)}, $$

其中 $\mathrm{Count}(c,w)$ 表示上下文 $c$ 后接词 $w$ 的出现次数,$\mathrm{Count}(c)$ 表示上下文 $c$ 的总出现次数。这个公式说明,n-gram 模型本质上是一种局部条件频率模型。

它的好处在于简单、透明、易实现,而且直接对应条件概率链;但它的局限也很明显:上下文窗口一旦固定,超过窗口长度的历史信息就被全部丢弃。语言中大量依赖关系远比这更长,这就注定 n-gram 只能构成序列建模的早期起点。

2.4 数据稀疏为何成为 n-gram 的核心难题

n-gram 模型的另一大问题是数据稀疏。随着 $n$ 增大,可取的上下文组合数量会急剧上升。设词表大小为 $V$,则长度为 $n-1$ 的上下文最多可能有

$$ V^{n-1} $$

种不同组合。即使真实数据中并不会出现所有组合,这个数量仍然会迅速变得极大。于是,大量上下文在训练语料中要么从未出现,要么出现次数极少,从而导致条件频率估计极不稳定。

这说明一个根本张力:若 $n$ 很小,模型记忆太短,表达能力不足;若 $n$ 很大,模型又会因为样本稀疏而无法可靠估计。早期语言模型的许多技术,例如平滑、回退和插值,本质上都在缓解这个张力。虽然本章不展开所有这些工程细节,但应当看到,它们背后对应的是同一个统计困难:条件概率表的维数随着上下文长度迅速膨胀。

因此,n-gram 模型虽然给出了早期语言建模的标准形式,却并没有解决“如何稳定地表示长历史”的核心问题。

2.5 从观测序列到隐藏状态

对于许多序列问题,仅仅建模观测符号之间的局部共现还不够。研究者进一步意识到,观测序列往往是某些看不见的内部状态演化所产生的结果。例如,在语音识别中,观测到的是连续声学信号,但更深层上可能对应某种离散音素状态;在词性标注中,观测到的是词序列,而潜在状态可能对应词性类别。

这就引出一个更强的建模思想:把序列看成“隐藏状态链 + 观测生成机制”的组合。设隐藏状态序列为

$$ z_1,z_2,\dots,z_T, $$

其中 $z_t$ 表示第 $t$ 个时刻的潜在状态;观测序列仍记为

$$ x_1,x_2,\dots,x_T. $$

若假设隐藏状态满足一阶马尔可夫性,且每个观测只依赖当前隐藏状态,那么就得到隐马尔可夫模型的基本结构。

这一转变非常关键。n-gram 直接在观测符号上做条件概率建模,而 HMM 则在观测背后引入了一个更抽象的状态层。也就是说,序列建模开始从“表面统计共现”走向“潜在状态驱动的生成过程”。

2.6 隐马尔可夫模型的概率分解

在隐马尔可夫模型中,通常做出两条核心假设。

第一,隐藏状态满足一阶马尔可夫性:

$$ P(z_t\mid z_1,\dots,z_{t-1})=P(z_t\mid z_{t-1}). $$

第二,观测在给定当前状态后与其他变量条件独立:

$$ P(x_t\mid z_1,\dots,z_T,x_1,\dots,x_{t-1},x_{t+1},\dots,x_T)=P(x_t\mid z_t). $$

这里的条件独立假设意味着:当前观测 $x_t$ 只由当前隐藏状态 $z_t$ 生成,而不直接依赖其他时刻的状态或观测。于是,联合分布可以分解为

$$ P(x_{1:T},z_{1:T})=P(z_1)\prod_{t=2}^T P(z_t\mid z_{t-1})\prod_{t=1}^T P(x_t\mid z_t). $$

这个公式是 HMM 的核心。这里 $P(z_1)$ 是初始状态分布,$P(z_t\mid z_{t-1})$ 是状态转移概率,$P(x_t\mid z_t)$ 是发射概率或观测生成概率。它说明,一个序列先由隐藏状态链随时间演化,再由每个状态生成当前观测。

这个分解之所以重要,在于它把复杂序列问题拆成了两个更可理解的部分:一部分描述“系统内部状态如何变化”,另一部分描述“状态如何表现为可见数据”。这比直接在观测符号间做局部共现统计,更接近许多真实时序过程的建模方式。

2.7 HMM 的推断为何需要动态规划

有了联合分布分解后,序列建模的核心任务通常包括两类。第一类是求观测序列的概率

$$ P(x_{1:T}), $$

第二类是寻找最可能的隐藏状态路径

$$ z_{1:T}^\star=\arg\max_{z_{1:T}} P(z_{1:T}\mid x_{1:T}). $$

表面上看,这两个问题都需要枚举全部可能状态序列,而状态序列总数会随 $T$ 指数增长,因此直接计算不可行。HMM 之所以成为经典模型,正是因为它的马尔可夫结构允许使用动态规划。

以向前概率为例,定义

$$ \alpha_t(i)=P(x_1,\dots,x_t,z_t=i), $$

其中 $\alpha_t(i)$ 表示“到时刻 $t$ 为止已经观察到前 $t$ 个观测,并且当前状态为 $i$”的联合概率。则它满足递推

$$ \alpha_t(i)=P(x_t\mid z_t=i)\sum_j \alpha_{t-1}(j)P(z_t=i\mid z_{t-1}=j). $$

这个递推式的含义是:到达当前状态 $i$ 的全部概率质量,可以由前一时刻所有可能状态 $j$ 的概率质量累加而来,再乘上从 $j$ 转移到 $i$ 的转移概率,以及状态 $i$ 生成当前观测 $x_t$ 的概率。

这类动态规划结构说明,序列模型的关键不只是概率分解本身,还在于这种分解是否允许高效推断。HMM 的成功,很大程度上正来自这种“结构化概率模型 + 可递推推断”的结合。

2.8 HMM 的参数学习与 EM 思想

若 HMM 的隐藏状态序列不可观测,那么参数学习就会遇到与第二编高斯混合模型类似的问题:我们只看到观测序列 $x_{1:T}$,却看不到状态序列 $z_{1:T}$。因此,参数估计通常也会借助 EM 思想。

设 HMM 参数统记为

$$ \theta=(\pi,A,B), $$

其中 $\pi$ 表示初始状态分布,$A$ 表示状态转移矩阵,$B$ 表示发射概率参数。训练目标是最大化观测序列对数似然

$$ \log P_\theta(x_{1:T}). $$

由于隐藏状态不可见,这个目标不能直接像完全数据那样简单优化。于是,EM 的基本策略仍然是:先在当前参数下估计隐藏状态的后验分布,再利用这些后验期望更新参数。这一过程在 HMM 中通常对应 Baum-Welch 算法。

这里最重要的不是记住算法名字,而是理解其数学本质:一旦序列模型中引入潜在状态,学习就不再只是对可见频率做计数,而变成了“在隐藏结构上做概率推断,再在该推断结果上做参数更新”的过程。也正是在这里,序列建模和潜变量生成模型开始形成更深层联系。

2.9 早期序列模型的统一结构

把前面几节连起来,可以发现 n-gram 与 HMM 虽然形式不同,但都建立在同一条主线上。首先,它们都以条件概率链为出发点,把序列视为逐步展开的随机过程;其次,它们都通过某种有限记忆机制来控制复杂度,n-gram 用有限上下文窗口,HMM 用有限状态链;再次,它们都试图在“保留历史信息”与“可估计、可推断”之间寻找平衡。

因此,早期序列模型的共同数学精神可以概括为:用可控的状态或上下文压缩历史,再在这个压缩表示上进行条件概率建模。这个思路构成了语言建模、语音识别和时间序列预测的统计起点。

但这也恰恰预示了它们的局限。无论是固定长度上下文,还是有限状态马尔可夫链,本质上都只能表示相对局部、相对简化的依赖结构。随着任务复杂度提高,这种压缩方式会越来越不够灵活。也正因为如此,后面的神经序列模型才会尝试用可学习连续状态去替代这些早期离散、局部和刚性的记忆形式。

3. 代表模型或算法

3.1 n-gram 模型

n-gram 是最典型的早期语言序列模型。模型结构上,它直接使用固定长度上下文来预测当前符号;训练方式上,通常基于语料中的频率统计、平滑与回退策略来估计条件概率;推理方式上,则通过局部上下文近似整个序列概率。

它在本章中的典型性非常强,因为它把“序列是条件概率链”这一思想以最朴素、最透明的方式落实了出来。虽然它对长程依赖无能为力,但它为后面的语言模型路线建立了明确的统计起点。

3.2 隐马尔可夫模型

HMM 是早期序列建模中最有代表性的潜变量模型。结构上,它由初始状态分布、状态转移概率和观测发射概率组成;训练方式上,常借助 EM 或 Baum-Welch 算法;推理方式上,则依赖向前后向递推和最优路径搜索。

它在本章中的典型性在于:它第一次把“序列依赖”与“潜在状态”清晰地结合起来,使研究者不再只停留在观测符号共现,而开始通过状态演化来解释序列生成机制。

4. 典型应用

4.1 语音识别

早期语音识别是 HMM 最经典的应用之一。输入通常是一串随时间展开的声学特征,目标则是推断其背后的音素或词序列。这里最困难的地方在于:声学信号是连续变化的,而真正语言学上有意义的单位并不直接可见。

HMM 在这个任务中的作用,正是用隐藏状态 $z_t$ 去表示潜在音素或子音素状态,再用发射概率

$$ P(x_t\mid z_t) $$

描述状态如何生成观测声学特征。状态转移概率

$$ P(z_t\mid z_{t-1}) $$

则刻画语音内部随时间推进的结构约束。也就是说,语音识别之所以能用 HMM 建模,不是因为它只是一个一般分类问题,而是因为这个任务天然包含“看不见的状态随时间演化,并在每一时刻生成可见信号”的结构。

4.2 词性标注与早期语言处理

在词性标注这类任务中,输入是词序列,输出则是每个位置上的词性标签。这里的标签序列本身具有强烈顺序依赖,因此不能把每个词独立分类。HMM 提供了一种自然写法:把词性视为隐藏状态,把词视为观测。

在这种对应下,本章的数学对象与应用直接一一对应:隐藏状态 $z_t$ 对应词性类别,观测 $x_t$ 对应实际词语,状态转移概率对应词性序列的合法性模式,发射概率对应某种词出现在某类词性下的倾向。因此,词性标注的成功依赖的不是单点分类器,而是“状态链 + 观测生成”的序列结构建模。

4.3 中文输入法与早期语言建模

中文输入法选词优化和早期语言建模,常使用 n-gram 模型来估计词序列或字序列的自然度。给定若干候选输出,系统需要比较哪一个序列在语言上更可能。数学上,这正对应于比较

$$ P(w_1,\dots,w_T) $$

或其 n-gram 近似值。

在这个应用里,n-gram 的数学机制非常直接:有限上下文

$$ (w_{t-n+1},\dots,w_{t-1}) $$

对应当前输入法环境中的局部历史,条件概率

$$ P(w_t\mid w_{t-n+1},\dots,w_{t-1}) $$

则对应在该历史下某个候选词继续出现的可能性。也就是说,输入法中的“更自然句子”并不是靠人工语法规则硬编码出来的,而是通过局部条件概率统计来近似刻画。

4.4 时间序列预测

在一般时间序列预测中,目标通常是利用过去若干时刻的观测去预测未来值。无论是最简单的马尔可夫假设,还是更复杂的状态空间思想,其核心都与本章一致:未来不独立于过去,而是条件依赖于某种历史压缩表示。

若采用一阶马尔可夫近似,则预测本质上可写成

$$ P(x_{t+1}\mid x_t), $$

若采用更长窗口,则变成

$$ P(x_{t+1}\mid x_{t-n+1},\dots,x_t). $$

在这一类应用中,本章的数学意义体现在:序列预测首先不是一个静态回归问题,而是一个“如何压缩历史并在该历史上定义条件分布”的问题。早期序列模型虽然形式简单,却第一次把这一点明确写了出来。

5. 局限性与历史转折

早期序列模型为语言建模、语音识别和时间序列分析提供了极其重要的统计起点,但它们的局限同样清楚。首先,无论是 n-gram 还是一阶或低阶马尔可夫状态模型,本质上都只能保留有限、局部的历史信息。对自然语言而言,真正关键的依赖关系往往可以跨越很长距离;对复杂时间序列而言,系统状态也可能受更长期因素影响。固定窗口或有限状态链因此很容易显得过于刚性。

其次,这些模型的表示能力仍然较弱。n-gram 主要依赖局部统计共现,HMM 依赖离散状态及其转移结构,它们都难以自动形成丰富的连续语义表示。换言之,它们能表达“局部条件概率”和“有限状态演化”,却难以表达高层抽象模式、组合语义和复杂上下文。

再次,随着词表、状态数和任务复杂度提升,这些模型会面临严重的数据稀疏与结构假设瓶颈。n-gram 会因上下文组合爆炸而估计不稳,HMM 则会因状态设计与发射分布假设过强而限制性能。于是,研究者越来越希望找到一种新模型:它既能像序列模型那样保留历史,又能像第三编中的深度学习那样学出更灵活的连续表示。

这就自然推动了下一章的出现。第15章建立了序列建模的统计起点,但也明确暴露出一个核心缺口:历史不能总靠固定窗口和手工状态来压缩。第16章将要回答的,正是如何用神经网络去学习这种随时间演化的内部状态表示。

6. 本章小结

本章讨论了早期序列模型如何为语言、语音与时间序列问题建立最初的数学框架。核心结论是:当数据具有顺序结构时,建模对象不再只是静态样本,而是条件概率链;为了让这一链条可处理,研究者引入了马尔可夫假设、有限上下文窗口和隐藏状态链,从而形成了 n-gram 与 HMM 等经典模型。

这些模型在 AI 发展史上的意义,在于它们第一次把“历史依赖”与“状态演化”正式写成可分析、可估计、可推断的统计对象。但它们也清楚表明,局部统计和有限状态假设无法支撑更复杂的长程依赖与高层语义表示。这正是后续神经序列模型兴起的直接原因。

关键公式

$$ P(x_1,x_2,\dots,x_T)=\prod_{t=1}^T P(x_t\mid x_1,\dots,x_{t-1}) $$
$$ P(x_t\mid x_1,\dots,x_{t-1})\approx P(x_t\mid x_{t-n+1},\dots,x_{t-1}) $$
$$ P(w_1,\dots,w_T)\approx \prod_{t=1}^T P(w_t\mid w_{t-n+1},\dots,w_{t-1}) $$
$$ P(x_{1:T},z_{1:T})=P(z_1)\prod_{t=2}^T P(z_t\mid z_{t-1})\prod_{t=1}^T P(x_t\mid z_t) $$
$$ \alpha_t(i)=P(x_1,\dots,x_t,z_t=i) $$

关键概念

  • 序列建模
  • 条件概率链
  • 马尔可夫假设
  • n-gram
  • 隐马尔可夫模型
  • 隐藏状态
  • 状态转移
  • 动态规划