Processing math: 84%

隐马尔科夫模型

隐马尔科夫模型

隐马尔科夫模型是一种可用于标记的模型,属于生成模型。主要包括概率计算问题、学习问题以及预测问题,其算法广泛应用于语音识别、自然语言处理、生物信息等等。

基本概念

隐马尔可夫的定义

隐马尔科夫模型是关于时序的概率模型,描述又一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成对应的观测而产生观测随机序列的过程。其中,随机生成的状态构成状态序列,对应的随机观测构成观测序列。
设Q施所有可能状态的集合,V是所有可能的观测的集合:

Q={q1,q2,...,qN},V={v1,v2,...,vM}

其中N和M代表各自集合的大小。
I是长度为T的状态序列,O是其对应的观测序列:

I=(i1,i2,...,iT),O=(o1,o2,...,oT)

A为状态转移概率矩阵:

A=[aij]N×N

其中,$a{ij}=P(i{t+1}=q_j|i_t=q_i), i=1,2,…,N; j=1,2,…,Ntq_it+1q_j$的概率
B为观测概率矩阵:

B=[bj(k)]N×M

其中,bj(k)=P(ot=vk|it=qj),k=1,2,,M;j=1,2,,N是在时刻t处于状态qj的条件下生成观测vk的概率。
π为初始状态概率向量:

π=(πi)

其中,πi=P(i1=qi),i=1,2,N是时刻t=1处于状态qi的概率。
通常A,B和π足以表示一个隐马尔科夫模型,我们用λ表示:

λ=(A,B,π)

在下文中,如无特殊说明,则相关变量如λ的定义将如上。

基本假设

  1. 齐次马尔科夫假设
  2. 观测独立性假设

观测序列的生成算法

输入:λ以及序列长度T
输出:观测序列O=(o1,o2,,oT)

  1. π产生状态i1
  2. 令t=1
  3. 按照状态it的观测概率分布bit(k)生成ot
  4. 按照状态$it{a{iti{t+1}}}i_{t+1}$。
  5. 令t=t+1,如果t<T,回到第三步,否则终止。

隐马尔科夫模型的三个问题

隐马尔科夫模型通常有三类问题,接下来的章节也将介绍这几类问题的对应算法。

  1. 概率计算问题
  2. 学习问题
  3. 预测问题

概率计算问题

给定λ和O,计算观测序列O出现的概率P(O|λ)
通常有前向算法和后向算法,两者过程相反,但原理相同。

前向算法

前向概率的定义

给定λ,以及到t时刻为止的观测序列O以及t时刻的状态qi,则前向概率为:

αt(i)=P(o1,o2,...,ot,it=qi|λ)

算法

输入:λ, 观测序列O
输出:P(O|λ)

  1. 初值α1(i)=πibi(oi),i=1,2,,N
  2. 递推,对$t=1,2,…,T-1, \alpha{t+1}(i)=[\sum{j=1}^{N}{\alphat(j)a{ji}}]bi(o{t+1}), i=1,2,…,N$
  3. 终止,P(O|λ)=Ni=1αT(i)

后向算法

后项概率的定义

给定λ,以及从t+1时刻到T的观测序列O以及t时刻的状态qi,则后向概率为:

βt(i)=P(ot+1,ot+2,...,oT,it=qi|λ)

算法

输入:λ, 观测序列O
输出:P(O|λ)

  1. 初值βT(i)=1,i=1,2,,N
  2. 递推,对$t=T-1,T-2,…,1, \betat(i)=[\sum{j=1}^{N}{a{ij}b_j(o{t+1})\beta_{t+1}(j)}], i=1,2,…,N$
  3. 终止,P(O|λ)=Ni=1πibi(o1)β1(i)

一些概率与期望的计算

给定模型λ和观测O,在时刻t处于状态qi的概率,记为:

γt(i)=P(it=qi|O,λ)

γt(i)==αt(i)βt(i)Nj=1αt(j)βt(j)

给定模型λ和观测O,在时刻t处于状态qi且在时刻t+1处于状态qj的概率。记为:

ξ(i,j)=P(it=qi,it+1=qi|O,λ)

ξ(i,j)=αt(i)aijbj(ot+1)βt+1(j)Ni=1Nj=1αt(i)aijbj(ot+1)βt+1(j)

其他一些期望值:

  • 在观测O下状态i出现的期望值:$\sum{t=1}^{T}{\gamma{t}(i)}$
  • 在观测O下由状态i转移的期望值:$\sum{t=1}^{T-1}{\gamma{t}(i)}$
  • 在观测O下由状态i转移到状态j的期望值:T1t=1ξt(i,j)

学习问题

给定观测序列O,估计模型λ的参数,使得P(O|λ)最大,即用极大似然估计的方法估计参数。

分为有监督学习和无监督学习

有监督学习

极大似然估计

  1. 估计转移概率aij
  2. 估计观测概率bj(k)
  3. 估计初始状态概率πi

无监督学习 Baum-Welch算法

输入:观测数据O
输出:模型参数λ

  1. 初始化。对n=0,选取a(0)ijbj(k)(0)π(0)i,得到模型λ(0)=(A(0),B(0),π(0))
  2. 递推。对n=1,2,…,a(n+1)ij=T1t=1ξt(i,j)T1t=1γt(i)bj(k)(n+1)=Tt=1,ot=vkγt(j)Tt=1γt(j)π(n+1)i=γ1(i)右端各值按观测O=(o1,o2,,oT)和模型λ(n)=(A(n),B(n),π(n))计算。
  3. 终止。得到模型参数λ(N+1)=(A(N+1),B(N+1),π(N+1))

预测问题

给定λ和O,求最有可能的对应状态序列I。

近似算法

每个时刻t选择最有可能的状态it,由此构成状态序列。

维特比算法

首先定义两个变量:

  • 定义在时刻t状态为i的所有单个路径(i1,i2,,it)中概率最大值为 δt(i)=max其中,其递推式为
  • 定义在时刻t状态为i的所有单个路径中概率最大的路径的第t-1个结点为

算法
输入:\lambda和观测O
输出:最优路径I^*

  1. 初始化。
  2. 递推。对t=2,3,…,T,应用递推公式求解\delta_t(i)\phi_t(i)
  3. 终止
  4. 最优路径回溯。对t=T-1,T-2,…,1,求得最优路径I^*
Loading comments...