大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

解读预训练语言模型的 2019:爆款新模型井喷,BERT 要被全面碾压了吗?

  • 2019-12-31
  • 本文字数:4531 字

    阅读完需:约 15 分钟

解读预训练语言模型的2019:爆款新模型井喷,BERT要被全面碾压了吗?

本文是 InfoQ“解读 2019”年终技术盘点系列文章之一。


自 Google 在 2018 年推出预训练语言模型 BERT,在 11 项 NLP 任务上达到最高水平,预训练语言模型的研究与应用成为学术界和工业界广泛关注的重点,被认为开启了自然语言处理的新篇章。在 2019 年各大公司和高校陆续发布了自己的预训练语言模型,如:Facebook 发布的 RoBERTa,CMU 发布的 XLNet,Stanford 发布的 ELECTRA,还有百度的 ERNIE 模型等,不断刷新自然语言理解任务的最高表现,并且在细粒度舆情分析,序列化推荐等不同场景下展现了巨大的应用价值。本文着重对预训练语言模型的重要意义,当前的发展,包括模型,训练方法等进行了总结、回顾与探讨,也欢迎同行业的学者,专家交流指正。

预训练语言模型简介

语言模型的任务是根据一个句子里的已知词预测句子里的未知词,在自动填充(如:在电子邮件书写过程中的自动补全),机器翻译,语音识别等方向有着广泛的应用,传统的语言模型包括 n-gram,HMM 等。在 2003 年 Joshua Bengio 首次提出使用神经网络来建模语言模型,由于近期一系列有影响力的预训练语言模型的工作都是基于神经网络的,本章节将重点关注神经语言模型。


神经语言模型不仅提供了强大的建模语言模型的工具,同时,也提供了词,句子以及文本的向量表示。2013 年诞生了被大家广泛使用的 Word2Vec,利用语言模型作为训练任务,得到词的向量表示,这里每个词的向量表示是固定的,与上下文无关,例如:“bank”的词向量表示在“bank of China”和“river bank”这两个不同的上下文里面都是一样的。2017 年 ELMo 利用双向 LSTM 获取了一个基于上下文的词向量表示(contextualized word embedding),使得每个词的向量表示包含了上下文的语义信息,例如前面的例子里面,“bank”一词在使用 ELMo 得到的 embedding 在不同的上下文是不一样的。此后的一系列工作都采用了基于上下文的词向量表示。


一个革命性的工作是 2018 年诞生的 BERT,该工作将 Transformer 的架构引入了预训练语言模型,并开启了 Pretraining-Finetuning 的框架。该框架在预训练阶段基于大规模无监督语料进行两个预训练任务,分别是词级别和句子级别的,一个是 MLM(Masked Language Modeling),另外一个是 NSP(Next Sentence Prediction),MLM 是从一个部分被 Mask 的句子恢复这些被 Mask 掉的确实词,NSP 是判断一个句对是不是上下句,从而获取基于上下文的词和句子的表示。在 Finetune 阶段,针对具体的下游任务,BERT 会微调中间层参数以调整词的 Embedding 以及调整预测层的参数,成功的将预训练学到的词和句子的表示迁移到下游任务中,实现了对低资源任务的有效支撑。


预训练语言模型的发展现状

由于 BERT 取得的巨大成功,2019 年在预训练语言模型方面涌现了一大批有效,实用并且带给人来启发的工作。由于篇幅有限,本文未能列举所有工作,只会挑选一些来阐述。下面在模型,预训练任务和算法三个维度进行总结。

模型方面

模型方面主要有以下几个方面的改进。


