crf算法

概率图模型学习笔记:HMM、MEMM、CRF

孤街浪徒 提交于 2020-03-17 14:40:46
作者:Scofield 链接:https://www.zhihu.com/question/35866596/answer/236886066 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 so far till now, 我还没见到过将CRF讲的个明明白白的。一个都没。就不能不抄来抄去吗? 我打算搞一个这样的版本,无门槛理解的。 ——20170927 陆陆续续把调研学习工作完成了,虽然历时有点久,现在put上来。评论里的同学也等不及了时不时催我,所以不敢怠慢啊…… 总结的还算比较体系化,蛮长的,请读者慢慢看,肯定有收获的。 (好痛苦,这么多公式都要在知乎上重输;是在MD上写的,在知乎上没想到格式这么难看……) ——20180129 概率图模型学习笔记:HMM、MEMM、CRF 一、Preface 二、Prerequisite 2.1 概率图 2.1.1 概览 2.1.2 有向图 vs. 无向图 2.1.3 马尔科夫假设&马尔科夫性 2.2 判别式模型 vs. 生成式模型 2.3 序列建模 三、HMM 3.1 理解HMM 3.2 模型运行过程 3.2.1 学习过程 3.2.2 序列标注(解码)过程 3.2.3 序列概率过程 四、MEMM 4.1 理解MEMM 4.2 模型运行过程 4.2.1 学习过程 4.2.2 序列标注(解码)过程 4.2.3

Machine Learning系列--CRF条件随机场总结

对着背影说爱祢 提交于 2020-03-02 22:57:08
根据《统计学习方法》一书中的描述,条件随机场(conditional random field, CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场。 条件随机场是一种判别式模型。 一、理解条件随机场 1.1 HMM简单介绍 HMM即 隐马尔可夫模型 ,它是处理序列问题的统计学模型,描述的过程为:由隐马尔科夫链随机生成 不可观测的状态随机序列 ,然后各个状态分别生成一个观测,从而产生观测随机序列。 在这个过程中,不可观测的序列称为状态序列(state sequence), 由此产生的序列称为观测序列(observation sequence)。 该过程可通过下图描述: 上图中, $X_1,X_2,…X_T$是隐含序列,而$O_1, O_2,..O_T$是观察序列。 隐马尔可夫模型由三个概率确定: 初始概率分布 ,即初始的隐含状态的概率分布,记为$\pi$; 状态转移概率分布 ,即隐含状态间的转移概率分布, 记为$A$; 观测概率分布 ,即由隐含状态生成观测状态的概率分布, 记为$B$。 以上的三个概率分布可以说就是隐马尔可夫模型的参数,而根据这三个概率,能够确定一个隐马尔可夫模型$\lambda = (A, B, \pi)$。 而隐马尔科夫链的三个基本问题为: 概率计算问题 。即给定模型$\lambda = (A,

CRF

只谈情不闲聊 提交于 2020-02-16 14:31:04
条件随机场 条件随机场是无向图。条件随机场是给定一组输入变量条件下另一组输出随机变量的条件概率分布模型(马尔科夫随机场)。 CRF的blog https://blog.csdn.net/dcx_abc/article/details/78319246 简单理解:举了序列标注的例子。有不同的特征函数来计算前后两个字符标注的特征值,最后将所有的特征函数对一个句子里所有的前后的字符标注的特征值相加作为score(衡量标准)。最后使用对所有的score做softmax。(通过这个softmax得到的值就是P(Y|X))。值最大的标注序列的score就是所需要的标注。 https://blog.csdn.net/weixin_41911765/article/details/82465697 很棒的blog,解释了如何推导到上篇blog提到的特征函数。并且还有之后如何通过前向和后向的方式来计算出概率。并且介绍了维特比算法如何计算出最后的最优路径。   维特比计算简单地理解就是通过不断的迭代寻找最优路径。状态0到状态1的时候,每条路径都计算,并求出最大值。并找出该最大值情况下该状态变化的起点和终点。一路迭代到整个序列的终点。最后从终点根据不同状态的起点终点反推出一条最优路径。 通过前向和后向的算法的定义来计算条件随机场的概率。 #TODO 迭代优化法,牛顿法是真的看不懂。 学习方法:

条件随机场CRF(二)

允我心安 提交于 2020-01-20 10:02:12
CRF主要涉及到三个问题,标记序列概率的计算、参数的学习、序列的预测(解码),本片博文主要介绍第一个问题:标记序列概率的计算–前向后向算法,在 博文 中提到,在BI-LSTM-CRF模型框架的CRF层,当计算序列所有路径的总得分时就用到了前向后向算法的思想。 CRF前向后向概率计算 首先定义 α i ( y i ∣ x ) \alpha_i(y_i|x) α i ​ ( y i ​ ∣ x ) 表示序列位置 i i i 的标记是 y i y_i y i ​ 时,在位置 i i i 之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子 Z ( x ) Z(x) Z ( x ) 在分母里面。 在 条件随机场CRF(一) 中,我们定义了下式: M i ( y i − 1 , y i ∣ x ) = e x p ( ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ) M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i)) M i ​ ( y i − 1 ​ , y i ​ ∣ x ) = e x p ( k = 1 ∑ K ​ w k ​ f k ​ ( y i − 1 ​ , y i ​ , x , i ) )

