ACL 2019提前看:预训练语言模型的最新探索

2019-07-30 15:51:56 浏览数 (1)

机器之心原创

作者:曾祥极

编辑:Hao Wang

ACL 2019 将于 7 月 28 日至 8 月 2 日在意大利佛罗伦萨举办。机器之心技术分析师曾祥极挑选了 ACL 2019 收录的与语言模型相关的三篇文章,分别从可变长度 Transformer、BERT 表征学习的深层次解析以及多语言迁移学习 BERT 三方面来介绍预训练语言模型的最新进展。

ACL,英文全称是 The Association for Computational Linguistics,中文全称是国际计算语言学协会。ACL 于 1962 年成立,主要致力于为研究自然语言处理或者计算语言学的专业人士提供服务。为了促进自然语言处理领域的学术交流,ACL 每年都会举办学术会议,如 ACL、EMNLP 和 NAACL 等。ACL 2019(第 57 届会议)即将于 2019 年 7 月 28 日至 8 月 2 日在意大利佛罗伦萨举办。

自从 2018 年预训练语言模型 BERT 提出之后,由于 BERT 的强大表征能力和知识储备能力,预训练语言模型将自然语言处理的大部分任务水平都提高了一个等级。学术界也不免掀起了研究预训练语言模型的热潮,著名的有 OpenAI 的 GPT-2,还有最近又有把任务效果提升一大截的 XLNet,当然这其中也还有许多其它相关的研究,我就不一一列举了。

本文精心挑选了 ACL 2019 最新收录的与语言模型相关的三篇文章,分别从可变长度 Transformer、BERT 表征学习的深层次解析以及多语言迁移学习 BERT 这三方面来介绍预训练语言模型的最新进展。

论文解读

1. Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

链接:https://arxiv.org/pdf/1901.02860.pdf

第一作者 Zihang Dai 目前是 CMU 的在读博士生,最近火热的 XLNet 就是出自该作者所在的团队之手。预训练语言模型 BERT 在给定输入长度内的句子序列上可以很好地建模依赖关系,但是对于超出长度限制的句子序列就无能为力了。

举个例子,如果我们需要做阅读理解的任务,给定一篇非常长的文章,由于 BERT 不能够把这篇文章一次性输入进行编码,而只能是按照 BERT 的最大输入长度把文章切割成不同的小片段进行编码。这样做的同时也引起了一些问题,虽然 BERT 可以对片段内不同的符号(Tokens)进行依赖建模,但是小片段之间的语义依赖等却无法建模。

本文提出的 Transformer-XL 旨在解决这个编码问题,作者称之为上下文碎片(context fragmentation)问题,它通过段级别的循环机制(segment-level recurrence mechanisim)和新型的位置编码方案(positional encoding scheme)来解决输入句子序列的长程依赖问题。实验证明,Transformer-XL 学习到的依赖比一般的 RNN 长 80% 左右,更是比传统的 Transformer 长 450% 左右,而且在评估期间,它的速度比传统的 Transformer 快 1800 倍。

1.1. 分段编码

介绍里面我们谈到,为了对输入句子序列进行编码,最初的 Transformer 会将输入句子序列根据预先设定好的最大长度切分成更小的片段,然后 Transformer 再对这些片段进行单独的训练,作者称这种模型为香草模型(Vanilla Model)。

图 1-1. 香草模型训练过程动画,来源 https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html

如图 1-1 所示,该图为香草模型的训练过程动画图,即分块单独训练。在这种训练方式下,香草模型学到的输入序列符号之间的依赖与模型预先设定的最大输入长度有关,通常长度为几百个单词,而且信息无法在不同的分块中流动。

图 1-2. 香草模型评估过程动画,来源 https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html

如图 1-2 所示,该图为香草模型的评估过程动画。在评估的每一步中,香草模型的最大段长度与训练期间相同,但是每次往后移动的时候只移动一个位置,而且只在最后一个位置进行预测,这会导致评估过程的计算复杂度非常高。

1.2. 分段循环机制

图 1-3. Transformer-XL 训练过程动画,来源 https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html

如图 1-3 所示,该图是 Transformer-XL 训练过程的动画。为了解决传统 Transformer 长度固定的问题,作者选择将循环机制加入到模型架构中。在训练期间,前一个段计算的隐藏状态表示会被固定住并且缓存下来,作为当前段计算时的上文环境信息。这种机制赋予了模型探索历史信息的能力,并且能够建模长程依赖来避免上下文碎片问题。

