时序模型:隐马尔科夫模型(HMM)

1. 隐马尔科夫模型的定义

隐马尔科夫模型(hidden Markov model,HMM),描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态(state)生成一个观测(observation)从而产生观测随机序列的过程。隐藏的马尔科夫链随机生成的状态的序列,称作状态序列(state sequence), 它是模型的标签(target);每个状态生成一个观测而产生的观测的随机序列,称为观测序列(observation sequence),它是模型的特征(features)。序列的每一个位置又可以看作是一个时刻。

2. 隐马尔科夫模型成立的两个基本假设

自然语言处理任务场景中,随机序列(语言序列)的状态多是不可观测的离散型随机变量(如:单词语义、词性等),序列的观测也多是离散型变量(如:文本中的单词);而在语音识别任务中,序列的观测可以是一段连续的单词的声音波形,此时可借助高斯混合模型(Guassian Mixture model,GMM)与隐马尔科夫模型(HMM)联用进行处理。

隐马尔科夫模型(HMM)的成立,默认随机序列满足两个前提假设:即齐次马尔科夫性假设观测独立性假设

设随机序列中,所有可能的状态的集合为 Q Q Q、可能状态的个数为 N N N、所有可能的观测的集合为 V V V、可能观测值的个数为 M M M,则它们的表达式可表示为如下所示:
Q = { q 1 , q 2 , ⋯   , q N } Q = \{q_1, q_2, \cdots, q_N\} Q={q1,q2,,qN} V = { v 1 , v 2 , ⋯   , v M } V = \{v_1, v_2, \cdots, v_M\} V={v1,v2,,vM} S S S 是长度为T的状态序列, O O O是由 S S S 产生的观测序列,它们的表达式如下所示:
S = ( s 1 , s 2 , ⋯   , s T ) S = (s_1, s_2, \cdots, s_T) S=(s1,s2,,sT) O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT)

2.1 齐次马尔科夫性假设

齐次马尔科夫性,假设隐藏的马尔科夫链在任意时刻 t t t 的状态只依赖于它前一时刻的状态,与其他时刻的状态及观测无关,也与时刻 t t t 无关:
P ( s t ∣ s t − 1 , o t − 1 , ⋯   , s 1 , o 1 ) = P ( s t ∣ s t − 1 ) ,      t = 1 , 2 , ⋯   , T P(s_t | s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(s_t | s_{t-1}), \ \ \ \ t=1, 2, \cdots, T P(stst1,ot1,,s1,o1)=P(stst1),    t=1,2,,T

2.2 观测独立性假设

观测独立性,假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关:
P ( o t ∣ s T , o T , s T − 1 , o T − 1 , ⋯   , s t + 1 , o t + 1 ,   s t ,   s t − 1 , o t − 1 , ⋯   , s 1 , o 1 ) = P ( o t ∣ s t ) P(o_t | s_T, o_T, s_{T-1}, o_{T-1}, \cdots, s_{t+1}, o_{t+1}, \ s_t,\ s_{t-1}, o_{t-1}, \cdots, s_1, o_1) = P(o_t | s_t) P(otsT,oT,sT1,oT1,,st+1,ot+1, st, st1,ot1,,s1,o1)=P(otst)

3. 隐马尔科夫模型的表达式

隐马尔科夫模型 λ \lambda λ初始状态概率向量 π \pi π状态转移概率矩阵(transition probability matrix) A A A观测生成概率矩阵(emission probability matrix) B B B 共同决定,其表达式如下所示:
λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)模型中, A A A π \pi π 确定了隐藏的马尔科夫链,决定如何生成不可观测的状态序列; B B B 确定了如何从状态生成观测,与状态序列一起决定产生何种观测序列。如下图所示:
在这里插入图片描述

初始状态概率向量 π \pi π 的表达式可表示为:
π = [ π i ] N × 1 = [ P ( s 1 = q i ) ] N × 1 \pi = [\pi_i]_{N \times 1} = [P(s_1=q_i)]_{N \times 1} π=[πi]N×1=[P(s1=qi)]N×1 π = [ P ( s 1 = q 1 ) , P ( s 1 = q 2 ) , ⋯   , P ( s 1 = q N ) ] T \pi = [P(s_1=q_1), P(s_1=q_2), \cdots, P(s_1=q_N)]^T π=[P(s1=q1),P(s1=q2),,P(s1=qN)]T

