zoukankan      html  css  js  c++  java
  • 机器学习算法总结(十一)——条件随机场

    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求得是联合概率分布),其余的两个问题处理的思路都非常相似。而且两者都可以用在序列模型上,在自然语言处理中都有广泛的使用。

  • 相关阅读:
    nyoj 409——郁闷的C小加(三)——————【中缀式化前缀后缀并求值】
    中缀表达式转后缀表达式和前缀表达式
    Zoj 3870——Team Formation——————【技巧,规律】
    BNU4286——Adjacent Bit Counts——————【dp】
    BNU7538——Clickomania——————【区间dp】
    BNU4299——God Save the i-th Queen——————【皇后攻击,找到对应关系压缩空间】
    HDU 2795——Billboard——————【单点更新、求最小位置】
    HDU 4027—— Can you answer these queries?——————【线段树区间开方,区间求和】
    BNU34067——Pair——————【找规律】
    telnet 命令使用方法详解
  • 原文地址:https://www.cnblogs.com/jiangxinyang/p/9310445.html
Copyright © 2011-2022 走看看