隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型:系统背后有一串看不见的状态,按"只看前一步"的规则演变;我们只能看到每个状态随机吐出的结果,再反推状态。
打个比方。 朋友在隔壁房间,每天做一件事:散步、购物或打扫。你看不到他,只能看到他的朋友圈——散步的人多半发风景照,购物的人多半发商场照。看到一张地板照,你能猜"他今天大概在打扫";连看几天,还能顺出他的状态轨迹。照片是观测,他实际在干嘛是隐状态。
HMM 只靠三样东西运转:初始概率(第一天更可能在干嘛)、转移概率(散步后多大概率去购物)、发射概率(散步时多大概率发风景照)。它还有两个强假设:今天的状态只与昨天有关,今天的观测只与今天的状态有关。假设够狠,换来的是动态规划的高效求解:前向算法算观测概率,Viterbi 算法反推最可能的状态序列,Baum-Welch 从数据里学参数(本质是 EM 的特例)。
和邻居们的区别
| 模型 | 隐状态 | 建模对象 | 一句话 |
|---|---|---|---|
| 马尔可夫链 | 无,状态可见 | P(状态) | 天气直接告诉你 |
| HMM | 有,离散 | P(观测, 状态),生成式 | 只看照片猜天气 |
| 条件随机场(CRF) | 无 | P(状态|观测),判别式 | 能用全局特征,标注常更强 |
| 卡尔曼滤波 | 有,连续 | 线性高斯版 HMM | 状态是位置、速度这类连续量 |
语音识别的黄金年代
上世纪八九十年代到深度学习兴起之初,语音识别的主流就是 HMM:每个音素建一个 HMM,拆成三五个状态对应发音的起始、稳定、收尾;发射概率早期由高斯混合模型(GMM)估计,后来换成神经网络,也就是 DNN-HMM 混合系统。解码时用 Viterbi 在巨大的状态网络里搜一条最优路径,路径对应的文字就是识别结果。这套框架统治了三十年。
今天还在哪儿干活
端到端模型(CTC、RNN-T、注意力编码解码器)接替了主角位置,HMM 退到管道里继续上班:
- 强制对齐:给音频和已知文本打时间戳,用于字幕、发音评测、语音合成训练数据。
- 分词:不少分词器用词典加 HMM 兜底,专治词典里没有的新词。
- 序列标注基线:词性标注、命名实体识别、基因序列分析,常是最先跑通的那条线。
- 思想遗产:CTC 把所有对齐路径的概率求和,用的前向后向算法与 HMM 同一血脉。
对从业者和普通人的意义
HMM 把三个母题打包教给你:隐变量、动态规划、EM 训练。今天的对齐、CTC 解码、概率图模型,都是它们的变奏。对普通人来说,输入法能把"南京市长江大桥"切对、录音转写能给每句话标上时间点,背后就可能有个 HMM 在悄悄干活。
