条件随机场专题(2)--CRF模型

        CRF是一种典型的判别式模型,它是根据模板,得到相应的特征函数,再通过这些特征函数进行参数的优化计算,那么在介绍CRF模型前,就有必要先介绍判别式模型和生成式模型。

      判别式模型和生成式模型的区别:

        从流程上看

        生成模型:无穷样本-->概率密度模型 = 产生模型-->预测
        判别模型:有限样本-->判别函数 = 预测模型-->预测

        也就是说,如果我根据训练集,统计出一个概率密度模型,然后通过这个模型进行预测,那么就是一个生成模型;如果我写出一个判别函数,通过训练集,寻求出模型的各个参数的最优解,从而得到一个模型,再通过这个模型的各个参数预测,那么就是一个判别模型。

        举个栗子

        生成模型:朴素贝叶斯、马尔科夫随机场

        判别模型:支持向量机、逻辑回归、条件随机场

      线性CRF模型:

        在这里介绍一种CRF模型,即线性CRF模型。

        我们现在有一群这样的训练集:D={x1,y1},{x2,y2},...,{xn,yn},需要预测的结果:O={y1',y2',...,yn'},然后我们有一堆特征模板。我们需要求的是P(y|x),如果说词性标注问题上,我们一句话中有8个位置,有5个标签(名词,动词,介词,形容词,代词),那么我们需要求8的5次方个概率。

                                                         

        其中:

                                                             

        下标介绍:

         函数f:在给定观察序列X时,某个特定的序列Y的概率函数,包括转移函数和状态函数

         K:f函数总共的个数

         T:序列中总共的位置个数

         t:在序列中的位置

         最大对数似然表达式:

                                               

         下标介绍:

          N:训练集中训练数据的个数

          我们的目标就是最大化对数似然函数时,求解各个参数的最优解。

          为了避免过拟合,我们增加了L2正则式:

                                      

          求解时,通过梯度下降法就可以求解出来。

          在参数求解出来之后,要进行解码操作:选择出多种情况中概率最大的情况

                                                                                                

      常用的特征工程技巧:

  1. 使用标签类特征,比如命名实体标注中的各个命名种类,会产生大规模的参数,因为有一些是不可能出现的,也就是说有的前面的系数为0。(比如说:北京和上海)这里边“和”是永远不会是城市的,这种特征叫做“unsupport feature”。虽然这种特征可以略微提高性能,但是,它会带来更多的参数,大大增加训练时间。
    提出的办法就是:
    先筛选出“unsupport feature”,对没有“unsupport feature”进行CRF训练;在迭代有限次之后,把那些“unsupport feature”加入到模型中训练。
  2. 为了减少特征的数量,我们把标签类特征对某些模板有效,而不是对所有模板有效。
  3. 边界的标签往往不同于普通位置的标签,比如说:句子中段英语单词大写,一般就是名词,而句子开始则不一定。
  4. 训练以一些基础的特征开始,然后期间增加一些这些特征之间的联系。
  5. 对于实值特性,它可以帮助应用标准的技巧,比如使特性归一化,表示均值0和标准偏差1或将其转换为本特性分类的值,表示为二进制特征。
  6. 在使用冗余特性时,使用正则化是很重要的。

猜你喜欢

转载自blog.csdn.net/sihailongwang/article/details/76489779