位置信息编码方式。BERT 的网络架构是一个多层的 Transformer 网络,由于 Transformer 并没有直接考虑输入的 token 的位置信息,原始的 Transformer 模型和 BERT 分别采用了函数式和参数式的绝对位置编码方式,即每一个位置上输入的 token 会叠加一个与位置信息相关的一个 embedding(这个 embedding 称为绝对位置编码:absolute position embedding,APE),前者的位置编码是一个与位置相关的函数,后者则是模型参数的一部分,在预训练过程中学到的。此后,CMU 和 Google 提出的 Transformer-XL 和 XLNet 提出了相对位置编码方式,即在每一层计算隐状态的相互依赖的时候考虑它们之间的相对位置关系,这个相对位置信息表示为一个相对位置编码(relative position embedding,RPE),这两个工作均在相对位置编码中加入了可学习的参数。此后,华为发布的 NEZHA 模型使用了完全函数式的相对位置编码(相对位置编码没有任何需要学习的参数),实验结果表明该位置编码方式使得模型在各个下游任务上的效果均得到明显提升。


词表 embedding 矩阵的分解与中间层的层共享。 Google 发布的 ALBERT 针对词表 embedding 矩阵进行了矩阵分解,将原先的大小为 VH 的词表 embedding 矩阵分解为两个大小分别为 VE 和 E*H 的 low-rank 矩阵相乘的形式,其中 V,H 分别为词表大小以及模型隐状态维度,E 则是远小于 V 和 H 的值,因而这个方法有效的减少了词表 embedding 的参数。同时,该模型采用了层共享技术,并尝试了共享中间层多头注意力或者是 Feed Forward Network 的参数。实验证明该方法在显著少于原始 BERT 参数量的前提下在多个下游任务上大大超越了 BERT

预训练任务方面

在词级别的训练任务方面,一个为大家广泛使用且证明有效的方法是全词 Mask 技术。不同于原始的 BERT 模型 Mask 单个 Token,该技术在 MLM 预训练任务中 Mask 整个词而不是单个 Token(如下图全词 Mask 方法 Mask 了一整个词“大兴”),进而提升了任务难度使得 BERT 学到更多语义信息。此任务在 Google 发布的英文 BERT 的训练以及哈工大和科大讯飞联合发布的中文 BERT 模型以及华为发布的 NEZHA 模型中得到了应用。



百度发布的 ERNIE 模型在词法,句法以及语义方面分别引入了若干任务。词法方面,百度 ERNIE 采用了 Knowledge Masking 的方法,即 MLM 预训练任务中 Mask 若干实体。句法方面,其采用了句子重排序以及句子距离计算的任务。语义方面,百度 ERNIE 使用了大量来自搜索引擎的数据,采取了信息检索相关的任务。


CMU 和 Google 联合发布的 XLNet 框架统一了预训练语言模型的 Autoencoder 和 Auto-regressive 两种框架。预训练阶段,一改原始 BERT 通过引入[MASK]字符来恢复缺失词,XLNet 则是通过 Auto-regressive 的方式,逐个生成一个句子中的缺失词。这样的方式使得预训练和 Finetune 阶段都不需要引入[MASK]字符,解决了原始 BERT 的预训练和 Finetune 不一致(discrepancy)的问题(原始 BERT 的预训练语料中包含[MASK]字符而 Finetune 则不包含)。与此同时,Auto-regressive 的生成方式也使得生成词之间具有一定的依赖,后生成的词会依赖之前生成的词,解决了原始 BERT 中各个缺失词互相之间独立生成的问题。此外,训练过程中,XLNet 还将一个句子的缺失词进行了多次不同顺序的生成,充分利用了语料的语义信息。


华盛顿大学和 Facebook 联合发布的 SpanBERT 模型还引入了 Span 预测任务,该任务 Mask 一个连续的 Span(例如下图中“场”,“很”,“不”三个字),利用 Span 前后的两个字的最上层表示(下图中的 x3 和 x7)以及待预测字的位置信息来预测该字,如下图中,待预测字为“不”,Span 预测任务会使用 x3,x7 和“不”这个字的位置信息(就是 x3 和 x6 还有 p7,即“不”这个字的绝对位置编码)来预测该字,“场”和“很”的预测也是同样的方法。该方法使得 Span 前后的字的表示会包含 Span 中字的语义信息,由于在训练过程中,一个句子会被随机 Mask 很多次,所以句子中每个字都有机会成为 Span 的前后字,进而使得各个字学到的表示都会包含周围 Span 的信息,Span 预测任务能够有效提高模型在下游的 Span 抽取任务(此任务的目标是获取一段文字中目标片段的开始和结束位置)的效果。



