NLP:HMM、MEMM、CRF序列标注

前言

    概率序列模型:它的工作是为序列中的每个单元分配一个标签或类,从而将一个观察序列映射到一个标签序列。给定一个单位序列(单词、字母、语素、句子,等等),它计算可能的标签序列的概率分布,并选择最佳的标签序列。

    本文都是以序列标注(如分词、词性标注、命名实体识别,从字符级别中文分词到词语级别命名实体识别为例,即输入序列x=(x1,x2,...,xn),希望输出同样长度的标签序列y=(y1,y2,...,yn),那么建模的就是概率分布

    生成式模型:利用p(x,y)和贝叶斯规则计算p(y|x)

    判别式模型:直接计算p(y|x)

    📍 贝叶斯公式:P(A|B) = P(A,B)/P(B) = P(B|A)*P(A)/P(B)

  

  ## 序列标注与中文分词

  ## 序列标注与词性标注

  ## 序列标注与命名实体识别 

# 原理:Markov Chains马尔科夫链

    马尔可夫假设: 每个事件的发生概率只取决于前一个事件。将满足该假设的连续多个事件串联在一起,就构成了马尔可夫链

    图中节点表示状态,弧线表示状态的转移,其上数字表示转移的概率(注:离开给定状态的弧的值之和必须为1 

    一个马尔可夫链由以下部分组成:

# 原理:HMM 隐式马尔可夫模型(生成式模型)

    💥 TMI:“1988 年隐马尔可夫模型被用于词性标注。在所有序列标注模型中,隐马尔可夫模型是最基础的一种。”

    在许多情况下,我们感兴趣的事件是隐藏的,例如我们通常不会在文本中观察词性标记。相反,我们看到单词,必须从单词序列推断标签。在我们的概率模型中,我们将观测事件和隐藏事件认为是因果因素。

    输入:观测序列 OW

    输出:状态序列 Q 或 T

    一个隐式马尔可夫模型由以下部分组成:

    初始状态概率向量π状态转移概率矩阵A发射概率矩阵B被称为隐马尔可夫模型的三元组 λ=(π, A, B) 只要三元组确定了,隐马尔可夫模型就确定了。

    👀 序列标注最大的结构特点就是标签相互之间的依赖性。在隐马尔可夫模型中,这种依赖性利用初始状态概率向量π状态转移概率矩阵A来体现。

     一阶隐马尔可夫模型实例化了两个假设:

      ① 一个特定状态的概率只取决于前一个的状态

      ② 输出观测oi的概率仅取决于产生该观测的状态

      则一阶隐马尔可夫模型可以表示为 :

    这张图也许有一丝违和感,按通常理解,应当是x决定y而不是反过来。这是由于在联合概率分布p(x, y) 中,两个随机变量并没有固定的先后与因果关系,p(x, y) = p(y, x)。从贝叶斯定理的角度来讲,联合分布完全可以做两种等价变换: 

    隐马尔可夫模型只不过在假设②中采用了后一种变换而己,即假定先有状态,后有观测, 取决于两个序列的可见与否。

① HMM Tagger

    对于词性标注,HMM解码的目标是选择标签序列t_{1}^{n},它是最可能的给定的观察单词序列w_{1}^{n}的词性(在这里o是w,q是t):

    我们在HMM中使用的方法是使用贝叶斯规则来代替计算 

     进行简化:

    一阶HMM taggers做了两个进一步简化的假设:

      ① 一个标签的概率只依赖于前一个标签,而不是整个标签序列

      ② 单词出现的概率仅取决于它自己的标签,与相邻的单词和标签无关

     进一步简化后,一个二元标记器的最有可能的标记序列表示公式:

    这里的 emission(发射概率矩阵) transition(状态转移概率矩阵) 分别对应上文提及的 B 和 A矩阵, 在HMM tagger中,这些概率是通过计算已标记的训练语料库来估计的

 举例:在WSJ语料库中,MD出现了13124次,后面跟着VB的次数为10471

 举例:在WSJ语料库的13124例MD中,它与will关联了4046次 

    💥 【二阶隐马尔科夫模型:初始状态概率向量 π 发射概率矩阵B的估计与一阶隐马尔可夫模型完全一致。唯一不同之处在于二阶转移概率张量A的估计,因为二阶隐马尔可夫模型的依赖假设发生了改变。】

    💥 【增加隐马尔可夫模型的阶数并不能提高分词的准确率,单靠提高转移概率矩阵A的复杂度并不能提高模型的拟合能力,需要从别的方面想办法。目前市面上一些开源分词器仍然停留在一阶隐马尔可夫模型的水平,比如著名的jieba分词】

    如何求该值的max值呢?HMM的解码算法是Viterbi算法

    维特比算法首先建立一个概率矩阵:

    每个单元vt(j)的值通过递归地使用最可能将我们引向该单元的路径来计算:

    Viterb递归地填充每个单元格:

v_{t-1}(i):前一个时间步长的维特比路径概率

a_{ij}:从之前状态q_{i} 到当前状态q_{j} 的转变概率

b_{j}(o_{t}):给定当前状态j,观测符号o_{t}的状态观测可能性

举例

    示例:“Janet will back the bill”

    数据:A、B矩阵(来自《华尔街日报》语料库中的统计数据

    再回顾一下公式: 

    即:

    举例:对于第一个单词Janet,我们分别查表得到 ① P(7种词性|start) 和 ② P(Janet|7种词性),两者相乘得到v_{1}(j)

    到第二个单词,先计算 v_{1}(i)a_{ij} 的最大值,对于v_{2}(2)来说,即先计算v_{1}(i)a_{i2} 的最大值

    则v_{2}(2) = 9e-8*P(will|MD)=9e-8*0.308=2.772e-8 

可以理解为:

到达B3的路径有四条:S-A1-B3、S-A2-B3、S-A3-B3、S-A4-B3,经过计算得到S-A2-B3的值最大,则意味着当我们计算完成该矩阵,进行动态规划选取路径时,若选择到B3,则一定是选择了S-A2-B3这条路径,其它路径并不纳入考虑。

    最终用维特比算法得到一个概率矩阵,寻求最大路径(从最后一列返回来检索所需的标签集概率最大

    注:以 t=2 理解,此时假设v_{2}(j)中最大值在v_{2}(2),而 v_{2}(2) 获得最大的值的情况是NNP->MD这条路径(想说明当t=1时不一定就是选择v_{1}(j)最大的节点,而要考虑之后的乘积,当然若其他均为零,就只能选择该节点

    最终正确的标签为:Janet/NNP will/MD back/VB the/DT bill/NN

    ⭐如何通俗地讲解 viterbi 算法?

    语言含有更多特征, 而隐马尔可夫模型没有捕捉到。隐马尔可夫模型能捕捉的特征仅限于两种:其一,前一个标签是什么;其二,当前字符是什么。因而效果并不理想。--《自然语言处理入门》

    当状态数N增长非常大时,Viterb算法的速度较慢。bigram tagger算法的复杂度为O(N^2T) 👉(枚举每个时刻的N种备选状态,相邻两个时刻之间的状态就有N^2种组合。由于一共有T个时刻,所以复杂度是O(N^2T)。)若是采用 trigram tagger等,算法复杂度还要再上一个量级。

    一种常见的解决复杂性问题的方法是使用Beam Search解码,在束搜索中,我们不保留每个时间点t的整个状态列,我们只保留那个点上最好的几个假设(算出该t时刻各状态N的viterbi分数后进行排序),其余的被修剪掉,并且不能继续到时间t +1。

    束宽β(beam width)是一个固定大小的状态数,即表示每个时间点t保留多少个最优状态。束搜索的算法复杂度为O(\beta N T )

    下图所示的束宽为2。在每个时间 t,所有的(非零)状态都被计算出来,然后对它们进行排序,只有最好的两个状态被向前传播,其余的被剪掉(📍 t=1时其它状态viterbi值均为0,因此只选择了一个状态。

    在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率,但缺点就是有可能存在潜在的最佳方案被丢弃,因此Beam Search算法是不完全的,一般用于解空间较大的系统中。 

    隐马尔可夫模型(HMM)在语音识别汉语分词词性标注机器翻译等若干语音语言处理任务中得到了广泛应用。——《统计自然语言处理》

# 原理:最大熵原理

    “熵”不起:从熵、最大熵原理到最大熵模型(一)

    “熵”不起:从熵、最大熵原理到最大熵模型(二)

    “熵”不起:从熵、最大熵原理到最大熵模型(三)

② Maximum Entropy Markov Models最大熵马尔可夫模型(判别式模型)

    为了实现是对整个序列进行的分类,在每个时刻t时,它的特征不仅来自当前观测值x_{t},而且还来自前一状态值y_{t-1}​。所以MEMM中,给定观测序列\mathbf{x},某个状态序\mathbf{y}​的概率是:

    通过最大熵分类器建模(参考最大熵模型的推导)为 :

    其中 a, \lambda _{a}, f_{a} 分别表示特征函数数量,特征函数权重和第a个特征函数

#几个特征函数的例子 [来源]

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

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

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

    Z(x_{t},{y}') 表示归一化因子,为: 

    其中y表示所有的可能状态取值 

    使用维特比算法进行解码时,MEMM对应的公式为:

    MEMM可以看成是一个极度简化的seq2seq模型。既然是这样,那么普通seq2seq模型有的弊端它都有。seq2seq中有一个明显的问题是exposure bias,对应到MEMM中,它被称之为label bias(标签偏置问题

    根据上述递推式,则概率最大路径如下1->1->1->1,但从全局的角度分析:State 1 总是更倾向于转移到State 2;State 2 总是更倾向于转移到State 2.(因为状态2可以转换的状态比状态1要多,从而使转移概率降低,即MEMM倾向于选择拥有更少转移的状态。

    MEMM所做的是本地归一化,导致有更少转移的状态拥有的转移概率普遍偏高,概率最大路径更容易出现转移少的状态。因MEMM存在着标注偏置问题,故全局归一化的CRF被提了出来

Bi-MEMM 双向MEMM

    相比CRF,MEMM明显的一个不够漂亮的地方就是它的不对称性——它是从左往右进行概率分解的。笔者的实验表明,如果能解决这个不对称性,能够稍微提高MEMM的效果。笔者的思路是:将MEMM也从右往左做一遍 [来源]

HMM V.S. MEMM

    两种方法计算方式不同:HMMs计算似然性(以标签为条件),MEMMs计算后验性(以观察词为条件的标签)

③ CRF条件随机场

    网址:introduction-to-conditional-random-fields

    在CRF中,函数F将整个输入序列X和整个输出序列Y映射到一个特征向量。让我们假设我们有K个特性,每个特性的加权工作是Fk

    这个约束仅依赖于当前和之前的输出令牌yi和yi−1,这就是线性链CRF的特征

    MEMM只考虑x_{i}y_{i}的影响,而没有把\mathbf{x}作为整体来考虑,导致的是本地归一化,而CRF做的则是全局的归一化,避免了label bias的问题。    

MEMM V.S. CRF

# HMM、MEMM、CRF区别

对于一个标注任务,“我爱北京天安门“, 标注为” s s b e b c e”

对于HMM的话,其判断这个标注成立的概率为 P= P(s转移到s)*P(‘我’表现为s)* P(s转移到b)*P(‘爱’表现为s)* …*P().训练时,要统计状态转移概率矩阵和表现矩阵。

对于MEMM的话,其判断这个标注成立的概率为 P= P(s转移到s|’我’表现为s)*P(‘我’表现为s)* P(s转移到b|’爱’表现为s)*P(‘爱’表现为s)*..训练时,要统计条件状态转移概率矩阵和表现矩阵。

对于CRF的话,其判断这个标注成立的概率为 P= F(s转移到s,’我’表现为s)….F为一个函数,是在全局范围统计归一化的概率而不是像MEMM在局部统计归一化的概率。

    CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME最大熵一样) ————与HMM比较

    同时,由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。 ­­————与MEMM比较

    CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。

    凡事都有两面,正由于这些优点,CRF需要训练的参数更多,与MEMM和HMM相比,它存在训练代价大、复杂度高的缺点。

    表1-2 收录了《华尔街日报》语料库上的词性标注任务的前沿准确率。截止 2015 年,除了 Bi-LSTM-CRF以外,其他系统都是传统模型,最高准确率为 97.36%,而Bi-LSTM-CRF 深度学习模型为 97.55%,仅仅提高了0.19%。2016 年,传统系统 NLP4J 通过使用额外数据与动态特征提取算法,准确率可以达到 97.64%。     ---摘自 《自然语言处理入门》何晗[著]

参考

    如何用简单易懂的例子解释条件随机场(CRF)模型?它和HMM有什么区别? - 知乎

    【中文分词】最大熵马尔可夫模型MEMM

    苏剑林. (Feb. 24, 2020). 《CRF用过了,不妨再了解下更快的MEMM? 》

    苏剑林. (May. 18, 2018). 《简明条件随机场CRF介绍(附带纯Keras实现) 》

    从HMM到MEMM再到CRF

    HMM、MEMM、CRF区别

    ⭐用命名实体识别(NER)解释CRF (BiLSTM+CRF)

    ⭐条件随机场(CRF)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值