跳转到主要内容

自然语言处理之条件随机场CRF(二)

demi 提交于

在<a href="http://imgtec.eetrend.com/blog/2019/100043258.html">条件随机场CRF(一)</a>中我们总…,主要是linear-CRF的模型原理。本文就继续讨论linear-CRF需要解决的三个问题:评估,学习和解码。这三个问题和HMM是非常类似的,本文关注于第一个问题:评估。第二个和第三个问题会在下一篇总结。

<font style="line-height: 40px;"><strong>1. linear-CRF的三个基本问题</strong></font>

在<a href="http://imgtec.eetrend.com/blog/2019/100042969.html">隐马尔科夫模型HMM</a>中,我们讲到了HMM的三个基本问题,而linear-CRF也有三个类似的的基本问题。不过和HMM不同,在linear-CRF中,我们对于给出的观测序列x是一直作为一个整体看待的,也就是不会拆开看( x<sub>1</sub> , x<sub>2</sub> , ... ),因此linear-CRF的问题模型要比HMM简单一些,如果你很熟悉HMM,那么CRF的这三个问题的求解就不难了。

linear-CRF第一个问题是评估,即给定 linear-CRF的条件概率分布 P ( y | x ) , 在给定输入序列 x 和输出序列 y 时,计算条件概率 P ( y<sub>i</sub> | x ) 和 P ( y<sub>i−1</sub> ,y<sub>i</sub> | x ) 以及对应的期望。本文接下来会详细讨论问题一。

linear-CRF第二个问题是学习,即给定训练数据集 X 和 Y,学习linear-CRF的模型参数wk和条件概率 P<sub>w</sub>( y | x ),这个问题的求解比HMM的学习算法简单的多,普通的梯度下降法,拟牛顿法都可以解决。

linear-CRF第三个问题是解码,即给定 linear-CRF的条件概率分布 P ( y | x ) ,和输入序列x, 计算使条件概率最大的输出序列y。类似于HMM,使用维特比算法可以很方便的解决这个问题。 

<font style="line-height: 40px;"><strong>2. linear-CRF的前向后向概率概述</strong></font>

要计算条件概率 P ( y<sub></sub>i | x ) 和 P ( y<sub>i−1</sub>,y<sub>i</sub> | x ),我们也可以使用和HMM类似的方法,使用前向后向算法来完成。首先我们来看前向概率的计算。

我们定义 α<sub>i</sub> ( y<sub>i</sub> | x ) 表示序列位置i的标记是 y<sub>i</sub> 时,在位置i之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子Z(x)在分母里面。

在条件随机场CRF(一)第八节中,我们定义了下式:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

这个式子定义了在给定 y<sub>i−1</sub> 时,从 y<sub>i−1</sub> 转移到 <sub>i</sub> 的非规范化概率。

这样,我们很容易得到序列位置 i+1 的标记是 y<sub>i+1</sub> 时,在位置 i+1 之前的部分标记序列的非规范化概率 α<sub>i+1</sub> ( y<sub>i+1</sub> | x ) 的递推公式:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

在起点处,我们定义:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

假设我们可能的标记总数是 m , 则 y<sub>i</sub> 的取值就有 m 个,我们用 α<sub>i</sub>( x ) 表示这 m 个值组成的前向向量如下:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

同时用矩阵 M<sub>i</sub>( x ) 表示由 M<sub>i</sub>( y<sub>i−1</sub> , y<sub>i</sub> | x ) 形成的m×m阶矩阵:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

这样递推公式可以用矩阵乘积表示:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

同样的。我们定义 β<sub>i</sub> ( y<sub>i</sub> | x ) 表示序列位置i的标记是 y<sub>i</sub> 时,在位置 i 之后的从 i+1 到 n 的部分标记序列的非规范化概率。

这样,我们很容易得到序列位置 i+1 的标记是 y<sub>i+1</sub> 时,在位置 i 之后的部分标记序列的非规范化概率 β<sub>i</sub> ( y<sub>i</sub> | x ) 的递推公式:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

在终点处,我们定义:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

如果用向量表示,则有:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

由于规范化因子 Z ( x ) 的表达式是:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

也可以用向量来表示 Z ( x ):

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

其中,1 是 m 维全 1 向量。

<font style="line-height: 40px;"><strong>3. linear-CRF的前向后向概率计算</strong></font>

有了前向后向概率的定义和计算方法,我们就很容易计算序列位置i的标记是 y<sub>i</sub>时的条件概率 P ( y<sub>i</sub> | x ) :

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

容易计算序列位置i的标记是 y<sub>i</sub>,位置 i−1 的标记是 y<sub>i−1</sub> 时的条件概率 P ( y<sub>i−1</sub> , y<sub>i</sub> | x ) :

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

<font style="line-height: 40px;"><strong>4. linear-CRF的期望计算</strong></font>

有了上一节计算的条件概率,我们也可以很方便的计算联合分布 P ( x , y ) 与条件分布 P ( y | x ) 的期望。

特征函数 f<sub>k</sub> ( x , y ) 关于条件分布 P ( y | x ) 的期望表达式是:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

同样可以计算联合分布 P ( x , y ) 的期望:

<center><img src="http://imgtec.eetrend.com/files/2019-05/%E5%8D%9A%E5%AE%A2/100043429-70…; alt=""></center><br>

假设一共有K个特征函数,则 k = 1 , 2 , ... K

<font style="line-height: 40px;"><strong>5. linear-CRF前向后向算法总结</strong></font>

以上就是linear-CRF的前向后向算法,个人觉得比HMM简单的多,因此大家如果理解了HMM的前向后向算法,这一篇是很容易理解的。

注意到我们上面的非规范化概率 M<sub>i+1</sub> ( y<sub>i+1</sub> , y<sub>i</sub> | x ) 起的作用和HMM中的隐藏状态转移概率很像。但是这儿的概率是非规范化的,也就是不强制要求所有的状态的概率和为1。而HMM中的隐藏状态转移概率也规范化的。从这一点看,linear-CRF对序列状态转移的处理要比HMM灵活。

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com)     
本文转自:博客园 - <a href="https://www.cnblogs.com/pinard/p/7055072.html">刘建平Pinard</a&gt;,转载此文目的在于传递更多信息,版权归原作者所有。