马尔可夫性质(Markov Property)是概率论中的一个概念:当一个随机过程在给的那个现在状态及所有过去状态的情况下,其未来状态的条件概率分布仅依赖于当前状态;换句话说,在给定现在状态时,它与过去状态(即该过程的历史路径)是条件独立的,那么此随机过程具有马尔可夫性。具有马尔可夫性质的过程通常称之为马尔可夫过程。
马尔可夫模型
在介绍马尔可夫模型之前,先简单介绍下马尔可夫过程。马尔可夫过程是满足无后效性的随机过程。假设在一个随机过程中, t n t_n tn时刻的状态 s n s_n sn的条件分布,仅仅与前一个状态 s n − 1 s_{n-1} sn−1有关,即 P ( x n ∣ x 1 , x 2 , . . . , x n − 1 ) = P ( x n ∣ x n − 1 ) P(x_n|x_1,x_2,...,x_{n-1})=P(x_n|x_{n-1}) P(xn∣x1,x2,...,xn−1)=P(xn∣xn−1),则将其称为马尔可夫过程,时间和取值都是离散的马尔可夫过程也称为马尔可夫链,如下图:
隐马尔可夫模型是对含有未知参数(隐状态)的马尔可夫链进行建模的生成模型,概率图模型如下所示:
在简单的马尔可夫模型中,所有状态对观测者都是可见的,因此马尔可夫模型仅仅包括中间状态的转移概率。而在隐马尔可夫模型中,隐状态x i x_i xi对于观测者而言是不可见的。观测者能够观测到的只有每个隐状态 x i x_i xi对应的输出 y i y_i yi,而观测状态 y i y_i yi的概率分布仅仅取决于对应的隐状态 x i x_i xi(即马尔可夫性)。
在隐马尔可夫模型中,参数包括了隐状态之间的转移概率、隐状态到观测状态的输出概率,隐状态 x x x的取值空间,观测状态 y y y的取值空间以及初始状态的概率分布。
隐马尔可夫模型三大基本问题
隐马尔可夫模型包括概率计算问题,预测问题,学习问题三个基本问题:
(1)概率计算问题:已知模型的所有参数,计算观测序列Y出现的概率,可使用前向和后向算法求解。
(2)预测问题:已知模型所有参数和观测序列Y,计算隐状态X,可使用经典的动态规划算法-维特比算法来求解可能的状态序列。
(3)学习问题:已知观测序列Y,求解使得该观测序列概率最大的模型参数,包括隐状态序列,隐状态之间的转移概率分布以及隐状态到观测状态的概率分布。可以使用Baum-Welch算法进行参数的学习(该算法是最大期望算法的一个特例)。
隐马尔可夫模型用于分词问题
隐马尔可夫模型经常用来解决序列标注问题,而分词问题又能够转化为序列标注问题,因此隐马尔可夫模型经常用于分词问题。下面以中文分词为例介绍隐马尔可夫模型的常见应用场景:
首先对语料库中的中文句子中的每一个字做一下标注,B表示一个词开头的第一个字,M表示一个词的中间字,E表示词结尾的第一个字,S表示一个单字词(可以看作是一种特例),则隐状态的取值空间为 { B , M , E , S } \{B,M,E,S\} {B,M,E,S}。同时对隐状态的转移概率可以给出一些先验知识(笔者注:这些先验知识是天然存在的):B和M后面只能是M或者E,S和E后面只能是B或者S。而每个字就是模型中的观测状态,取值空间为语料中的所有字。
完成建模之后,使用语料进行训练可以分为有监督训练和无监督训练:有监督训练对语料进行标注,相当于根据经验得到了语料的所有隐状态信息,然后就可以用简单的计数法来对模型的概率分布进行极大似然估计;无监督训练可以使用上面提到的Baum_Welch算法,同时优化隐状态序列和模型对应的概率分布。
最大熵马尔可夫模型与标注偏置问题
隐马尔可夫模型等用于解决序列标注问题的模型中,常常对标注进行了独立性假设,以隐马尔可夫模型为例介绍标注偏置问题(Label Bias Problem)。
在马尔可夫模型中,假设隐状态(即序列标注问题中的标注 x i x_i xi)的状态满足马尔可夫过程, t t t时刻的状态 x t x_t xt的条件分布,仅仅与前一个状态 x t − 1 x_{t-1} xt−1有关,即 P ( x t ∣ x 1 , x 2 , . . . , x t − 1 ) = P ( x t ∣ ( x t − 1 ) P(x_t|x_1,x_2,...,x_{t-1})=P(x_t|(x_{t-1}) P(xt∣x1,x2,...,xt−1)=P(xt∣(xt−1);同时隐马尔可夫模型假设观测序列中的各个状态仅仅取决于它对应的隐状态 P ( y t ∣ x 1 , x 2 , . . . x n , y 1 , y 2 , y t − 1 , y t + 1 , . . . , ) = P ( y t ∣ x t ) P(y_t|x_1,x_2,...x_n,y_1,y_2,y_{t-1},y_{t+1},...,)=P(y_t|x_t) P(yt∣x1,x2,...xn,y1,y2,yt−1,yt+1,...,)=P(yt∣xt)。隐马尔可夫模型建模时考虑了隐状态间的转移概率和隐状态到观测状态的输出概率。
在实际的序列标注问题中,隐状态(标注)不仅和单个预测的状态相关,还和观察序列的长度、上下文等信息相关,例如词性标注问题中,一个词被标注为名词还是动词,不仅与它以及它前一个词的标注有关,还依赖于上下文中的其他词,于是引出了最大熵马尔可夫模型(Maximum Entropy Markov Model, MEMM)。
如下图所示,最大马尔可夫模型在建模时,去除了隐马尔可夫模型中观测状态相互独立的假设,考虑了整个观测序列,因此获得了更强的表达能力(笔者认为此处有误,应该是获得了更强的针对上下文相关的信息的捕捉能力)。同时,隐马尔可夫模型是一种对隐状态序列和观测状态序列的联合概率 P ( x , y ) P(x,y) P(x,y)进行建模的判别式模型。
最大熵马尔可夫模型建模如下:
p ( x 1 , . . . , n ∣ y 1 , . . . , n ) = ∏ i = 1 n p ( x i ∣ x i − 1 , y 1 , . . . , n ) p(x_{1,...,n}|y_{1,...,n})=\prod_{i=1}^{n}p(x_i|x_{i-1},y_{1,...,n}) p(x1,...,n∣y1,...,n)=i=1∏np(xi∣xi−1,y1,...,n)
其中 p ( x i ∣ x i − 1 , y 1 , . . . , n ) p(x_i|x_{i-1},y_{1,...,n}) p(xi∣xi−1,y1,...,n)会在局部进行归一化(笔者注:偏置的原因之一),即枚举 x i x_i xi的全部取值进行求和之后计算概率,计算公式为:
p ( x i ∣ x i − 1 , y 1 , . . . n ) = e x p ( F ( x i , x i − 1 , y 1 , . . . n ) ) Z ( x i − 1 , y 1 , . . . n ) p(x_i|x_{i-1},y_{1,...n})=\frac{exp(F(x_i,x_{i-1},y_{1,...n}))}{Z(x_{i-1},y_{1,...n})} p(xi∣xi−1,y1,...n)=Z(xi−1,y1,...n)exp(F(xi,xi−1,y1,...n))
其中Z为归一化因子:
Z ( x i − 1 , y 1 , . . . , n ) = ∑ x i e x p ( F ( x i , x i − 1 , y 1 , . . . , n ) ) Z(x_{i-1},y_{1,...,n})=\sum_{x_i} exp(F(x_i,x_{i-1},y_{1,...,n})) Z(xi−1,y1,...,n)=xi∑exp(F(xi,xi−1,y1,...,n))
最大熵马尔可夫模型存在偏置问题,如下如所示:
如上图,从状态1转移到状态2的概率最大(0.6),但实际计算得到的最大概率路径为1->1->1->1,状态1没有走向状态2,而是走向了状态1,并且后面一直走向状态1(即偏向于状态数少的状态1),而不会走向局部概率大,但是状态数多的状态2,这就是标注偏置问题。
(笔者注:将偏置的全部原因归结为局部归一化有实偏颇,因为建模采用的是概率连乘的形式,参与连乘的项数越少,值最大,所以隐状态偏向于后续状态更少的状态,这也是其中一个原因。)
条件随机场(Condition Random Field)在最大熵模型的基础上,进行了全局归一化:
(概率图上来看和最大熵马尔可夫模型一样)
条件随机场建模如下:
p ( x 1 , . . . , n ∣ y 1 , . . . , n ) = 1 Z ( y 1 , . . . , n ) ∏ i = 1 n e x p ( F ( x i , x i − 1 , y 1 , . . . , n ) ) p(x_{1,...,n}|y_{1,...,n})=\frac{1}{Z(y_{1,...,n})}\prod_{i=1}^n{exp(F(x_i,x_{i-1},y_{1,...,n}))} p(x1,...,n∣y1,...,n)=Z(y1,...,n)1i=1∏nexp(F(xi,xi−1,y1,...,n))
(注意:归一化因子Z函数不一样,最大熵马尔科可夫是 Z ( x i − 1 , y 1 , . . . , n ) Z({x_{i-1},y_{1,...,n}}) Z(xi−1,y1,...,n)
其中归一化因子 Z ( y 1 , . . . , n ) Z(y_{1,...,n}) Z(y1,...,n)是在全局范围内进行归一化,枚举了整个隐状态序列 x 1 , . . . , n x_{1,...,n} x1,...,n的全部可能,从而解决了局部归一化带来的标注偏置问题。