隐马尔可夫模型 (hidden Markov model. HMM) 是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。
1 隐马尔可夫模型的基本概念
1.1 隐马尔可夫模型的定义
定义: 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列 , 再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence ) ;每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequence )。序列的每一个位直又可以看作是一个时刻。
隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔可夫模型的形式定义如下:
-
设 Q Q Q 是所有可能状态的集合;每个状态可以产生各种观测,设 V V V 是所有可能观测的集合。 Q , V Q,V Q,V 的定义如下: Q = { q 1 , q 2 , … , q N } , V = { v 1 , v 2 , … , v M } Q=\{q_1,q_2,\dots, q_N\},\;\;V=\{v_1,v_2,\dots,v_M\} Q={ q1,q2,…,qN},V={ v1,v2,…,vM},其中, N N N是可能的状态数, M M M是可能的观测数。注意,这里的状态和观测不一定是数字,也可以是各种具体的对象。
-
I I I 为长度为 T T T的模型状态序列,定义 O O O 为对应的观测序列。 I = ( i 1 , i 2 , … , i T ) , O = ( o 1 , o 2 , … , o T ) I=(i_1,i_2,\dots,i_T),\;\;O=(o_1,o_2,\dots,o_T) I=(i1,i2,…,iT),O=(o1,o2,…,oT)
隐马尔可夫模型由以下三个分布决定,因此可以用一个三元符号表示: λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)
-
π \pi π是初始状态概率分布,时间 t = 1 t=1 t=1处于 q i q_i qi的概率定义为:
π = [ π 1 , π 2 , … , π N ] T π i = P ( i 1 = q i ) , i = 1 , 2 , … , N \begin{aligned}&\pi = [\pi_1,\pi_2,\dots,\pi_N]^T\\ &\pi_i=P(i_1=q_i),\;\;i = 1,2,\dots,N \end{aligned} π=[π1,π2,…,πN]Tπi=P(i1=qi),i=1,2,…,N -
A A A是状态转移概率分布,时刻t处于状态 q i q_i qi的条件下在下一时刻 t + 1 t+1 t+1转移到状态 q j q_j qj的概率。
A = [ a i j ] N × N a i j = P ( i t + 1 = q j ∣ i t = q i ) , i , j = 1 , 2 , … , N \begin{aligned} &A = [a_{ij}]_{N\times N}\\& a_{ij} = P(i_{t+1}=q_j|i_t=q_i),\ \ \ i,j = 1,2,\dots ,N\end{aligned} A=[aij]N×Naij=P(it+1=qj∣it=qi), i,j=1,2,…,N -
B B B是观测概率分布,在时刻 t t t处于状态 q j q_j qj的条件下生成观测 v k v_k vk的概率。
B = [ b j ( k ) ] N × M b j ( k ) = P ( o t = v k ∣ i t = q j ) , k = 1 , 2 , … , M , j = 1 , 2 , … , N \begin{aligned} &B = [b_{j}(k)]_{N\times M}\\ & b_{j}(k) = P(o_t=v_k|i_t=q_j),\ \ k=1,2,\dots,M,j=1,2,\dots,N \end{aligned} B=[bj(k)]N×Mbj(k)=P(ot=vk∣it=qj), k=1,2,…,M,j=1,2,…,N
状态转移概率矩阵 A A A 与初始状态概率向量 π \pi π 确定了隐藏的马尔可夫链,生成不可观测的状态序列。观测概率矩阵 B B B 确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。
1.2 HMM基本假设
从定义可知,HMM做了两个基本假设:
-
齐次马尔可夫性假设。任意时刻 t t t 的状态只依赖于前一时刻的状态,与其它时刻的状态及观测无关: P ( i t ∣ i t − 1 , o t − 1 , … , i 1 , o 1 ) = P ( i t ∣ i t − 1 ) P(i_t|i_{t-1},o_{t-1},\dots,i_1,o_1) = P(i_t|i_{t-1}) P(it∣it−1,ot−1,…,i1,o1)=P(it∣it−1)
注意,以上条件概率中将除 i t − 1 i_{t-1} it−1以外的条件去掉,是因为 i t − 1 i_{t-1} it−1已知,并且没有之后时刻的状态或观测作为条件。如果 i t − 1 i_{t-1} it−1未知,则可以去掉 t t t时刻之前的条件中,离 t t t最近的 t − t^- t−之前的状态和观测(包含 t − t^- t−时刻的观测)。如: P ( i t ∣ i t − 2 , o t − 2 , i t − 3 , i t − 4 ) = P ( i t ∣ i t − 2 ) P(i_t|i_{t-2},o_{t-2},i_{t-3},i_{t-4}) = P(i_t|i_{t-2}) P(it∣it−2,ot−2,it−3,it−4)=P(it∣it−2)
另外,假如有之后时刻的状态,计算的概率就是后验概率了,那么之后时刻的状态作为条件来说也不能去掉。但是可以去掉 t t t时刻之后的条件中,离 t t t最近的 t + t^+ t+之后的状态和观测(包含 t + t^+ t+时刻的观测)如: P ( i t ∣ i t − 2 , i t − 1 , o t − 1 , o t + 1 , i t + 2 , o t + 2 , o t + 3 ) = P ( i t ∣ i t − 1 , o t + 1 , i t + 2 ) P(i_t|i_{t-2},i_{t-1},o_{t-1},o_{t+1},i_{t+2},o_{t+2},o_{t+3}) = P(i_t|i_{t-1},o_{t+1},i_{t+2}) P(it∣it−2,it−1,ot−1,ot+1,it+2,ot+2,ot+3)=P(it∣it−1,ot+1,it+2)
总之,就是近的状态已知,远的状态对于计算条件概率来说就没有意义了。
-
观测独立性假设。任意时刻的观测只依赖于此刻的状态,与其它无关: P ( o t ∣ i t , o t − 1 , … , i 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_t,o_{t-1},\dots,i_1,o_1) = P(o_t|i_t) P(ot∣it,ot−1,…,i1,o1)=P(ot∣it)
这个条件概率和上面也一样,也是近的状态已知,远处的状态作为条件就无意义。
1.3 观测序列的生成过程
根据隐马尔可夫模型定义,可以将一个长度为 T T T 的观测序列 O = ( o 1 , o 2 , … , o T ) O=(o_1,o_2,\dots,o_T) O=(o1,o2,…,oT)的生成过程描述如下:
- 输入:隐马尔可夫模型 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π),观测序列长度 T T T;
- 输出:观测序列 O = ( o 1 , o 2 , … , o T ) O=(o_1,o_2,\dots,o_T) O=(o1,o2,…,oT)。
- (1) 按照初始状态分布 π \pi π 产生状态 i 1 i_1 i