这篇文章通过提出了一种注意力机制对齐的方法,为预训练语言模型在 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 加速,才能真正用于生产环境中提高模型效果。

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

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

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

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

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

  3. 直播 | ACL 2021论文解读:提升预训练语言模型实体与关系理解的统一框架

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  4. ACL'22丨预训练语言模型能否像人一样解释明喻

    每天给你送来NLP技术干货! 来自:知识工场 前言 明喻是人们日常生活中一类常见的表述形式,解释明喻可以帮助机器更好地理解自然语言.因此,明喻解释(SimileInterpretation)是自然语言 ...

  5. 开源开放 | Beyond 预训练语言模型,NLP还需要什么样的知识?

    近年来,深度学习技术已广泛应用于NLP领域,但实际应用效果往往受限于缺乏大规模高质量监督样本.2018年底,预训练语言模型横空出世,极大缓解了这个问题,通过"超大规模无监督语料上的预训练语言 ...

  6. Beyond 预训练语言模型,NLP还需要什么样的知识?

    近年来,深度学习技术已广泛应用于NLP领域,但实际应用效果往往受限于缺乏大规模高质量监督样本.2018年底,预训练语言模型横空出世,极大缓解了这个问题,通过"超大规模无监督语料上的预训练语言 ...

  7. CIKM 2022最佳论文:融合图注意力机制与预训练语言模型的常识库补全

    ©作者 | 巨锦浩 单位 | 复旦大学硕士生 来源 | 知识工场 研究背景 常识在各种语料库中很少被明确表达,但对于机器理解自然语言非常有用.与传统的知识库(KG)不同,常识库(CKG)中的节点通常由 ...

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

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

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

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

最新文章

  1. 批量将中文单个字音频转为图像(二维矩阵)
  2. 一口气带你踩完五个 List 的大坑!
  3. [20131014] 出现错误,显示事务没有回滚
  4. mysql8.0新用户无法连接_mysql 8.0.16 Linux新建用户无法登录
  5. Delphi编译报错对照表
  6. 在 Windows 7 中禁用IPv6协议/IPv6隧道
  7. Oracle中的包、存储过程、函数被锁定解决方案
  8. itchat key
  9. 【定时任务|开机启动】Windows Server 2008/2012 计划任务配置(任务计划程序)每分钟执行BAT...
  10. CMMB手机电视到了芯片企业创新的时侯
  11. win10升级2004失败?
  12. 案例分享:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)
  13. 【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]
  14. MSP430F5529LP(一)IIC与OLED的HELLOWRLD
  15. 《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句
  16. WGS84(GPS坐标) BD09坐标(百度坐标)GCJ02(国测局坐标) 的相互转换
  17. java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...
  18. 图像sensor的工作原理
  19. 平衡二叉树(Java实现)
  20. Python Mac 1

热门文章

  1. SARIF:DevSecOps工具与平台交互的桥梁
  2. Sentinel-流控效果
  3. Software Performance Testing - Gatling基本使用
  4. Linux中Readlink命令
  5. Oracle:11g服务详细介绍及,哪些服务是必须开启的
  6. 宝塔安装sqlserver_windows 宝塔安装sql_server 2008,php链接配置流程
  7. windows下宝塔安装教程
  8. 快看漫画的下一帧定在哪?
  9. 男女电影评分差异分析编程
  10. 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理