中文BERT上分新技巧,多粒度信息来帮忙

文 | ????????????????

自然语言处理实在是太难啦!中文尤其难!

相比于英文,中文是以词作为语义的基本单位的,因此传统的中文 NLP 都需要先进行分词。分词这步就劝退了很多人,比如“研究生活很充实”,怎么让模型分出“研究|生活”,而不是“研究生”呢?

随着预训练模型的到来,中文模型通常直接用字作为输入。甚至 19 年的一篇 ACL[1] 给出结论:基于“字”的模型要好于基于“词”的模型。但是,中文是以词作为语义的基本单位的呀,忽略这种粗粒度的信息,真的合理吗?

今天这篇发表在 NAACL 2021 的文章就让 BERT 在预训练中学到了字和词的信息,在自然语言理解的多个任务上,相对字级别的模型取得了性能提升,轻松摘得 SOTA。以后做中文任务想要刷分,可以直接拿来换掉自己的 BERT

这篇文章为了让 BERT 学到字和词的信息,解决了三个问题:

  1. 怎么将字和词的信息融合,送入 BERT?

  2. 字和词有重叠,位置编码怎么设计?

  3. 在 MLM 任务上,怎么才能同时将字和词的信息都 mask 掉?

下面就来看看这篇文章的解决办法吧~

论文题目:
Lattice-BERT: Leveraging Multi-Granularity Representations in Chinese Pre-trained Language Models
论文链接:
http://arxiv-download.xixiaoyao.cn/pdf/2104.07204v1.pdf
代码地址
https://github.com/alibaba/AliceMind/tree/main/LatticeBERT

方法

词格输入

为了解决问题 1,本文是将词格(word lattice)输入 BERT。

中文的词格图(lattice graph)是一个有向无环图,包含了句子里字和词的所有信息。以“研究生活很充实”这句话为例,词格如下图所示:

读到这里可能会有人疑惑了:BERT 只能处理序列呀?这样的有向无环图该怎么被 BERT 处理呢?简单!这篇文章直接将词格图中各粒度的信息“拍平”,得到一个线性序列,作为 BERT 的输入。其中的每一项无论是字还是词,我们都称为 token:

词格注意力机制

“拍平”词格的输入,就会造成不可避免的重复和冗余,那么对于位置编码,该怎么适应呢?另外,在“拍平”之后,原先二维的复杂图结构信息就会有所损失,怎样避免图结构的损失呢?为了解决问题 2,这篇文章又设计了新的词格注意力机制。

对于字级别的 BERT,计算 attention map 可以表达为两个字向量的内积:

其中 分别是第 个字在第 层的表示。字级别 BERT 中,位置编码是在输入时,直接加到字的表示中的:

然而,很多工作 [2] 表明,这种在输入中混合位置编码的方式比较粗糙。在计算 attention map 时,将位置编码与字的表示解耦,专门设计一个位置编码的函数,会是一个更好的选择:

这里 就是关于 两个字的位置编码的函数。本文也采取了这一类方法。具体地,attention map 可以通过四项相加的方式得到:

第一项是字的表示得到的 attention score,后面三项都是与位置编码相关的,下面我就来一一介绍~

  1. 绝对位置编码

绝对位置编码表示了 token 在句子中的位置。式子里的 表示当前输入 token 的开始位置, 表示结束的位置。这个式子就表示将 token 的起始位置的绝对位置编码拼接,进行 attention 操作。

这一项可以说是对原始 BERT 中的位置编码的复刻,并适应了词格的输入。因为词格输入的每一项长度是不固定的,引入头尾位置也是自然的想法。

然而,绝对位置编码是有缺陷的:在理论上,我们对绝对位置编码的限制只有一点,即不同位置的编码不同。但这样就忽略了很多信息,比如,位置 1 和 2 的距离与位置 5 和 6 的距离应该一样,位置 1 和 3 的距离比位置 4 和 10 的距离要小,等等。在绝对位置编码的设计里,我们只能让 BERT 隐式地“学习”。

  1. 相对位置编码

