条件随机场CRF(一)从随机场到线性链条件随机场

    条件随机场CRF(二) 前向后向算法评估标记序列概率

    条件随机场CRF(三) 模型学习与维特比算法解码

    在条件随机场CRF(一)中我们总结了CRF的模型,主要是linear-CRF的模型原理。本文就继续讨论linear-CRF需要解决的三个问题:评估,学习和解码。这三个问题和HMM是非常类似的,本文关注于第一个问题:评估。第二个和第三个问题会在下一篇总结。

1. linear-CRF的三个基本问题

    在隐马尔科夫模型HMM中,我们讲到了HMM的三个基本问题,而linear-CRF也有三个类似的的基本问题。不过和HMM不同,在linear-CRF中,我们对于给出的观测序列$x$是一直作为一个整体看待的,也就是不会拆开看$(x_1,x_2,...)$,因此linear-CRF的问题模型要比HMM简单一些,如果你很熟悉HMM,那么CRF的这三个问题的求解就不难了。

     linear-CRF第一个问题是评估,即给定 linear-CRF的条件概率分布$P(y|x)$, 在给定输入序列$x$和输出序列$y$时,计算条件概率$P(y_i|x)$和$P(y_{i-1},y_i|x)$以及对应的期望. 本文接下来会详细讨论问题一。

     linear-CRF第二个问题是学习,即给定训练数据集$X$和$Y$,学习linear-CRF的模型参数$w_k$和条件概率$P_w(y|x)$,这个问题的求解比HMM的学习算法简单的多,普通的梯度下降法,拟牛顿法都可以解决。

     linear-CRF第三个问题是解码,即给定 linear-CRF的条件概率分布$P(y|x)$,和输入序列$x$, 计算使条件概率最大的输出序列$y$。类似于HMM,使用维特比算法可以很方便的解决这个问题。 

2.linear-CRF的前向后向概率概述

    要计算条件概率$P(y_i|x)$和$P(y_{i-1},y_i|x)$,我们也可以使用和HMM类似的方法,使用前向后向算法来完成。首先我们来看前向概率的计算。

    我们定义$\alpha_i(y_i|x)$表示序列位置$i$的标记是$y_i$时,在位置$i$之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子$Z(x)$在分母里面。

    在条件随机场CRF(一)第八节中,我们定义了下式:$$M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i))$$

    这个式子定义了在给定$y_{i-1}$时,从$y_{i-1}$转移到$y_i$的非规范化概率。

    这样,我们很容易得到序列位置$i+1$的标记是$y_{i+1}$时,在位置$i+1$之前的部分标记序列的非规范化概率$\alpha_{i+1}(y_{i+1}|x)$的递推公式:$$\alpha_{i+1}^T(y_{i+1}|x) = \alpha_i^T(y_i|x)M_{i+1}(y_{i+1},y_i|x)$$

    在起点处,我们定义:$$\alpha_0(y_0|x)= \begin{cases} 1 & {y_0 =start}\\ 0 & {else} \end{cases}$$

    假设我们可能的标记总数是$m$, 则$y_i$的取值就有$m$个,我们用$\alpha_i(x)$表示这$m$个值组成的前向向量如下:$$\alpha_i(x) = (\alpha_i(y_i=1|x), \alpha_i(y_i=2|x), ... \alpha_i(y_i=m|x))^T$$

    同时用矩阵$M_i(x)$表示由$M_i(y_{i-1},y_i |x) $形成的$m \times m$阶矩阵:$$M_i(x) = \Big[ M_i(y_{i-1},y_i |x)\Big]$$

    这样递推公式可以用矩阵乘积表示:$$\alpha_{i+1}^T(x) = \alpha_i^T(x)M_{i+1}(x)$$

    同样的。我们定义$\beta_i(y_i|x)$表示序列位置$i$的标记是$y_i$时,在位置$i$之后的从$i+1$到$n$的部分标记序列的非规范化概率。

    这样,我们很容易得到序列位置$i+1$的标记是$y_{i+1}$时,在位置$i$之后的部分标记序列的非规范化概率$\beta_{i}(y_{i}|x)$的递推公式:$$\beta_{i}(y_{i}|x) = M_{i+1}(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x)$$

    在终点处,我们定义:$$\beta_{n+1}(y_{n+1}|x)= \begin{cases} 1 & {y_{n+1} =stop}\\ 0 & {else} \end{cases}$$

    如果用向量表示,则有:$$\beta_i(x) = M_{i+1}(x)\beta_{i+1}(x)$$

    由于规范化因子$Z(x)$的表达式是:$$Z(x) = \sum\limits_{c=1}^m\alpha_{n}(y_c|x) = \sum\limits_{c=1}^m\beta_{1}(y_c|x)$$

    也可以用向量来表示$Z(x)$:$$Z(x) = \alpha_{n}^T(x) \bullet \mathbf{1} = \mathbf{1}^T \bullet \beta_{1}(x)$$

    其中,$\mathbf{1}$是$m$维全1向量。

