从HMM到MEMM再到CRF

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jeryjeryjery/article/details/88994045

1. HMM

  HMM是一种生成式模型,它的理论基础是朴素贝叶斯,本质上就类似于我们将朴素贝叶斯在单样本分类问题上的应用推广到序列样本分类问题上。
在这里插入图片描述
在单样本朴素贝叶斯分类任务中:
P(yx)=P(xy)P(y)P(x)P(y|x)=\frac{P(x|y)*P(y)}{P(x)}
扩展到序列化样本分类问题任务中为:
P(y1nx1n)=P(x1ny1n)P(y1n)P(x1n)P(y_1^n|x_1^n)=\frac{P(x_1^n|y_1^n)*P(y_1^n)}{P(x_1^n)}
其中nn表示的是序列的长度,这就是我们计算某个标签序列在序列分类中的概率得分。

  我们以词性标注这一序列化分类问题进行后面的讲解。对于一个给定的句子xin=(x1,x2,...,xn)x_i^n=(x_1,x_2,...,x_n),我们的目的是为其找到一个得分最高的标签序列y^1n=(y^1,y^2,...,y^n)\hat{y}_1^n=({\hat{y}_1,\hat{y}_2,...,\hat{y}_n}),则该问题转化为:
y^1n=argy1nmaxP(x1ny1n)P(y1n)P(x1n)\hat{y}_1^n=\arg \limits_{y_1^n} max \frac{P(x_1^n|y_1^n)*P(y_1^n)}{P(x_1^n)}
对于同一个句子的标注,分母是相同的,所以该问题可以转化为:
y^1n=argy1nmaxP(x1ny1n)P(y1n)\hat{y}_1^n=\arg \limits_{y_1^n} maxP(x_1^n|y_1^n)*P(y_1^n)
那么我们如何求P(x1ny1n)P(x_1^n|y_1^n)P(y1n)P(y_1^n)呢?此时就需要引入HMM的两个基本假设:

  • 齐次马尔可夫性假设,即假设隐藏的马尔科夫链在任意时刻tt的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻tt观测无关。
  • 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔科夫链的状态,与其他观测及状态无关。

假设1用于求解P(y1n)P(y_1^n),原始情况下,根据有向图模型计算方式:
P(y1n)=P(y1)P(y2y1)P(y3y1,y2)...P(yny1n1)P(y_1^n)=P(y_1)*P(y_2|y_1)*P(y_3|y_1,y_2)*...*P(y_n|y_1^{n-1})
根据假设1,其计算方式变为:
P(y1n)=P(y1)P(y2y1)P(y3y2)...P(ynyn1)P(y_1^n)=P(y1)*P(y_2|y_1)*P(y_3|y_2)*...*P(y_n|y_{n-1})
我们将P(y1)P(y_1)单独提出,该概率对应的是各状态的初始概率,可以解释为P(y1start)P(y_1|start),即由特殊状态<start><start>转换到状态集的概率值。
假设2用于求解P(x1ny1n)P(x_1^n|y_1^n),根据假设,当前观测值仅仅与当前状态有关,与其他时刻状态和观测值无关,所以:
P(x1ny1n)=P(x1y1)P(x2y2)...P(xnyn)P(x_1^n|y_1^n)=P(x_1|y_1)*P(x_2|y_2)*...*P(x_n|y_n)
最后,合并起来:
y^1n=argy1nmaxt=1nP(xtyt)P(ytyt1)\hat{y}_1^n=\arg \limits_{y_1^n} max\prod_{t=1}^{n}P(x_t|y_t)*P(y_t|y_{t-1})
至此,我们可以引出HMM的基本五元组(X,Y,A,B,π)(X,Y,A,B,\pi):

  • XX表示的是可观测序列集合,在词性标注中对于词汇表
  • YY表示的是状态集合,在词性标注中对应词性集合
  • AA表示状态转移概率,从一个状态转化到另一个状态,对应P(ytyt1)P(y_t|y_{t-1})
  • BB表示发射概率,由状态预测观测值的概率,对应P(xtyt)P(x_t|y_t)
  • π\pi表示初始状态的概率分布,对应P(y1)P(y_1)

