摘自:https://www.zhihu.com/question/35866596/answer/139485548

用一个活生生的例子来说明条件随机场的,十分的通俗易懂!原文在这里

[Introduction to Conditional Random Fields]

假设你有许多小明同学一天内不同时段的照片,从小明提裤子起床到脱裤子睡觉各个时间段都有(小明是照片控!)。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的,那就打上开会的标签。问题来了,你准备怎么干?

一个简单直观的办法就是,不管这些照片之间的时间顺序,想办法训练出一个多元分类器。就是用一些打好标签的照片作为训练数据,训练出一个模型,直接根据照片的特征来分类。例如,如果照片是早上6:00拍的,且画面是黑暗的,那就给它打上睡觉的标签;如果照片上有车,那就给它打上开车的标签。

这样可行吗?

乍一看可以!但实际上,由于我们忽略了这些照片之间的时间顺序这一重要信息,我们的分类器会有缺陷的。举个例子,假如有一张小明闭着嘴的照片,怎么分类?显然难以直接判断,需要参考闭嘴之前的照片,如果之前的照片显示小明在吃饭,那这个闭嘴的照片很可能是小明在咀嚼食物准备下咽,可以给它打上吃饭的标签;如果之前的照片显示小明在唱歌,那这个闭嘴的照片很可能是小明唱歌瞬间的抓拍,可以给它打上唱歌的标签。

所以,为了让我们的分类器能够有更好的表现,在为一张照片分类时,我们必须将与它相邻的照片的标签信息考虑进来。这——就是条件随机场(CRF)大显身手的地方!

#从例子说起——词性标注问题
-----

啥是词性标注问题?

非常简单的,就是给一个句子中的每个单词注明词性。比如这句话:“Bob drank coffee at Starbucks”,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。

下面,就用条件随机场来解决这个问题。

以上面的话为例,有5个单词,我们将:**(名词,动词,名词,介词,名词)**作为一个标注序列,称为l,可选的标注序列有很多种,比如l还可以是这样:**(名词,动词,动词,介词,名词)**,我们要在这么多的可选标注序列中,挑选出一个**最靠谱**的作为我们对这句话的标注。

怎么判断一个标注序列靠谱不靠谱呢?

就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。

假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了**动词后面还是动词**的标注序列,要给它**减分!!**

上面所说的**动词后面还是动词**就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。也就是说,每一个特征函数都可以用来为一个标注序列评分,把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。

#定义CRF中的特征函数

现在,我们正式地定义一下什么是CRF中的特征函数,所谓特征函数,就是这样的函数,它接受四个参数:

- 句子s(就是我们要标注词性的句子)
- i,用来表示句子s中第i个单词
- l_i,表示要评分的标注序列给第i个单词标注的词性
- l_i-1,表示要评分的标注序列给第i-1个单词标注的词性

它的输出值是0或者1,0表示要评分的标注序列不符合这个特征,1表示要评分的标注序列符合这个特征。

**Note:**这里,我们的特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。为简单起见,本文中我们仅考虑线性链CRF。

#从特征函数到概率
定义好一组特征函数后,我们要给每个特征函数f_j赋予一个权重λ_j。现在,只要有一个句子s,有一个标注序列l,我们就可以利用前面定义的特征函数集来对l评分。

<img src="https://pic3.zhimg.com/v2-d5c036cdff0f8ab53bac9f60d126daee_b.png" data-rawwidth="498" data-rawheight="68" class="origin_image zh-lightbox-thumb" width="498" data-original="https://pic3.zhimg.com/v2-d5c036cdff0f8ab53bac9f60d126daee_r.png">

上式中有两个相加,外面的相加用来相加每一个特征函数f_j,里面的相加用来相加句子中每个位置的单词的的特征值。

对这个分数进行**指数化和标准化**,我们就可以得到标注序列l的概率值**p(l|s)**,如下所示:

<img src="https://pic4.zhimg.com/v2-f309245728fef919a9843bd44c48267f_b.png" data-rawwidth="637" data-rawheight="96" class="origin_image zh-lightbox-thumb" width="637" data-original="https://pic4.zhimg.com/v2-f309245728fef919a9843bd44c48267f_r.png">

#几个特征函数的例子
前面我们已经举过特征函数的例子,下面我们再看几个具体的例子,帮助增强大家的感性认识。

<img src="https://pic3.zhimg.com/v2-1e2e20e990e4572907e6f87c88b40502_b.png" data-rawwidth="212" data-rawheight="39" class="content_image" width="212">

