隐马尔可夫模型简介
隐马尔可夫模型(Hidden Markov Model,HMM)是可用于标注问题的统计学习模型,描述由隐马尔可夫链随机生成观测序列的过程,属于生成模型. 序列的每一个位置被看作是一个时刻.
隐马尔可夫模型的定义
定义 (隐马尔可夫模型)
设 Q Q Q是所有可能的状态的集合, V V 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 = 1 , o 2 , … o T I={i_1,i_2,\dots i_T},\ \ O={_1,o_2,\dots o_T} I=i1,i2,…iT, O=1,o2,…oT
A A A是状态转移概率矩阵:
(1.1) A = [ a i j ] N × N \begin{aligned} A = \Big[a_{ij}\Big]_{N\times N}\tag{1.1} \end{aligned} A=[aij]N×N(1.1)
其中,
(1.2) a i j = P ( i t + 1 = q j ∣ i t = q i ) , i = 1 , 2 , … N a_{ij} = P(i_{t+1}=q_j|i_t=q_i),\ \ \ \ \ i=1,2,\dots N \tag{1.2} aij=P(it+1=qj∣it=qi), i=1,2,…N(1.2)
是在时刻 t t t处于状态 q i q_i qi的条件下在时刻 t + 1 t+1 t+1转移到状态 q j q_j qj的概率.
B B B是观测概率矩阵:
(1.3) B = [ b j ( k ) ] N × M \begin{aligned} B = \Big[b_j(k)\Big]_{N\times M}\tag{1.3} \end{aligned} B=[bj(k)]N×M(1.3)
其中,
(1.4) b j = P ( o t = v k ∣ i t = q j ) , k = 1 , 2 , … M , j = 1 , 2 , … N b_j = P(o_t=v_k|i_t=q_j),\ \ \ \ \ k=1,2,\dots M,j=1,2,\dots N \tag{1.4} bj=P(ot=vk∣it=qj), k=1,2,…M,j=1,2,…N(1.4)
是在时刻 t t t处于状态 q j q_j qj的条件下生成观测 v k v_k vk的概率.
π \pi π是初始状态概率向量:
隐马尔可夫模型由初始状态概率向量 π \pi π、状态转移概率矩阵 A A A和观测概率矩阵 B B B决定, A A A和 π \pi π决定状态序列, B B B决定观测序列。隐马尔可夫模型 λ \lambda λ可以用三元符号表示
(1.5) λ = ( A , B , π ) \lambda=(A,B,\pi)\tag{1.5} λ=(A,B,π)(1.5)
π \pi π、 B B B、 A A A称为隐马尔可夫模型的三要素.
隐马尔科夫模型的两个基本假设:
- 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻 t t t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t t t无关.
(1.6) P ( i t ∣ i t − 1 , o t − 1 , … , i 1 , o 1 ) = P ( i t ∣ i t − 1 ) , t = 1 , 2 , … T P(i_t|i_{t-1},o_{t-1},\dots,i_1,o_1) = P(i_t|i_{t-1}), t=1,2,\dots T \tag{1.6} P(it∣it−1,ot−1,…,i1,o1)=P(it∣it−1),t=1,2,…T(1.6) - 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关.
(1.7) P ( o t ∣ i T , o T , … , i t + 1 , o t + 1 , i t , i t − 1 , o t − 1 , ​ ⋯ 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_T,o_T,\dots,i_{t+1},o_{t+1},i_t,i_{t-1},o_{t-1},\dotsi_1,o_1) = P(o_t|i_t) \tag{1.7} P(ot∣iT,oT,…,it+1,ot+1,it,it−1,ot−1,⋯1,o1)=P(ot∣it)(1.7)
隐马尔可夫模型可以用于标注,这是2状态对应着标记.
隐马尔可夫模型的三个基本问题
-
概率计算问题.
给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = 1 , o 2 , … o T O={_1,o_2,\dots o_T} O=1,o2,…oT,计算在模型 λ \lambda λ下观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ).
-
学习问题
已知观测序列 O = 1 , o 2 , … o t O={_1,o_2,\dots o_t} O=1,o2,…ot,估计模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)的参数,使得在该模型下观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)最大.即用极大似然估计的方法估计参数. -
预测问题,也称为解码问题.
已知模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = 1 , o 2 , … o t O={_1,o_2,\dots o_t} O=1,o2,…ot,求对给定观测序列条件概率 P ( I ∣ O ) P(I|O) P(I∣O)最大的状态子序列 I = ( i 1 , i 2 , … i T ) I=(i_1,i_2,\dots i_T) I=(i1,i2,…iT).即给定观测序列,求最有可能的对应的状态序列.
概率计算算法
直接计算法
给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列 O = 1 , o 2 , … o t O={_1,o_2,\dots o_t} O=1,o2,…ot,计算观测序列出现的概率 P ( O ∣ λ ) P(O|\lambda) P(O∣λ).最直接的方法是按概率公式直接计算.通过列举所有可能的长度为 T T T的状态序列 I = ( i 1 , i 2 , … i T ) I=(i_1,i_2,\dots i_T) I=(i1,i2,…iT),求各个状态序列与观测序列的联合概率 P ( O , I ∣ λ ) P(O,I|\lambda) P(O,I∣λ),然后对所有可能的状态序列求和,得到 P ( O ∣ λ ) P(O|\lambda) P(O∣λ).
状态序列 I = ( i 1 , i 2 , … i T ) I=(i_1,i_2,\dots i_T) I=(i1,i2,…iT)的概率是
(2.1) P ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 ⋯ a i T − 1 i T P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\cdots a_{i_{T-1}i_T} \tag{2.1} P(I∣λ)=πi1ai1i2ai2i3⋯aiT−1iT(2.1)
对固定的状态序列 I = ( i 1 , i 2 , … i T ) I=(i_1,i_2,\dots i_T) I=(i1,i2,…iT),观测序列 O = { o 1 , o 2 , … o t } O=\{o_1,o_2,\dots o_t\} O={
o1,o2,…ot}的概率是 P ( O ∣ I , λ ) P(O|I,\lambda) P(O∣I,λ),
(2.2) P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ⋯ b i T ( o T ) P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}\cdots b_{i_T}(o_T)\tag{2.2} P(O∣I,λ)=