文献阅读笔记:NEZHA(Neural Contextualized Representation for Chinese Language Understanding)

0. 背景

机构:华为诺亚方舟实验室
作者:Junqiu Wei, Xiaozhe Ren等
面向任务:自然语言理解
论文地址:https://arxiv.org/abs/1909.00204
论文代码:https://github.com/huawei-noah/Pretrained-Language-Model/tree/master/NEZHA

0.1 摘要

预训练模型在捕捉深度语境表征方面的成功是有目共睹的。本文提出一个面向中文NLU任务的模型,名为NEZHA(NEural contextualiZed representation for CHinese lAnguage understanding,面向中文理解的神经语境表征模型,哪吒)。NEZHA相较于BERT有如下改进:
(1)函数式相对位置编码
(2)全词覆盖
(3)混合精度训练
(4)训练过程中使用 LAMB 优化器
前两者是模型改进,后两者是训练优化。
NEZHA在以下数个中文自然处理任务上取得了SOTA的结果:
(1)命名实体识别(人民日报NER数据集)
(2)句子相似匹配(LCQMC,口语化描述的语义相似度匹配)
(3)中文情感分类(ChnSenti)
(4)中文自然语言推断(XNLI)

1. 介绍

预训练模型大部分是基于英文语料(BooksCorpus和English
Wikipedia),中文界的预训练模型目前现有如下几个:Google的中文BERT(只有base版)、ERNIE-Baidu、BERT-WWM(科大讯飞)。这些模型都是基于Transformer,且在遮蔽语言模型(MLM)和下一句预测(NSP)这两个无监督任务上进行预训练。这些中文模型之间主要差别在于MLM中使用的词遮蔽策略。Google的中文版BERT独立地遮蔽掉每个汉字或WordPiece token。ERNIE-Baidu在MLM中进一步将实体或者短语视为一个整体,如此一个实体或短语包含多个汉字。BERT-WWM的策略相似,称为全词覆盖(Whole Word Masking,WWM)。WWM强制要求所有属于同一中文词的字都要一起被覆盖掉。ERNIE-Baidu 2.0则又额外引入了其他预训练任务,如Token-Document关系预测和句子重排任务。

本文提出的NEZHA整体上是基于BERT的改进。在NEZHA中使用的是函数式相对位置编码,而在原始的Transformer和BERT中每个词使用的是绝对位置编码。位置编码信息直接加到词嵌入作为Transformer的输入。位置编码一般有2种方式:
(1)函数式编码。通过预定义函数(如正弦函数)直接给出位置编码。
(2)参数式编码。此时的位置编码作为模型参数的一部分,通过学习得到。。参数式位置编码涉及两个概念,一个是距离,表示这个词离“我”有多远,另一个是维度,Word Embedding一般有几百维,比如512维,每一维有一个值,通过位置和维度两个参数来确定一个位置编码的值。比如有学者提出一种参数相对位置编码方法,将相对位置信息加入到Transformer的自注意力层中。再往后发展二者的结合体,比如Transform-XL和XLNet使用正弦编码矩阵(非学习得到)和两个偏置项(训练学习到的)表示相对位置编码。

本文的NEZHA使用函数式相对位置编码,通过预定义函数的方式在自注意力层编码相对位置。实验结果表明,该方法是一种有效的位置编码方案,并在实验中取得了一致的效果。此外,NEZHA在训练过程中使用了三种已被证明是有效的预训练BERT技术,即全词覆盖,混合精度训练和LAMB优化。

本文的贡献:
(1)系统性研究了大规模中文语料的预训练模型问题
(2)在多个中文NLU任务上评估模型
(3)评估训练因素的有效性,包括位置编码、掩蔽策略、训练语料库源、训练序列的长度。
(4)发布NEZHA模型和源码

2. NEZHA 模型

由于NEZHA也是基于BERT,所以关于Transformer和BERT的详情请直接阅读原始论文或者查阅本人之前的博文。在此不赘述。

函数式相对位置编码

在Transformer 中,每个词之间互相都要Attending,并不知道每个词离自己的距离有多远,这样把每个词平等的对待,是会有问题的。

