LOADING

加载过慢请开启缓存 浏览器默认开启

马尔科夫链和隐马尔科夫链的基础知识

1. 基础:马尔可夫链(Markov Chain)

  • ​是什么?​​ 一个马尔可夫链描述一个系统在​​时间(或序列)​​ 上的演变,其中系统在任何时刻只可能处于有限个​​状态​​中的某一个。
  • ​核心假设(马尔可夫性):​​ 系统在下一个时刻处于哪个状态​​只取决于当前时刻的状态​​,而与之前更早的历史状态无关。这就是著名的“​​无记忆性​​”。
  • ​可见性:​​ 在一个标准的马尔可夫链中,系统的状态在​​每个时刻都是直接可见的​​。
  • ​关键要素:​​ 状态集合、状态转移概率矩阵(描述了从一个状态转移到另一个状态的概率)。
  • ​例子:​​ 天气预报。假设只有“晴天”和“雨天”两种状态。今天的天气状态是“晴天”。马尔可夫链会告诉我们明天是晴天的概率有多大(比如 70%),转成雨天的概率有多大(比如 30%)。你每天都能直接观察到天气状态(晴或雨)。

2. 关键升级:为什么叫“隐”?HMM 来了

  • ​核心问题:​​ 在现实中,很多时候我们无法直接观测到系统的​​真实状态​​,我们只能观测到一些与这些状态相关的、或由这些状态​​产生​​的现象或数据。
  • ​“隐”的含义:​​ 在 HMM 中,系统仍然在一系列​​隐藏(或潜在)状态​​之间按照马尔可夫链的规则转移,但这些状态本身​​我们是看不到的​​!
  • ​可观测的是什么?​​ 在每个时刻,当系统处于某个隐藏状态时,它会以一定的概率​​产生(或发射)一个我们可以观察到的符号(或观测值)​​。
  • ​需要模型化的额外要素:​​ 除了状态转移概率,我们还需要知道每个隐藏状态下产生各个观测值的概率分布(称为“​​观测(发射)概率矩阵​​”)。

3. HMM 的关键组成要素(五元组)

一个标准的 HMM 由以下五个部分定义:

  1. ​隐藏状态集合:​​ 系统真正存在的、但不可见的状态的集合。例如:在天气预测中,隐藏状态可能是{晴天, 雨天}(但你可能看不到真实天气)。
  2. ​可观测符号集合:​​ 系统在每个时刻产生的、我们可以实际看到或测量到的符号或值的集合。例如:你只能看到朋友的行为{打伞, 戴墨镜}。
  3. ​状态转移概率矩阵 (A):​​ 描述在当前隐藏状态下,下一个时刻转移到各个其他隐藏状态的概率。这是一个 N x N 的矩阵(N 是隐藏状态数)。它体现了马尔可夫性。
  4. ​观测概率矩阵 (B):​​ 描述在某个给定的隐藏状态下,产生某个特定观测符号的概率。这是一个 N x M 的矩阵(N 是隐藏状态数,M 是可观测符号数)。
  5. ​初始状态概率分布 (π):​​ 描述在序列开始时(时间 t=0),系统处于各个隐藏状态的概率。是一个长度为 N 的向量。

4. 经典的 HMM 例子(也是最容易理解的)

​场景:​​ 你有一个住得很远的朋友,每天只能通过电话知道他的行为:他是​​打伞​​还是​​戴墨镜​​。你不知道他那边的真实天气(晴天还是雨天)。

  • ​隐藏状态 (States):​​ 晴天, 雨天(这是你不知道但想知道的)。
  • ​可观测符号 (Observations):​​ 打伞, 戴墨镜(这是你唯一能知道的)。
  • ​状态转移概率 (A):​
    • 晴天 -> 晴天的概率:0.7
    • 晴天 -> 雨天的概率:0.3
    • 雨天 -> 晴天的概率:0.4
    • 雨天 -> 雨天的概率:0.6
  • ​观测概率 (B):​
    • 在晴天:
      • 戴墨镜的概率:0.8
      • 打伞的概率:0.2 (例如,防晒)
    • 在雨天:
      • 戴墨镜的概率:0.1 (很反常的情况)
      • 打伞的概率:0.9
  • ​初始状态概率 (π):​​ 第一天是晴天的概率是 0.6,是雨天的概率是 0.4。

