在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
作者:知乎—DengBoCong
地址:https://www.zhihu.com/people/dengbocong
标题:Pre-trained Models for Natural Language Processing: A Survey 原文链接:https://arxiv.org/pdf/2003.08271.pdf nlp-paper:https://github.com/DengBoCong/nlp-paper nlp-dialogue:https://github.com/DengBoCong/nlp-dialogue 说明:阅读原文时进行相关思想、结构、优缺点,内容进行提炼和记录,原文和相关引用会标明出处,引用之处如有侵权,烦请告知删除。
预训练模型给下游任务带来的效果不言而喻,有了预训练模型,我们可以使用它来加速解决问题的过程。正如论文中所说的那样,预训练模型(PTMs)的出现将自然语言处理(NLP)带入了一个新时代。本篇论文基于分类从四个角度对现有PTMs进行系统分类,描述如何使PTMs的知识适应下游任务,然后概述了PTMs未来研究的一些潜在方向,通过本篇综述,来学习了解相关预训练模型。
01
背景
第一代 PTMs 旨在学习词嵌入,由于下游的任务不再需要这些模型的帮助,因此为了计算效率,它们通常采用浅层模型,如 Skip-Gram 和 GloVe。尽管这些经过预训练的嵌入向量也可以捕捉单词的语义,但它们却不受上下文限制,只是简单地学习「共现词频」。这样的方法明显无法理解更高层次的文本概念,如句法结构、语义角色、指代等等。
第二代 PTMs 专注于学习上下文的词嵌入,如 CoVe、ELMo、OpenAI GPT 以及 BERT。它们会学习更合理的词表征,这些表征囊括了词的上下文信息,可以用于问答系统、机器翻译等后续任务。另一层面,这些模型还提出了各种语言任务来训练 PTMs ,以便支持更广泛的应用,因此它们也可以称为预训练语言模型。
下图说明了NLP的通用神经体系结构,词嵌入有两种:Non-contextual Embeddings(非上下文嵌入)和Contextual Embeddings(上下文嵌入)。它们之间的区别在于,单词的嵌入是否根据出现的上下文而动态变化。
之前 NLP 任务一般会预训练
这些不包含上下文信息的词嵌入,我们会针对不同的任务确定不同的上下文信息编码方式,以构建特定的隐藏向量
,从而进一步完成特定任务。但对于预训练语言模型来说,我们的输入也是
这些嵌入向量,不同之处在于我们会在大规模语料库上预训练 Contextual Encoder,并期待它在各种情况下都能获得足够好的
,从而直接完成各种 NLP 任务。换而言之,最近的一些 PTMs 将预训练编码的信息,提高了一个层级。
大多数神经上下文编码器可分为两类:sequence模型和graph-based模型,下图说明了这些模型的体系结构:
目前Transformer由于其强大的能力,成为了主流的PTMs结构,预训练的优势如下:
02
PTMs概述
下图是这些Pre-training Tasks的损失函数汇总:
下图详细地展示了各种 PTMs的所属类别,只要看懂了它,基本目前现有的预训练语言模型的整体状态,都能了解了:
下表进一步展示了主流预训练方法的更多细节,主流模型、论文、实现,看这张表就足够了:
03
PTMs扩展
PTMs通常从通用大型文本语料库中学习通用语言表示,但是缺少特定领域的知识,PTMs中设计一些辅助的预训练任务,将外部知识库中的领域知识整合到PTMs中被证明是有效的
由于预训练的语言模型通常包含至少数亿个参数,因此很难将它们部署在现实应用程序中的在线服务和资源受限的设备上,模型压缩是减小模型尺寸并提高计算效率的有效方法,论文中提到的5种PTMs的压缩方法为:
下表是一些代表性的压缩PTMs:
04
使PTMs适应下游任务
尽管PTMs可以从大型语料库中获取通用语言知识,但是如何有效地将其知识适应下游任务仍然是关键问题。迁移学习旨在使knowledge从源任务(或领域)适应目标任务(或领域),下图给出了迁移学习的示意图:
要将PTMs的知识转移到下游NLP任务,我们需要考虑以下问题:
特征集成还是fine-tune?对于特征集成预训练参数是freeze的,而fine-tune是unfreeze的。特征集成方式却需要特定任务的体系结构,fine-tune方法通常比特征提取方法更为通用和方便,下表给出了适应性PTMs的一些常见组合:
Fine-Tuning策略,即通过更好的微调策略进一步激发PTMs性能:
05
关于PTMs的资源
下表提供了一些受欢迎的存储库,包括第三方实现,论文列表,可视化工具以及PTMs的其他相关资源:
06
总结
虽然 PTMs已经在很多 NLP 任务中显示出了他们强大的能力,然而由于语言的复杂性,仍存在诸多挑战,论文给出了五个未来 PTMs发展方向的建议。
PTMs的上限:目前,PTMs并没有达到其上限。大多数的PTMs可通过使用更长训练步长和更大数据集来提升其性能。目前NLP中的SOTA也可通过加深模型层数来更进一步提升。这将导致更加高昂的训练成本。因此,一个更加务实的方向是在现有的软硬件基础上,设计出更高效的模型结构、自监督预训练任务、优化器和训练技巧等。例如, ELECTRA 就是此方向上很好的一个解决方案。
面向任务的预训练和模型压缩:在实践中,不同的目标任务需要 PTMs拥有不同功能。而 PTMs与下游目标任务间的差异通常在于两方面:模型架构与数据分布。尽管较大的PTMs通常情况下会带来更好的性能表现,但在低计算资源下如何使用是一个实际问题。例如,对于 NLP 的 PTM 来说,对于模型压缩的研究只是个开始,Transformer 的全连接架构也使得模型压缩具有挑战性。
PTMs的架构设计:对于PTMs,Transformer 已经被证实是一个高效的架构。然而 Transformer 最大的局限在于其计算复杂度(输入序列长度的平方倍)。受限于 GPU 显存大小,目前大多数 PTMs无法处理超过 512 个 token 的序列长度。打破这一限制需要改进 Transformer 的结构设计,例如 Transformer-XL。关于Transformer结构变体可以参考这篇文章:Transformer的9种变体概览
fine-tune中的知识迁移:finetune是目前将 PTMs的知识转移至下游任务的主要方法,但效率却很低,每个下游任务都需要有特定的finetune参数。一个可以改进的解决方案是固定PTMs的原始参数,并为特定任务添加小型的finetune适配器,这样就可以使用共享的PTMs 服务于多个下游任务。
PTMs 的解释性与可靠性:PTMs 的可解释性与可靠性仍然需要从各个方面去探索,它能够帮助我们理解 PTM 的工作机制,为更好的使用及性能改进提供指引。
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。