在做NLP算法工程师的时候,了解到了NER命名实体识别中LSTM+CRF是目前主流的方法,一直对CRF不是很理解,最近抽时间对CRF进行了较为全面的学习。写这篇博客特此记录,以供后续复习,同时也加深自己对这些理论知识的理解。
目录
一、联合概率和条件概率的回顾
联合概率和条件概率是概率论里面的两个基本概念,这里就对它们的公式和含义进行简单的回顾。
以上就是联合概率和条件概率知识的简单整理,连续变量也是一样的道理。接下来看看判别式模型和生成式模型。
二、判别式模型和生成式模型
说实话,以前在机器学习中看到过这两个词也了解过它们,但是并没有引起重视。当时只是觉得了解机器学习算法模型的原理,应用调参,数据处理特征工程和模型融合,应该差不多了。最近才发现必须得好好理解这两个概念,才会对这些算法模型了解的更深刻,同时也才会对后面的概率图CRF的理解有很大的帮助。
我个人认为,从字面上能够有一定的可鉴别性。判别式模型,可以直接用来进行判断,得到结果;生成式模型则必须得经过一个生成的过程然后再才能进行判断得到结果。看看具体的一些描述(添加公式功能出了Bug,那就上图片。。。。。)——参考自判别式模型和产生式模型:
简而言之,判别式模型就是对自变量x和输出y的条件概率P(y|x)做建模分析——x决定y;生成式模型则是对自变量x和因变量y的联合概率做建模分析——y决定x。
最后对经常用到的一些算法模型做一个分类,从判别式和生成式的角度来说的:
判别式模型常用的有:
LR,SVM,NN(神经网络),CRF,LDA——线性判别式,Boosting,回归树
生成模型常用的有:
贝叶斯算法、HMM隐马尔科夫模型、信念网络、贝叶斯网络、KNN、深度信念网络、LDA——潜在狄利克雷分配、马尔科夫随机场
三、HMM隐马尔科夫模型
隐马尔可夫模型(Hidden Markov Model, HMM)是一种统计模型,在语音识别、行为识别、NLP、故障诊断等领域具有高效的性能。
HMM是关于时序的概率模型,描述一个含有未知参数的马尔可夫链所生成的不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。
HMM是一个双重随机过程---具有一定状态的隐马尔可夫链和随机的观测序列。
HMM随机生成的状态随机序列被称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,被称为观测序列。
思考:z1,z2...,zn是不可观测的状态,x1,x2,...xn是可观测到的序列;不可观测的状态决定可观则序列的值(z的取值决定X的取值);
1、在z1、z2 不可观测的情况下,x1和z2独立吗?x1和x2独立吗?
回答:这个问题可以回顾之前的贝叶斯网络来理解。
首先z1,z2都是离散的值,但x1的值可能是离散的也可能是连续的。比如z是天气情况,每天天气的改变是离散的。x是因为天气而改变的一些其他状态,比如x=(地面是否潮湿、路上行人数量、雨伞销售数量...);
在z1和z2不可观测的情况下,x1和z2不独立,x1和x2也是不独立的。
2、 在z1、z2可观测的情况下,x1和z2独立吗?x1和x2独立吗?
回答: 在z1和z2可观测的情况下,因为x1和z2的取值只和z1有关,所以就独立了。同样在给定了z1和z2的情况下,x1和x2也独立。
HMM由隐含状态S、可观测状态O、初始状态概率矩阵π、隐含状态转移概率矩阵A、可观测值转移矩阵B(又称为混淆矩阵,Confusion Matrix);
π和A决定了状态序列,B决定观测序列,因此HMM可以使用三元符号表示,称为HMM的三元素:
S可以统计历史出现的所有状态;
初始概率分布π,统计S中各个状态各自出现的概率作为我们的初始概率分布π向量值;
HMM的两个性质
p(it | .....) 表示在从t-1时刻的观测值qt-1,一直到第1时刻观测值q1的条件下,在第t时刻发生状态的概率。
性质1: 最终分析结果发现,在第t时刻发生状态的概率it只和t-1时刻有关。
性质2: 第t时刻的观测值qt只和第t时刻的状态it有关。
HMM模型用来解决什么样的问题呢?
1、概率计算问题
前向-后向算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ);
2、学习问题
Baum-Welch算法(状态未知) 已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数——也就是参数λ是未知的,使得在该模型下观测序列P(Q|λ)最大。
3、预测问题
Viterbi算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},求给定观测序列条件概率P(I|Q,λ)最大的状态序列I。
那么关于HMM问题怎么求解呢?
具体内容参考我转载的博客:
1、马尔科夫系列——一、隐马尔可夫模型 - 马尔可夫链、HMM参数和性质
2、马尔科夫系列——二、隐马尔可夫模型 - HMM的三个问题 - 概率计算问题
3、马尔科夫系列——三、隐马尔可夫模型 - 学习问题 - Baum-Welch算法
4、马尔科夫系列——四、预测问题Viterbi算法、案例和代码实现
以上就是HMM——隐马尔科夫模型的知识点了。
四、CRF——条件随机场
条件随机场(Conditional Random Fields, 以下简称CRF)是给定一组输入序列条件下另一组输出序列的条件概率分布模型。这里的定义与HMM其实是很类似的,HMM也是解决这个问题的,但是CRF比HMM更加先进,它能解决HMM不能解决的问题。简单的来说CRF舍弃掉了HMM有限历史性的假设——当前观测值与N个隐含状态有关,同时CRF是判别式模型而HMM是生成式模型。下面来详细说明条件随机场。
随机场:由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。举词性标注的例子:假如我们有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在我们已知的词性集合(名词,动词...)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。
马尔科夫随机场:它是随机场的一个特例——假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。上面的例子中我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。
条件随机场CRF:设X与Y是随机变量,P(Y|X)是给定X时Y的条件概率分布,若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场。
对于X和Y有相同结构的CRF,我们称之为线性链条随机场,如下,X和Y是相同的结构。
对于linear-CRF的数学定义:
设X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)X=(X1,X2,...Xn),Y=(Y1,Y2,...Yn)均为线性链表示的随机变量序列,在给定随机变量序列X的情况下,随机变量Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性:
则称P(Y|X)为线性链条件随机场。
线性链条件随机场的参数化
在HMM中有状态转移概率和发射概率,类似的在CRF中也存在的。这里就用特征函数来定义它,一种是Y也就是状态序列节点上的函数,这种特征函数只和当前的节点有关,如下图:
第二种就是定义在Y上下文的局部特征函数,这个函数只是和当前节点以及上一个节点有关。
以上就是CRF的一些知识,最后CRF求解问题,也是和HMM类似有3个。。用的算法也是类似。
关于CRF的应用可以用来做标注任务,如词性标注、NER等。目前主流的NER方案有LSTM+CRF和Bert+CRF
后面继续学习怎么使用CRF来做NER
另外推荐几篇CRF讲解的非常好的文章:
参考文章: