隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。算法
定义10.1 (隐马尔可夫模型) 隐马尔可夫模型是关于时序的几率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence):每一个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequenoe )。序列的每个位置又能够看做是一个时刻。函数
隐马尔可夫模型由初始几率分布、状态转移几率分布以及观测几率分布肯定。隐马尔可夫模型的形式定义以下学习
设Q是全部可能的状态的集合,V是全部可能的观侧的集合.3d
其中,N是可能的状态数,M是可能的观测数.blog
I是长度为T的状态序列,O是对应的观测序列.get
A是状态转移几率矩阵:数学
是在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的几率。it
B是观测几率矩阵:io
是在时刻t处于状态qj的条件下生成观测vk的几率。变量
n是初始状态几率向量:
是时刻t=1处于状态qi的几率。
隐马尔可夫模型兄能够用三元符号表示,即
隐马尔可夫模型由初始状态几率向量pi、状态转移几率矩阵A和观测几率矩阵B决定。A,B,pi称为隐马尔可夫模型的三要素。
状态转移几率矩阵A与初始状态几率向量pi肯定了隐藏的马尔可夫链,生成不可观测的状态序列。
观测几率矩阵B肯定了如何从状态生成观测,与状态序列综合肯定了如何产生观测序列。
隐马尔可夫模型做了两个基本假设:
(1) 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其余时刻的状态及观测无关,也与时刻t无关
(2) 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其余观测及状态无关.
隐马尔可夫模型能够用于标注,这时状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列能够假设标注问题的数据是由隐马尔可夫模型生成的。这样咱们能够利用隐马尔可夫模型的学习与预测算法进行标注。
根据隐马尔可夫模型定义,能够将一个长度为T的观测序列,其生成过程描述以下:
隐马尔可夫模型的3个基本问题
(1)几率计算问题。给定模型和观测序列O=(o1,o2,... ,oT),计算在模型lamda之下观测序列O出现的几率
。
(2)学习问题。己知观测序列O=(o1,o2,... ,oT),估计模型参数,使得在该模型下观测序列几率
最大。即用极大似然估计的方法估计参数。
(3)预测问题,也称为解码(decoding)问题。己知模型和观测序列O=(o1,o2,... ,oT),求对给定观测序列条件几率P(I | O)最大的状态序列I=(i1,i2,... ,iT),即给定观测序列,求最有可能的对应的状态序列。
直接计算法
按几率公式直接计算经过列举全部可能的长度为T的状态序列I=(i1,i2,... ,iT),求各个状态序列I与观测序列O=(o1,o2,... ,oT)
可是,计算量很大,是O(TNT)阶的,这种算法不可行。
前向-后向算法(forward-backward algorithm)
前向算法
定义10.2 (前向几率) 给定隐马尔可夫模型,定义到时刻t部分观测序列o1,o2,... ,ot且状态为qi的几率为前向几率,记做
能够递推地求得前向几率及观测序列几率
步骤(1)初始化前向几率,是初始时刻的状态i1=qi和观测o1的联合几率。
步骤(2)是前向几率的递推公式,计算到时刻t+1部分观测序列为o1,o2,... ,ot ,ot+1且在时刻t+1处于状态qi的前向几率,如图10.1所示。
ai(j)是到时刻t观测到o1,o2,... ,ot并在时刻t处于状态qj的前向几率,那么乘积ai(j)aji就是到时刻t观测到o1,o2,... ,ot在在时刻t处于状态qj而在时刻t+1到达状态qi的联合几率。对这个乘积在时刻t的全部可能的N个状态qj求和,其结果就是到时刻t观测为o1,o2,... ,ot并在时刻t+1处于状态qi的联合几率。方括弧里的值与观测几率bi(ot+1)的乘积刚好是到时刻t+1观测到
o1,o2,... ,ot ,ot+1且在时刻t+1处于状态qi的前向几率。
步骤(3):
由于
因此
前向算法实际是基于“状态序列的路径结构”递推计算的算法。前向算法高效的关键是其局部计算前向几率,而后利用路径结构将前向几率“递推”到全局,获得
。具体地,在时刻t=1,计算a1(i)的N个值(i=1,2,...,N);在各个时刻t=1,2,...,T-1,计算at+1(i)的N个值(i=1,2,...,N),并且每一个at+1(i)的计算利用前一时刻ai(j)。
减小计算量的缘由在于每一次计算直接引用前一个时刻的计算结果,避免重复计算。利用前向几率计算的计算量是O(N2T)阶的,而不是直接计算的O(TNT)阶。
后向算法
定义10.3 (后向几率) 给定隐马尔可夫模型,定义在时刻t部状态为qi的条件下,从t+1到T的部分观测序列为ot+1,ot+2 ,... ,oT的几率为后向几率,记做
能够递推地求得后向几率及观测序列几率
步骤(1)初始化初始化后向几率,对最终时刻的全部状态qi规定。
步骤(2)是后向几率的递推公式,如图10.3所示,为了计算在时刻t部状态为qi的条件下,从t+1到T的部分观测序列为ot+1,ot+2 ,... ,oT的后向几率。只需考虑在时刻t十1全部可能的N个状态qj的转移几率(即aij项),以及在此状态下的观测ot+1的观测几率(即bj(oi+1)项),而后考虑状态qj以后的观测序列的后向几率(即
项)。
步骤(3)求解的思路与步骤(2)一致,只是初始几率
代替转移几率.
利用前向几率和后向几率的定义能够将观测序列几率统一写成
此式当t=1和t=T-1时分别为式(10.17)和式(10.21)。
一些几率与指望值的计算
给定隐马尔可夫模型和观测O,利用前向几率和后向几率,能够获得关于单个状态和两个状态几率的计算公式,
(1)在时刻t处于状态qi的几率。记
由前向和后向几率的定义可知,
因此
(2)在时刻t处于状态qi的几率且在时刻t+1处于状态qj的几率。记
根据先后向几率计算:
因此
(3)将(1)和(2)中的几率对各个时刻t求和,能够获得一些有用的指望值
隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列仍是只有观测序列,能够分别由监督学习与非监督学习实现.
监督学习算法
假设已给训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),...,(OS,IS)},利用极大似然估计法来估计隐马尔可夫模
型的参数。
(1)转移几率aij的估计
设样本中时t处于状态i时刻t+1转移到状态j的频数为Aij,那么状态转移几率的估计是
(2)观测几率bj(k)的估计
设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的几率的估计是
非监督学习算法--Baum-Welch算法(即EM算法)
假设给定训练数据只包含S个长度为T的观测序列{O1,...,OS)}而没有对应的状态序列,目标是学习隐马尔可夫模型的参数。将观测序列数据看做观测数据O,状态序列数据看做不可观测的隐数据I,那么隐马尔可夫模型事实上是一个含有隐变量的几率模型
它的参数学习能够由EM算法实现。
彻底数据由观测数据和隐数据组成(O,I)=(o1,o2,... ,oT,i1,i2,... ,iT),对数似然函数是
EM算法的E步:求Q函数
EM算法的M步:极大化Q函数求模型参参数:极大似然函数可得,
隐马尔可夫模型预测的两种算法:近似算法与维特比算法(Viterbi algorithm)
近似算法
近似算法的想法是:在每一个时刻t选择在该时刻最有可能出现的状态it*,获得一个状态序列做为预测的结果。
在每一时刻t最有可能的状态it*经过下式获得:
近似算法的优势是计算简单,其缺点是不能保证预测的状态序列总体是最有可能的状态序列,由于预测的状态序列可能有实际不发生的部分。该方法获得的状态序列中有可能存在转移几率为0的相邻状态
维特比算法
维特比算法实际是用动态规划解隐马尔可夫模型预侧问题,即用动态规划(dynamic programming)求几率最大路径(最优路径)。一条路径对应着一个状态序列。
根据动态规划原理,最优路径具备这样的特性:若是最优路径在时刻t经过结点it*,那么这一路径从结点it*到终点iT*的部分路径,对于从it*到iT*的全部可能的部分路径来讲,必须是最优的。依据这一原理,咱们只需从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大几率,直至获得时刻t=T状态为i的各条路径的最大几率。时刻t=T的最大几率即为最优路径的几率P*。
最优路径的终结点iT*也同时获得。以后,从终结点iT*开始,由后向前逐步求得结点iT-1* , ... , i1*。