上篇博文介绍了CRF的标记序列的概率计算,本片博文专注于CRF的参数学习问题和序列解码问题。

CRF模型参数学习思路

在CRF模型参数学习问题中,我们给定训练数据集 X X X和对应的标记序列 Y Y Y, K K K个特征函数 f k ( x , y ) f_k(x,y) fk​(x,y),需要学习CRF的模型参数 w k w_k wk​和条件概率 P w ( y ∣ x ) P_w(y|x) Pw​(y∣x)其中条件概率 P w ( y ∣ x ) P_w(y|x) Pw​(y∣x)和模型参数 w k w_k wk​满足一下关系:
P w ( y ∣ x ) = P ( y ∣ x ) = 1 Z w ( x ) e x p ∑ k = 1 K w k f k ( x , y ) = e x p ∑ k = 1 K w k f k ( x , y ) ∑ y e x p ∑ k = 1 K w k f k ( x , y ) P_w(y|x) = P(y|x) = \frac{1}{Z_w(x)}exp\sum\limits_{k=1}^Kw_kf_k(x,y) = \frac{exp\sum\limits_{k=1}^Kw_kf_k(x,y)}{\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y)} Pw​(y∣x)=P(y∣x)=Zw​(x)1​expk=1∑K​wk​fk​(x,y)=y∑​expk=1∑K​wk​fk​(x,y)expk=1∑K​wk​fk​(x,y)​
所以我们的目标就是求出所有的模型参数 w k w_k wk​,这样条件概率 P w ( y ∣ x ) P_w(y|x) Pw​(y∣x)可以从上式计算出来。求解这个问题有很多思路,比如梯度下降法,牛顿法,拟牛顿法,下面我们只简要介绍用梯度下降法的求解思路。

CRF模型参数学习之梯度下降法求解

在使用梯度下降法求解模型参数之前,我们需要定义我们的优化函数,一般极大化条件分布 P w ( y ∣ x ) P_w(y|x) Pw​(y∣x)的对数似然函数如下:
  L ( w ) = l o g ∏ x , y P w ( y ∣ x ) P ‾ ( x , y ) = ∑ x , y P ‾ ( x , y ) l o g P w ( y ∣ x ) L(w)= log\prod_{x,y}P_w(y|x)^{\overline{P}(x,y)} = \sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x)    L(w)=logx,y∏​Pw​(y∣x)P(x,y)=x,y∑​P(x,y)logPw​(y∣x) 其中, P ‾ ( x , y ) \overline{P}(x,y) P(x,y)为经验分布,可以从先验知识和训练集样本中得到,为了使用梯度下降法,我们现在极小化 f ( w ) = − L ( P w ) f(w) = -L(P_w) f(w)=−L(Pw​),具体求解如下:
  f ( w ) = − ∑ x , y P ‾ ( x , y ) l o g P w ( y ∣ x ) = ∑ x , y P ‾ ( x , y ) l o g Z w ( x ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( x , y ) = ∑ x P ‾ ( x ) l o g Z w ( x ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( x , y ) = ∑ x P ‾ ( x ) l o g ∑ y e x p ∑ k = 1 K w k f k ( x , y ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( x , y ) \begin{aligned}f(w) & = -\sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x) \\ &= \sum\limits_{x,y}\overline{P}(x,y)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)log\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \end{aligned}    f(w)​=−x,y∑​P(x,y)logPw​(y∣x)=x,y∑​P(x,y)logZw​(x)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)=x∑​P(x)logZw​(x)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)=x∑​P(x)logy∑​expk=1∑K​wk​fk​(x,y)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)​ 
 对 w w w求导可以得到:
  ∂ f ( w ) ∂ w = ∑ x , y P ‾ ( x ) P w ( y ∣ x ) f ( x , y ) − ∑ x , y P ‾ ( x , y ) f ( x , y ) \frac{\partial f(w)}{\partial w} = \sum\limits_{x,y}\overline{P}(x)P_w(y|x)f(x,y) - \sum\limits_{x,y}\overline{P}(x,y)f(x,y)    ∂w∂f(w)​=x,y∑​P(x)Pw​(y∣x)f(x,y)−x,y∑​P(x,y)f(x,y) 
 有了 w w w的导数表达式,就可以用梯度下降法来迭代求解最优的 w w w了,以上就是CRF模型参数学习之梯度下降法求解思路总结。