使用维特比算法进行解码时,HMM对应的公式为:
νt(j)=maxinνt1(i)aijbj(xt)    1jn,1<t<T\nu_t(j)=\max_i^n \nu_{t-1}(i)*a_{ij}*b_j(x_t)\;\;1\leq j \leq n, 1<t<T
其中aija_{ij}是矩阵AA的第ii状态到第jj状态的转换概率,bj(xt)b_j(x_t)表示发射概率P(xtyj)P(x_t|y^j),其中vt(j)v_t(j)表示在前tt时刻中且第tt时刻为第jj种状态的序列得分最大值,也就是argy1tmaxP(y1tyt=yj)\arg \limits_{y_1^t} maxP(y_1^t|y_t=y^j)

  HMM试图去拟合X,YX,Yjoint likelihood(联合分布P(X,Y)P(X,Y)),所以它是一种生成式模型,它拥有以下几个缺陷:

  • 在很多序列化标注任务中,尤其当不能枚举观测值时,需要用大量的特征来刻画观察序列。如在文本识别中识别一个未见的公司名字时,除了传统的单词识别方法以外,还需要用到很多特征信息,如大写字母、结尾词、词性等信息。也就是,我们需要用特征对观测值进行参数化,而HMM中直接利用观测值本身。
  • 在很多自然语言处理任务中,需要解决的问题是在已知观测序列的情况下求解状态序列,HMM采用的生成式的联合概率分布P(x1n,y1n)P(x_1^n,y_1^n)来求解条件概率P(y1nx1n)P(y_1^n|x_1^n),这种方法不适合处理很多特征描述观测序列的情况。为此MEMM直接采用条件概率模型P(y1nx1n)P(y_1^n|x_1^n)

2.MEMM

  最大熵马尔科夫模型利用判别式模型的特点(建议先了解最大熵模型),直接对每一个时刻的状态建立一个分类器,然后将所有的分类器的概率值连乘起来。为了实现是对整个序列进行的分类,在每个时刻t时,它的特征不仅来自当前观测值xtx_t,而且还来自前一状态值yt1y_{t-1}。所以MEMM中,给定观测序列x1nx_1^n,某个状态序列y1ny_1^n的概率是:
P(y1nx1n)=t=1nP(ytyt1,xt)    2.1P(y_1^n|x_1^n)=\prod_{t=1}^nP(y_t|y_{t-1}, x_t)\;\;公式2.1
其中对于前一时刻可能的状态取值yt1=yy_{t-1}=y\prime和当前观测值xtx_t,当前状态取值yt=yy_t=y^{*}的概率通过最大熵分类器建模(参考最大熵模型的推导)为:
P(yt=yyt1=y,xt)=1Z(xt,y)exp(aλafa(xt,y,y))    2.2P(y_t=y^*|y_{t-1}=y\prime,x_t)=\frac{1}{Z(x_t, y\prime)}exp \left( \sum_a \lambda_af_a(x_t, y\prime, y^*) \right)\;\;公式2.2
其中a,λa,faa,\lambda_a,f_a分别表示特征函数数量,特征函数权重和第aa个特征函数,Z(xt,y)Z(x_t,y\prime)表示归一化因子,为:
Z(xt,y)=yexp(aλafa(xt,y,y))Z(x_t,y\prime)=\sum_yexp\left( \sum_a\lambda_af_a(x_t,y\prime,y) \right)
其中yy表示所有的可能状态取值。

   使用维特比算法进行解码时,MEMM对应的公式为:
νt(j)=maxinνt1(i)P(yjyi,xt)    1jn,1<t<T\nu_t(j)=\max_i^n \nu_{t-1}(i)*P(y_j|y_i,x_t)\;\;1\leq j \leq n, 1<t<T

  通过上面的公式,你会发现最大熵模型在每一个时刻,针对不同的前一状态yy\prime进行归一化操作,这是一种局部的归一化操作,会存在标签偏置问题。以CRF论文中原始的例子为例:
