机器学习之HMM


        机器学习最重要的任务,是根据已观测到的数据(如训练样本)对感兴趣的未知变量(如类别标记)进行推断(inference)。概率图模型是用图表达变量相关关系的概率模型,分为“有向无环图模型/贝叶斯网”和“无向图模型/马尔可夫网”两类。

一、马尔可夫性质

        马尔可夫性质(Markov property)是概率论中的一个概念,当一个随机过程在给定现在状态以及所有过去状态的情况下,其未来状态的条件概率分布仅依赖于当前状态(即在给定当前状态后,过去与未来状态是条件独立的),那么这个随机过程就具有马尔可夫性质,具有马尔可夫性质的过程称为马尔可夫过程。

        应用有马尔可夫链、布朗运动等。

二、马尔可夫链

        马尔可夫链(Markov Chain)是指具有马尔可夫性质的离散事件随机过程,在给定当前状态的情况下,该过程中过去的状态对于预测未来的状态是无关的。

        在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率。

        应用有随机漫步、排队理论建模、马尔可夫链蒙特卡洛方法MCMC、统计学建模、作为信号模型用于熵编码、人口过程、基因预测、谱曲等。

扫描二维码关注公众号,回复: 1910347 查看本文章

三、隐马尔可夫模型

        HMM(Hidden Markov Model)是关于时序的概率模型,属于生成式模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列(state sequence),再由各个状态生成一个观测而产生的观测随机序列(observation sequence)的过程(双重随机过程)。

        应用有语音/行为/模式识别、自然语言处理、生物信息DNA分析、故障诊断等。

     

    1、HMM的形式定义

        HMM涉及到的参数有:(隐含)状态序列I、观测序列O、初始(隐含)状态概率向量π、(隐含)状态转移概率矩阵A、观测概率矩阵B。

        (1)设Q={q1,q2,...,qN}是所有可能的状态集合V={v1,v2,...,vM}是所有可能的观测集合,N是可能的状态总数,M是可能的观测总数;

        (2)I={i1,i2,...,iT}是长度为T的状态序列,O={o1,o2,...,oT}是对应的观测序列;

        (3)A=[aij]N*N是状态转移概率矩阵,其中aij=P(it+1=qj|it=qi),i,j=1,2,...,N 是在时刻t处于状态qi的条件下,在时刻t+1转移到状态qj的概率。

        (4)B=[bi(k)]N*M是观测概率矩阵,其中bi(k)=P(ot=vk|it=qi),k=1,2,...,M,i=1,2,...,N 是在时刻t处于状态qi的条件下生成观测vk的概率。

        (5)π=[πi]1*N是初始状态概率向量,其中πi=P(i1=qi),i=1,2,...,N 是在时刻t=1处于状态qi的概率。

        π和A决定了状态序列、B决定观测序列,因此HMM可以使用三要素表示:λ=(A,B,π)。

    2、HMM的观测序列生成过程

        已知HMM模型λ,观测序列长度为T,则观测序列O的生成过程:

        (1)由初始状态分布π产生状态i1

        (2)令t=1

        (3)按照状态it的观测概率分布bit(k)生成ot

        (4)按照状态的状态转移概率分布{aitit+1}产生状态it+1

        (5)令t=t+1,如果t<T,转到(3);否则终止生成并输出O。

3、HMM的两个基本假设:

        (1)齐次马尔可夫性假设

        假设隐藏的马尔可夫链在任意t时刻的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关:

                    P(it|it-1,ot-1,it-2,ot-2,...,i1,o1)=P(it|it-1)

        (2)观测独立性假设

        假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他的状态及观测无关:

                    P(ot|iT,oT,iT-1,oT-1,...,it+1,ot+1,it,it-1,ot-1...,i1,o1)=P(ot|it)

    4、HMM的3个基本问题

        (1)概率计算问题:求P(O|λ)

        给定模型λ,计算其生成的观测序列O的概率P(O|λ),即评估模型与观测序列之间的匹配程度。

        (2)学习问题:求λ

        给定观测序列O,调整模型λ的参数(MLE),使得在该模型下观测序列出现的概率P(O|λ)最大;

        即训练模型使其能够更好地描述观测数据。

        (3)预测问题(decoding):求I

        给定模型λ和观测序列O,求使观测序列条件概率P(I|O)最大的状态序列I,即根据观测序列推断最匹配的状态序列。

