李彦增

这篇文章通过提出了一种注意力机制对齐的方法,为预训练语言模型在 fine-tuning阶段引入了多源分词信息外部知识,从而提升了预训练语言模型在各个子任务上的效果。本文收录于 2020 年 ACL。

问题背景

BERT 出现后,预训练语言模型统治了大多数的NLP应用任务,预训练-微调这一2-stage 模式成为了主流。随着预训练语言模型的不断发展,预训练任务和模型结构被不断改进,以让模型适配更大量的数据的数据,以及从更多途径获取各种外部知识。

对于中文预训练语言模型来说,最实用、直接的方法便是引入词汇级别的知识了。例如,baidu-ERNIE1.0、BERTwwm 尝试融入实体级别/词级别的信息、 thu-ERNIE 尝试将知识图谱融入语言模型并对齐、ZEN 尝试使用 n-gram 导入词信息等。

(上图为阅读中文时人眼动的注意力分布,基本在单个词间均匀分布)

如 Is Word Segmentation Necessaryfor Deep Learning of Chinese Representations 一文所描述,字级别的建模对于中文自然语言处理来说更加合适。同时已有大量工作证明,通过在字级别的模型之上引入词汇特征可以提升模型效果(尤其对于注重区分词汇边界的任务更是如此,如NER、Span-MRC 等)。而目前在字模型中融入词模型的方法普遍存在一些问题,例如:主流采用 Gazetteer 等形式的词表进行引入(如 LatticeLSTM 及其变体模型),泛用性不够高;前人工作全部使用的是单个来源的词汇信息,当出现词表错误、分词错误等情况时,反而会造成反效果。

因此,作者试图构建一种能直接获取分词这种通用的词汇信息的方法,并整合多种来源的分词结果,以提高模型的泛用性,并降低单个词表和分词工具中误差对模型造成的影响。

方法原理

作者使用BERT及其针对中文改进并二次微调的ERNIE 1.0、BERTwwm作为基线模型。这几个模型皆为字级别的模型,因此输出可视为字级别的编码器。在字编码器输出的字表示之上接入 Self-Attention 层,如下图所示:

对于一段文本

应用分词器 π,可以得到不重叠的划分组合

,如下图所示:

对字表示的 Self-Attention 的权重应用此划分 π,可以得到按词组合的字到字的Attention 权重矩阵:

使用 MixPooling 对上述词组合的 Self-Attention权重进行聚合。MixPooling 是一种可以同时考虑平均特征与最重要特征的池化方式

,使用 lambda 控制最大池化与平均池化的成份占比,为了方便,作者将其设为了一个可训练参数。通过MixPooling 将以词组合的字级别 Self-Attention 权重进行聚合后,可以得到字级别到词级别的 Self-Attention 权重矩阵,如下图所示:

将此步的 Attention 权重进行可视化,可以得到与前文眼动注意力示意图类似的结果。作者在情感分类任务模型中对“今天的云非常好看”句子进行了可视化,在此步得到的字-词 Attention 权重矩阵的可视化结果如下图所示:

可以看到对句子情感极性影响较大的“好看”一词在 Attention矩阵中成分占比更大,可能在下游的分类中产生更多的贡献。

最后,作者使用 upsampling 的方式将上述 字-词级别Self-Attention 的权重矩阵按照分词划分的逆操作重新上采样至字级别,如图所示:

由此,就得到了融入一种分词信息之后的字级别 Self-Attention权重矩阵了。将此权重乘回字级别编码器得到的字表示上,即可得到与原模型完全对齐的、引入了分词信息的增强后的表示了。将上述步骤结合起来,整个模型结构如下图所示:

此时,模型获取的是单独一种分词方式 π 得到的增强字级别表示。然而,在更多情况下,单个分词工具得到的结果不一定准确,或是分词的粒度不一定符合任务的预期。下表展示了使用三种流行的分词工具对同一个句子进行分词得到了三个不同的结果:

在本例子中,这几个分词器得到的结果都是对的,但是其粒度不同。为了减少分词错误,以及用上不同粒度级别的特征,作者使用了一种简单的方法,同时用上多个分词工具的分词结果:

其中,

是单个分词器得到的结果,W 是可训练参数,

就是融合多个分词器增强表示后的最终输出,将它输入下游任务即可进行分类、序列标注等任务了。

实验

由于这篇文章是在中文预训练语言模型上进行的拓展工作,因此作者对常用的中文预训练语言模型任务都进行了实验。

其中,任务具体包括了情感分类(ChnSentiCorp 与 weibo-100k两个数据集)、命名实体识别(ontonotes 数据集)、句子对匹配(LCQMC 数据集)、自然语言推断任务(XNLI 数据集)、中文阅读理解(DRCD 数据集)。

在这些任务上,作者以 BERT、baidu-ERNIE 1.0、BERTwwm三个模型分别作为基础模型进行增强,并同时也做为基线模型进行对比,得到的实验结果如下表所示:

可以看到,融入多源分词信息后,各个中文预训练语言模型都在各个任务上得到了普遍的提升。其中,MRC阅读理解任务提升比较明显,经过 Case Study 作者发现融入分词信息后,发现模型预测出的答案相比原始模型更加准确,部分原始模型正确预测了大多部分文本,却在词边界出现问题的情况减少了。

同时,作者进行了消融实验,对比了使用单个分词工具与使用多源分词工具以及随机分词工具的效果:

与前文一致,使用多种分词工具的结果比使用单个分词工具得到的结果要好。