因此,这篇文章也引入了相对位置编码,来表示 token 之间的相对距离。式子右边每一项都代表两个 token 的起始位置之间的相对距离,例如, 表示两个 token 的起始位置之间的相对距离 的表示。引入了相对位置编码,模型就可以建模更长的文本。

  1. 层叠关系编码

表示两个 token 之间的层叠关系。根据这两个 token 起始相对位置的不同,两个 token 可以分成下列七种关系:

具体来说,这七种关系为:

  1. 自身

  2. 在左边,且无重叠

  3. 在左边,且有重叠

  4. 包含关系

  5. 被包含关系

  6. 在右边,且有重叠

  7. 在右边,且无重叠

将 token 之间的关系分成以上七种,就可以显式地表示词格图中的复杂的二维关系。之前“拍平”词格图时削弱的信息,在这里又找回来了。

预训练任务:整段预测

最后一个问题:原来的 MLM 任务在词格输入的形式上,似乎并不适用。

还是用“研究生活很充实”来举个例子。这句话的词格输入将是这样:

研 究 生 活 研究 研究生 生活 很 充 实 充实

词格的输入带来了冗余,在 MLM 任务中,我们随机 mask 掉一些 token,是希望通过其上下文预测这些 token。但是在词格输入里,比如我们随机 mask 掉了“研究”,但是模型会直接通过前面的“研”“究”和后面的“研究生”来预测这个 mask token,这样走捷径,最终一定得不到好结果。

于是,这篇文章设计了整段预测任务(masked segment prediction):在词格图中,一句话将被切成多个段(segment),每个段之间不会有重叠的 token,同时也要使段的长度最小。“研究生活很充实”这句话就可以切成下图的三段:

在整段预测任务中,直接 mask 掉一段里的所有 token,并预测这些 token。这样就可以避免输入的冗余让模型“作弊”。

实验

这篇文章使用句子里所有可能的词来构建词格图,这样尽管会带来错误的分词,但是让模型自己学习降噪,还能提升模型的鲁棒性。

这篇文章在 11 个任务上进行了实验,11 个任务包括:

  • 6 个文本分类任务:长文本分类、短文本分类、关键词提取、指代消解、自然语言推断和文本匹配;

  • 2 个序列标注任务:分词和命名实体识别;

  • 3 个问答任务:机器阅读理解(答案段选取)、选择题、完形填空。

总体性能如下图所示:

其中,RoBERTa 是哈工大的 roberta-base-wwm-ext;NEZHA 是最好的字级别中文预训练模型,来自华为诺亚方舟研究院;AMBERT 是曾经多粒度中文预训练模型的 SOTA,是字节跳动李航组的工作;BERT-word 是使用词作为输入的 BERT;LBERT 是本文的方法;BERT-our 是本文使用相同语料重新预训练的 BERT。

可以发现,LBERT 优于所有字级别的预训练模型,并在 7/11 个任务上取得 SOTA。

LBERT 在哪里强于字级别的 BERT 呢?作者对预测结果进行分析,得到如下结论:

  • 在短文本分类任务上,LBERT 在更短的样本上有更大的性能提升,作者认为,词格输入的冗余信息为短文本提供了更丰富的语义信息;

  • 在关键词提取任务上,LBERT 在词级别的关键词上性能提升更高,作者认为 LBERT 从词格输入中,理解了关键词的语义;

  • 在命名实体识别任务上,LBERT 在重叠实体的样本上减少了 25% 的错误,这是词格输入带来的天然优势;

LBERT 是怎么运用多粒度的信息呢?作者对注意力分数进行了可视化,还用“研究生活很充实”这句话为例:

图中的三行分别为:

  • 在预训练结束后,模型会关注句子的各个部分;

  • 在命名实体识别任务上 fine-tune 之后,模型更关注“研究”“生活”“很”“充实”,这与正确的分词结果是一致的,对命名实体识别任务也是非常关键;错误分词的“研究生”就没有得到注意力;

  • 在文本分类任务上 fine-tune 之后,模型更关注“研究生”“生活”“充实”,尽管这些词不能在一套分词中同时存在,但是对分类都是有用的。