斯坦福大学提出的 ELECTRA 模型采用了生成对抗式的方法训练模型。生成器采用了 BERT 模型,即一个 Denoising Autoencoder,恢复一个句子中被 Mask 的词,由于 BERT 不可能达到 100%的复原,被恢复的词有一些是原句中的原词,有一些则被替换成了别的词。辨别器也是一个多层的 Transformer 网络,其训练任务是辨别生成器输出的句子中哪些词是原词,哪些是被替换的。在 ELECTRA 中,最终保留的是辨别器,由于预训练阶段,在生成器中,各个句子中的每一个词的表示都被使用来进行一个二分类任务(即是否是原词),相比原始的 BERT(只有 15%不到的词的表示被拿来做预测),ELECTRA 的 sample 的利用率非常之高,进而收敛很快,在相同的 FLOPS 的情况下,性能优于 BERT,ROBERTa 等同样规模的预训练语言模型。

训练算法

在训练算法方面,当前有两个广泛使用的方法。


第一个在训练过程中变量的精度方面做了优化,此方法被称为混合精度训练(Mixed Precision Training),在传统的深度学习训练过程中,所有的变量包括 weight,activation 和 gradient 都是用 FP32(单精度浮点数)来表示。而在混合精度训练过程中,每一个 step 会为模型的所有 weight 维护一个 FP32 的 copy,称为 Master  Weights,在做前向和后向传播过程中,Master Weights 会转换成 FP16(半精度浮点数)格式,权重,激活函数和梯度都是用 FP16 进行表示,最后梯度会转换成 FP32 格式去更新 Master Weights。


第二个主要是优化算法方面的,此优化算法被称为 LAMB 优化器,通常在深度神经网络训练的 Batch Size 很大的情况下(超过一定阈值)会给模型的泛化能力带来负面影响。而 LAMB 优化器通过一个自适应式的方式为每个参数调整 learning rate,能够在 Batch Size 很大的情况下不损失模型的效果,使得模型训练能够采用很大的 Batch Size,进而极大提高训练速度。在训练 BERT 的研究中,使用 LAMB 优化器在不损失模型效果的前提下,Batch Size 达到了超过 30k,使得 BERT 的训练时间从 3 天降到了 76 分钟。

总结与展望

预训练语言模型在大规模无监督文本上进行预训练,将得到的词和句子的表示成功迁移到广泛的下游任务上,并取得了巨大成功,尤其对于低资源场景。2019 年涌现出的一大批在预训练语言模型的探索工作主要围绕在预训练任务方面,通过设计任务使模型学到更加丰富有效的语义信息。


在未来,笔者认为预训练语言模型还有着巨大的发展空间。


笔者认为模型方面的发展方向有两条线:1,模型效果方面,根据 XLNet 的实验,我们看到当前即使 large 量级的模型还只能 underfit 海量的数据,因此,模型方面就效果而言还有很大的改进空间;2,训练效率方面,当前的训练各个预训练语言模型在几十块 GPU 的算力下还是需要若干天,算力和资金消耗巨大,如何巧妙设计模型,降低冗余的计算也是一个重要问题。


此外,2019 年的大部分工作是基于 BERT 做了很多尝试性的工作,比如:函数式相对位置编码方面,经过尝试发现效果好,但似乎缺少针对性,笔者认为这是在模型的理论方面可解释性不够造成的,我们很难理解 Transformer 架构到底有什么欠缺,到底哪里学不好,每一部分到底起到什么作用,因而很难有针对性的改进方案。现有的解释性工作大多集中在解释预训练语言模型的功能,如:学到的词表示是否能够做词法和句法分析等,原理性的解释比较少,北京大学提出的 MacaronNET 是一个很好的原理方面的解释性工作,用偏微分方程解释 Transformer 的工作原理,从数学的角度准确定量地阐释了 Transformer 的机制,不过确实需要很强的数学功底才能吃透,2020 期待更多这方面的工作。