5. HMM 能解决的三大基本问题

  1. ​评估问题:​​ 给定一个 HMM 模型参数 (A, B, π) 和一个观测序列 O(比如朋友一周的行为序列:戴墨镜、戴墨镜、打伞、打伞、戴墨镜),计算这个观测序列 ​​O 由该模型生成的概率 P(O | λ)​​。这能帮助你判断哪个模型(可能参数不同)更可能产生了你观测到的数据。
    • ​算法:​​ ​​前向算法​​或​​后向算法​​(都是高效的动态规划方法)。
  2. ​解码问题:​​ 给定一个 HMM 模型参数 (A, B, π) 和一个观测序列 O,找到最有可能产生这个观测序列 O 的​​隐藏状态序列​​。这就是尝试“揭开谜底”——最有可能的真实天气序列是什么?
    • ​算法:​​ ​​维特比算法​​(同样是高效的动态规划算法,能找到全局最优路径)。
  3. ​学习问题:​​ 给定一个或多个观测序列 O,但不知道模型参数 (A, B, π),如何调整这些参数,使得模型最好地“解释”观察到的数据(即最大化 P(O | λ))。这相当于从数据中“学习”出模型。
    • ​算法:​​ ​​Baum-Welch 算法​​(是 EM 算法在 HMM 中的具体实现)。

6. HMM 的应用领域

HMM 非常适合处理​​时间序列数据​​或​​序列数据​​,其中​​真实状态未知,需要通过观测值序列进行推断​​。经典应用包括:

  • ​语音识别:​​ 隐藏状态是音素(如 “a”, “b”, “c”),观测值是麦克风捕捉到的声学信号(频谱特征)。通过观测信号推断最可能的音素序列(也就是说什么单词)。
  • ​自然语言处理:​
    • ​词性标注:​​ 隐藏状态是词性(名词、动词等),观测值是单词序列。通过单词序列推断每个单词的词性。
    • ​命名实体识别:​​ 隐藏状态是实体类型(人名、地名、机构名等),观测值是单词序列。
  • ​生物信息学:​
    • ​基因序列分析:​​ 例如预测DNA序列中的编码区(外显子)和非编码区(内含子) - 隐藏状态。
    • ​蛋白质结构预测:​​ 隐藏状态是二级结构(α螺旋、β折叠等),观测值是氨基酸序列。
  • ​金融时间序列分析:​​ 隐藏状态可能是市场机制(牛市、熊市),观测值是股价、交易量等。
  • ​手写识别:​​ 隐藏状态是字母或笔画,观测值是笔的坐标轨迹点序列。
  • ​动作识别:​​ 隐藏状态是动作类别(走路、跑步、跳跃),观测值是传感器数据(如加速度计、陀螺仪)。

总结

  • ​HMM 核心:​​ 是一个​​双重随机过程​​。
    • 第一层:一个​​不可见的(隐藏的)状态序列​​,按照​​马尔可夫链​​(状态转移概率 A)在时间上演进。
    • 第二层:一个​​可见的(可观测的)符号序列​​,每个符号由其​​对应的隐藏状态​​根据​​观测概率 B​​ “产生”。
  • ​目的:​​ 当只能看到观测值序列时,通过建立 HMM 模型,来解决评估序列概率、找出最可能的隐藏状态序列、或者学习模型参数本身的问题。
  • ​与马尔可夫链的关键区别:​​ 马尔可夫链的状态是​​可见的​​,重点在状态转移本身。HMM 的状态是​​不可见(隐藏)的​​,重点在于如何通过观测值序列来​​理解和推断​​隐藏的状态序列及其转移规律。

简单来说,马尔可夫链告诉你“看得见的状态怎么变”,而隐马尔可夫模型解决的是“看不见的状态怎么变,以及它们和看得见的东西有什么关系”。它是在处理状态不确定的序列问题时非常强大和基础的建模工具。