当l_i是“副词”并且第i个单词以“ly”结尾时,我们就让f1 = 1,其他情况f1为0。不难想到,f1特征函数的权重λ1应当是正的。而且λ1越大,表示我们越倾向于采用那些把以“ly”结尾的单词标注为“副词”的标注序列

<img src="https://pic2.zhimg.com/v2-26349606327a44f4c432e604e168060d_b.png" data-rawwidth="205" data-rawheight="42" class="content_image" width="205">

如果i=1,l_i=动词,并且句子s是以“?”结尾时,f2=1,其他情况f2=0。同样,λ2应当是正的,并且λ2越大,表示我们越倾向于采用那些把问句的第一个单词标注为“动词”的标注序列。

。。。
好了,一个条件随机场就这样建立起来了,让我们总结一下:
为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。

转载于:https://www.cnblogs.com/bonelee/p/7063724.html

条件随机场——时间序列(句子单词序列也算),其特征函数必须要考虑前一刻的数据...相关推荐

  1. 清晰易懂的条件随机场原理总结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 如果问机器学习初学者,<统计学习方法>中最难理解的章节 ...

  2. 全连接条件随机场_条件随机场CRF简介

    作者:Ravish Chawla 编译:ronghuaiyang 导读 一个简单明了的对条件随机场的说明,给大家一个非常直观的印象,CRF到底是个什么东西,能干什么用. 条件随机场是一种用于序列预测的 ...

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

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

  4. [白话解析] 用水浒传为例学习条件随机场

    [白话解析] 用水浒传为例学习条件随机场 0x00 摘要 本文将尽量使用易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来解释条件随机场.并且用水浒传为例学习.并且从名著中 ...

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

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

  6. 条件随机场(CRF)详解

    文章目录 形式与定义 什么是条件随机场 简化形式 矩阵形式 学习算法 概率计算 前向后向概率概述 前向后向概率计算 期望计算 预测算法-维特比算法 维特比算法流程 维特比算法实例 LR & C ...

  7. 概率模型与条件随机场

    https://blog.csdn.net/shijing_0214/article/details/51169048 1.概率模型 机器学习中的很多模型可以根据概率分布形式分为生成模型和判别模型,其 ...

  8. 条件随机场(CRF)

    一.条件随机场(Conditional Random Fields). 条件随机场(CRF)是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是 ...

  9. 「NLP」用于序列标注问题的条件随机场

    https://www.toutiao.com/a6714045004102238734/ 上一篇介绍了隐马尔科夫模型,隐马尔科夫模型引入了马尔科夫假设,即当前时刻的状态只与其前一时刻的状态有关.但是 ...

最新文章

  1. 3亿人养老靠机器人?这家公司要在2030年实现,有谱
  2. ButterKnife Zelezny导入不成功遇到的问题
  3. 开发linux显卡驱动,显卡驱动开发DRM入门--Apple的学习笔记
  4. mysql 介绍 知乎_SQL介绍——Mysql
  5. [BUUCTF-pwn]——inndy_rop
  6. 【Go语言】集合与文件操作
  7. 拨开云雾见日月:SQL Server 调优之查询存储
  8. redis+mybatis+spring
  9. maltab利用plot画图后更改线条颜色
  10. Python地理数据处理相关模块的安装方法
  11. 前端练手项目合集40.0个,附源码,2022年最新
  12. php laravel 下载远程图片
  13. 【美股】美股基本面的一些指标详解
  14. 交互设计的本质是什么?交互设计哪些意义?
  15. 带通滤波器是什么,它的原理是什么
  16. 隐马尔可夫模型(HMM)攻略
  17. 中文语音合成综合评测一(可懂度)
  18. 2022-04-14每日刷题打卡
  19. Ubuntu Linux出现IP inet6 addr: fe80::fe0:9b43:8a0e:2463/64的解决办法
  20. 交换网络基础-交换机的工作原理

热门文章

  1. mini2440通过JLink烧写BootLoader到Nor Flash
  2. matplotlb.finance导包报错——ModuleNotFoundError No module named mpl finance
  3. mysql分库主键_分库主键设计-Mysql
  4. egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库
  5. 生成html_HTML页面生成器:使用JavaScript和Node创建CLI
  6. java null转换jason_Java进阶知识,轻松理解Java泛型
  7. php多线程编程代码实例
  8. redis的五种存储类型的具体用法
  9. 【深度学习入门到精通系列】使用Plotly绘制气泡图(以U-Net等网络性能比较为例)
  10. 服务器文件嗅探,嗅探TFTP配置文件传输