• CRF原理解读


    概率有向图又称为贝叶斯网络概率无向图又称为马尔科夫网络。具体地,他们的核心差异表现在如何求 P=(Y) ,即怎么表示 Y=(y_{1},cdots,y_{n}) 这个的联合概率。

    概率图模型的优点:

    • 提供了一个简单的方式将概率模型的结构可视化。
    • 通过观察图形,可以更深刻的认识模型的性质,包括条件独立性。
    • 高级模型的推断和学习过程中的复杂计算可以利用图计算来表达,图隐式的承载了背后的数学表达式。

    一、概率有向图

    对于有向图模型,这么求联合概率:

    例如下图的联合概率表示如下:

    二、概率无向图

    首先我们有无向图G=(V,E),V是节点,E是边, 图G中每个节点v上都有一个随机变量y,这样所有的节点上的随机变量就构成一组随机变量Y,图G上有联合概率分布P(Y)。边e表示相邻节点的变量存在一定依赖关系。图G上的随机变量Y满足马尔科夫性,即两个不相邻的节点上的随机变量yi,yj条件独立,就称此联合概率分布为概率无向图模型,又叫马尔科夫随机场(MRF),马尔科夫随机场的成对、局部、全局马尔可夫性是等价的,都是表达一个意思,即边不连接的节点之间相互独立。

    如何求解其联合概率分布呢?

      将概率无向图模型的联合概率分布表示为其最大团上的随机变量的函数的乘积形式的操作,称为概率无向图模型的因子分解(factorization)。

    团:无向图中任何两个节点均有边连接的节点子集。

    最大团:若C为无向图G中的一个团,并且不能再加进任何一个G的节点时其成为一个更大的团,则称此团为最大团。上图中{Y2,Y3,Y4}和{Y1,Y3,Y4}都是最大团。

     概率无向图模型的联合概率分布P(Y)可以表示为如下形式

    其中C是无向图最大团,Yc是C的节点对应的随机变量,Psi_{C}(Y_{C})是一个严格正势函数,乘积(因式分解)是在无向图所有最大团上进行的,Z是归一化因子,保证P(Y)最后构成一个概率分布。

    三、条件随机场(conditional random field)

    设X与Y是随机变量,P(Y|X)是给定X的条件下Y的条件概率分布,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场。则称条件概率分布P(Y|X)为条件随机场。因为是在X条件下的马尔科夫随机场,所有叫条件随机场。
    虽然定义里面没有要求,我们还是默认X和Y结构一致,这是general CRF。然后看看linear chain CRF,线性链就是X和Y都是一串序列。
    重点:在线性链里面,最大团就是相邻的两项,y_i和y_(i+1),X只是一个前提条件,不参与最大团的判定通俗来理解,就是在X条件下,求解由Y随机变量构成的概率无向图的联合概率分布。X为观测的随机变量,例如分词中的具体汉字,Y为待预测的隐含变量,对应分词中的B,M,E,S等

     linear chain CRF的公式如下

    再详细一些如下

    t和s都是特征函数,一个是转移特征,一个状态特征,x=(x1,x2,...,xn)为观察变量,y=(y1,y2,...,yn)为隐含变量。所以,CRF也就是直接预测p(y|x),属于判别式模型。注意一个细节,特征函数里面的观测变量为x,而不是xi,这也就是说你可以前后随意看观测变量,所以特征模板里面可以随意定义前后要看几个观测值。

    亦或表示如下

    O为观察序列,I为预测的隐变量序列。

    四、模型训练与运行

    1)训练

    CRF模型的训练主要训练特征函数的权重参数λ,一般情况下不把两种特征区别的那么开,合在一起如下:

    每个token会对应多个特征函数,特征函数f取值为0或者1,在训练的时候主要训练权重λ,权重为0则没贡献,甚至你还可以让他打负分,充分惩罚。利用极大似然估计寻找最优参数解。

    2)工作流程

    模型的工作流程:

    • step1. 先预定义特征函数  f_{a}(o,i) ,
    • step2. 在给定的数据上,训练模型,确定参数 lambda_{k}
    • step3. 用确定的模型做序列标注问题或者序列求概率问题

    3)序列标注

    还是跟HMM一样的,用学习好的CRF模型,在新的sample(观测序列 o_{1}, cdots, o_{i} )上找出一条概率最大最可能的隐状态序列 i_{1}, cdots, i_{i} 。

    只是现在的图中的每个隐状态节点的概率求法有一些差异而已,正确将每个节点的概率表示清楚,路径求解过程还是一样,采用viterbi算法

     其它参考链接https://www.zhihu.com/question/35866596

  • 相关阅读:
    Android高手进阶教程(九)之----Android Handler的使用!!!
    Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!!!
    Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
    Android高手进阶教程(十)之----Android PopupWindow的使用!!!
    Android高手进阶教程(八)之----Android Widget开发案例(世界杯倒计时!)
    Android高手进阶教程(七)之----Android 中Preferences的使用!
    Android高手进阶教程(五)之----Android 中LayoutInflater的使用!
    JavaWeb的JSP
    myeclipse新建项目设置编码
    JavaWeb的Servlet、ServletContext
  • 原文地址:https://www.cnblogs.com/gczr/p/10021249.html
Copyright © 2020-2023  润新知