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=qj∣it=qi),表示从时刻t→t+1t \to t+1t→t+1,隐状态从qi→qjq_i \to q_jqi→qj的概率,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=vk∣it=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+1t→t+1,隐状态从it→it+1i_t \to i_{t+1}it→it+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(it∣i1,...,it−1;o1,...,ot−1)=P(it∣it−1)
其中,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(ot∣o1,...,ot−1,ot+1,...,oT;i1,...,it−1,it,it+1,...,iT)=P(ot∣it)
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(I∣O)最大的状态序列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(I∣O,λ)}
观测序列的生成过程
对于长度为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π→i1→o1
i1→i2→o2i_1 \to i_2 \to o_2i1→i2→o2
i2→i3→o3i_2 \to i_3 \to o_3i2→i3→o3
.........
iT−1→iT→oTi_{T−1} \to i_T \to o_TiT−1→iT→oT