四、概率计算问题

    1、直接计算法(brute)

        给定模型λ,计算其生成的观测序列O的概率P(O|λ)。最直接的方式是按照概率公式,列举所有可能的长度为T的状态序列I={i1,i2,...iT},求状态序列I与观测序列O={o1,o2,...oT}的联合概率P(I,O|λ),然后对所有可能的状态序列求和(边际化marginalization),从而得到最终的概率P(O|λ)。

        

        这种算法的计算量很大O(TNT),概念上可解但实际应用中不可行。

    2、前向算法

        前向概率指的是给定模型λ,定义到时刻t部分的观测序列为o1,o2,...,ot,且状态为qi的概率为前向概率,记作:

        

        前向算法

        (1)初始化前向概率,是初始时刻的状态i1和观测o1的联合概率。对状态所有的取值总数i=1,2,...,N有:

                

        (2)前向递推,设αt(i)是时刻t观测到o1,o2,...,ot且此时处于qi状态的前向概率;计算aijαt(i)就是时刻t观测到o1,o2,...,ot且此时处于qi状态而在时刻t+1转移到状态qj的联合概率,对其在时刻t所有可能的N个状态求和再乘以观测概率

                

        (3)将状态对应的概率求和消去,即可得到O的边缘概率:

                

        前向概率的计算量是O(N2T)阶的,减少计算量的原因在于每一次计算直接引用前一个时刻的计算结果,避免了重复计算。

    3、后向算法

        后向概率指的是给定模型λ,定义在时刻t状态为qi的条件下,从t+1到T的部分观测序列为ot+1,ot+2,...oT的概率为后向概率,记作:

                

        后向算法

        (1)初始化后向概率,对最终时刻T的所有状态,i=1,2,...,N有:

                

        (2)后向递推,在时刻t+1所有可能的N个状态qj的转移概率aij,乘以此状态下的观测概率bj(ot+1),再乘以状态qj之后的后向概率βt+1(j)即可得到t时刻t状态为qi的后向概率。t=T-1,T-2,...,1,i=1,2,...,N,有:

                

        (3)将状态对应的概率求和消去,即可得到O的边缘概率:

                

    利用前向概率和后向概率的定义可以将观测序列P(O|λ)统一写成:

            

    4、单个状态的概率

        给定模型λ和观测序列O,在时刻t处于状态qi的概率记为γt(i)

                

        由前向、后向概率的定义可知:

                

        于是得到:

                

        单个状态概率的意义在于判断每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。

    5、两个状态的联合概率

        给定模型λ和观测序列O,在时刻t处于状态qi且在时刻t+1处于状态qj的概率记为ξt(i,j)

                

    6、将γt(i)ξt(i,j)对各个时刻t求和,可以得到一些有用的期望值

        (1)在观测O下状态i出现的期望值:

        (2)在观测O下由状态i转移的期望值:

        (3)在观测O下由状态i转移到状态j的期望值:

五、学习问题

        HMM的学习问题,根据训练数据是否包含状态序列分两类:若包含O和I,则可用监督学习算法实现;若只包含O,则需要用非监督学习算法Baum-Welch(EM)算法求解。

    1、监督学习方法

        由大数定理结论‘频率的极限是概率’直接得出HMM的参数估计。

        (1)设时刻t处于状态i、时刻t+1转移到状态j的频数为Aij,则状态转移概率aij的估计为:

                i=1,2,...,N;j=1,2,...,N

        (2)设样本中状态为j且观测为k的频数是Bjk,则观测概率bj(k)的估计为:

                j=1,2,...,N;k=1,2,...,M

        (3)初始状态概率πi的估计为样本总数中初始状态为qi的频率。

    2、非监督学习方法(Baum-Welch算法)

        给定观测数据O,状态序列I未知,则HMM为含有隐变量的概率模型P(O|λ)=ΣIP(O|I,λ)P(I|λ),然后用EM算法进行参数估计。步骤如下:

        (1)确定完全数据(O,I)的对数似然函数

                (O,I)=(o1,o2,...,oT,i1,i2,...,iT),它的对数似然函数是lnP(O,I|λ)

        (2)E步求Q函数

                

                其中,HMM参数的当前估计值,需要将其极大化。

                

        (3)M步极大化Q函数,使用Lagrange乘子法分别求π、A、B的值:

                

    Baum-Welch算法流程:

        给定观测序列O={o1,o2,...,oT}

        随机初始化aij(0)bj(k)(0)πi(0),得到模型λ(0)=(A(0),B(0)(0));

        对每个样本使用前向后向算法求出γt(i),ξt(i,j);

        更新模型参数aij(n)bj(k)(n)πi(n)

        如果参数收敛则停止,否则继续迭代。

六、预测问题

        HMM的预测问题是给定模型λ和观测序列O,求最可能的状态序列,主要包含近似算法和Viterbi算法两种。

    1、近似算法

        将每个时刻t最有可能出现的状态it*合并成为最终要预测的状态序列I*={i1*,i2*,...,iT*}。在时刻t处于状态qi的最大概率为:

                

        近似算法的优点是计算简单,缺点是不能保证预测的I*是最有可能的I,因为I*可能有实际不发生的部分。

    2、Viterbi算法

        使用动态规划(dynamic programming)的思路求出概率最大的路径(最优路径),一条路径对应一个状态序列。递推计算时刻t=1,2,...,T状态为i的所有单个路径(i1,i2,...,it)中概率值最大的一个为δt(i),对应的终结点为iT*。从后向前逐步求得结点iT-1*,...,i1*(Ψt(i)),即可得到最优路径I*=(i1*,i2*,...,iT*)。

                

    Viterbi算法流程:

        给定模型λ=(A,B,π)和观测序列O={o1,o2,...,oT}

        (1)初始化,i=1,2,...,N

                

        (2)递推

                

        (3)终止

                

        (4)回溯求得最优路径

                


参考资料:

《统计学习方法》、《机器学习——周志华》等

猜你喜欢

转载自blog.csdn.net/liuy9803/article/details/80927975