找回密码
 立即注册
搜索

四两拨千斤,如何做到自然言语预训练加速十倍


编者按:随着自然言语处理中的预训练成为研讨范畴的热点,预训练的成本与计算代价也成为了大家在研讨过程中必须思索的理想成绩。本文将会引见多种在训练模型过程中提高效率,降低成本的方法,希望能对大家的研讨有所协助。
近年来,自然言语处理中的预训练成为了研讨范畴的热点,著名的 GPT-3 也掀起了一波新的浪潮。但是众所周知,训练这样大规模的模型非常耗费资源:即便在维基百科数据上训练一个简单的 BERT-Base 模型,都需求用许多 GPU 训练1-2周,且不说购买 GPU 的开支,光是电费就需求数万美金。这样的耗费只要工业界的几个大公司才可以完成,极高的门槛限制了相关方向的探求以及全体发展。


为了降低预训练的准入门槛,微软亚洲研讨院机器学习组的研讨员们从机器学习中的不同角度出发,针对预训练的不同侧面分别提出了加速方法。详细而言,研讨员们提出了基于 Transformer 的新结构 TUPE,针对 BERT 设计了数据高效应用的策略,以及扩展了相似人类学习的预训练义务。其中前两项工作已被新颖出炉的 ICLR 2021 接收。这些方法既可以独立运用,也可以结合起来运用,从而可以达到更大的加速比。原来需求10天的训练,如今只需一天就可以完成!



基于 Transformer 的新结构 TUPE(ICLR 2021)



地位表征(Positional Embedding)大家都知道,但这个设计真的高效、合理吗?


由于 Transformer 在结构上不能辨认来自不同地位的词语,所以模型普通需求用地位表征来辅助。其中最简单的做法就是在输入词向量上直接加地位表征,但词向量和地位向量相加是不是一个正确的选择呢?词向量的加减操作可以保持语义,但地位向量本身是不具有语义的,两者相加会不会让模型更难学呢?在第一层对 Transformer 的留意力分布(attention weight)停止展开可以得到:





从下面展开的公式里,可以发现两个成绩:第一,中间两项引入了词语和地位信息的交叉,但没有理由说某个地位和某个词一定有很强的关联(论文中有详细的实验分析也表明了中间两项有一定的冗余),第二,第一项和第四项分别计算词与词、地位与地位的关联,但他们采用了相反的参数化函数 (W^Q 和 W^K),从而限制了留意力表达才能。


为了处理上述两个成绩,微软亚洲研讨院的研讨员们做了一些简单的改动:







简单来说,就是去掉了地位 (position) 和文本( token) 之间的交叉,同时用了不同的变换矩阵。需求留意的是,在多层的 Transformer 模型里,比如 BERT,下面公式的第二项在不同层之间是共享的。因此,这里仅需求计算一次,几乎没有引入额外的计算代价。




图1:全体 TUPE (Transformer with Untied Positional Encoding) 结构






图2:实验结果




另外,研讨员们还特殊处理了 [CLS] token 的地位,使其不会因太过关注部分而忽略了整个句子的信息,全体 TUPE (Transformer with Untied Positional Encoding)结构如图1所示。实验结果如图2,可以看到,该方法不只最后比基线要好很多,并且可以在 30% (300k-step) 的时分,就达到基线在 1000k-step 时的效果。


TUPE 的残缺工作请见:https://openreview.net/forum?id=09-528y2Fgf




高效数据应用:让 BERT 像人类一样记笔记(ICLR 2021)



众所周知,在言语数据集中,单词通常具有非常长尾的分布,即大量的单词在整个数据集中都具有很低的出现频率。而这些低频词的词向量,往往训练质量都不佳。这些低质量的词向量,给模型了解整句训练语句形成了困难,进而拖慢了整个模型预训练的速度。


举例来说,如图3所示,假如「COVID-19」是一个低频词,做完形填空的人假如对其含义一无所知的话,那么想要填对合适的词是非常困难的,相似的成绩也会发生在自然言语预训练的过程中。




图3:低频词例




由此,微软亚洲研讨院的研讨员们提出了为低频词词动态记笔记的方法 Taking Notes on the Fly(TNF),记录历史上出现过稀有词的句子信息,从而使得当模型再见到该低频词的时分,对其的了解可以愈加充分。如图3所示, 研讨员们希望模型可以从笔记「The COVID-19 pandemic is an ongoing global crisis」(COVID-19 是一场持续发生的全球危机)揣测出「COVID-19」与生命有关,从而更容易了解义务得出上述完形填空成绩的答案「lives」(生命)。