基于 RNN 的语言模型选择在同一层网络进行序列的循环,Transformer-XL 则选择了不同的循环机制,它的新段每一层网络隐藏状态的计算依赖于前一段相邻下一层网络的隐藏状态和当前段相邻下一层网络的隐藏状态(图 1-3)。因此,Transformer-XL 的最大依赖长度与层数和段长度相关,即

图 1-4. Transformer-XL 评估过程动画,来源 https://ai.googleblog.com/2019/01/transformer-xl-unleashing-potential-of.html

除此之外,由于在计算新段的隐藏状态表示时可以复用之前计算的隐藏状态,并且每次向后移动是以段为单位,因此 Transformer-XL 的评估过程非常快,演示动画如图 1-4 所示。作者在数据集 enwiki8 做了实验,Transformer-XL 评估速度要比香草模型快 1800 倍。

1.3. 相对位置编码

如果沿用最初香草模型的位置编码方案,那么每个段的位置编码都会是一样的,这显然是不合理的。为了复用历史隐藏状态信息,作者提出了一种新的位置编码来保持段与段之间的连续性,作者称之为相对位置编码(relative positional encodings)。核心思想就是在计算注意力期间,当某一个位置的查询向量 q 参与查询值向量 k 时,我们不需要知道绝对位置信息,而只需要知道 k 和 q 的相对位置信息,即 i - j。具体实现可参考论文附录。

1.4. 实验

作者在 WikiText-103、enwik8、text8、One Billion Word 和 Penn Treebank 这五个数据集上做了实验,均取得了不错的效果,实验结果如图 1-5、图 1-6、图 1-7、图 1-8 和图 1-9 所示。

图 1-5. 数据集 WikiText-103 实验结果

图 1-6. 数据集 enwik8 实验结果

图 1-7. 数据集 text8 实验结果

图 1-8. 数据集 One Billion Word 实验结果

图 1-9. 数据集 Penn TreeBank 实验结果

2. What does BERT learn about the structure of language?

链接:https://hal.inria.fr/hal-02131630/document

作者是来自于法国 Inria 机构的 Ganesh Jawahar,Benoît Sagot 和 Djamé Seddah。探索 BERT 深层次的表征学习是一个非常有必要的事情,一是这可以帮助我们更加清晰地认识 BERT 的局限性,从而改进 BERT 或者搞清楚它的应用范围;二是这有助于探索 BERT 的可解释性,自从各国政府人工智能战略的相继发布,神经网络的可解释性问题成为了一个不可忽略的问题。

Frege 早在 1965 年的组合原则里就谈到,复杂表达式的意义由其子表达式的意义以及意义如何组合的规则共同决定。

本文思路与分析卷积神经网络每层学习到的表征类似,主要是探索了 BERT 的每一层到底捕捉到了什么样的信息表征。作者通过一系列的实验证明 BERT 学习到了一些结构化的语言信息,比如 BERT 的低层网络就学习到了短语级别的信息表征,BERT 的中层网络就学习到了丰富的语言学特征,而 BERT 的高层网络则学习到了丰富的语义信息特征。

2.1. BERT

BERT 是构建于 Transformer 之上的预训练语言模型,它的特点之一就是所有层都联合上下文语境进行预训练。训练方法是通过预测随机隐藏(Mask)的一部分输入符号(token)或者对输入的下一个句子进行分类,判断下一个句子是否真的属于给定语料里真实的跟随句子。

作者使用了 bert-base-uncased 作为实验的基础,它由 12 层编码网络组成,每层的隐藏状态(hidden)尺寸为 768,并且有 12 个注意力头(110M 参数)。在所有的实验中,作者在每一层网络都使用第一个输入符号 ('[CLS]') 的输出来计算 BERT 的表征,这个输出通过自注意力机制汇聚了所有真实符号的信息表征。

2.2. 短语句法

基于循环神经网络 LSTM 的语言模型在 2018 年就曾被 Peters et al. 揭示了能够捕捉短语级别的结构信息,那么 BERT 在这一方面是否捕捉了短语级别的结构信息呢?为了探索这一疑惑,作者跟随 Peters et al. 的方法,首先给定一个输入符号序列,然后通过结合第一个和最后一个隐藏向量计算第 l 层网络的跨度表征(span representation)。

图 2-1. BERT 第 1、2、11、12 层跨度计算的二维 t-SNE 图

图 2-2. BERT 不同层的跨度表征聚类图