CRF模型维特比算法解码思路

CRF的标记序列解码问题,是指给定条件随机场的条件概率 P ( y ∣ x ) P(y|x) P(y∣x)和一个观测序列 x x x,要求出满足 P ( y ∣ x ) P(y|x) P(y∣x)最大的序列 y y y。维特比算法本身是一个动态规划算法,利用了两个局部状态和对应的递推公式,从局部递推到整体,进而得解。对于具体不同的问题,仅仅是这两个局部状态的定义和对应的递推公式不同而已。
对于我们CRF中的维特比算法,我们的第一个局部状态定义为 δ i ( l ) \delta_i(l) δi​(l),表示在位置 i i i标记 l l l各个可能取值 ( 1 , 2... m ) (1,2...m) (1,2...m)对应的非规范化概率的最大值。之所以用非规范化概率是因为规范化因子 Z ( x ) Z(x) Z(x)不影响最大值的比较。根据 δ i ( l ) δ_i(l) δi​(l)的定义,我们递推在位置 i + 1 i+1 i+1标记 l l l的表达式为:
δ i + 1 ( l ) = max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 1 = l , x , i ) } , l = 1 , 2 , . . . m \delta_{i+1}(l) = \max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\;, l=1,2,...m δi+1​(l)=1≤j≤mmax​{δi​(j)+k=1∑K​wk​fk​(yi​=j,yi+1​=l,x,i)},l=1,2,...m
此外,我们需要用另一个局部状态 Ψ i + 1 ( l ) \Psi_{i+1}(l) Ψi+1​(l)来记录使 δ i + 1 ( l ) \delta_{i+1}(l) δi+1​(l)达到最大的位置 i i i的标记取值,这个值用来最终回溯最优解, Ψ i + 1 ( l ) \Psi_{i+1}(l) Ψi+1​(l)的递推表达式为:
Ψ i + 1 ( l ) = a r g max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 1 = l , x , i ) } , l = 1 , 2 , . . . m \Psi_{i+1}(l) = arg\;\max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\; ,l=1,2,...m Ψi+1​(l)=arg1≤j≤mmax​{δi​(j)+k=1∑K​wk​fk​(yi​=j,yi+1​=l,x,i)},l=1,2,...m
以上就是CRF的序列解码的基本思想,总结来说,CRF的三个基本问题:标记序列的概率计算–前向后向算法,参数学习问题–梯度下降法,序列解码问题–维特比算法,其中前向后向算法和维特比算法有着异曲同工之妙,都是基于动态规划的思想。这里所述CRF的三个基本问题其实在BI-LSTM-CRF中都有涉及,在训练的过程中涉及到参数的学习,计算总路径得分就用到了类似于前向后向的算法思想,值得注意的是,BI-LSTM-CRF中并不涉及到特征函数和权重,只需要学习到一个状态转移矩阵即可,但所用思想都是一样的。

CRF跟HMM的区别

linear-CRF模型和HMM模型有很多相似之处,尤其是其三个典型问题非常类似,除了模型参数学习的问题求解方法不同以外,概率估计问题和解码问题使用的算法思想基本也是相同的。同时,两者都可以用于序列模型,因此都广泛用于自然语言处理的各个方面。
现在来看看两者的不同点。最大的不同点是linear-CRF模型是判别模型,而HMM是生成模型,即linear-CRF模型要优化求解的是条件概率 p ( x ∣ y ) p(x|y) p(x∣y),则HMM要求解的是联合分布 p ( x , y ) p(x,y) p(x,y)。第二,linear-CRF是利用最大熵模型的思路去建立条件概率模型,对于观测序列并没有做马尔科夫假设。而HMM是在对观测序列做了马尔科夫假设的前提下建立联合分布的模型。
最后想说的是,只有linear-CRF模型和HMM模型才是可以比较讨论的。但是linear-CRF是CRF的一个特例,CRF本身是一个可以适用于很复杂条件概率的模型,因此理论上CRF的使用范围要比HMM广泛的多。
更多的CRF跟HMM的区别可查看 【1】【2】