【机器学习】HMM与CRF

对着背影说爱祢 提交于 2020-01-14 00:45:01
HMM与CRF 隐马尔可夫 原理 代码实现 条件随机场 原理 条件随机场是从概率无向图(马尔可夫随机场)扩展得到的,概率无向图的联合概率分布$P(Y)$可由概率图中所有的最大团$C$上的势函数$\Psi_{C}(Y_{C})$的乘积形式表示,$Y_{C}$是$C$对应的随机变量,即 $$P(Y)=\frac{1}{Z} \prod_{C} \Psi_{C}(Y_{C})$$ 其中$Z$是规范化因子,保证$P(Y)$是一个概率分布。函数$\Psi_{C}(Y_{C})$要保证是严格正的,且通常为定义为指数函数。 $$\Psi_{C}(Y_{C})=exp\left( -E(Y_{C}) \right)$$ 条件随机场是给定随机变量$X$条件下,随机变量$Y$的马尔可夫随机场,这里介绍的是定义在线性链上的条件随机场,在标注问题中,$X$表示输入的观测序列,$Y$表示对应的输出标记序列或状态序列,如下图。 条件随机场的条件概率模型如下: $$P(y|x)=\frac{1}{Z(x)}exp \left( \sum_{i,k} \lambda_{k}t_{k}(y_{i-1},y_{i},x,i) + \sum_{i,l}\mu_{l}s_{l}(y_{i},x,i) \right)$$ $t_{k}$是定义在边上的特征函数, 称为转移特征特征,依赖于当前位置和前一个位置,$s_{l}

第十一章-CRF的奇妙之处

匿名 (未验证) 提交于 2019-12-03 00:09:02
上篇中,我们了解到HMM的相关知识,并且知道HMM属于概率有向图模型,接下来,让我们一起学习总结概率无向图模型――条件随机场(Conditional Random Field, CRF)。 概率无向图模型又称为马尔可夫随机场,是一个可以由无向图表示的联合概率分布。 \[ 设有联合概率分布P(Y),由无向图G=(V,E)表示,V表示结点集合,E表示边集合,\\在图G中,结点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布P(Y)满足\\成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型或马尔可夫随机场。 \] 如图上,一共有10个结点(即10个随机变量),任意找两个没有边直接连接的结点,假设有两个随机变量(u,v)没有边相连,剩下的8个随机变量记为O,当给定O时,u和v是独立的,即P(u,v|O)=P(u|O)P(v|O)。 如上图,任意找一个结点v,与v有边相连的所有结点记为W,其余5个结点记为O,当给定W时,v和O是独立的,即P(v,O|W)=P(v|W)P(O|W)。 一共有8个结点(即有8个随机变量),取中间两个随机变量记为集合C,当将集合C从图中删掉之后,那么剩下的6个结点分成了两个部分,可知左边的3个结点和右边的3个结点没有任何边将它们相连,当给定C时,A和B是独立的,即P(A,B|C)=P(A|C)P(B|C)。 注意

命名实体识别 BiLSTM――CRF

匿名 (未验证) 提交于 2019-12-02 23:43:01
本篇文章假设你已有lstm和crf的基础。 BiLSTM+softmax lstm也可以做序列标注问题。如下图所示: 双向lstm后接一个softmax层,输出各个label的概率。那为何还要加一个crf层呢? 我的理解是softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。 BiLSTM+crf的基本思想 BiLSTM+crf的结构如图所示: 对于每一个输入我们得到一个预测label序列定义这个预测的得分为: 其中Pi,yi为第i个位置softmax输出为yi的概率,Ayi,yi+1为从yi到yi+1的转移概率,当tag(B-person,B-location。。。。)个数为n的时候,转移概率矩阵为(n+2)*(n+2),因为额外增加了一个开始位置和结束位置。这个得分函数S就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,还要考虑前面转移概率相加最大,即还要符合输出规则(B后面不能再跟B)

