前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【NLP】一文完全搞懂序列标注算法

【NLP】一文完全搞懂序列标注算法

作者头像
yuquanle
发布2020-03-13 01:32:12
4.7K0
发布2020-03-13 01:32:12
举报
文章被收录于专栏:AI小白入门AI小白入门

序列标注模型用到了长短期记忆网络(LSTM),条件随机场(CRF),Highway网络,本文循序渐进的介绍了序列标注算法,Be patience ! 跟着小编的文章完全搞懂序列标注算法吧。

1.目标

序列标注模型的目标是用实体或词性标记句子的每个单词,如下图:

其中PER标记的是人名,LOC标记的是位置,ORG标记的是组织。

算法原理来自论文Empower Sequence Labeling with Task-Aware Neural Language Model,论文所述的序列标注模型算法比大部分算法都要高级,文章将要介绍很多常用的理论,不仅仅应用在序列标注领域,该模型的一个特点是并行训练了语言模型,增强了序列标注的任务。

为了更好的理解序列标注模型,首先介绍几个概念:

2.需要理解的几个概念

  • 序列标注:标注句子中每个单词的实体或词性
  • 语言模型:语言模型是预测单词或字符序列中的下一个单词或字符,神经语言模型在文本生成、机器翻译、图像理解、光学字符识别等各种NLP任务中取得了令人印象深刻的结果。
  • 字符RNN:对文本中的单个字符进行RNN转换,在序列标注任务中,字符可以为单词的实体或属性提供重要线索,如形容词通常以”-y”或”-ul”结尾,位置通常以”-land”或”burg”结尾,因此编码句子中的字符信息是很有必要的。
  • 多任务学习(Multi-Task Learning):模型训练过程中包含了语言模型,语言模型为序列标注模型提供了额外的有用信息,即改善了序列标注模型。
  • 条件随机场(Conditional Random Fields):离散分类器根据某个单词预测其标注,条件随机场是根据该单词附近的单词标注来预测其标注,这是符合理论的,因为单词的标注不仅仅取决于当前的单词,还取决于该单词相邻的单词属性。
  • 维特比解码(Viterbi Decoding):我们使用了CRF输出每个单词的标记转移矩阵,然后通过维特比解码输出最优的标记序列。
  • Highway Networks(Highway网络):全连接层在任何神经网络结构中转换或提取不同位置特征的主要成分,如图像分类中,全连接层输出用于分类图像的特征,语言模型中,全连接层输出每一个类的概率。

3.算法模型框架

算法模型框架即LM-LSTM-CRF,LM-LSTM-CRF包含了三个模型:语言模型(LM),长短期记忆网络(LSTM),条件随机场(CRF)。语言模型的训练并行在长短期记忆网络和条件随机场组成的序列标记模型,组成多任务训练模型。

模型框架如下图:

上图右边的红色方框所展示的是序列标注模型的框架流程,下图细化了该模型流程,让大家有个宏观的理解:

下面一一介绍该模型框架的结构部分:

3.1 多任务学习(Multi -Task Learning)

由上表可知,在训练序列标注模型的同时也并行了语言模型训练,这样做的好处是使训练过程中获得了更多的信息,提高了序列标注模型的性能。

多任务学习的损失函数是各个任务损失函数的权值相加,如下式:

本文设置

等于1。

梯度下降法更新模型参数:

其中

为学习率。

3.2 字符LSTM

前向字符LSTM和后向字符LSTM都用于语言模型的单词预测,也用于序列标注模型的输入。

假设句子是dunston checks in <end>,前向字符LSTM的结构如下图:

后向字符LSTM结构图:

3.3 单词双向LSTM和条件随机场

单词双向LSTM和条件随机场用来预测序列标注模型每个单词的观测分数矩阵和转移分数矩阵之和。如下图:

若句子长度为L,单词标注种类数为m,那么每个单词标注转移分数矩阵的大小为(L,m,m),观测分数矩阵的大小为(L,m)。

条件随机场输出这两者之和的总分数,矩阵大小为(L,m,m),位置(k,i,j)的值等于