作者介绍


魏俊秋博士,华为高级技术专家,华为诺亚方舟实验室语音语义组的研究员,博士毕业于香港科技大学计算机系,本科毕业于南京大学。长期从事时空数据分析、主题模型、预训练语言模型的研究,在国际顶级会议和期刊,如:SIGMOD、TKDE、ICDM、TKDD 发表论文数篇,并曾在国际知名会议,如:COLING、BIG DATA、BiGComp、PAKDD 担任程序委员会委员。


2019-12-31 14:134417
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 575.5 次阅读, 收获喜欢 1981 次。

关注

评论

发布
暂无评论
发现更多内容

硅纪元视角 | GPT-4o mini限时免费微调,每天200万免费token

硅纪元

openai GPT-4o mini Minimax

天猫商品详情API返回值中的商品类型与分类

技术冰糖葫芦

API 文档 API 测试 API 优先 API Hub

MobPush标签推送新范式,精准触达再升级!

MobTech袤博科技

开发者 产品动态

文献解读-群体测序-第二十四期|《中国西部一个连续临床疑似儿童原发性腔毛运动障碍队列的临床和遗传特征》

INSVAST

基因测序 基因数据分析 生信服务

GOGC 2024 等你来

非凸科技

开源 技术 招聘 GOGC

极限编程要完全遵守的12个实践!

敏捷开发

程序员 敏捷开发 软件开发 代码规范 极限编程

技术同学的职场生存指南

老张

职业规划 认知提升 打工人 职场发展

汇聚数字智慧 构建新质未来——《CMG数字中国》融媒体节目正式上线

江湖老铁

Sketch for mac(专业矢量绘图设计软件)v99.1中文激活版

Rose

在心大陆的AI童话世界里,每个孩子都拥有“幸福陪伴”

心大陆多智能体

智能体 AI大模型 心理健康 数字心理 陪伴机器人

电脑风扇控制软件Macs Fan Control Pro mac破解版下载

Rose

现在有什么赛道可以干到退休?

王中阳Go

Go 面试

AutoMQ 与 Timeplus 达成战略合作强强联手

AutoMQ

云计算 云原生 后端

LRC2022中文破解资源 Lightroom Classic 2022下载 mac/win

Rose

Desktop Goose for Mac(抖音桌面宠物鹅)v0.22激活版

Rose

四大核心能力再升级 Bonree ONE 3.0引领全域可观测进入next level

博睿数据

合合信息参编“生成式人工智能个人信息保护技术要求系列标准”,助力AI行业可信发展

合合技术团队

合合信息 #科技 生成式人工智能

Dynamic Wallpaper for Mac(精美的动态壁纸)v17.1免激活版

Rose

第十二期双周精选

AutoMQ

Autodesk AutoCAD 2022破解版(CAD 2022中文版安装教程)mac/win

Rose

5家券商综合评级上升 6月券商App终端业务体验评测报告发布

博睿数据

GPT-4o Mini深夜突发:即刻免费上线,API降价60%

蓉蓉

GPT-4o mini

专业的mac软件下载平台——macw(苹果mac破解软件、资讯教程、视频、模板、壁纸素材)

Rose

如何安装 微信伴侣WechatTweak for mac(微信防撤回、多开助手)

Rose

Rhinoceros 7 (犀牛7)中文直装破解版 三维建模软件

Rose

Microsoft 365 for Mac(Office 365)v16.80正式激活版

Rose

时至今日,我们还要必须用敏捷开发吗?

敏捷开发

Scrum 敏捷开发 企业管理 代码规范 敏捷团队

上万次实践总结,原来这些才是敏捷测试要遵循的原则

敏捷开发

编程 敏捷开发 极限编程 敏捷实践 持续改进

解读预训练语言模型的2019:爆款新模型井喷,BERT要被全面碾压了吗?_AI&大模型_魏俊秋_InfoQ精选文章