图 2-1 是利用 t-SNE 对跨度表征可视化的结果,t-SNE 是一个用于可视化高维数据的非线性降维算法,我们可以观察到 BERT 在低层网络捕捉了短语级别的结构信息,然后随着网络层数的加大,短语级别的结构信息逐渐消失。举个例子,底层网络会将块(如「to demonstrate」)的潜在分类(如「VP」)映射到一起。

作者进一步通过聚类算法 k-means 量化这个证明。如图 2-2 所示,作者使用归一化互信息(Normalized Mutual Information,NMI)展示了低层网络在编码短语级别的结构信息上优于高层网络。

2.3. 探测任务

探测任务(Probing Tasks)能够帮助挖掘编码在神经网络模型中的语言学信息。作者使用探测任务来评估每层神经网络编码不同类型语言学特征的能力。

作者使用十个句子级别的探测任务,这些探测任务被分为三组:

  • 表层任务:句子长度(SentLen)探测,单词在句子中存在探测(WC);
  • 句法层任务:词序敏感性(BShift),句法树深度(TreeDepth),句法树顶级成分序列(TopConst);
  • 语义层任务:时态检查(Tense),主语数量(SubjNum),名词动词随机替换敏感度(SOMO),协作分句连词的随机交换(CoordInv)。

图 2-3. 探测任务在 BERT 不同网络层的性能表现(括号里的值是未训练与训练过的 BERT 的差值)

如图 2-3 所示,BERT 编码了丰富的语言学层次信息:表层信息特征在底层网络,句法信息特征在中间层网络,语义信息特征在高层网络。作者也发现未训练版本 BERT 的高层网络在预测句子长度任务(SentLen)上超过了训练过的版本,这暗示着未训练的 BERT 模型可能包含足够的信息去预测基本的表层特征。

2.4. 主谓一致

主谓一致(Subject-verb agreement)是一个探测神经网络模型是否编码句法结构的代理任务。当句子中有更多相反编号(attractors)的名词插入到主语和动词中时,预测动词编号的任务会逐渐变得困难。作者在 BERT 的每一层网络使用不同的激励(Stimuli)来测试 BERT 是否学习到较好的句法结构信息。

图 2-4. BERT 每一层主谓一致得分情况表

如图 2-4 所示,该表是主谓一致得分表,第二列到第六列是在主语和动词插入的名词数量,括号里面的数字是主语到谓语动词的平均距离。结果表明在大多数情况下,中间层网络表现得更好,这也印证了上一部分句法特征主要在 BERT 中间层进行编码的假设。

有趣的是,随着插入名词的增多,BERT 更高层的网络也逐渐能够处理长程依赖问题,效果要比低层网络更好,这证明 BERT 只有具有更深的层数才能在大多数自然语言处理(NLP)上更有竞争力。

2.5. 组合结构

为了进一步探索 BERT 是否能够学习到组合结构的特征,作者使用 Tensor Product Decomposition Networks(TPDN)来对 BERT 进行调查,TPDN 通过基于使用张量乘积和的预先选择的角色设计(role scheme)来组合输入符号表示。一个单词的角色设计可以是基于从语法树根节点到它自身的路径,比如 LR 代表根节点的左子树的右子树。

作者假设,对于一个给定的角色设计,如果一个 TPDN 模型能够很好地被训练去估计一个神经网络学到的表征,那么这个角色设计就很可能能够确定这个神经网络模型学到的组合性特征。对于 BERT 的每层网络,作者使用五种不同的角色方案:left-to-right,right-to-left,bag-of-words,bidirectional 以及 tree。

作者使用 SNLI 语料库的 premise 句子来训练 TPDN 模型,并使用均方误差(MSE)作为损失函数。

图 2-5. 均方误差图

如图 2-5 所示,该图是 TPDN 以及 BERT 表征和角色设计之间的均方误差,这表明尽管 BERT 只使用了注意力机制,但是它的高层网络依然学习到了某种树形结构。

图 2-6. 依赖解析树示意图

受到这个研究的启发,作者从自注意力机制权重中推导出了依赖树。如图 2-6 所示,该图展示了通过 BERT 第二层网络第 11 个注意力头的自注意力推导出句子「The keys to the cabinet are on the table」的依赖树,根节点从 are 开始。我们可以从图中看出一些限定词依赖,比如「the keys」,「the cabinet」以及「the table」;也可以看出主语谓语依赖,比如「keys」和「are」。