详细说来,TNF 维护了一个笔记词典。在这个笔记词典中,每一个低频词都存有一个上下文表征向量(Contextual representation)来作为笔记。当该词出现时,TNF 从笔记词典中取出其的上下文表征向量,与其词向量一同构成模型在该地位的输入,同时也更新笔记上针对这个词的内容。如图4所示:




图4:TNF 的训练过程




研讨员们将 TNF 运用到了两个著名且有效的言语预训练方法 BERT 和 ELECTRA 上停止实验,同时也在 GLUE 上对预训练的模型停止了精调,然后对比。实验结果表明,在两个预训练方法上,当 TNF 与基线达到相反的实验结果时,TNF 的训练工夫仅仅为基线的40%(见图5)。




图5:TNF 的训练曲线




当 TNF 与基线训练相反的迭代更新次数时,TNF 在 GLUE 上的平均 GLUE Score 和大多数子义务上的表现均超过了基线。


TNF 的残缺工作请见:https://openreview.net/forum?id=lU5Rs_wCweN




合理的预训练目的:BERT 更喜欢做 ABCD 单选题



目前许多预训练模型都会运用掩码言语模型义务,即遮挡住输入句子的一部分,让模型还原被遮挡的部分。该义务虚际上相当于一个「完形填空」成绩,但与考试中常见的完形填空不同,自然言语预训练中的完形填空备选项是整个词典。显然,即便对于人类来说,在没有备选答案的开放环境下,想要准确完成这个「完形填空」义务也是非常困难的。




图6:单选题义务




实践上,人类更容易完成选择题或判别题。在给定有限选项的条件下,义务的难度会极大降低。著名的「ELECTRA」模型运用的就是判别题义务,在后期设计的判别题容易,于是训练效率很高。随着模型的训练,判别题设计越来越难,模型可以不断得到有效的反馈。与 ELECTRA 稍有区别,微软亚洲研讨院的研讨员们给模型设计的预训练义务是 ABCD 单选题,并希望可以动态地调整单选题的难度。在早期学习中,设计简单的单选题,令模型完成相对简单的义务,从而加快学习进程,在后期则逐渐加大义务难度,从而获得更精细的结果。在这里可以经过设计不同难度的义务以及选项的个数调理义务的难度(选项越多义务越困难)。




图7:运用元控制器停止预训练




为了达到训练义务从易到难的效果,一个可以出题的「元控制器」被提出,它可以自顺应地改变多选题的难度。特别的是,这个元控制器是一个较小的 BERT,基于掩码言语模型停止预训练,并随着主模型一同训练迭代。对于每句话先对这句话停止遮挡,然后元控制器以遮挡后的语句作为输入,并输入被遮挡目的词相关的词例,这些词例将被用于构造备选答案。




图 8:基于自顺应多选题义务的预训练实验结果




可以看到,在训练初期,元控制器的训练并不充分,于是生成备选答案的质量不高,主模型可以在这些容易的义务上很快学习到正确的知识。在训练后期,元控制器的训练接近完成,可以生成高质量的备选答案,从而主模型可以在这些困难的义务上得到进一步的退化。


将这个元控制器运用到 BERT上,可以发现与原始 BERT 相比,训练速度提升了80%,即在下游义务 GLUE 上,用20%的计算开支训练得到的模型,可以与训练工夫长5倍的 BERT 模型相婚配。


残缺工作请见:https://arxiv.org/abs/2006.05744



正如文章标题所言,经过对预训练模型及其训练过程停止细心思索,完全可以用四两拨千斤的手腕,降低预训练的成本与计算代价。大力出奇观很重要,但大力出奇观并不是迷信研讨的全部。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

杨点风 2021-1-20 07:21:08 显示全部楼层
无论是不是沙发都得回复下
回复

使用道具 举报

1550216188 2021-1-21 07:53:01 显示全部楼层
纯粹路过,没任何兴趣,仅仅是看在老用户份上回复一下
回复

使用道具 举报

盼盼小妹 2021-1-21 22:32:00 来自手机 显示全部楼层
顶一个,顶一个,顶一个
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies