隐马尔可夫模型是什么?用看不见的状态序列解释看得见的观测
隐马尔可夫模型(Hidden Markov Model,HMM)是一种用来描述含有隐藏状态的序列数据的概率模型。它假设我们观察到的一串数据背后,有一串看不见的“状态”在按照一定的规律变化,每个状态会以一定的概率产生我们看到的观测。这一模型由 Leonard Baum 等人在 20 世纪 60 年代末到 70 年代初提出,并在语音识别领域取得了巨大的成功。
一个经典的例子
假设你有一位住在外地的朋友,你看不到他那里的天气,但每天他都会告诉你他做了什么:散步、购物或者打扫房间。你知道他的习惯:晴天时他更可能去散步,雨天时他更可能在家打扫。天气本身也有规律:晴天之后第二天大概率还是晴天,雨天也倾向于持续。现在,根据他一周的活动记录,你能推测出这一周的天气吗?这里,天气就是隐藏的状态,你看不到;朋友的活动就是观测。隐马尔可夫模型就是描述这类问题的工具。
模型的组成
隐马尔可夫模型由三组概率来描述。初始状态概率:序列开始时处于各个状态的概率,比如第一天是晴天的概率。状态转移概率:从一个状态转移到另一个状态的概率,比如今天晴、明天下雨的概率。它遵循马尔可夫性质:明天的天气只取决于今天,与更早的天气无关。发射概率,也叫观测概率:在某个状态下产生各种观测的概率,比如雨天时朋友打扫房间的概率。模型还有一个假设:每个时刻的观测只取决于当时的状态。
三个基本问题
评估问题:给定模型和一串观测,计算这串观测出现的概率有多大。比如判断一段语音更像是哪个词的发音。如果穷举所有可能的状态序列,计算量会随序列长度呈指数增长,而前向算法利用动态规划,可以高效地完成计算。解码问题:给定模型和一串观测,找出最可能的隐藏状态序列,比如推测这一周最可能的天气。这用维特比算法来解决,它由 Andrew Viterbi 在 1967 年为解码卷积码而提出,同样基于动态规划,逐步记录到达每个状态的最优路径。学习问题:只有观测数据,没有隐藏状态的标注,如何估计模型的三组概率?这用 Baum-Welch 算法来解决,它是期望最大化算法的一个特例,结合了前向和后向两个方向的计算,反复地推断隐藏状态、更新概率,直到收敛。
应用与地位
语音识别:从 20 世纪 70 年代起,IBM 的 Frederick Jelinek 和卡内基梅隆大学的 James Baker 等人把隐马尔可夫模型用于语音识别,用隐藏状态表示发音单元,观测是声音的特征。此后几十年,结合高斯混合模型的隐马尔可夫模型一直是语音识别的主流方法,直到 2010 年代被深度神经网络取代。Lawrence Rabiner 在 1989 年发表的教程论文被广泛引用。自然语言处理:词性标注、分词、命名实体识别中,词性或标签是隐藏状态,词语是观测。生物信息学:基因识别、蛋白质结构分析、序列比对。此外还被用于手写识别、金融时间序列分析、行为识别等。后来,条件随机场在序列标注任务中通常表现更好,深度学习方法又进一步取代了它们,但隐马尔可夫模型清晰的概率结构和高效的算法,使它至今仍是理解序列建模的经典模型。