在这里插入图片描述
在这个例子中,状态转换(12),(23),(45),(53)(1\to2),(2\to3),(4\to5),(5\to3)的概率值都是1,而无论观测值是什么,换言之有P(21,"i")=P(21,"o")=1P(2|1,"i")=P(2|1,"o")=1。你可能会很惊讶P(21,"o")=1P(2|1,"o")=1怎么可能会成立呢?你可以套用上面的公式试一试,由于状态"1""1"的只能转换为"2""2",所以计算归一化项时,y\sum_y其实只有一个枚举值,就是状态"2""2",所以无论你分子为多少,分母都和它一样,所以概率值就是1。在这种情况下,其实观测值并没有任何作用,这就是标签偏置。

  它会造成什么后果呢?假设训练集现在有3个rib和1个rob,当我们在测试阶段,遇到词rob,它会被解码成什么状态序列呢?答案是(0123)(0\to1 \to 2 \to 3)!你可以套公式2.1试一试,因为P(10,"r")>P(40,"r")P(1|0,"r") > P(4|0,"r") , P(21,"o")=P(54,"0")=1P(2|1,"o") = P(5|4,"0")=1,P(32,"b")>P(35,"b")P(3|2,"b") > P(3|5,"b")

  那么问题出在哪里呢?因为MEMM中在每一时刻t,都在前一时刻某状态yy\prime下做了局部的归一化操作,如何解决这种标签偏置问题呢?在CRF中并不是对每个时刻都进行一次分类,而是直接对整个序列进行分类,做一个全局的归一化操作。

3.CRF

  CRF是一种判别式模型,它的理论基础是逻辑回归。这里我们将从单样本二分类问题扩展到单样本多分类问题,最后延伸到序列样本多分类问题。

  在单样本二分类问题中使用逻辑回归,假设给定输入x\bold{x},定义其分类概率为:
hθ(x)=g(θTx)=11+eθTxh_{\theta}(\bold{x})=g(\theta^T\bold{x})=\frac{1}{1+e^{-\theta^T\bold{x}}}
该概率值的值域是(0,1)(0,1),当输出概率值大于0.5时,我们将其归为正类;反之,将其分类负类。

  在单样本多分类问题中使用softmax分类器,假设存在样本xx,其被分成标签y=yjy=y^j的概率为:
P(y=yjx)=1Z(x)exp(k=1mλkfk(x,yj))P(y=y^j|x)=\frac{1}{Z(x)}exp\left( \sum_{k=1}^m\lambda_kf_k(x,y^j) \right)
其中fkf_k表示第kk个特征函数,λk\lambda_k表示对应的权重,Z(x)Z(x)是归一化因子,其值为:
Z(x)=yexp(k=1mλkfk(x,y))Z(x)=\sum_{y}exp\left( \sum_{k=1}^m\lambda_kf_k(x,y) \right)
其中yy代表任意的分类类别。其实逻辑回归本质上也是一种softmax分类器,只是因为逻辑回归中归一化因子为1,所以省略了。
在这里插入图片描述
  条件随机场CRF是逻辑回归的一种扩展,将单样本多分类问题拓展到序列化样本多分类问题。它不像MEMM那样由一连串的分类器累积而成,而是直接将整个序列化分类当成一个整体的分类任务,进行全局的归一化。假设给定输入x1nx_1^n,标签序列y1ny_1^n的概率为:
P(y1nx1n)=1Z(x1n)exp(t=1n(k=1mλkfk(xt,yt)+l=1sμlgl(yt1,yt)))P(y_1^n|x_1^n)=\frac{1}{Z(x_1^n)}exp\left( \sum_{t=1}^n\left( \sum_{k=1}^m\lambda_kf_k(x_t,y_t) + \sum_{l=1}^s \mu_lg_{l}(y_{t-1},y_t)\right) \right)
其中fkf_k表示第kk个状态特征函数,λk\lambda_k表示对应的权重;glg_l表示第ll个转移状态函数,μl\mu_l表示对应的权重值。1Z(x1n)\frac{1}{Z(x_1^n)}是归一化因子,其值为:
y^Yexp(t=1n(k=1mλkfk(xt,y^t)+l=1sμlgl(y^t1,y^t)))\sum_{\hat{y}\in Y}exp\left( \sum_{t=1}^n\left( \sum_{k=1}^m\lambda_kf_k(x_t,\hat{y}_t) + \sum_{l=1}^s \mu_lg_{l}(\hat{y}_{t-1},\hat{y}_t)\right) \right)
其中YY表示所有可能的标签序列。有没有感觉CRF本质上就是一个softmax,只是它不是在单样本上面做的,而是序列化样本;为了保证是整个序列做的分类,在CRF中考虑了相邻状态之间的转换特征函数。

  更多的关于线性条件随机场的请参考这里

展开阅读全文

没有更多推荐了,返回首页