生动比喻:天气与你的行为
想象一个住在你房间里的朋友,他只能通过看你每天带什么东西出门(观测)来猜测外面的天气(隐藏状态)。

- 隐藏状态:每天的天气。
晴天、雨天、阴天,这些状态对你的朋友来说是看不见的。 - 观测状态:你每天带出门的东西。
太阳镜、雨伞、夹克,这些是你的朋友能直接看到的。 - 核心假设:
- 马尔可夫性:今天的天气(隐藏状态)只依赖于昨天的天气,与更早的天气无关。
- 观测独立性:你今天带什么东西(观测状态)只依赖于今天的天气,与昨天的天气或昨天的行为无关。
HMM 的五大核心要素
一个标准的 HMM 由以下五个部分定义,通常用 λ = (A, B, π) 来表示:
- 状态集合
Q:所有可能的隐藏状态。{晴天, 雨天, 阴天}。 - 观测集合
V:所有可能的观测值。{太阳镜, 雨伞, 夹克}。 - 状态转移概率矩阵
A:描述了隐藏状态之间转换的概率。a_{ij} = P(明天状态是 j | 今天状态是 i)P(明天雨天 | 今天晴天) = 0.1, 意味着如果今天是晴天,明天有10%的概率下雨。
- 观测概率矩阵
B:描述了在某个隐藏状态下,产生某个观测值的概率。b_j(k) = P(观测到 k | 当前状态是 j)P(带太阳镜 | 晴天) = 0.8, 意味着如果是晴天,你有80%的概率会带太阳镜。
- 初始状态概率分布
π:描述了第一天各种天气出现的初始概率。π_i = P(第一天状态是 i)P(第一天晴天) = 0.6。
HMM 解决的三大经典问题
这是理解 HMM 价值的关键,给定模型 λ = (A, B, π) 和一系列观测序列 O = (o1, o2, ..., oT)([太阳镜, 夹克, 太阳镜, 雨伞]),我们可以解决以下问题:
-
评估问题 (Evaluation Problem)
- 问题:给定模型
λ和观测序列O,计算这个观测序列出现的概率P(O|λ)。 - 意义:判断哪个模型更可能产生我们观测到的数据,比较两个不同的天气-行为模型,看哪个更符合你朋友观察到的你的行为序列。
- 算法:前向算法 或后向算法,通过动态规划高效计算,避免穷举所有可能的状态路径。
- 问题:给定模型
-
解码问题 (Decoding Problem)
- 问题:给定模型
λ和观测序列O,找出最有可能产生这个观测序列的隐藏状态序列I = (i1, i2, ..., iT)。 - 意义:这就是你朋友在干的事情!根据你带
[太阳镜, 夹克, 太阳镜, 雨伞],推测最可能的天气序列是[晴天, 阴天, 晴天, 雨天]。 - 算法:维特比算法,一种动态规划算法,用于寻找全局最优路径(概率最大的状态序列)。
- 问题:给定模型
-
学习问题 (Learning Problem)
- 问题:给定一个观测序列
O(甚至可能对应一些已知的状态序列),如何调整模型参数λ = (A, B, π),使得该模型产生这个观测序列的概率P(O|λ)最大。 - 意义:从历史数据中学习规律,给你过去一年你带出门的东西记录,以及可能的一些天气报告,让模型自己总结出天气变化的规律(A)和不同天气下你行为的规律(B)。
- 算法:鲍姆-韦尔奇算法,它是期望最大化算法的一个特例,如果状态序列已知,则可以直接通过频率来估计(最大似然估计)。
- 问题:给定一个观测序列
应用实例
- 语音识别:
- 隐藏状态 -> 音素(如 /k/, /æ/, /t/)。
- 观测状态 -> 从音频信号中提取的声学特征。
- 解码 -> 根据声音特征序列,找出最可能的音素序列,进而组成单词。
- 词性标注:
- 隐藏状态 -> 词性标签(名词、动词、形容词等)。
- 观测状态 -> 单词本身。
- 解码 -> 给一个句子(单词序列),标注出每个单词最可能的词性。
- 生物序列分析:
- 隐藏状态 -> 基因编码区、非编码区等。
- 观测状态 -> DNA 碱基(A, T, C, G)。
- 解码 -> 在DNA序列中识别出基因区域。
总结与局限
HMM 的核心思想是用一个双重随机过程来描述系统:一层是看不见的、遵循马尔可夫链的状态转移;另一层是和每个隐藏状态相关的、能产生可见观测的随机过程。
局限性:
- 观测独立性假设较强,现实中当前的观测可能依赖于之前的观测。
- 本质上是生成模型,对长程依赖建模能力较弱。
- 由于这些限制,在许多更复杂的序列建模任务中,HMM 已被循环神经网络、长短期记忆网络和Transformer等模型所补充或替代,但它所提供的基本概率框架和三大问题解决方案,仍然是理解序列模型的重要基石。