隐马尔科夫模型
隐马尔科夫模型是一种可用于标记的模型,属于生成模型。主要包括概率计算问题、学习问题以及预测问题,其算法广泛应用于语音识别、自然语言处理、生物信息等等。
基本概念
隐马尔可夫的定义
隐马尔科夫模型是关于时序的概率模型,描述又一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成对应的观测而产生观测随机序列的过程。其中,随机生成的状态构成状态序列,对应的随机观测构成观测序列。
设Q施所有可能状态的集合,V是所有可能的观测的集合:
其中N和M代表各自集合的大小。
I是长度为T的状态序列,O是其对应的观测序列:
A为状态转移概率矩阵:
A=[aij]N×N其中,$a{ij}=P(i{t+1}=q_j|i_t=q_i), i=1,2,…,N; j=1,2,…,N是时刻t处于状态q_i的条件下在时刻t+1转移到状态q_j$的概率
B为观测概率矩阵:
其中,bj(k)=P(ot=vk|it=qj),k=1,2,…,M;j=1,2,…,N是在时刻t处于状态qj的条件下生成观测vk的概率。
π为初始状态概率向量:
其中,πi=P(i1=qi),i=1,2,…N是时刻t=1处于状态qi的概率。
通常A,B和π足以表示一个隐马尔科夫模型,我们用λ表示:
在下文中,如无特殊说明,则相关变量如λ的定义将如上。
基本假设
- 齐次马尔科夫假设
- 观测独立性假设
观测序列的生成算法
输入:λ以及序列长度T
输出:观测序列O=(o1,o2,…,oT)
- 由π产生状态i1
- 令t=1
- 按照状态it的观测概率分布bit(k)生成ot。
- 按照状态$it的状态转移概率分布{a{iti{t+1}}}产生状态i_{t+1}$。
- 令t=t+1,如果t<T,回到第三步,否则终止。
隐马尔科夫模型的三个问题
隐马尔科夫模型通常有三类问题,接下来的章节也将介绍这几类问题的对应算法。
- 概率计算问题
- 学习问题
- 预测问题
概率计算问题
给定λ和O,计算观测序列O出现的概率P(O|λ)。
通常有前向算法和后向算法,两者过程相反,但原理相同。
前向算法
前向概率的定义
给定λ,以及到t时刻为止的观测序列O以及t时刻的状态qi,则前向概率为:
αt(i)=P(o1,o2,...,ot,it=qi|λ)算法
输入:λ, 观测序列O
输出:P(O|λ)
- 初值α1(i)=πibi(oi),i=1,2,…,N
- 递推,对$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$
- 终止,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|λ)
- 初值βT(i)=1,i=1,2,…,N
- 递推,对$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$
- 终止,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=1∑Nj=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的期望值:∑T−1t=1ξt(i,j)
学习问题
给定观测序列O,估计模型λ的参数,使得P(O|λ)最大,即用极大似然估计的方法估计参数。
分为有监督学习和无监督学习
有监督学习
极大似然估计
- 估计转移概率aij
- 估计观测概率bj(k)
- 估计初始状态概率πi
无监督学习 Baum-Welch算法
输入:观测数据O
输出:模型参数λ
- 初始化。对n=0,选取a(0)ij,bj(k)(0),π(0)i,得到模型λ(0)=(A(0),B(0),π(0))。
- 递推。对n=1,2,…,a(n+1)ij=∑T−1t=1ξt(i,j)∑T−1t=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))计算。
- 终止。得到模型参数λ(N+1)=(A(N+1),B(N+1),π(N+1))。
预测问题
给定λ和O,求最有可能的对应状态序列I。
近似算法
每个时刻t选择最有可能的状态i∗t,由此构成状态序列。
维特比算法
首先定义两个变量:
- 定义在时刻t状态为i的所有单个路径(i1,i2,…,it)中概率最大值为 δt(i)=max其中,其递推式为
- 定义在时刻t状态为i的所有单个路径中概率最大的路径的第t-1个结点为
算法
输入:\lambda和观测O
输出:最优路径I^*
- 初始化。
- 递推。对t=2,3,…,T,应用递推公式求解\delta_t(i)和\phi_t(i)。
- 终止
- 最优路径回溯。对t=T-1,T-2,…,1,求得最优路径I^*。