文章目录

  • 参考
  • 编码
    • LR-CNN
    • FLAT
    • Lex-BERT
  • 解码
    • GlobalPointer

本篇文章是命名实体识别(NER)算法的进一步介绍,主要内容是介绍一些编码器与解码器,作为上一篇内容的补充。

参考

中文NER的正确打开方式: 词汇增强方法总结 (从Lattice LSTM到FLAT)
GlobalPointer:用统一的方式处理嵌套和非嵌套NER
如何解决transformer对NER效果不佳的问题
1、Sinusoidal位置编码追根溯源
Lex-BERT:超越FLAT的中文NER模型?
中文实体识别最新SOTA算法Lex-Bert算法效果复现

编码

关于编码部分,我想更多的介绍一些中文编码的内容,我们知道中文都是对字进行编码的,如果能够将词汇信息加入到其中,能够提供更为丰富的信息。

对于bert而言,对于中文他是对字进行处理的,可以对句子进行分词,对分词的position进行编码,然后和bert输出的字向量concat,再接上解码器会增加一些效果。但是BERTBERT存在推断慢的问题,因此如果我们面对低延时的要求时,可能需要考虑一下其他的模型。比如在命名实体识别(NER)算法中我们介绍了Lattice LSTM就引入了词汇的信息。

Lattice LSTM中存在一些缺点:

  1. 计算性能低下,不能batch并行化。原因是每个字符之间的word cell数目不一致。
  2. 信息损失。只有以该字符为结尾的词汇信息,才会被融入到字符中,也就是说词汇的中间部分是无法获取词汇的表征的。比如:“南京市”,只有 “市” 才可以获取“南京市”的词汇信息,而“京”中不包含“南京市”的信息。而且,由于RNN的特性,采取BiLSTM时其前向和后向的词汇信息不能共享。

LR-CNN

CNN-Based Chinese NER with Lexicon Rethinking。

Lattice LSTM采取RNN结构,无法有效处理信息冲突问题,如上图所示,对于【州】和【长】都无法仅仅根据上文信息得到标签,对于这种冲突问题,我们需要利用全局信息解决。

LR-CNN的结构如下:

首先,有句子 C = { c 1 , c 2 , ⋯ , c M } C=\{c_1,c_2,\cdots,c_M\} C={c1,c2,,cM},其中的 c i c_i ci表示第 i i i个位置上通过字符embedding得到的结果。在此之上,建立 L L L层CNN层,每一层的感受野均为2,这样对第二层而言就提取了2-gram的特征(第一层为embedding层),且能推出在第 l l l层,得到的是l-gram的特征:

定义 w m l = { c m , ⋯ , c m + l − 1 } w_m^l=\{\ c_m,\cdots,c_{m+l-1}\} wml={cm,,cm+l1},且根据(1)可知, C m l C_m^l Cmlw m l w_m^l wml有关,使用attention将这两者结合起来,得到一个融合的信息:

从而,我们可以得到最高层的表征为 X m L X_m^L XmL,这个表征我们可以认为包含尽可能多的全局信息,然后再用这个信息“feedback”给每一层CNN,调整词汇信息的权值,得到每一层新的信息(这一步主要是为了解决信息冲突的问题):

最后跟一个attention层:

这个结果最终被喂到CRF去解码。

FLAT

Chinese NER Using Flat-Lattice Transformer

tips:
从上图可以看出,FLAT采用的是Transformer,而在之前的博客中提到Transformer不太适合做NER任务。参考如何解决transformer对NER效果不佳的问题 这篇文章。
这里我没太看懂,我的理解是transformer的attention部分是天然对称的,所以他提出了Sinusoidal位置编码 想要打破这种对称性,于是 f ( . . . x n , . . . . x m , . . . ) f(...x_n,....x_m,...) f(...xn,....xm,...)变成了: f ( . . . x n + p n , . . . . x m + p m , . . . ) f(...x_n+p_n,....x_m+p_m,...) f(...xn+pn,....xm+pm,...) 只要每个位置的编码不同,就不具备这种对称性了。
另外,如果我们做到内积部分,将query*key展开,有:
q i k j T = x i W Q W K T x j T + x i W Q W K T p j T + p i W Q W K T x j T + p i W Q W K T p j T {q}_i {k}_j^{T} = {x}_i {W}_Q {W}_K^{T}{x}_j^{T} + {x}_i {W}_Q {W}_K^{T}{p}_j^{T} + {p}_i {W}_Q {W}_K^{T}{x}_j^{T} + {p}_i {W}_Q {W}_K^{T}{p}_j^{T} qikjT=xiWQWKTxjT+xiWQWKTpjT+piWQWKTxjT+piWQWKTpjT
中间两项并没有被证明其对称性。
这一部分,有大神垂帘我一下私信我教教我么,谢谢。

FLAT设计了一种position encoding的方式融合Lattice结构,如上图所示,输入包括三个部分:token,head (position),tail (position);token可以是字符也可以是词,对于字符而言,head=tail,对于词而言,head<tail。采用这种方式重构Lattice结构,又因为transformer的特性,FLAT可以直接建模字符与所有匹配的词汇信息间的交互,例如,字符[药]可以匹配词汇[人和药店]和[药店]。

而且FLAT改变了原生Transformer位置编码的方式(Sinusoidal 绝对位置编码),而是提出一种新的相对位置编码(一般来说,对于自然语言更依赖相对位置,相对来说,相对位置比绝对位置有更优秀的表现)。


