【论文解读系列】NER方向:FLAT (ACL 2020)
更多、更及时内容欢迎留意微信公众号: 小窗幽记机器学习
文章目录
- 模型结构
- 将Lattice结构平铺
- span的相对位置编码
FLAT(2020)
FLAT 出自 ACL 2020 FLAT: Chinese NER Using Flat-Lattice Transformer。
论文地址:https://arxiv.org/abs/2004.11795
论文代码:Flat Lattice
中文NER通常以字符为单位进行序列标注建模,即一般使用character-based模型。这主要是由于中文分词存在误差,会带来错误传导,所以一般character-based的中文NER模型通常要优于 基于word-based(经过分词)的序列标注建模方法。而在character-based模型中引入词汇信息可以显著提升中文NER效果已经得到多方验证。FLAT也是一种将词汇信息融入character-based模型的解决方案。此前通过 lattice 结构融入词汇信息的方式存在一些不足,比如Lattice LSTM存在以下缺点:
信息损失:
每个字符只取以它为结尾的词汇信息。如对于Figure 1中的示例,对于
「药」
,并无法获得inside的「人和药店」
信息。而「人和药店」
有助于区分示例中的地址实体重庆
和组织实体重庆人
。由于RNN特性,采取BiLSTM时其前向和后向的词汇信息不能共享。
Lattice LSTM并没有利用前一时刻的记忆向量,即不保留对词汇信息的持续记忆。
计算性能低,不能batch并行化:究其原因主要是每个字符之间需要attend的word cell(看作节点)数目不一致;可以视为动态结构。不过,后续也有工作将Lattice LSTM进行batch化。
可迁移性差:只适配于LSTM,不具备向其他网络迁移的特性。
为此,FALT提出以下2个创新点:
- 将lattice结构转为由spans组成的平铺结构,每个span可以是字符或者词及其在原始lattice结构中的位置。
- 基于Transformer设计了一种巧妙position encoding来充分利用lattice结构信息,从而无损地引入词汇信息。
FLAT刚出炉之际,在MSRA-NER任务中,FLAT+BERT登顶榜首;而单独的FLAT(1层TransFormer)也超越了预训练模型ERNIE。
模型结构
由之前的分析可知,Lattice-LSTM采取的RNN结构难以捕捉长距离依赖,同时引入词汇信息是有损的,同时动态的Lattice结构也不支持GPU并行。
使用lattice引入词汇信息有2种:
- 设计特定模型以兼容lattice输入,比如 lattice LSTM和 LR-CNN。比如lattice LSTM需要额外的word cell以编码潜在的word信息,在每个节点以注意力机制动态融入数量可变的节点信息,如Figure 1(b)所示。LR-CNN使用CNN的不同尺寸的Window来对潜在的词汇信息编码。但是,CNN和RNN都难以建模长程依赖关系,而这在NER中很重要。此外,像lattice LSTM这种动态结构难以GPU并行。
- 将 lattice 转为图结构,再使用图神经网络将词汇信息进行encode,比如CGN和LGN。图结构虽然是通用结构,但是对于NER任务来说顺序结构至关重要,两者间的差距不容忽视。基于图结构的方法通常需要使用LSTM作为底层encoder来捕捉顺序性,这使得模型结构更为复杂。
为解决计算效率低下、引入词汇信息有损的这两个问题,FLAT基于Transformer结构进行了两大改进:
改进1:Flat-Lattice Transformer,无损引入词汇信息
改进2:相对位置编码,让Transformer适用NER任务
将Lattice结构平铺
文章将Lattice结构平铺为一序列的span,这些span有3种类型:token、head和tail。一个token可以是字也可以词,如Figure 1©所示。head和tail分别表示token在原始句子中的起始和终止索引位置。对于字符token,head和tail值相同。通过这种方式可以记录token在lattice结构中的位置,且易于重建回原始的lattice结构,因此这种平铺的结构能够完全保留原始lattice结构信息。正因为如此,FLAT可以直接建模字符与所有匹配的词汇信息间的交互,例如,字符[药]
可以匹配词汇[人和药店]
和[药店]
。
span的相对位置编码
从Figure 1©可以看出FLAT使用了两个位置编码(head position encoding 和 tail position encoding), 那么是否可以采用绝对位置编码呢?同样来自邱锡鹏老师组的论文TENER: Adapting Transformer Encoder for Named Entity Recognition给出答案:原生Transformer中的绝对位置编码并不直接适用于NER任务。
TENER论文发现:对于NER任务来说,位置和方向信息十分重要。如下图所示,在「Inc.」
前的单词更可能的实体类型是「ORG」
,在「in」
后的单词更可能为时间或地点。而对于方向性的感知有助于单词识别其邻居是否构成一个连续的实体Span。可见,对于**「距离」和「方向性」**的感知对于Transformer应用于NER任务至关重要。
但是,原生Transformer的绝对位置编码本身缺乏方向性。向量点积(inner dot)的交换性使得self-attention在方向性上有信息损失,因此文章使用相对位置编码。
为encoder不同span之间的交互,文章对span使用相对位置编码。2个span xix_ixi和xjx_jxj之间3种关系:相交、包含、独立。这些关系取决于heads和tails值。文章中使用dense vector来对他们之间的关系进行建模。头部和尾部信息不仅可以表示两个token的关系,还能够表示一些更详细的信息,例如一个字符和一个单词之间的距离。
假定head[i]head[i]head[i]和tail[i]tail[i]tail[i]表示spand xix_ixi的头部和尾部位置,spand xix_ixi和spand xjx_jxj之间有4种距离:
dij(hh)=head[i]−head[j],dij(ht)=head[i]−tail[j]dij(th)=tail[i]−head[j]dij(tt)=tail[i]−tail[j]\begin{aligned} d_{i j}^{(h h)} &=h e a d[i]-h e a d[j], \\ d_{i j}^{(h t)} &=h e a d[i]-\operatorname{tail}[j] \\ d_{i j}^{(t h)} &=\operatorname{tail}[i]-h e a d[j] \\ d_{i j}^{(t t)} &=\operatorname{tail}[i]-\operatorname{tail}[j] \end{aligned} dij(hh)dij(ht)dij(th)dij(tt)=head[i]−head[j],=head[i]−tail[j]=tail[i]−head[j]=tail[i]−tail[j]
其中 dij(hh)d_{i j}^{(h h)}dij(hh) 表示head xix_ixi 和 tail xjx_jxj之间的距离,dij(ht),dij(th),dij(tt)d_{i j}^{(h t)}, d_{i j}^{(t h)}, d_{i j}^{(t t)}dij(ht),dij(th),dij(tt)同理。 这两个spand最终的相对位置编码是上述4个距离的简单非线性变换:
Rij=ReLU(Wr(pdij(hh)⊕pdij(th)⊕pdij(ht)⊕pdij(tt))),R_{i j}=\operatorname{ReLU}\left(W_r\left(\mathbf{p}_{d_{i j}^{(h h)}} \oplus \mathbf{p}_{d_{i j}^{(t h)}} \oplus \mathbf{p}_{d_{i j}^{(h t)}} \oplus \mathbf{p}_{d_{i j}^{(t t)}}\right)\right), Rij=ReLU(Wr(pdij(hh)⊕pdij(th)⊕pdij(ht)⊕pdij(tt))),
其中 WrW_rWr 是待学习的参数, ⊕\oplus⊕表示拼接操作, pd\mathbf{p}_dpd与原生的Transformer相同:
pd(2k)=sin(d/100002k/dmodel )pd(2k+1)=cos(d/100002k/dmodel )\begin{array}{r} \mathbf{p}_d^{(2 k)}=\sin \left(d / 10000^{2 k / d_{\text {model }}}\right) \\ \mathbf{p}_d^{(2 k+1)}=\cos \left(d / 10000^{2 k / d_{\text {model }}}\right) \end{array} pd(2k)=sin(d/100002k/dmodel )pd(2k+1)=cos(d/100002k/dmodel )
其中 ddd 表示 dij(hh),dii(ht),dij(th)d_{i j}^{(h h)}, d_{i i}^{(h t)}, d_{i j}^{(t h)}dij(hh),dii(ht),dij(th) 或 dij(tt)d_{i j}^{(t t)}dij(tt),kkk表示位置编码各个维度的索引。再使用XLNet中的的自注意力机制使用span相对位置编码:
Ai,j∗=Wq⊤Exi⊤ExjWk,E+Wq⊤Exi⊤RijWk,R+u⊤ExjWk,E+v⊤RijWk,R,\begin{aligned} \mathbf{A}_{i, j}^* &=\mathbf{W}_q^{\top} \mathbf{E}_{x_i}^{\top} \mathbf{E}_{x_j} \mathbf{W}_{k, E}+\mathbf{W}_q^{\top} \mathbf{E}_{x_i}^{\top} \mathbf{R}_{i j} \mathbf{W}_{k, R} \\ &+\mathbf{u}^{\top} \mathbf{E}_{x_j} \mathbf{W}_{k, E}+\mathbf{v}^{\top} \mathbf{R}_{i j} \mathbf{W}_{k, R}, \end{aligned} Ai,j∗=Wq⊤Exi⊤ExjWk,E+Wq⊤Exi⊤RijWk,R+u⊤ExjWk,E+v⊤RijWk,R,
其中 Wq,Wk,R,Wk,E∈Rdmodel ×dhead \mathbf{W}_q, \mathbf{W}_{k, R}, \mathbf{W}_{k, E} \in \mathbb{R}^{d_{\text {model }} \times d_{\text {head }}}Wq,Wk,R,Wk,E∈Rdmodel ×dhead ,u,v∈Rdhead \mathbf{u}, \mathbf{v} \in \mathbb{R}^{d_{\text {head }}}u,v∈Rdhead 是待学习的参数。
【论文解读系列】NER方向:FLAT (ACL 2020)相关推荐
- 【论文解读系列】NER方向:FGN (2020)
文章目录 摘要 模型结构 表示阶段 融合阶段 序列标注阶段 FGN(2020) 论文地址: https://arxiv.org/abs/2001.05272 论文代码:FGN 更多.更及时内容欢迎留意 ...
- 【论文解读系列】NER方向:W2NER (AAAI 2022)
文章目录 基本信息 简介 多类型NER抽取方法 NER->词词关系分类 W2NER模型框架 小结 更多.更及时内容欢迎 微信公众号围观: 小窗幽记机器学习 基本信息 论文标题: Unified ...
- 【论文解读】NER任务中的MRC(机器阅读理解)
论文:https://arxiv.org/pdf/1910.11476v6.pdf 前沿: 在之前的NER任务中常常分为两种:nested NER和 flat NER.从直观的角度来看,nested N ...
- 视频对象分割论文解读系列【1】
此处最后粗略解读更新时间:2020-2-26 11. 论文:FusionSeg 我的印象:一个中规中矩的利用了光流图片的网络 效果: 一般,让人感觉边缘分割相对粗糙 网络结构: 思想: 网络包含两个分 ...
- 轨迹预测论文解读系列——几种经典的网络
背景 首先问大家一个问题,什么是自动驾驶车辆的最大挑战?答案是理解行人的运动并且预知行人之后的轨迹.人类的运动可以被认为是多模态性的,即人类有可能在任何给定的时刻向多个方向移动.而这种行为是自动驾驶汽 ...
- 【论文解读系列】MLLM研究综述
A Survey on Multimodal Large Language Models 1 中国科大科技学院.认知智能国家重点实验室 2 腾讯优图实验室 MLLM目录 0. 摘要 1. 引言 2. ...
- 人脸论文解读系列——三维人脸重建(一)
基于区域最佳匹配融合的三维人脸重建 <3D Face Reconstruction with Region Based Best Fit Blending Using Mobile Phone ...
- 论文解读丨LayoutLM: 面向文档理解的文本与版面预训练
摘要:LayoutLM模型利用大规模无标注文档数据集进行文本与版面的联合预训练,在多个下游的文档理解任务上取得了领先的结果. 本文分享自华为云社区<论文解读系列二十五:LayoutLM: 面向文 ...
- 论文解读丨图神经网络应用于半结构化文档的命名实体识别和关系提取
摘要: 随着用于传递和记录业务信息的管理文档的广泛使用,能够鲁棒且高效地从这些文档中自动提取和理解内容的方法成为一个迫切的需求.本次解读的文章提出利用图神经网络来解决半结构化文档中的实体识别(NER) ...
最新文章
- [No0000160]常用C# 正则表达式大全
- 零基础入门学习Python(2)
- HTTP Error 500.21
- C++字符串处理操作符重载
- Linux shell脚本编程(一)
- P4781-[模板]拉格朗日插值
- 华为模拟器eNSP1
- php class variable,解决关于PHP“Undefined variable”变量未定义
- 深度学习之TensorFlow
- python爬虫从入门到放弃-python爬虫从入门到放弃(二)- 爬虫的深层原理
- sql语句格式化数字(前面补0)、替换字符串
- C语言描述的数据结构顺序表的置空 slt-size=0含义
- 制作一个实时渲染的markdown编辑器YaliEditor
- AutoSar和OSEK网络管理比较
- WinRAR 设置默认密码
- windows 下 c++ 二维码生成库
- 面向对象系列(三)-抽象类的特点
- 2020李宏毅学习笔记——8. Convolution Netural Network
- 读《高手》有感(包括问题、质疑、专业名词、哲理句)
- js 判断IOS版本号