机器学习算法总结(十一)——条件随机场

主宰稳场 提交于 2021-01-12 06:55:39

1、条件随机场的定义  

  条件随机场的定义:设X与Y是随机变量,P(Y|X)是给定条件X时Y的条件概率分布,此时若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场。隐马尔科夫模型和隐马尔科夫随机场是属于生成模型,因为它们都有计算联合概率分布,而条件随机场是判别模型,其目标就是直接构建条件概率模型P(Y|X)。

  首先定义一般的条件随机场模型,设X与Y是随机变量。若随机变量Y构成一个由无向图G=(V, E)表示的马尔科夫随机场。则有下面的表达式

  

  对于上面的式子若是对所有的v都成立,则称条件概率分布P(Y|X)为条件随机场。式子中w~v表示与结点v有边连接的所有结点(也就是和结点v存在依赖关系的结点),而w≠v,则表示除了v之外的所有结点。对于一般的条件随机场来说,结点v的条件概率除了和X有关还和与之有边相连的结点有关。

  再来看线性链条件随机场,在一般的条件随机场中并没有要求X和Y具有相同的结构,而在线性链条件随机场中要求X和Y具有相同的结构,具体结构如下图

  

  

  设X = (X1, X2, ..., Xn),Y = (Y1, Y2, ..., Yn)均为线性链表示的随机变量序列,若在给定随机变量序列X的条件下,随机变量序列Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性,则表达式如下

  

  从上面的表达式可以看到,当前的结点只与前后相邻的两个结点有关。Y的无向图模型G可以表示为

  

  对于线性链条件随机场通常的应用就是词性标注,将随机变量X看作是观测序列(即观察到的句子),Y看作是标注序列(句子的词性序列) 

 

2、线性链条件随机场的参数形式

  对于随机变量X和Y,线性链条件随机场的参数形式如下

  

  其中规范场因子Z

  

  在表达式中的tk、sl 是特征函数(tk 是定义在边上的特征函数,称为转移特征,依赖与当前和前一个位置;sl 是定义在结点上的特征函数,称为状态特征,依赖于当前的位置)。

  在这里函数

  sl(yi, x, i),l = 1, 2, ..., L

  其中L是定义在该节点的节点特征函数的总个数,i是当前节点在序列的位置。 

  函数

  tk(yi-1, yi, x, i),k = 1, 2, ..., K

  其中K是定义在该节点的局部特征函数的总个数,i是当前节点在序列的位置。   

  无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设tk的权重系数是λksl的权重系数是μl则linear-CRF由我们所有的tkλkslμl共同决定。

   考虑到上面的式子中同一特征(tk、sl)在各个位置(i)都有定义,可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局的特征函数。简化线性链条件随机场的表达形式,这样就可以用权值向量和特征向量的內积来表示线性链条件随机场。

  首先将状态特征和转移特征及其权重用同一的符号表示,设有K1个转移特征,K2个状态特征,令K = K1 + K2,则有

  

  然后对各个位置上的同一特征求和

  

  用wk表示特征fk(y, x)的权值

  

  于是,条件随机场的表达形式可以写成

  

  再做进一步简化,令

  

  

  则条件随机场可以写成w与F(y, x)的內积形式

  

  

  除了用向量的內积来表示之外,还可以用矩阵的形式来表示

  首先对标记序列引入特殊的起点和终点的标记y0 = start,yn+1 = stop(该引进主要是为了让y1和yn能和其他的点以同样的形式表述)。引入一个m × m的矩阵M(x的每一个位置i = 1, 2, ..., n+1上都有这样一个矩阵),m为y所有可能的状态的取值个数。则M的定义如下

  

  

  

  则具体的线性链条件随机常表达式如下 

  

  

 

3、条件随机场的概率计算问题

  线性链条件随机场的概率计算问题:即给定线性链条件随机场的条件概率分布P(y|x), 在给定输入序列x和输出序列y时,计算条件概率P(yi|x)P(yi1yi|x)以及对应的期望。在这里我们采用前向-后向算法来处理该类问题。引入前向向量和后向向量,具体表达式如下

  前向向量表达式αi(x),i = 0, 1, .., n+1:

  

  

  αi(yi|x)表示在位置i的标记是yi并且到位置i的前部分标记序列的非规范化概率,yi可取的值有m个,所以αi(x)是m维列向量,可以表示为

  

  后向向量表达式βi(x),i = 0, 1, .., n+1:

  

  

  βi(yi|x)表示在位置i的标记是yi并从i+1到n的后部分标记序列的非规范化概率,yi可取的值有m个,所以βi(x)是m维列向量,可以表示为

  

  基于给定的前向向量和后向向量我们就可以处理开头的三个解答,首先是在位置i是标记yi的条件概率和在位置i-1与i是标记yi-1和yi的条件概率:

  

  

  

  计算联合分布P(x,y)与条件分布P(y|x)的期望

  特征函数fk(x,y)关于条件分布P(y|x)的期望表达式是:

  

  

  联合分布P(x,y)的期望

  

  

  整体来说,线性链条件随机场的前向-后向算法还是比HMM中的算法要来的简单

 

4、线性链条件随机常的学习算法

  条件随机场的学习算法比HMM要简单很多,因为是判别模型,可以直接用梯度下降法或者拟牛顿法来求解

  给定训练数据集,由训练数据集可知经验概率分布

  

  通过极大化训练数据的对数似然函数来求模型参数,对数似然函数表达式如下

  

  当将Pw(y|x)用向量內积的形式展开,可以将损失函数可以写成

  

  现在我们就可以极小化f(w),梯度表达式如下

  

  通过梯度下降法来更新w的值,但注意在每次更新w后都要计算当前的Pw(y|x),因为该值会出现在梯度表达式中,计算当前的Pw(y|x)是用于求下一次迭代的梯度的。

 

5、线性链条件随机场的预测算法

  预测算法的问题:给定条件随机场的条件概率P(y|x)和一个观测序列x,要求出满足P(y|x)最大的序列y*。解决这类解码问题通常用的算法都是维特比算法。在该类问题中我们的目标是

  

  在这里我们只要求非规范化概率就可以了(因为只是求最大值,并不需要具体的概率值,这样可以大大提高计算效率)。我们将上面的式子表示成

  

  

  接下来通过维特比算法去求出序列y*,首先求出位置1的各个标记j = 1, 2, ..., m的非规范化概率:

  

  求出对应于位置i的各个标记l = 1, 2, ..., m的非规范化概率的最大值(该值的结果是依赖于之前的所有位置的,并且用于计算的值都是之前求好的,动态规划思想),同时记录非规范化概率最大值的路径

  

  

  当i = n时,求得非规范化概率的最大值

  

  先获取最优路径的终点

  

  接着回溯,寻找每个位置的最优序列点

  

  当i = 1时,就可以求得最优路径

  

 

6、总结

  线性链条件随机场和HMM有很多类似的地方(也只局限于线性链条件随机场,而一般的条件随机场的应用范围是要远大于HMM的),比如都有三个基本问题:预测问题、学习问题、概率问题。除了学习问题(主要是因为求解的结果不一样,线性链条件随机场是判别模型,而HMM是生成模型,因此线性链条件随机场求的是条件概率分布,而HMM求得是联合概率分布),其余的两个问题处理的思路都非常相似。而且两者都可以用在序列模型上,在自然语言处理中都有广泛的使用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!