第k个单词第j个标记的观测分数与第k个单词前一个单词标注为i,后一个单词标注为j的观测分数之和。

比如句子dunston checks in <end>,如果标注种类数为5,总分数矩阵会是这样:

细心的读者可能发现,条件随机场不输出符号<start>的总分数,因为每个句子都是以<start>开头,计算<start>的观测分数和转移分数没有任何意义。

从上图也得到了两个小细节:

  • 给定前一个单词的标注为<start>,某个标注的转移分数表示该标注成为句子中第一个标注的可能性,比如句子通常以冠词(a,an,the)或名词,代词开头。
  • 给定后一个单词的标注为<end>,某个标注的转移分数表示该标注成为句子中最后一个标注的可能性。

我们现在知道了模型输出的矩阵总分数,如何计算当前模型的损失函数?

4.维特比损失(Viterbi loss)

若仅仅只有标注观测分数,那么小编推荐使用交叉熵损失函数去计算,若包含了转移矩阵分数,则用维特比损失算法。

还是用之前的总分数为例,如下图:

定义序列标注t的得分等于每个标注得分的总和,有:

若句子的真实标注为:tag2,tag3,tag3,<end>,则该序列标注的得分等于:4.85 + 6.79 + 3.85 +3.52 = 19.01。

因此,维特比损失定义为:

其中

表示真实的标注序列,T表示所有可能的标注序列。

简化上式得:

若经过多次迭代的反馈训练,得到单词最终的预测总分数,如何预测句子中最优的标注序列?

5.维特比解码(Viterbi Decoding

不管是什么句子,有两个标注我们是确定的:<start>和<end>标记,维特比预测最优标注序列的思想是:通过<start>去逐步累加每个单词的总分数,当更新到<end>标注时,由于<end>标注是确定的,然后通过<end>标注的总分数反向预测每个单词的最优序列。

通过一个来阐述这一思想,还是用之前每个单词的总分数为例:

第一个单词为dunston,前一个标注肯定为<start>,于是第一个单词的累加分数为:

第二个单词为checks,则第二个单词的累加分数为:

存储该单词所属每个标注的最大分数和前一个标注:

第三个单词为in,则第三个单词的累加分数为:

存储该单词所属每个标注的最大分数和前一个标注:

第四个单词为<end>符号,则第四个单词的累加分数为:

存储该单词所属每个标注的最大分数和前一个标注:

因为第四个单词为标注肯定为<end>,因此选择该标注最大分数时的前一个标注,由上图可知为tag3,然后重复该步骤,如下图:

由上图可知,最优标注序列为:<start>,<tag2>,<tag2>,<tag3>。

5.Highway Networks

语言模型和序列标注模型都用到了highway网络,该网络与偏差网络有点相似,偏差网络(residual networks)的输出等于将输入添加到转换后的输出,为数据流的转换创建路径。

偏差网络结构图:

若转换层个数等于1,转换函数为f(x),则有:

Highway网络与偏差网络有点相似,它使用sigmoid-activated门来确定输入和转换后输出的系数,因此Highway网络的输出为:

模型有三个地方要用到Highway网络:

  • Highway网络将前向字符LSTN的输出预测为下一个单词的分数
  • Highway网络将后向字符LSTN的输出预测为下一个单词的分数
  • 前向字符LSTM和后向字符LSTM的输出拼接起来,然后用Highway网络转换,并与单词的嵌入向量作为单词双向LSTM的输入。

结合字符前向LSTM,字符后向LSTM,双向单词LSTM以及条件随机场的介绍,序列标注算法模型结构图如下:

6.其他的序列标注模型简述

图(a)与本文介绍的模型很相似,但是该模型是单任务学习,即不包含语言模型。

图(b)是单任务学习,且没有利用句子的字符信息,该模型在工业界十分普及且性能较好。

图(c)是单任务学习,使用了线性层或Highway层代替条件随机场,即直接预测每个单词所属标记的分数,性能相比之前的模型较差。

参考

https://github.com/sgrvinod/a-PyTorch-Tutorial-to-Sequence-Labeling

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI小白入门 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
机器翻译
机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档