总结

这篇文章解决了三个问题:

  1. 怎么输入?使用词格(lattice)作为 BERT 的输入;

  2. 位置编码?设计了词格注意力机制(lattice position attention),使模型真正习得词格整张图的信息;

  3. MLM?设计了整段掩码预测任务(masked segment prediction),避免模型从词格的多粒度输入中使用捷径。

这样一来,就能在 BERT 中融合字和词信息,也在多个任务上拿到 SOTA。

另外,这种词格的输入看上去也是优点多多:对于短文本的任务,词格输入可以作为一种信息的增强;对于和词相关的任务,输入的词能让模型更好的理解语义;对于抽取的任务,词格能帮助定位抽取的边界。

这里还延伸出一个问题:英文是不是也可以利用多粒度的信息呢?中文的预训练模型可以使用字和词的信息,相似地,英文就可以使用 subword 和 word 信息,这样是不是有效呢?

萌屋作者:????????????????

在北大读研,目前做信息抽取,对低资源、图网络都非常感兴趣。希望大家在卖萌屋玩得开心 ヾ(=・ω・=)o

作品推荐

  1. 老板让我用少量样本 finetune 模型,我还有救吗?急急急,在线等!

  2. 谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...

寻求报道、约稿、文案投放:
添加微信xixiaoyao-1,备注“商务合作”

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

 

[1] Yuxian Meng, et al., "Is Word Segmentation Necessary for Deep Learning of Chinese Representations?", ACL 2019, http://arxiv-download.xixiaoyao.cn/pdf/1905.05526.pdf

[2] Guolin Ke, et al., "Rethinking Positional Encoding in Language Pre-training", ICLR 2021, http://arxiv-download.xixiaoyao.cn/pdf/2006.15595.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

监控平台前端SDK开发实践

监控是提高故障处理能力和保障服务质量必需的一环,它需要负责的内容包括:及时上报错误、收集有效信息、提供故障排查依据。 及时上报错误:发生线上问题后,经由运营或者产品反馈到开发人员,其中流转过程可能是几分钟甚至…

论文浅尝 - WWW2020 | 通过对抗学习从用户—项目交互数据中挖掘隐含的实体偏好来用于知识图谱补全任务...

笔记整理 | 陈湘楠,浙江大学在读硕士。现有的知识图谱补全方法都在试图设计全新的学习算法,来使用已知的事实信息去推理知识图谱中的潜在语义。但随着知识图谱的广泛使用,知识图谱中的许多实体对应着应用程序系统的在线项目。但知识图谱和应用…

LeetCode 24. 两两交换链表中的节点(递归+循环)

1. 题目 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3.2. 解题 2.1 递归 class Solut…

美团数据平台融合实践

本文根据作者在2017年ArchSummit的分享记录整理而成。 互联网格局复杂多变,大规模的企业合并重组不时发生。原来完全独立甚至相互竞争的两家公司,有着独立的技术体系、平台和团队,如何整合,技术和管理上的难度都很大。2015年10月&…

CMU MILA 谷歌 | 三家巨头发布史上最干文本增强总结

文 | Sherry一直以来,数据都是推动深度神经网络这个人工智能引擎不可或缺的燃料;然而人工收集足量而优质的数据从来不是一件“便宜”的事,数据增强便是一座富有价值的矿山。在CV中,翻转,裁剪,加噪声等方法被…

论文浅尝 - AAAI2021 | 从历史中学习:利用时间感知拷贝生成网络建模时态知识图谱...

笔记整理 | 朱珈徵,天津大学硕士链接:https://arxiv.org/pdf/2012.08492.pdf动机大型知识图通常会增长以存储时态事实,这些时间事实对实体沿时间线的动态关系或交互进行建模。因为这样的时态知识图经常遭受不完全性的困扰,所以开发…

LeetCode 96. 不同的二叉搜索树(DP)

1. 题目 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例:输入: 3 输出: 5 解释: 给定 n 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / / / \ \3 2 1 1 3 2/ …