自然语言处理从小白到大白系列(6)说说中文分词那些事

橙三吉。 提交于 2019-12-02 05:06:24
文章目录 一. 分词常用方法 1.1 基于词表的方法 最大匹配法 全切分路径选择法 1.2 基于统计模型的方法 1. n元语法模型 2. 隐马尔可夫模型(Hidden Markov Model ,HMM) 3. 条件随机场模型(Conditional Random Fields,CRF) 1.3 基于深度学习的方法 二. 分词常用工具 2.1 [jieba](https://github.com/fxsjy/jieba) 2.2 [hanLP](https://github.com/hankcs/pyhanlp) 2.3 [PKUseg](https://github.com/lancopku/pkuseg-python) 2.4 [thulac](https://github.com/thunlp/THULAC-Python) 2.5 [nlpir](https://github.com/NLPIR-team/NLPIR) 2.6 [snowNLP](https://github.com/isnowfy/snownlp) 自然语言处理的中文分词有三个难点: 分词标准 例如“花草”,有的人认为是一个词,有的人认为应该划分开为两个词“花/草”。某种意义上,中文分词可以说是一个没有明确定义的问题。 切分歧义 不同的切分结果会有不同的含义,这个不用举例了,很常见。 未登录词 也叫新词发现

条件随机场CRF原理介绍 以及Keras实现

夙愿已清 提交于 2019-12-01 05:35:44
本文是对CRF基本原理的一个简明的介绍。当然,“简明”是相对而言中,要想真的弄清楚CRF,免不了要提及一些公式,如果只关心调用的读者,可以直接移到文末。 图示 # 按照之前的思路,我们依旧来对比一下普通的逐帧softmax和CRF的异同。 逐帧softmax # CRF主要用于序列标注问题,可以简单理解为是 给序列中的每一帧都进行分类 ,既然是分类,很自然想到将这个序列用CNN或者RNN进行编码后,接一个全连接层用softmax激活,如下图所示 逐帧softmax并没有直接考虑输出的上下文关联 条件随机场 # 然而,当我们设计标签时,比如用s、b、m、e的4个标签来做字标注法的分词,目标输出序列本身会带有一些上下文关联,比如s后面就不能接m和e,等等。逐标签softmax并没有考虑这种输出层面的上下文关联,所以它意味着把这些关联放到了编码层面,希望模型能自己学到这些内容,但有时候会“强模型所难”。 而CRF则更直接一点,它 将输出层面的关联分离了出来 ,这使得模型在学习上更为“从容”: CRF在输出端显式地考虑了上下文关联 数学 # 当然,如果仅仅是引入输出的关联,还不仅仅是CRF的全部,CRF的真正精巧的地方,是它 以路径为单位,考虑的是路径的概率 。 模型概要 # 假如一个输入有 n n 帧,每一帧的标签有 k k 种可能性,那么理论上就有 k n kn 中不同的输出

CRF系列——一个简单的例子

我与影子孤独终老i 提交于 2019-11-30 22:05:28
CRF可以应用于对一串序列进行自动标注的问题。例如对文字序列进行词性标,即要自动判断句子中每个单词的词性。在这样的问题中,每一个词的标注结果,不仅依赖于该词语本身,还会依赖于其他词语的标注结果。CRF可以考虑到这样的依赖关系。 本文会以一个词性标注的应用为例,介绍CRF所解决的问题以及CRF模型的建立,学习与预测过程。 任务描述 词性标注 (part-of-speech tagging),其目标就是对一个句子即一串单词的序列进行打标签(tagging),标注每个词的词性(ADJECTIVE, NOUN, PREPOSITION, VERB, ADVERB, ARTICLE)。我们假设在词性标准任务中, 每个单词的词性不仅依赖其本身,而且也会依赖其前一个单词 (这里做了简化,实际上每个单词的标注结果依赖更多东西)。 下面,我将针对对这个问题,建立一个简单的线性链条件随机场(linear-chain CRF)。并介绍这个CRF是如何表示上述的依赖关系,以及如何利用这个CRF来求解这个问题。 实际上,和其他的统计机器学习模型一样,我们有三个任务要完成: 1)指定模型参数(建立模型) 2)估计这些参数(学习) 3)利用这些参数进行预测(预测) 第一个任务——建立模型 特征函数 为了评价序列中每个单词属于各个tag的可能性,我们要根据单词的位置定义一系列 特征函数 (feature