这里的相对距离定义为:

融合:

其中:

最终attention score的计算方式如下:

其有效的原因是:新的相对位置的encoding 有助于定位实体span,引入词汇的word embedding有利于实体type信息的分类。

Lex-BERT

论文原地址找不到了,实在是很奇怪,但是增加实体类型信息的方法可以借鉴一下。

Lex-BERT 引入了 高质量的带有实体类型信息的词表 (如果公司有这个词表的话我觉得可以试试这个方法)。

lex-bert 前提是拥有类型type信息的词汇表。论文作者给出两个版本的Lex-BERT:

  • Lex-BERT V1: 将type信息的标识符嵌入到词汇前后;[v][/v] [d][/d]代表的是具体的实体类型。
  • Lex-BERT V2: 将type信息的标识符拼接input后,然后与原始word起始的token共享相同的position embedding。

    上图为Lex_BERT v2使用的attention mask矩阵。通过这个mask矩阵,可以使得文本token只与文本token做attend,标识符token可以attend所有的token。
    论文给出的效果:

解码

GlobalPointer

该解码器是苏神提出的一种可以处理嵌套与非嵌套NER的解码器。更多内容可以参见GlobalPointer:用统一的方式处理嵌套和非嵌套NER

然后,在其中加入相对位置编码,能大幅提升性能:

最后利用将“softmax+交叉熵”推广到多标签分类问题中提到的损失函数,得到其损失为:

其代码链接为: https://github.com/bojone/GlobalPointer

NER中的一些编码器与解码器相关推荐

  1. 【Netty】什么是编码器和解码器?

    什么是编码器和解码器? 从网络传输的角度来讲,数组总是以字节的格式在网络之中进行传输的. 每当源主机发送数据到目标主机时,数据会从本地格式被转换成字节进行传输,这种转换被称为编码,编码的逻辑由编码器处 ...

  2. seq2seq编码器和解码器:TensorFlow实现

    seq2seq编码器和解码器 1. 什么是seq2seq 2. 编码器 3. 解码器 4. 训练模型 5. seq2seq模型预测 5.1 贪婪搜索 5.2 穷举搜索 5.3 束搜索 6. Bleu得 ...

  3. 直播实录 | 哈工大博士生周青宇:从编码器与解码器端改进生成式句子摘要

    本文为 3 月 15 日,哈工大-微软联合培养博士生--周青宇博士在第 25 期 PhD Talk 中的直播分享实录. 3 月 15 日晚,PaperWeekly 再度联合微软亚洲研究院带来了第 25 ...

  4. 今晚直播 | 从编码器与解码器端改进生成式句子摘要

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  5. 直播预告 | 从编码器与解码器端改进生成式句子摘要

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  6. 图片的描述生成任务、使用迁移学习实现图片的描述生成过程、CNN编码器+RNN解码器(GRU)的模型架构、BahdanauAttention注意力机制、解码器端的Attention注意力机制

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  7. 基于Transformer的文本情感分析编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制 + Positional Encoding位置编码)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  8. 机器翻译 MXNet(使用含注意力机制的编码器—解码器,即 Encoder编码器-Decoder解码器框架 + Attention注意力机制)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. 编码器和解码器的概念理解

    编码器和解码器最开始看概念的时候有点懵,因为说编码器先把原始信号给编码,然后解码器再给解出来得到原始信号.哈?这是干啥,原始信号本来就有,用这个搞啥,做无用功吗? 1. 首先,说一下编码器和解码器干什 ...

最新文章

  1. ESXi主机与网络中其他主机的网咯数据包捕获
  2. 如何让网站用上HTML5 Manifest
  3. 多协议标签交换的MPLS原理
  4. Visual Studio 2010或者2012上安装VASSISTX
  5. Ganglia:分布式监控系统
  6. 数据仓库--主题和主题域
  7. Matlab中的类(Class),Matlab中的class用法
  8. ​​An Image is Worth 16x16 Words,那么一个视频是什么呢?阿里达摩院用STAM给你答案!...
  9. linux7 vnc看不到桌面,VNC Viewer轻松连接远程CentOS7桌面
  10. 使用Hexo+Github一步步搭建属于自己的博客(基础)
  11. GitHub 20000+ Star,超轻量OCR系统PP-OCRv3效果再提升5% - 11%!
  12. 编码原则1-单一职责原则
  13. vue两列数据 合并成一列
  14. python列表合并降序排列_python对象列表,根据对象属性以降序排列
  15. 行存储(Row-Based)和列存储(Column-Based)
  16. mysql数据库中针对结果保留小数的问题
  17. 关于项目连接docker数据库报错不存在表的问题
  18. ip代理软件的原理到底是什么?适用场景有哪些?
  19. navicat for MySql 11 破解版
  20. 软件构造期末复习总结【一】:关于SCM和Git的一些概念整理

热门文章

  1. Mysql中case函数的使用
  2. C# 封装miniblink 使用HTML/CSS/JS来构建.Net 应用程序界面和简易浏览器
  3. n97 sdk 模拟器无法打开的解决方案。
  4. 计算机网络-应用层协议5(P2P)
  5. C++11 recursive_mutex
  6. Problem J: 学生成绩统计表
  7. 脱口而出的100句英语句子
  8. 安装cocoaPods和使用cocoapods
  9. Python3从零开始爬取今日头条的新闻【一、开发环境搭建】
  10. 软件测试岗位英文自我介绍,软件测试工程师面试的英文自我介绍