NEZHA中的函数式相对位置编码,通过使用相对位置的正弦函数计算输出和attention的得分。该想法源于Transformer中使用的函数式绝对位置编码。在本文的模型中, a i j V a_{i j}^{V} aijV a i j K a_{i j}^{K} aijK都是正弦函数,且在训练过程固定不变。为了简化起见,直接将 a i j V a_{i j}^{V} aijV a i j K a_{i j}^{K} aijK简写为 a i j a_{ij} aij。维度为 2 k 2k 2k 2 k + 1 2k+1 2k+1 a i j a_{ij} aij分别如下:
a i j [ 2 k ] = sin ⁡ ( ( j − i ) / ( 1000 0 2. k d z ) ) a i j [ 2 k + 1 ] = cos ⁡ ( ( j − i ) / ( 1000 0 2. k d z ) ) \begin{aligned} a_{i j}[2 k] &=\sin \left((j-i) /\left(10000^{\frac{2 . k}{d_z}}\right)\right) \\ a_{i j}[2 k+1] &=\cos \left((j-i) /\left(10000^{\frac{2.k}{d_ z}}\right)\right) \end{aligned} aij[2k]aij[2k+1]=sin((ji)/(10000dz2.k))=cos((ji)/(10000dz2.k))
位置i和位置j的相对位置编码由2部分组成,维度为2k和2k+1。假设 d z d_z dz=512,那么k的取值从0,1,255。由此可以看出,位置编码的每个维度都由正弦函数决定。不同维度(即不同 d z d_z dz)的正弦函数会有不同的波长。上述公式中, d z d_z dz表示NEZHA模型的每个head的隐含层大小。波长是一个从 2 π 2\pi 2π 10000 ⋅ 2 π 10000 \cdot2\pi 100002π的几何级数。选择固定正弦函数,可以使该模型具有更强的扩展性;即当它遇到比训练中序列长度更长的序列时,依然可以发挥作用。

全词覆盖

在初始的BERT中,每个token或者每个汉字都是随机覆盖的。而 NEZHA 预训练模型,则采用了全词覆盖(WWM)策略,当一个汉字被覆盖时,属于同一个汉字的其他汉字都被一起覆盖。该策略被证明比 BERT 中的随机覆盖训练(即每个符号或汉字都被随机屏蔽)更有效。在 NEZHA 的 WWM 实现中,使用了一个Jieba进行中文分词。在 WWM 训练数据中,每个样本包含多个覆盖汉字,覆盖汉字的总数约占其长度的 12%,随机替换的占 1.5%。尽管这样预测整个词运算难度有所增加,但最终取得的效果更好。

混合精度训练和LAMB优化器

在 NEZHA 模型的预训练中采用了混合精度训练技术。该技术可以使训练速度提高2-3倍,同时也减少模型的空间占用,从而可以利用较大的batch size。

传统的深度神经网络训练使用 FP32 (即单精度浮点格式)来表示训练中涉及的所有变量(包括模型参数和梯度);而混合精度训练在训练中采用了多精度。具体来说,它重点维持模型中权重的单精度副本(称为主权重),即在每次训练迭代中,将主权重舍入为FP16(即半精度浮点格式),并使用 FP16 格式存储的权重、激活和梯度执行向前和向后传递;最后将梯度转换为FP32格式,并使用FP32梯度更新主权重。

LAMB 优化器是专为深度神经元网络大batch size同时分布式训练而设计。尽管使用大的batch size训练可以有效地加快 DNN 训练速度,但是如果不仔细调整学习率,当batch size处理的大小超过某个阈值时,模型的性能可能会受到很大影响。LAMB 优化器则不需要手动调整学习率,而是采用了一种通用的自适应策略。优化器通过使用非常大的batch size(实验中高达 30k 以上)来加速BERT的训练,而不会导致性能损失,甚至在许多任务中获得最先进的性能。值得注意的是,BERT的训练时间最终从3天显著缩短到 76 分钟。

3. 实验结果

预训练

NEZHA预训练数据集:
(1)Chinese Wikipedia
(2)Baidu Baike
(3)Chinese News
Table 1 统计了各个预训练模型使用到的数据集情况:
在这里插入图片描述

Table 2 展示了现有中文预训练模型中用到的预训练技巧:
在这里插入图片描述

实验结果

评测数据集:CMRC(中文阅读理解2018)、XNLI(跨语言自然语言推理)、LCQMC(大规模中文问题匹配语料)、PD-NER(人民日报命名实体实体数据集)、ChnSenti(中文情感分类数据集)

NEZHA在各个数据集finetuning的超参数如 Table 3:
在这里插入图片描述

各个预训练模型在各个数据集上的评测结果如 Table 4 所示:
在这里插入图片描述

此外还对NEZHA模型中的位置编码、遮蔽策略、训练序列长度和训练语料进行消融研究。消融研究结果如 Table 5 所示:
在这里插入图片描述

从消融研究的实验结果可以看出,上述因素都能够促进下游任务性能的提升。对比函数式相对位置编码、参数式绝对位置编码和参数式相对位置编码,可以看出函数式相对位置编码显著优于其他位置编码方式。在CMRC任务中可以看出,相较于相对位置编码使用绝对位置编码真是弱爆了。

总结

本文提出一个基于中文语料的大规模预训练模型:NEZHA。其中最为重要的贡献在于使用了函数式相对位置编码,该方法显著优于其他位置编码方式。另外,NEZHA模型也集成了几项先进技术:全词覆盖、混合精度训练和LAMB优化器。NEZHA在数个中文自然语言理解任务中取得SOTA结果。

PS:其实这篇文章再9月初已经放出来了,当时没有开放预训练模型,是在走内部的审批流程,直到12月初。。。终于放出来,这时候似乎没了新鲜感。看了下技术点,除了函数式相对位置编码,其他的算是平平无奇吧。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值