33.1 概率图模型
机器学习最重要的任务,是根据已观察到的数据(例如训练样本)对感兴趣的未知变量(例如类别标记)进行估计或推测。
概率模型(probabilistic model) 基于可观测变量推测未知变量的条件概率分布,称为"推断"(inference) -- 可将学习任务归为计算未知变量的条件概率分布:
假定可观测变量集合为O,未知变量(集合)为Y,其他变量的集合为R,由联合分布P(Y,R,O)或条件分布P(Y,R|O)或P(Y|O,R)得到条件概率分布P(Y|O)。
另一方面,属性变量之间往往存在复杂的联系,因此概率模型的学习,即基于训练样本估计未知变量概率分布的参数往往相当困难。为了研究高效的推断和学习的算法,需要一套表达变量之间关系的工具。
++概率图模型(probabilistic graphical model)是用图表达变量之间相关关系的概率模型 (用一个结点表示一个或一组随机变量,结点之间的边表示变量之间的概率相关性)++ 。
概率图模型大致分为两类:第一类是使用有向无环图表示变量之间的因果关系,例如贝叶斯网(Bayesian network);第二类是使用无向图表示变量之间的相关关系,例如马尔可夫网(Markov network)。
33.2 隐马尔可夫模型
33.2.1 状态变量、观测变量、联合概率分布
隐马尔可夫模型 (Hidden Markov Model,简称HMM)是结构最简单的动态贝叶斯网(dynamic Bayesian network),是一种著名的有向图模型,++主要用于时序数据建模++ ,在语音识别、自然语言处理等领域有广泛应用。
隐马尔可夫模型中的变量可分为两组:第一组是++状态变量 {y1, y2, ..., yn},其中 yi∈Y 表示第i时刻的系统状态。通常假定状态变量是隐藏的、不可被观测的,因此状态变量亦称隐变量(hidden variable)++ 。第二组是++观测变量 {x1, x2, ..., xn},其中 xi∈X 表示第i时刻的观测值++ 。
状态变量yi的取值范围Y(称为状态空间)通常是N个可能取值的离散空间 -- 隐马尔可夫模型通常在多个状态{s1, s2, ..., sN}之间转换。观测变量xi可以是离散型也可以是连续型,假定为离散型观测变量,其取值范围X为{o1, o2, ..., oM}。
++在任一时刻,观测变量的取值 xt 仅由状态变量 yt 确定 (yt→xt),同时,t时刻的状态 yt 仅由(t-1)时刻的状态 y(t-1)确定 (yt-1 → yt),这就是"马尔可夫链"(Markov chain)++。
基于这种依赖关系,所有变量的联合概率分布为
++P(x1, y1, ..., xn, yn) = P(y1)P(x1 | y1)∏(i=2,n)P(yi | yi-1)P(xi | yi)++ <其中,y1为系统的初始状态>
33.2.2 三组参数与三个基本问题
隐马尔可夫模型还有以下三组参数:
- ++状态转移概率++:某时刻状态si,下一时刻状态为sj的概率,通常记为概率矩阵A=[aij]N×N,
aij = P(yt+1=sj | yt=si),1≤i, j≤N
- ++输出观测概率++:某时刻状态si,获得观测值oj的概率,通常记为概率矩阵B=[bij]N×M,
bij = P(xt=oj | yt=si), 1≤i≤N, 1≤j≤M <注意:N是状态取值的个数,M是观测取值的个数>
- ++初始状态概率++:模型在初始时刻状态为si的概率,通常记为概率向量π=(π1, π2, ..., πN),
πi = P(y1=si),1≤i≤N
++通过指定上述三组参数,可确定一个隐马尔可夫模型,通常用其参数 λ=[A,B,π] 指代++。给定隐马尔可夫模型参数λ,按如下过程产生观测序列{x1, x2, ..., xn}:
(1)设置t=1,根据初始状态概率 π 获得初始状态y1;
(2)根据状态 yt 和输出观测概率 B 获得观测变量取值xt;
(3)根据状态 yt 和状态转移概率 A 获得模型下一时刻状态yt+1;
(4)若t<n,设置t=t+1,再从第(2)步开始执行,否则停止。
其中yt∈{s1,s2,...,sN}和xt∈{o1,o2,...,oM}分别为第t时刻的状态和观测值。
在实际应用中,隐马尔可夫模型最常关注的三个基本问题:
(1)给定模型λ=[A,B,π],如何有效计算其能产生出观测序列x={x1, x2, ..., xn}的概率P(x|λ)?即,++如何评估模型λ与观测序列x之间相匹配的程度?<评估模型的性能,模型要能尽量接近于产生出观测序列x的λ>++
(2)给定模型λ=[A,B,π]和观测序列x={x1, x2, ..., xn},如何找出与此观测序列最匹配的状态序列y={y1, y2, ..., yn}?即,++如何根据模型参数λ与观测序列x推断出隐藏的模型状态y?++
(3)给定观测序列x={x1, x2, ..., xn},如何调整模型参数λ=[A,B,π],使得出现此观测序列的概率P(x|λ)最大?即,++如何训练模型使其能最好地描述出期望的观测数据?++
上述问题在现实应用中非常重要。例如许多任务需要根据以前的观测序列 {x1, x2, ..., xn-1} 推测当前时刻最有可能的观测值xn,即上述第一个问题;
<根据模型参数λ=[A,B,π],与观测序列x={x1, x2, ..., xn-1},求解P(xn|λ)概率分布,xn=argmax(x) P(xn|λ)>
在语音识别等任务中,观测值为语音信号,隐藏状态为文字,模型根据观测信号推断最有可能的状态序列(即对应的文字),即上述第二个问题;
根据训练样本学得最优的模型参数λ,是上述第三个问题。
基于 P(x1, y1, ..., xn, yn)=P(y1)P(x1|y1)∏(i=2,n)P(yi|yi-1)P(xi|yi) 的条件独立性,隐马尔可夫模型这三个问题均能被高效求解。