3. How Multilingual is Multilingual BERT?

链接:https://arxiv.org/abs/1906.01502

作者是来自于 Google Research 的 Telmo Pires,Eva Schlinger 和 Dan Garrette。既然 BERT 能够在每一层都学习到特殊的表层、句法以及语义特征表示,那么多语言 BERT(M-BERT)在上面学到了什么呢?多语言 BERT 在零样本迁移学习上又表现如何呢?

本文尝试着回答这些问题,作者基于 Devlin et al 发布的用 104 种语言组成的单一语料库训练的单个多语言 BERT 模型,在上面做了一系列实验,最终结果显示多语言 BERT 在跨语言的零样本迁移学习上表现得非常好。作者设计了一些标注任务,这些任务在一种语言上对该任务进行微调,最后再在另一种语言上进行评估。

除此之外,为了理解为什么会有好的效果以及跨语言泛化表现的程度,作者还设计了探测实验,该实验展示了诸如迁移学习甚至有可能在不同的脚本上进行,以及迁移学习在两种相似的语言上表现得非常好等等。另外探测实验还表明,虽然多语言 BERT 的多语言表示能够将学习到的结构映射到词汇表,但是似乎没有学习到这些结构的系统转换以适应于具有不同词序的目标语言。

3.1 模型和数据

多语言 BERT 是一个由 12 层 transformer 组成的预训练模型,它的训练语料包含了 104 种语言的维基百科页面,并且共享了一个词汇表。值得注意的是,多语言 BERT 在训练的时候既没有使用任何输入数据的语言标注,也没有使用任何翻译机制来来计算对应语言的表示。

作者利用两个任务进行实验,实体命名识别(NER)和词性标注(POS),这两个任务都具有相似的特征,均可以使用序列标注的网络模型来进行。

图 3-1. NER 和 POS 实验结果

如图 3-1 所示,该图是 NER 和 POS 的跨语言迁移学习实验结果,我们可以看到在相似的语言上进行迁移学习会比较好。最极端的例子就是微调和评估都使用一种语言,这种效果是最好的,所以我们可以看到图表中最好的分数都在对角线上。

3.2. 词典记忆

由于多语言 BERT 使用单个的多语言词典,所以当在微调期间出现的单词也出现在评估语言中时,这会发生一种跨语言的转换迁移,作者称这种现象为词汇重叠(overlap)。作者设计了探测实验来探索这种跨语言的转换迁移有多大程度上时依赖于这种重叠,以及这种转换迁移能否发生在不同的语言文本上,也就是没有重叠现象发生的时候。

如果多语言 BERT 的泛化能力很大程度上是依赖于词典记忆,那么我们也可能会看到 NER 在零样本迁移学习上的表现会依赖于词汇重叠。为了测量这个影响,作者计算了 E_train 和 E_eval,这分别是训练集和测试集实体词汇的集合,定义重叠计算公式为:

图 3-2. 零样本 NER 迁移学习与跨语言重叠实验对比图

如图 3-2,该示意图是零样本 NER 迁移学习 F1 分数与 16 种语言重叠实验的对比结果,包含了多语言 BERT 和英文 BERT。我们可以看到英文 BERT 的性能表现非常依赖于词汇重叠,迁移学习的能力会随着重叠率的下降而逐渐下降,甚至在完全不同的语言文本中(即重叠率为 0)出现 F1 分数为 0 的情况。但是多语言 BERT 则在大范围重叠率上表现得非常平缓,即使是不同的语言文本,这证明多语言 BERT 在某种程度上拥有超过浅层词汇级别的深层次表征能力。

图 3-3. 在不同的语言文本上的 POS 实验准确率示意图

为了深入研究多语言 BERT 为何能在不同的语言文本上具有良好的泛化能力,作者在词性标注任务 POS 上做了一些实验尝试,结果如图 3-3 所示。我们可以看到,多语言 BERT 在只有阿拉伯文(UR)的数据集上进行 POS 任务的微调,在只有梵文(HI)上的数据集进行测试,仍然达到了 91% 的准确率,这是令人非常惊讶的。这表明多语言 BERT 拥有强大的多语言表征能力。

但是,跨语言文本迁移却在某些语言对上表现出糟糕的结果,比如英文和日语,这表明多语言 BERT 不能在所有的情况下都表现良好。一个可能的解释就是类型相似性,比如英语和日语有不同的主语、谓语以及宾语顺序,但是英语却和保加利亚语(BG)有相似的顺序,这说明多语言 BERT 在不同的顺序上泛化性能不够强。

