HMM的基本概念

本文详细介绍了隐马尔科夫模型(HMM)的核心概念,包括变量定义、基本假设及三大问题:概率计算、参数学习与预测问题。同时,还阐述了观测序列的生成过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HMM的变量定义

两个集合

  • 长度为NNN隐状态集合Q={q1,q2,...,qN}Q = \{q_1,q_2,...,q_N\}Q={q1,q2,...,qN}
  • 长度为MMM观测值集合V={v1,v2,...,vM}V = \{v_1,v_2,...,v_M\}V={v1,v2,...,vM}

两个序列

  • 长度为TTT隐状态序列I={i1,i2,...,iT}I = \{i_1,i_2,...,i_T\}I={i1,i2,...,iT}
  • 长度为TTT观测值序列O={o1,o2,...,oT}O = \{o_1,o_2,...,o_T\}O={o1,o2,...,oT}

【注】集合序列的区别在于,前者是指不重复的类别个数(包括NNN类隐状态、MMM类观测值);后者是指在TTT个时间点上,各观测值ot∈{v1,v2,...,vM}o_t \in \{v_1,v_2,...,v_M\}ot{v1,v2,...,vM}及其对应的隐状态it∈{q1,q2,...,qN}i_t \in \{q_1,q_2,...,q_N\}it{q1,q2,...,qN}

三个参数

  • 状态转移概率矩阵N×NN \times NN×N阶)A=[aij]N×NA = [a_{ij}]_{N×N}A=[aij]N×N其中,aij=P(it+1=qj∣it=qi)aij=P(i_{t+1}=q_j | i_t=q_i)aij=P(it+1=qjit=qi),表示从时刻t→t+1t \to t+1tt+1,隐状态从qi→qjq_i \to q_jqiqj的概率,i∈{1,2,...,N}i \in \{1,2,...,N\}i{1,2,...,N}j∈{1,2,...,N}j \in \{1,2,...,N\}j{1,2,...,N}

  • 观测概率/发射概率矩阵N×MN \times MN×M阶)B=[bj(k)]N×MB=[b_j(k)]_{N×M}B=[bj(k)]N×M其中,bj(k)=P(ot=vk∣it=qj)b_j(k)=P(o_t=v_k | i_t=q_j)bj(k)=P(ot=vkit=qj),表示时刻ttt处于状态qjq_jqj的条件下,生成的观测值为vkv_kvk的概率,j∈{1,2,...,N}j \in \{1,2,...,N\}j{1,2,...,N}k∈{1,2,...,M}k \in \{1,2,...,M\}k{1,2,...,M}

  • 初始状态概率向量π=(πi)\pi = (\pi_i)π=(πi)其中,π=P(i1=qi)\pi = P(i_1=q_i)π=P(i1=qi),表示在初始时刻t=1t=1t=1,各个状态的取值概率,i∈{1,2,...,N}i \in \{1,2,...,N\}i{1,2,...,N}

【注】:HMM的隐状态必须是离散型变量,因此从时刻t→t+1t \to t+1tt+1,隐状态从it→it+1i_t \to i_{t+1}itit+1的转移概率必然是离散的,必然是由单个矩阵AN×NA_{N \times N}AN×N表示;而观测值不一定非得是离散型变量,也有可能是连续型。简单起见,这里以离散型观测值为例,此时发射概率由单个矩阵BN×MB_{N \times M}BN×M表示。


HMM的基本假设

两个假设

  • 齐次马尔科夫假设

即假设隐藏的马尔科夫链在任意时刻ttt的状态,只依赖于其前一时刻的状态,而与其他时刻的状态、观测无关,也与时刻ttt无关:P(it∣i1,...,it−1;o1,...,ot−1)=P(it∣it−1)P(i_t | i_1,...,i_{t−1};o_1,...,o_{t−1}) = P(i_t | i_{t−1})P(iti1,...,it1;o1,...,ot1)=P(itit1)
其中,t∈{1,2,...,T}t \in \{1,2,...,T\}t{1,2,...,T}

  • 观测独立性假设

即假设任意时刻的观测,只依赖于该时刻的马尔科夫链的状态,而与其他观测、状态无关:P(ot∣o1,...,ot−1,ot+1,...,oT;i1,...,it−1,it,it+1,...,iT)=P(ot∣it) P(o_t | o_1,...,o_{t−1},o_{t+1},...,o_T;i_1,...,i_{t−1},i_t,i_{t+1},...,i_T)=P(o_t | i_t)P(oto1,...,ot1,ot+1,...,oT;i1,...,it1,it,it+1,...,iT)=P(otit)


HMM的基本问题

三个问题

  • 概率计算问题(Forward-Backward algorithm)

给定模型参数λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)和观测序列O=(o1,o2,...,oT)O = (o_1,o_2,...,o_T)O=(o1,o2,...,oT),计算在模型λ\lambdaλ下,观测序列OOO出现的概率:P(O∣λ)P(O | \lambda)P(Oλ)

  • 参数学习问题(Baum-Welch algorithm)