条件随机场CRF(三)相关推荐

  1. 条件随机场(CRF)相关理论知识

    文章目录 无向概率图模型 条件随机场 CRF 实例 线性链条件随机场的简化形式 线性链条件随机场的矩阵形式 linear-CRF的三个基本问题 1,概率计算问题 前向后向概率概述 前向后向概率计算 l ...

  2. 条件随机场 (CRF) 分词序列谈之一(转)

    http://langiner.blog.51cto.com/1989264/379166 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  3. 长文详解基于并行计算的条件随机场CRF

    六月 北京 | 高性能计算之GPU CUDA培训 6月22-24日三天密集式学习  快速带你入门阅读全文> 正文共3974个字,29张图,预计阅读时间18分钟. 之前写过CRF的详解,只是为了让 ...

  4. python期望输出隐藏_【归纳综述】马尔可夫、隐马尔可夫 HMM 、条件随机场 CRF 全解析及其python实现...

    PR Structured Ⅲ:马尔可夫.隐马尔可夫 HMM .条件随机场 CRF 全解析及其python实现 Content 归纳性长文,不断更新中...欢迎关注收藏 本章承接概率图知识 马尔可夫不 ...

  5. 条件随机场CRF的理解

    1.个人理解和总结 对比HMM的状态转移概率矩阵和发射概率矩阵CRF有自己的定义在边上的特征函数(相当于转移概率)和定义在节点上的特征函数(相当月发射概率) 序列标注HMM可以根据转移概率矩阵和发射概 ...

  6. 全网最通俗的条件随机场CRF

    前言 本文是我尽量以通俗易懂的口吻来讲解CRF的一篇博文,标题虽然取得有点自不量力,但也是我付出了十分心血总结出来的,如果你还是没能看懂那说明我能力不够没能讲清楚,烦请不要在我的留言区展现出你的杠精本 ...

  7. 简单理解条件随机场CRF

    一.条件随机场是什么? 什么是条件随机场?我们先从它的命名开始说起,为什么是条件随机场这么奇怪的名字,为什么不叫飞机场.火葬场?通常数学上的命名是简单而直白的,大家听我一一解释. 条件 "条 ...

  8. 通俗易懂条件随机场CRF

    条件随机场CRF 条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型,在自然语言处理中得到了广泛应用.本系列主要 ...

  9. 条件随机场(CRF) - 1 - 简介

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...

最新文章

  1. Redis常用五大数据类型
  2. 修改手机屏幕刷新率_到底高刷新率屏幕为智能手机带来什么?
  3. C# 平时碰见的问题【1】
  4. mysql plugin filed_MySQL启动时报Plugin 'InnoDB' registration as a STORAGE ENGINE failed.错误
  5. php提交飞信,php发送飞信消息
  6. git工作区和缓存区概念理解
  7. Qt工作笔记-QListWidget鼠标拖动,一个到另一个,并遍历
  8. vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用
  9. Linux内核project导论——网络:Netfilter概览
  10. 牛腩新闻发布系统—错误总结
  11. php 安全禁止函数,禁用危险函数-PHP安全
  12. 众多促销标签免抠元素素材一键即可获取
  13. Linux 桌面虚拟化技术 KVM
  14. 大脑的默认模式网络DMN
  15. 为什么跨浏览器测试很重要?7款跨浏览器测试工具请查收
  16. 大话设计模式 第十一章 迪米特法则 小黑小白在开车
  17. Codis学习笔记--Java连接codis
  18. 花王洁霸洗衣粉能洗干净衬衣领子
  19. C#/VB.NET 设置PDF跨页表格重复显示表头行
  20. PowerBuilder(pb)真的弱吗?还是你不会?PB项目二次开发、系统的维护、兼职业务

热门文章

  1. 搜救犬都负责什么工作
  2. bway ESL电竞联赛十六季C组对战前瞻 三组战队情报分析
  3. 41 位全球顶尖 AI 专家共论人工智能创新实践,CCAI 2017 全日程公布!
  4. 20年的嵌入式开发经验总结 !
  5. 谷歌开源!一个格式化 Python 代码的好帮手!
  6. 数据库SQL实战 --43.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
  7. 【YOLOv5】连接手机摄像头进行目标检测
  8. C++:66---特殊工具与技术之(不可移植的特性:位域、volatile、extern “C“链接提示)
  9. 电脑游戏业编年史之十二──叛逆
  10. oracle 结果集已耗尽_结果集已耗尽