总结

本文提出了一种新颖的融入外部知识的方法,可以通过融入多种分词工具增强中文预训练语言模型的效果,实验证明在多种下游中均有效果。并且这种方法虽然引入了大量的外部知识,但在空间占用上并没有提升多少:

参数量基本与原始模型持平。

然而,在时间消耗上这个模型仍然有不少的进步空间。首先,由于改变了 Self-Attention的矩阵运算,变成了一个样本一个样本各自计算其不同的组合方式,因此无法借助 cudnn 原语加速,且把时间复杂度 O(n2) 增加了常数倍 O(dn2),d 是平均样本长度,因此增加了模型在训练与推断时的速度。此外,由于模型需要预先处理好分词结果,因此增加了不少预处理时间与预处理难度。如果能对此模型进行性能改进、适配GPU 加速,才能真正用于生产环境中提高模型效果。

retinanet50预训练权重_论文导读|基于注意力机制对齐增强预训练语言模型相关推荐

  1. 论文导读 | 基于注意力机制对齐增强预训练语言模型

    这篇文章通过提出了一种注意力机制对齐的方法,为预训练语言模型在 fine-tuning阶段引入了多源分词信息外部知识,从而提升了预训练语言模型在各个子任务上的效果.本文收录于 2020 年 ACL. ...

  2. 基于注意力机制的lstm实现_一种基于注意力机制的自动标点引擎的测试体验

    报告 我们基于深度学习的自动标点引擎,在合作团队的帮助下实现于2018年,论文已在今年发表.当时使用循环神经网络(RNN)中的双向长短时记忆(Bi-LSTM)作为特征提取器.这几年来,注意力机制开始取 ...

  3. 关系查询处理 查询优化 论文_论文导读基于查询负载的分布式RDF图分割和分配...

    Adaptive Distributed RDF Graph Fragmentation and Allocation based on Query Workload PengPeng, Lei Zo ...

  4. 【HuggingFace轻松上手】基于Wikipedia的知识增强预训练

    [HuggingFace轻松上手]基于Wikipedia的知识增强预训练 前记: 预训练语言模型(Pre-trained Language Model,PLM)想必大家应该并不陌生,其旨在使用自监督学 ...

  5. ciaodvd数据集的简单介绍_基于注意力机制的规范化矩阵分解推荐算法

    随着互联网技术的发展以及智能手机的普及, 信息超载问题也亟待解决.推荐系统[作为解决信息超载问题的有效工具, 已被成功应用于各个领域, 包括电子商务.电影.音乐和基于位置的服务等[.推荐系统通过分析用 ...

  6. 目标检测论文解读复现之十八:基于注意力机制的光线昏暗条件下口罩佩戴检测

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  7. 论文浅尝 | 用于学习知识图谱嵌入的一种基于注意力机制的新型异构 GNN 框架HRAN...

    笔记整理 | 李爽,天津大学 链接:http://hfbix45521e79b0484907sowxo0fubpp9b6xwx.fiiz.eds.tju.edu.cn/stamp/stamp.jsp? ...

  8. 论文浅尝 | ​ADRL:一个基于注意力机制的知识图谱深度强化学习框架

    论文笔记整理:谭亦鸣,东南大学博士. 来源:Knowledge-Based Systems 197 (2020) 105910 链接:https://www.sciencedirect.com/sci ...

  9. NLP-Beginner任务三学习笔记:基于注意力机制的文本匹配

    **输入两个句子判断,判断它们之间的关系.参考ESIM(可以只用LSTM,忽略Tree-LSTM),用双向的注意力机制实现** 数据集:The Stanford Natural Language Pr ...

最新文章

  1. java08 Set
  2. 2014-04-03研究笔记整理
  3. 哈夫曼编码(Huffman)Java实现代码
  4. LeetCode Unique Paths
  5. 频繁项集-------产生强关联规则的过程
  6. 【Java 网络编程】网络通信原理、TCP、UDP 回显服务
  7. ADOMDConnection连接字符串与AnalysisService服务器配置
  8. matlab及系统仿真期末试题,matlab与系统仿真综合试题
  9. java groovy 乱码_解决Groovy复制文件的乱码
  10. rtl8211 smi读取_RTL8211E应用(二)之信号输入、输出接口
  11. php居中显示代码,css居中代码是什么
  12. linux命令中ll和ls的区别
  13. 用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜
  14. Node.js 包管理器 ied
  15. C++编写任意次clampedB样条曲线(曲线分别与第一个控制点和最后一个控制点的第一边和最后一边相切)
  16. (转)视觉工程师笔试知识汇总
  17. 服务器和超级计算机的性能,超级计算机和云服务器的区别
  18. 中关村被骗,太平洋也好不到哪去 记一次太平洋购物经历
  19. FL Studio20.9中文补丁
  20. centos系统中php Curl 无法访问https 的解决办法

热门文章

  1. C语言的逗号!_只愿与一人十指紧扣_新浪博客
  2. 【OpenCV 4开发详解】Canny算法
  3. 基础知识——变量和简单数据类型(一)
  4. 英文版windows乱码问题(win7/8/10)
  5. OkHttp源码分析
  6. NS_ASSUME_NONNULL_BEGIN 延伸
  7. 20道常见初级Java面试题
  8. c语言延时函数_介召几个frida在安卓逆向中使用的脚本以及延时Hook手法
  9. 十分钟带你入门最具Python风格的Gui库
  10. class括号里的object_Python入门 类class 基础篇