3. linear-CRF的前向后向概率计算

    有了前向后向概率的定义和计算方法,我们就很容易计算序列位置$i$的标记是$y_i$时的条件概率$P(y_i|x)$:$$P(y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}$$

    也容易计算序列位置$i$的标记是$y_i$,位置$i-1$的标记是$y_{i-1}$ 时的条件概率$P(y_{i-1},y_i|x)$:$$P(y_{i-1},y_i|x) = \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}$$

4. linear-CRF的期望计算

    有了上一节计算的条件概率,我们也可以很方便的计算联合分布$P(x,y)$与条件分布$P(y|x)$的期望。

    特征函数$f_k(x,y)$关于条件分布$P(y|x)$的期望表达式是:$$\begin{align} E_{P(y|x)}[f_k]  & = E_{P(y|x)}[f_k(y,x)] \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}P(y_{i-1},y_i|x)f_k(y_{i-1},y_i,x, i) \\ & =  \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i)  \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{align}$$

    同样可以计算联合分布$P(x,y)$的期望:$$\begin{align} E_{P(x,y)}[f_k]  & = \sum\limits_{x,y}P(x,y) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& =  \sum\limits_{x}\overline{P}(x) \sum\limits_{y}P(y|x) \sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x, i) \\& =  \sum\limits_{x}\overline{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}f_k(y_{i-1},y_i,x, i)  \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}}    \end{align}$$

    假设一共有$K$个特征函数,则$k=1,2,...K$

5. linear-CRF前向后向算法总结

    以上就是linear-CRF的前向后向算法,个人觉得比HMM简单的多,因此大家如果理解了HMM的前向后向算法,这一篇是很容易理解的。

    注意到我们上面的非规范化概率$M_{i+1}(y_{i+1},y_i|x)$起的作用和HMM中的隐藏状态转移概率很像。但是这儿的概率是非规范化的,也就是不强制要求所有的状态的概率和为1。而HMM中的隐藏状态转移概率也规范化的。从这一点看,linear-CRF对序列状态转移的处理要比HMM灵活。

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com)      

条件随机场CRF(二) 前向后向算法评估标记序列概率的更多相关文章

  1. 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法 ...

  2. 条件随机场CRF(三) 模型学习与维特比算法解码

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估标记序列概率 条件随机场CRF(三) 模型学习与维特比算法解码 在CRF系列的前两篇,我们总结了CRF的模型基 ...

  3. 条件随机场CRF(一)从随机场到线性链条件随机场

    条件随机场CRF(一)从随机场到线性链条件随机场 条件随机场CRF(二) 前向后向算法评估观察序列概率(TODO) 条件随机场CRF(三) 模型学习与维特比算法解码(TODO) 条件随机场(Condi ...

  4. 条件随机场(CRF) - 1 - 简介(转载)

    转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html 首先我们先弄懂什么是"条件随机场",然后再探索其详 ...

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

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

  6. 条件随机场CRF

    条件随机场(CRF)是给定一组输入随机变量X的条件下另一组输出随机变量Y的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场.实际上是定义在时序数据上的对数线性模型.条件随机场属于判别模型. ...

  7. 条件随机场(CRF) - 2 - 定义和形式(转载)

    转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618218.html 参考书本: <2012.李航.统计学习方法.pdf> 书上 ...

  8. 条件随机场(CRF) - 3 - 概率计算问题

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

  9. 条件随机场(CRF) - 2 - 定义和形式

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xueyingxue001/article/details/51498968声明: 1,本篇为个人对& ...

随机推荐

  1. Iterm2安装Zsh + Oh My Zsh+Solarized

    安装Oh My Zsh curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh 安装Zsh ...

  2. H5学习之旅-xhtml语法(15)

    xhtml定义了一套语法的语法规范 简要介绍一下 1.必须正确的嵌套 2.标签必须结束 3.元素必须小写 4.文档必须有一个根元素 html属性规范 1.html属性必须小写 2.html属性值必须双 ...

  3. Android万能的指示器

    说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...

  4. 仿百度壁纸客户端(一)——主框架搭建,自定义Tab+ViewPager+Fragment

    仿百度壁纸客户端(一)--主框架搭建,自定义Tab+ViewPager+Fragment 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment ...

  5. Android群英传笔记——第六章:Android绘图机制与处理技巧

    Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...

  6. android 防止反编译的若干方法

    第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能,现在混淆策略一般有两种: 对代码的混淆 ...

  7. Android绘图机制(三)——自定义View的实现方式以及半弧圆新控件

    Android绘图机制(三)--自定义View的三种实现方式以及实战项目操作 在Android绘图机制(一)--自定义View的基础属性和方法 里说过,实现自定义View有三种方式,分别是 1.对现有 ...

  8. ThreadPoolExecutor运行机制

    最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看注释和内部运转机制,想当然的揣测参数导致,先看一下新建一个ThreadPoolExecutor的构建参数: ...

  9. Spring的声明式事务管理

    在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeExcep ...

  10. MySQL数据库存储过程动态表建立(PREPARE)

    PREPARE statement_name FROM sql_text /*定义*/ EXECUTE statement_name [USING variable [,variable...]] / ...