机器学习最重要的任务,是根据已观测到的数据(如训练样本)对感兴趣的未知变量(如类别标记)进行推断(inference)。概率图模型是用图表达变量相关关系的概率模型,分为“有向无环图模型/贝叶斯网”和“无向图模型/马尔可夫网”两类。
一、马尔可夫性质
马尔可夫性质(Markov property)是概率论中的一个概念,当一个随机过程在给定现在状态以及所有过去状态的情况下,其未来状态的条件概率分布仅依赖于当前状态(即在给定当前状态后,过去与未来状态是条件独立的),那么这个随机过程就具有马尔可夫性质,具有马尔可夫性质的过程称为马尔可夫过程。
应用有马尔可夫链、布朗运动等。
二、马尔可夫链
马尔可夫链(Markov Chain)是指具有马尔可夫性质的离散事件随机过程,在给定当前状态的情况下,该过程中过去的状态对于预测未来的状态是无关的。
在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变到另一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率。
应用有随机漫步、排队理论建模、马尔可夫链蒙特卡洛方法MCMC、统计学建模、作为信号模型用于熵编码、人口过程、基因预测、谱曲等。
三、隐马尔可夫模型
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)回溯求得最优路径
参考资料:
《统计学习方法》、《机器学习——周志华》等