前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >命名实体识别新SOTA:改进Transformer模型

命名实体识别新SOTA:改进Transformer模型

作者头像
AI科技评论
发布2019-11-28 14:49:14
2.3K0
发布2019-11-28 14:49:14
举报
文章被收录于专栏:AI科技评论AI科技评论

作者 | 刘旺旺 编辑 | 唐里

TENER: Adapting Transformer Encoder for Name Entity Recognition

链接:https://arxiv.org/pdf/1911.04474.pdf

代码:暂无

一.动机

Transformer 模型以其良好的并行性能力以及出色的效果,被广泛应用于nlp领域的各大任务,例如机器翻译,预训练语言模型等。博客(https://zhuanlan.zhihu.com/p/54743941)也从多个方面,实验论证Transformer 模型优于CNN和RNN模型。然而,在NER任务上,Transformer的效果远不如BiLSTM。

二.预备知识

NER

命名实体识别, 简称NER,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,以及时间、数量、货币、比例数值等文字,通常被看做是序列标注任务,现有主流的方法是使用神经网络来做,包括三个部分:词向量层,上下文编码层,解码层。

Transformer

Transformer layer包含两个部分:Multi-Head Attention (MHA) 和Position-wise Feed-Forward Network (FFN)。

MHA:

单个attention head计算方式:

多个attention head计算方式:

FFN:

MHA层和FFN层之间,以及FFN层之后还包含一个残差连接和norm层。详细可见论文 https://arxiv.org/pdf/1706.03762.pdf

三.解决方法

论文分析了Transformer在NER任务上效果不好的原因,并提出了改进方法TENER (Transformer Encoder for NER)。

Transformer在NER任务上效果不好的原因

如Figure1所示,方向信息以及相对位置,对于NER任务是重要的。例如,“Inc”单词之前的词很有可能就是机构组织(ORG),“in”单词之后的词,很有可能是时间地点(TIME);并且一个实体应该是连续的单词组成,标红的“Louis Vuitton”不会和标蓝的“Inc”组成一个实体。但是原始的Transformer无法捕获这些信息。

针对上述问题,论文提出了两点改进:

(1)提出带有方向与相对位置信息的 atteniton 机制;

(2)丢弃了原有 Transformerself-attention 的 scale factor,scale factor的引入是为了得到分布相对均匀的attention权重,但是在NER中,并不需要关注所有词。

另外,除了使用 Transformer 来建模词级别的上下文信息,还使用 Transformer 来建模 character 级别信息。

论文改进的TENER 模型

1. 词向量层

为了改善数据的稀疏性以及 oov 问题,NER任务通常使用 CNN 编码 character 序列来表示单词。与 Bilstm 相比,CNN在编码 character 序列上更有效,论文也探索了使用 Transformer 来编码 character 序列得到单词表征。最后的词向量表示,是 character 序列表征的单词与外部预训练词向量的拼接。

2. 带有方向与相对位置信息的 atteniton 机制

原始transformer encoder使用如下公式来获得位置向量:

t是单词在文本中的位置,d是位置向量的维度,也是词向量的维度,

。根据公式,分别计算位置向量中奇数维度和偶数维度的值。论文指出,根据公式(8)(9)得到的位置向量仅仅带有相对位置信息,而不包括方向信息,证明如下:

其中,

是一个常量

;公式(11)到公式(12)由公式

得到。由公式(13)可知,第t个位置的位置向

与第t+k个位置的位置向量

相乘,得到的结果只与相对位置k有关。并且,令

,可得:

公式(14)(15)更进一步说明了,根据公式(8)(9)得到的位置向量仅仅带有相对位置信息,而不包括方向信息,fingure3也证明了这个结论。

更重要的是,在计算self-attention时,仅能捕获的相对位置信息这一特性,也会消失。由公式(1)可知,在进行self-attention时,首先需要经过矩阵

将H(位置向量和词向量的组合)转化到相应的空间。实际上,两个位置向量

进行的运算为

被看成一个矩阵,可得

)。随机采样得到两个W,绘出

结果图,如fingure4所示,在没有进行矩阵转换时,位置向量可以捕获相对位置信息,经过矩阵转换后,即进行self-attention时,相对位置信息被破坏。

论文使用如下公式代替公式(1)-(3)以及公式(8)(9),来计算self-attention,同时捕获相对位置信息和方向信息:公式(16)与公式(1)相比,K不再经过

映射的;t是目标token的索引,j是上下文token的索引,公式(17)在进行位置编码时,引入了相对位置以及方向信息,距离为t(j=0)与距离为-t(j=2t)的两个位置的位置向量在奇数维度上是不同的,偶数维度上是相同的,如公式(20)所示。公式(18)在计算attention权值时,将词向量与位置向量分开计算(位置对NER任务来说时及其重要的),并且加了偏置项。公式(19)相比公式(3)去掉了

问题是,K不再是经过

映射的,所以K的维度是和词向量维度一样为d,是无法与

(维度为

)进行矩阵相乘的运算的。论文作者也表示,这里存在一些笔误,想要表达的意思是,计算每一个attention head从K(也就是H)依次选取0到

维度,

维度,依此类推。

3. CRF layer解码

同先前Bilstm,主要是为了将不同tag之间的依赖信息引入。给定输入序列:

,以及标注

代表所有可能的标注序列。标注y的概率计算如下公式:

其中,

计算从标注

到标注

的转移分数以及的分数,优化的目标是最大化

。解码时,使用维特比算法,选择概率最大的y。

四.实验结果

数据集

在中文数据集上的结果(table1),中文的NER是直接基于字的:

1. TENER的效果不仅优于原有的Transformer模型,而且优于基于CNN的模型和基于Bilstm的模型. 其中因为CAN_NER使用了100维的预训练的字向量和bigram向量,所以效果较好。

2. Weibo数据集相对较小,因此不同的模型在这个数据集上的表现效果都比较差。TENER模型相比其他模型也提高了效果,这也表明,本论文提出的改进方法,对数据集的大小具有一定的鲁棒性

3. 带scale factor的 self-attention 会使得结果变差。

在英文数据集上的效果(table2):

1. TENER在英文数据集上的效果不仅优于原有的Transformer模型,而且优于基于Bilstm的模型,并取得了当前最好的结果。

2. 同样带scale factor的self-attention会使得结果变差。

不同的character编码器和word上下文编码器的组合结果(table4):

在两个英文数据集上,比较了不同的character编码器和word上下文编码器的组合结果,由table4可看出,在conll2013数据集上,基于CNN的character编码器+基于TENER的word上下文编码器取得了最好的效果;然而在OntoNote5.0上,全部使用TENER模型取得了最好的效果。但是无论使用什么样的character编码器甚至不使用character编码,换用TENER模型建模word上下文都可以提升效果。

收敛速度的比较(figure5):

TENER模型的收敛速度与Bilstm相等,比transformer和ID-CNN要快。

五.总结

1. 分析了Transformer 在NER任务上效果不好的原因

2. 改进了Transformer的位置编码及self-attention部分(TENER模型),用于NER,取得了较好的效果,在两个英文数据集上,达到了当前最好的效果。

3. 论文比较出彩的地方在于对Transformer 在NER任务上效果不好原因的分析。对self-attention的改进有点类似Transformer XL。

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

本文分享自 AI科技评论 微信公众号,前往查看

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

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

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