概率图模型(probabilistic graphical model)是一类能够用图来表达变量相关关系的概率模型。可分为两类:
EM算法的目的是解决变量中存在“隐变量”(latent variable)的问题,令 X X X是观测变量集, Z Z Z是隐变量集合, θ \theta θ表示模型参数。
若对 θ \theta θ做极大似然估计,目标是最大化对数似然:
L L ( θ ∣ X , Z ) = l n P ( X , Z ∣ θ ) LL(\theta | X,Z)=lnP(X,Z|\theta) LL(θ∣X,Z)=lnP(X,Z∣θ)
又由于隐变量未知,上式不能直接求解,则可以将其转为对 Z Z Z计算期望,从而最大化已观测数据的边际似然:
L L ( θ ∣ X ) = l n P ( X ∣ θ ) = l n ∑ z P ( X , Z ∣ θ ) LL(\theta|X)=lnP(X|\theta)=ln\sum_zP(X,Z|\theta) LL(θ∣X)=lnP(X∣θ)=lnz∑P(X,Z∣θ)
EM(Exception-Maximization)算法是常用的估计参数隐变量的利器,其基本思想是:
进一步,我们取的并不是 Z Z Z的期望,而是基于 θ t \theta^t θt计算 Z Z Z的概率分布 P ( Z ∣ θ t , X ) P(Z|\theta^t,X) P(Z∣θt,X),则EM算法的两个步骤是:
Q ( θ ∣ θ t ) = E Z ∣ X , θ t L L ( θ ∣ X , Z ) Q(\theta|\theta^{t})=E_{Z|X,\theta^t}LL(\theta | X,Z) Q(θ∣θt)=EZ∣X,θtLL(θ∣X,Z)
θ t + 1 = a r g m a x θ Q ( θ ∣ θ t ) \theta^{t+1}=argmax_{\theta}Q(\theta|\theta^t) θt+1=argmaxθQ(θ∣θt)
作为EM算法的扩展,不感兴趣的朋友可以跳过本节。
在我的博客MCMC与Gibbs sampling中有完整的介绍,这里就不再赘述。
对于一阶马尔科夫链而言,每个状态只与前一个状态有关,但是现实往往不是这么简单。因此,引入高阶马尔科夫性,我们有:
P ( x n ∣ x n − 1 , ⋯ , x 1 ) = P ( x n ∣ x n − 1 , ⋯ , x n − M ) P(x_n|x_{n-1},\cdots,x_1)=P(x_n|x_{n-1},\cdots,x_{n-M}) P(xn∣xn−1,⋯,x1)=P(xn∣xn−1,⋯,xn−M)
但是这样会带来指数爆炸的问题,即参数随着 M M M的增大呈现爆炸式增长。假设每种随机变量有K种状态,其参数数量为 K M ( K − 1 ) K^M(K-1) KM(K−1)。
那么有什么方法能够将当前变量与更早的变量联系起来,又能有效减少参数数量呢?引入隐变量解决,由此我们得到HMM的基础结构,如下图所示:
基于这种依赖关系,所有变量的联合概率分布可以表示为:
P ( x 1 , x 1 , ⋯ , x n ) = p ( x 1 ) p ( y 1 ∣ x 1 ) ∏ t = 2 n p ( y t ∣ y t − 1 ) p ( x t ∣ y t ) P(x_1,x_1,\cdots,x_n)=p(x_1)p(y_1|x_1)\prod_{t=2}^np(y_t|y_{t-1})p(x_t|y_t) P(x1,x1,⋯,xn)=p(x1)p(y1∣x1)t=2∏np(yt∣yt−1)p(xt∣yt)
除了结构信息,确定以下马尔可夫模型需要三组参数:
a i j = p ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N a_{ij}=p(y_{t+1}=s_j|y_t=s_i), 1\le i,j \le N aij=p(yt+1=sj∣yt=si),1≤i,j≤N
b i j = p ( x t = o j ∣ y t = s i ) b_{ij}=p(x_t=o_j|y_t=s_i) bij=p(xt=oj∣yt=si)
π j = p ( y t = s j ) , 1 ≤ j ≤ N \pi_j =p(y_t=s_j),1\le j\le N πj=p(yt=sj),1≤j≤N
我们将这些结构信息,统称为 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π),将观测序列称为 O O O。
HMM问题有三大经典问题要解决:
模型已知(即已知状态转移矩阵、发射概率矩阵以及其初始状态概率)记为 λ \lambda λ,已知观测序列记为 O O O,求解 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)
显然,如果HMM模型很简单,我们是可以通过暴力求解的,假定隐藏序列为 I I I。下面简要叙述:
P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) = ∑ i 1 , i 2 , ⋯ , i T π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) ⋯ b i T ( o T ) P(O|\lambda)=\sum_I P(O,I|\lambda)=\sum_{i_1,i_2,\cdots,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\cdots b_{i_T}(o_T) P(O∣λ)=I∑P(O,I∣λ)=i1,i2,⋯,iT∑πi1bi1(o1)ai1i2bi2(o2)⋯biT(oT)
但如果我们的隐藏状态数很多,则有 N T N^T NT种组合,其时间复杂度过高。前向后向算法就是帮助我们在较低的时间复杂度下完成该问题。
前向算法:
后向算法:
由于有隐变量的存在,显然的,应该采取EM算法求解,我们直接将EM算法的公式带入进来,就有:
Q ( λ , λ t ) = ∑ I P ( I ∣ O , λ t ) l o g P ( O , I ∣ λ ) Q(\lambda,\lambda^t)=\sum_{I}P(I|O,\lambda^t)logP(O,I|\lambda) Q(λ,λt)=I∑P(I∣O,λt)logP(O,I∣λ)
λ t + 1 = a r g m a x λ Q ( λ , λ t ) \lambda^{t+1}=argmax_{\lambda}Q(\lambda,\lambda^t) λt+1=argmaxλQ(λ,λt)
而我们知道:
P ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 , i 2 ⋯ a i T − 1 , i T b i T ( o T ) (1) P(O,I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1,i_2}\cdots a_{i_{T-1},i_T}b_{i_T}(o_T) \tag{1} P(O,I∣λ)=πi1bi1(o1)ai1,i2⋯aiT−1,iTbiT(oT)(1)
且 P ( I ∣ O , λ t ) = P ( O , I ∣ λ t ) P ( O ∣ λ t ) P(I|O,\lambda^t)=\frac{P(O,I|\lambda^t)}{P(O|\lambda^t)} P(I∣O,λt)=P(O∣λt)P(O,I∣λt)其中, P ( O ∣ λ t ) P(O|\lambda^t) P(O∣λt)是常数,则问题变为:
Q ( λ , λ t ) = ∑ I P ( O , I ∣ λ t ) l o g P ( O , I ∣ λ ) (2) Q(\lambda,\lambda^t)=\sum_{I}P(O,I|\lambda^t)logP(O,I|\lambda) \tag{2} Q(λ,λt)=I∑P(O,I∣λt)logP(O,I∣λ)(2)
将(1)带入(2)中可得
λ t + 1 = a r g m a x λ ∑ I P ( O , I ∣ λ t ) ( l o g π i 1 + ∑ t = 1 T l o g a i t , i t + 1 + ∑ t = 1 T b i t ( o t ) ) \lambda^{t+1}=arg max_{\lambda}\sum_{I}P(O,I|\lambda^t)(log\pi_{i_1}+\sum_{t=1}^T log a_{i_t,i_{t+1}}+\sum_{t=1}^T b_{i_t}(o_t)) λt+1=argmaxλI∑P(O,I∣λt)(logπi1+t=1∑Tlogait,it+1+t=1∑Tbit(ot))
那么,为了更新参数,当然我们需要对参数的每一项进行求导,并令导数结果为0。这里我就不推导了,其最终的结果为:
其中,
γ t ( i ) = P ( i t = q i ∣ O , λ ) = P ( i t = q i , O ∣ λ ) P ( O ∣ λ ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) \gamma_t(i)=P(i_t=q_i|O,\lambda)=\frac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)} γt(i)=P(it=qi∣O,λ)=P(O∣λ)P(it=qi,O∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j ∣ O , λ ) = P ( i t = q i , i t + 1 = q j , O ∣ λ ) P ( O ∣ λ ) = α t ( i ) a i , j b j ( o t + 1 ) β t + 1 ( j ) ∑ r = 1 N ∑ s = 1 N α r ( t ) a r s b s ( o t + 1 ) β t + 1 ( s ) \xi_t(i,j)=P(i_t=q_i,i_{t+1}=q_j|O,\lambda) \\ =\frac{P(i_t=q_i,i_{t+1}=q_j,O|\lambda)}{P(O|\lambda)} \\ =\frac{\alpha_t(i)a_{i,j}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{r=1}^N\sum_{s=1}^N \alpha_r(t)a_{rs}b_s(o_{t+1})\beta_{t+1}(s)} ξt(i,j)=P(it=qi,it+1=qj∣O,λ)=P(O∣λ)P(it=qi,it+1=qj,O∣λ)=∑r=1N∑s=1Nαr(t)arsbs(ot+1)βt+1(s)αt(i)ai,jbj(ot+1)βt+1(j)
该步骤主要解决,已知模型和观测序列,求得其最有可能出现的隐藏状态序列。那么也就是说目标是让 P ( I ∗ ∣ O ) P(I^*|O) P(I∗∣O)最大化。
CRF可以解决词性标注问题,这里就从词性标注问题说起:
比如这句话:“Bob drank coffee at Starbucks”,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。
下面,就用条件随机场来解决这个问题。
以上面的话为例,有5个单词,我们将:(名词,动词,名词,介词,名词)作为一个标注序列,称为l,可选的标注序列有很多种,比如l还可以是这样:(名词,动词,动词,介词,名词),我们要在这么多的可选标注序列中,挑选出一个最靠谱的作为我们对这句话的标注。
怎么判断一个标注序列靠谱不靠谱呢?
就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。
假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了动词后面还是动词的标注序列,要给它负分!!
上面所说的动词后面还是动词就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。
现在,我们正式地定义一下什么是CRF中的特征函数,所谓特征函数,就是这样的函数,它接受四个参数:
它的输出值是0或者1,0表示要评分的标注序列不符合这个特征,1表示要评分的标注序列符合这个特征。
Note:这里,我们的特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。为简单起见,本节中我们仅考虑线性链CRF。
定义好一组特征函数后,我们要给每个特征函数 f j f_j fj赋予一个权重 λ j λ_j λj。现在,只要有一个句子s,有一个标注序列l,我们就可以利用前面定义的特征函数集来对l评分。
对这个分数进行指数化和标准化,我们就可以得到标注序列l的概率值 p ( l ∣ s ) p(l|s) p(l∣s),如下所示:
对于词性标注问题,HMM模型也可以解决。HMM的思路是用生成办法,就是说,在已知要标注的句子s的情况下,去判断生成标注序列l的概率,如下所示:
对上面取对数:
我们把这个式子与CRF的式子进行比较:
不难发现,如果我们把第一个HMM式子中的log形式的概率看做是第二个CRF式子中的特征函数的权重的话,我们会发现,CRF和HMM具有相同的形式。
换句话说,我们可以构造一个CRF,使它与HMM的对数形式相同。怎么构造呢?
对于HMM中的每一个转移概率 p ( l i = y ∣ l i − 1 = x ) p(l_i=y|l_{i-1}=x) p(li=y∣li−1=x),我们可以定义这样的一个特征函数:
该特征函数仅当 l i = y , l i − 1 = x l_i = y,l_{i-1}=x li=y,li−1=x时才等于1。这个特征函数的权重如下:
同样的,对于HMM中的每一个发射概率,我们也都可以定义相应的特征函数,并让该特征函数的权重等于HMM中的log形式的发射概率。
用这些形式的特征函数和相应的权重计算出来的 p ( l ∣ s ) p(l|s) p(l∣s)和对数形式的HMM模型几乎是一样的。用一句话来说明HMM和CRF的关系就是这样:每一个HMM模型都等价于某个CRF。
但是,
机器学习西瓜书
EM算法原理及推导
隐马尔科夫模型
CRF