状态转移概率矩阵 A A A 的表达式可表示为:
A = [ a i j ] N × N = [ P ( s t + 1 = q j ∣ s t = q i ) ] N × N ,          t = 1 , 2 , ⋯   , T − 1 A = [a_{ij}]_{N \times N} = [P(s_{t+1} = q_j | s_t = q_i)]_{N \times N}, \ \ \ \ \ \ \ \ t=1, 2, \cdots, T-1 A=[aij]N×N=[P(st+1=qjst=qi)]N×N,        t=1,2,,T1 A = ( P ( s t + 1 = q 1 ∣ s t = q 1 ) P ( s t + 1 = q 2 ∣ s t = q 1 ) ⋯ P ( s t + 1 = q N ∣ s t = q 1 ) P ( s t + 1 = q 1 ∣ s t = q 2 ) P ( s t + 1 = q 2 ∣ s t = q 2 ) ⋯ P ( s t + 1 = q N ∣ s t = q 2 ) ⋮ ⋮ ⋱ ⋮ P ( s t + 1 = q 1 ∣ s t = q N ) P ( s t + 1 = q 2 ∣ s t = q N ) ⋯ P ( s t + 1 = q N ∣ s t = q N ) ) A = \begin{pmatrix} P(s_{t+1} = q_1 | s_t = q_1)& P(s_{t+1} = q_2 | s_t = q_1)& \cdots & P(s_{t+1} = q_N | s_t = q_1)\\ P(s_{t+1} = q_1 | s_t = q_2)& P(s_{t+1} = q_2 | s_t = q_2)& \cdots& P(s_{t+1} = q_N | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(s_{t+1} = q_1 | s_t = q_N)& P(s_{t+1} = q_2 | s_t = q_N)& \cdots& P(s_{t+1} = q_N | s_t = q_N) \end{pmatrix} A=P(st+1=q1st=q1)P(st+1=q1st=q2)P(st+1=q1st=qN)P(st+1=q2st=q1)P(st+1=q2st=q2)P(st+1=q2st=qN)P(st+1=qNst=q1)P(st+1=qNst=q2)P(st+1=qNst=qN)

观测概率矩阵 B B B 的表达式可表示为:
B = [ b i ( k ) ] N × M = [ P ( o t = v k ∣ s t = q i ) ] N × M ,           t = 1 , 2 , ⋯   , T B = [b_i(k)]_{N \times M} = [P(o_t = v_k|s_t = q_i)]_{N \times M}, \ \ \ \ \ \ \ \ \ t=1, 2, \cdots, T B=[bi(k)]N×M=[P(ot=vkst=qi)]N×M,         t=1,2,,T B = ( P ( o t = v 1 ∣ s t = q 1 ) P ( o t = v 2 ∣ s t = q 1 ) ⋯ P ( o t = v M ∣ s t = q 1 ) P ( o t = v 1 ∣ s t = q 2 ) P ( o t = v 2 ∣ s t = q 2 ) ⋯ P ( o t = v M ∣ s t = q 2 ) ⋮ ⋮ ⋱ ⋮ P ( o t = v 1 ∣ s t = q N ) P ( o t = v 2 ∣ s t = q N ) ⋯ P ( o t = v M ∣ s t = q N ) ) B = \begin{pmatrix} P(o_t = v_1 | s_t = q_1)& P(o_t = v_2 | s_t = q_1)& \cdots & P(o_t = v_M | s_t = q_1)\\ P(o_t = v_1 | s_t = q_2)& P(o_t = v_2 | s_t = q_2)& \cdots& P(o_t = v_M | s_t = q_2)\\ \vdots & \vdots& \ddots& \vdots\\ P(o_t = v_1 | s_t = q_N)& P(o_t = v_2 | s_t = q_N)& \cdots& P(o_t = v_M | s_t = q_N) \end{pmatrix} B=P(ot=v1st=q1)P(ot=v1st=q2)P(ot=v1st=qN)P(ot=v2st=q1)P(ot=v2st=q2)P(ot=v2st=qN)P(ot=vMst=q1)P(ot=vMst=q2)P(ot=vMst=qN)

4. 隐马尔科夫模型解决的三个基本问题

4.1 观测序列概率计算

此问题,给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π),求观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT) 出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)
具体请详见作者文章:隐马尔科夫模型(HMM):计算观测序列的出现概率

4.2 状态序列推论

此问题,给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT),求在此条件下出现概率最大的状态序列 S = ( s 1 , s 2 , ⋯   , s T ) S = (s_1, s_2, \cdots, s_T) S=(s1,s2,,sT);即,给定模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π)和观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT),求令条件概率 P ( S ∣ O ) P(S|O) P(SO) 最大的状态序列 S = ( s 1 , s 2 , ⋯   , s T ) S = (s_1, s_2, \cdots, s_T) S=(s1,s2,,sT)
具体请详见作者文章:隐马尔科夫模型(HMM):状态序列推论

4.3 模型参数估计

此问题,给定观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT),求令(给定)观测序列出现概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ) 最大的模型参数 ( A , B , π ) (A, B, \pi) (A,B,π)
具体请详见作者文章:

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值