3.3. 语言结构编码

从前面我们可以看到,多语言 BERT 的泛化能力不仅仅归功于词典记忆,而且还归功于深层次的多语言表征。为了更深入的了解这种表征的本质,作者设计了一系列实验来更深入了解这种表征。

图 3-4. 在零样本迁移学习上 POS 准确率与 WALS 特征的对比图

WALS 是与语法结构相关的特征,图 3-4 展示了多语言 BERT 在零样本迁移学习上 POS 任务的准确率与 WALS 特征数量的对比图。我们可以看到,准确率会随着语言相似度的提升而提升,这证明多语言 BERT 对具有相似特征的语言的迁移学习更加友好。

图 3-5. POS 迁移学习宏平均准确率在不同语言学特征上的对比图

语言的顺序类型特征一般包括这两种,主谓宾(subject/verb/object, SVO)顺序或者形容词名词(adjective/noun, AN)顺序。图 3-5 展示了在 POS 任务上进行的跨语言迁移学习的宏平均准确率与语言类型特征的对比。我们可以看到性能表现最好的情况是语言类型特征一样(SVO 和 SVO,SOV 和 SOV,AN 和 AN 以及 NA 和 NA)的迁移学习,这表明虽然多语言 BERT 能够学习到一定的多语言表征,但是似乎没有学习到这些语言类型结构的系统转换去适应带有不同语言顺序的目标语言。

为了探索多语言 BERT 在多语言文本混合(Code-switching)和音译(transliteration)的情况下表征能力如何,作者进一步在 UD 语料库上测试了印地语(HI)和英语(EN)。多语言文本混合是指一个表达里面参杂多种语言,而音译则指将发音相似的外来词语直接通过读音翻译过来,比如酷(cool)和迪斯科(disco)等。

图 3-6. 多语言文本混合以及音译下的 POS 准确率

如图 3-6 所示,该图表是多语言 BERT 在多语言文本混合和音译下的词性标注任务的准确率结果,其中 transliterated 代表印地语是以拉丁文的方式书写,而 corrected 则代表印地语是以梵文的方式书写。我们可以看到,对于 corrected 的输入,多语言 BERT 的性能在单个语料库(HI EN)上与多语言文本混合(HI/EN)表现相当,这进一步正面多语言 BERT 能够有效地表征多语言信息。可是对于 transliterated 的输入,这两者的表现就差得挺远,这证明预训练语言模型只能在某些语言上较好地进行迁移学习。

3.4. 特征空间的多语言表征

作者还设计了一个实验探索多语言 BERT 在特征空间上的多语言表征。作者首先从数据集 WMT16 中采样了 5000 个句子对,将句子分别输入到没有经过微调的多语言 BERT。然后抽取每个句子在 BERT 每一层的隐藏特征向量(除开 [CLS] 与 [SEP])并取平均,得到一个表示:

我们计算从一种语言到另一种语言的向量表示:

这里 M 是句子对数量。当我们翻译每个英文句子表示时,我们通过一种语言到另一种语言的向量表示寻找最近的德语句子向量,最近的邻居便是正确的句子对,我们称之为最近邻准确度(nearest neighbour accuracy)。

图 3-7. 翻译任务上的最近邻准确度结果图

如图 3-7 所示,该图是翻译任务上的最近邻准确度在 BERT 每一层网络上的结果。我们可以看到,在 BERT 的非底层网络都实现了较高的准确率,这说明多语言 BERT 可能以一种语言无关的方式,在大多数隐藏层共享语言特征表示。至于为什么在最后几层网络上准确率又下降了,一个可能的解释是 BERT 在预训练的时候需要明确与语言相关的信息去预测缺失的单词。

4. 总结

Transformer-XL 结合循环机制让 Transformer 拥有了处理变长输入序列的能力,而 BERT 以及多语言 BERT 的解析则为我们更好了解 BERT 以及可解释方面提供了坚实的基础,期待未来能够有更多的预训练语言模型工作能够在此基础上受益,并更进一步。

作者介绍:曾祥极目前是浙江大学计算机方向的硕士,主要研究常识(Commonsense)以及自动机器学习(AutoML),同时也对认知科学和系统科学这两个学科很感兴趣。作为机器之心技术分析师的一员,他希望通过文字理清当前技术的发展前沿,与大家一同分享见解,也希望我们都能从中有所收获。

0 人点赞