Android漏洞扫描工具Code Arbiter

目前Android应用代码漏洞扫描工具种类繁多,效果良莠不齐,这些工具有一个共同的特点,都是在应用打包完成后对应用进行解包扫描。这种扫描有非常明显的缺点,扫描周期较长,不能向开发者实时反馈代码中存在的安全问题&…

领域应用 | OMAHA联盟发布“疾病临床表现”、“中毒”知识图谱及OMAHA知识库

转载公众号 | OMAHA联盟资源发布OMAHA已建立“七巧板”医学术语集、“汇知”医学知识图谱、元数据等资源,将于每月发布其中一项。具体各项发布时间为:“七巧板”术语集于每季度第一个月20日发布, “汇知”图谱于每季度第二个月20日发布&#…

聊聊推荐系统中的偏差

文 | 成指导源 | 知乎背景推荐系统中大量使用用户行为数据,作为系统学习的标签或者说信号。但用户行为数据天生存在各式各样的偏差(bias),如果直接作为信号的话,学习出的模型参数不能准确表征用户在推荐系统中的真实行…

云端的SRE发展与实践

本文根据作者在美团点评第21期技术沙龙的分享记录整理而成。 SRE(Site Reliability Engineering)是Google于2003年提出的概念,将软件研发引入运维工作。现在渐渐已经成为各大互联网公司技术团队的标配。 美团点评作为综合性多业务的互联网生活…

一种单独适配于NER的数据增强方法:DAGA

链接:http://www.elecfans.com/d/1468784.html 本文首先介绍传统的数据增强在NER任务中的表现,然后介绍一种单独适配于NER的数据增强方法,这种方法生成的数据更具丰富性、数据质量更高。0 前言 在NLP中有哪些数据增强技术?这一定是…

LeetCode 80. 删除排序数组中的重复项 II

1. 题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 来源:力扣…

技术沙龙 | 图神经网络(GNN)最新研究进展分享

由于深度学习在可推理和可解释性方面的局限性,结合图计算与深度学习的图神经网络 ( GNN ) 成为近期学术界和工业界研究的热点新方向之一,并在社交网络、推荐系统等领域得到了广泛的应用。本次技术沙龙,由北京邮电大学 GAMMA Lab 博士生纪厚业…

科研福利!国内TOP3的超算中心,免费领2000核时计算资源

长久以来,超级计算机一直是各国竞相角逐的科技制高点,也是国家综合科技实力的体现,尤其是近几年,中国和美国在超算领域的竞争已经进入“白热化”。2020年,我国超级计算机在《全球超级计算机500强榜单》中首次超越美国&…

深度学习在美团推荐平台排序中的运用

美团作为国内最大的生活服务平台,业务种类涉及食、住、行、玩、乐等领域,致力于让大家吃得更好,活得更好,有数亿用户以及丰富的用户行为。随着业务的飞速发展,美团的用户和商户数在快速增长。在这样的背景下&#xff0…

LeetCode 451. 根据字符出现频率排序(map+优先队列)

1. 题目 给定一个字符串,请将字符串里的字符按照出现的频率降序排列。 输入: "tree"输出: "eert"2. 优先队列解题 先用map统计字符出现次数再将字符何其次数插入优先队列出队 struct cmp { //写在类内也可以,写在函数里也行bool…

论文浅尝 - AAAI2020 | 小样本知识图谱补全

笔记整理 | 刘克欣,天津大学硕士链接:https://arxiv.org/pdf/1911.11298.pdf动机知识图谱对于许多下游应用(例如搜索,知识问答和语义网)至关重要。然而,现有知识图谱面临不完整的问题。知识图谱补全工作能让…

ACL 2021|美团提出基于对比学习的文本表示模型,效果提升8%

文 | 渊蒙 如寐 思睿等尽管基于BERT的模型在NLP诸多下游任务中取得了成功,直接从BERT导出的句向量表示往往被约束在一个很小的区域内,表现出很高的相似度,因而难以直接用于文本语义匹配。为解决BERT原生句子表示这种“坍缩”现象,…