已知观测序列O=(o1,o2,...,oT)O = (o_1,o_2,...,o_T)O=(o1,o2,...,oT),估计模型的参数λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π),使得在该模型下,观测序列概率P(O∣λ)P(O | \lambda)P(Oλ)最大,即用极大似然估计的方法估计参数:λMLE=argmaxλ{P(O∣λ)}\lambda_{MLE} = \mathop{argmax}_{\lambda} \{P(O | \lambda)\}λMLE=argmaxλ{P(Oλ)}

  • 预测问题/解码问题(Viterbi algorithm)

已知模型λ=(A,B,π)\lambda = (A,B,\pi)λ=(A,B,π)和观测序列O=(o1,o2,...,oT)O = (o_1,o_2,...,o_T)O=(o1,o2,...,oT),计算对于给定的观测序列,能够使条件概率P(I∣O)P(I | O)P(IO)最大的状态序列I=(i1,i2,...,iT)I=(i_1,i_2,...,i_T)I=(i1,i2,...,iT)。即给定观测序列,求最有可能的对应的状态序列:argmaxI{P(I∣O,λ)}\mathop{argmax}_{I} \{P(I | O,\lambda)\}argmaxI{P(IO,λ)}


观测序列的生成过程

对于长度为TTT的观测序列O=(o1,o2,...,oT)O = (o_1,o_2,...,o_T)O=(o1,o2,...,oT),其生成过程如下:
π→i1→o1\pi \to i_1 \to o_1πi1o1
i1→i2→o2i_1 \to i_2 \to o_2i1i2o2
i2→i3→o3i_2 \to i_3 \to o_3i2i3o3
.........
iT−1→iT→oTi_{T−1} \to i_T \to o_TiT1iToT

### HMM(隐马尔可夫模型)的基本思想 隐马尔可夫模型(Hidden Markov Model, HMM)是一种用于描述由隐藏状态驱动的可观测事件序列的概率模型[^1]。它的核心在于通过一系列不可见的状态来解释可见的观测数据,这些隐藏状态之间遵循一定的转移概率规律。 #### 1. 隐含的核心概念 HMM 的基本思想基于两个主要部分: - **隐藏状态**:这是指无法直接观察到的一系列内部状态,它们决定了外部世界所看到的现象。例如,在语音识别中,隐藏状态可能是发音的具体音素;而在天气预报中,则可能代表某种气候趋势或模式。 - **观测值**:这是我们能实际测量的数据点,比如具体的温度读数或者一段录音信号。 两者之间的关系被定义为一种随机过程,其中每一个时刻的观测都依赖于当前的隐藏状态,并且下一刻的隐藏状态仅取决于此刻的隐藏状态(即满足马尔科夫性质)。这一特性使得 HMM 能够有效地捕捉时间序列中的动态行为特征[^2]。 #### 2. 数学表达形式 从数学角度来看,一个标准的 HMM 可以用以下几个关键组件来刻画: - **初始分布 (Initial Distribution)**: 描述第一个隐藏状态出现的可能性大小; - **状态转移矩阵 (Transition Matrix)**: 表达任意两相邻时间段内各对隐藏状态间相互转换的机会比例; - **发射概率/输出概率函数 (Emission Probability Function)**: 它给出了给定某个特定隐藏状态下产生各个可能观测值得可能性程度。 这三者共同构成了所谓的 “HMM 三要素”,也是构建具体应用实例时所需设定的主要参数集合[^3]。 #### 3. 应用场景举例说明 为了更加直观地理解上述抽象理论框架的实际意义,下面列举几个典型例子加以阐释: - 在自然语言处理领域内的词性标注任务里,HMM可用于推测句子中文本单元背后对应的语法类别(名词、动词等),尽管我们看不到确切分类却可以根据词语本身及其上下文线索做出合理猜测; - 对于金融市场分析而言,价格波动背后的经济因素往往难以量化度量,但借助HMM则可以从历史交易记录挖掘出潜在影响因子的变化轨迹. 综上所述,HMM凭借其简洁优雅的设计理念以及强大灵活的表现力成为众多学科研究不可或缺的重要工具之一. ```python import numpy as np # 示例代码展示简单的HMM实现 class SimpleHMM: def __init__(self, pi, A, B): self.pi = pi # 初始状态分布 self.A = A # 状态转移矩阵 self.B = B # 发射概率矩阵 def generate_sequence(self, length): states = [] observations = [] current_state = np.random.choice(len(self.pi), p=self.pi) states.append(current_state) observation = np.random.choice(len(self.B[current_state]), p=self.B[current_state]) observations.append(observation) for _ in range(length - 1): next_state = np.random.choice(len(self.A[current_state]), p=self.A[current_state]) states.append(next_state) observation = np.random.choice(len(self.B[next_state]), p=self.B[next_state]) observations.append(observation) current_state = next_state return states, observations pi_example = [0.6, 0.4] A_example = [[0.7, 0.3], [0.4, 0.6]] B_example = [[0.1, 0.4, 0.5], [0.6, 0.3, 0.1]] hmm_model = SimpleHMM(pi=pi_example, A=A_example, B=B_example) states_seq, obs_seq = hmm_model.generate_sequence(10) print(f"States Sequence: {states_seq}") print(f"Observations Sequence: {obs_seq}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值