最近,随着大数据和高性能硬件的发展,自回归语言模型(GPT)和自编码语言模型(BERT)等大规模预训练模型(PTM)已经取得了巨大成功,不仅促进了自然语言处理(NLP)任务的性能提升,也有效地提升了图像处理任务的表现。大规模预训练模型的突出优势在于,能够从海量未标注的数据上学习语言本身的知识,而后在少量带标签的数据上微调,从而使下游任务能够更好地学习到语言本身的特征和特定任务的知识。这种预训练模型不仅能够充分利用广泛的网络资源,而且还能完美地解决人工标记数据较为复杂的问题。因此,预训练模型几乎成了NLP任务的标配[1]。
本文将分为上下两篇为读者解读预训练模型的诞生、代表性工作和未来发展方向。上篇主要介绍预训练的诞生和代表性工作,下篇主要介绍预训练模型的未来发展方向。相关内容主要借鉴参考文献[1]。
1、背景介绍
近些年,包括卷积神经网络、循环神经网络和Transformer等模型在内的深度神经网络已经广泛地应用于各类应用中。与依赖人工特征的传统机器学习方法相比,深度神经网络能够通过网络层自动学习数据特征,从而摆脱了人工设计特征的局限性,极大地提升了模型的性能。
尽管深度神经网络促进各类任务取得了极大的突破,但深度学习模型对数据较高的依赖性也带来了极大的挑战。因为深度学习模型需要学习大量的参数,数据量少必定会造成模型过拟合和泛化能力差。为此,早期的AI研究者开始投身于为AI任务手工构造高质量数据集的研究中。最著名的是李飞飞团队的ImageNet图像处理数据集,该数据集极大地促进了图像处理领域的快速发展。但是,自然语言处理领域处理的是离散的文本数据,人工标注工作较为复杂。因此,NLP领域开始关注海量未标注的数据。
预训练模型的最初探索主要致力于浅层语义表示和上下文语义表示。最早关注的浅层语义表示是Word2Vec[2]等,为每个单词学习一个固定的单词编码,而后在多个任务上都用相同的编码,这样表示方法必定带来无法表示一词多义的问题。为了解决上述挑战,NLP 研究者开始探索具有上下文语义的单词词嵌入表示[3][4][5]。到目前为止,具有代表性的词嵌入表示是BERT和GPT系列的预训练模型,其中GPT-3的模型参数已经达到了千亿级别。预训练模型的发展历程如图1所示。
图1 预训练模型的分类
1.1 迁移学习与监督训练
为了解决标注数据紧缺导致的过拟合和泛化能力差的问题,提出了迁移学习。迁移学习是受人类学习的启发,面对新问题时使用以前学到的知识去解决问题。它能够从多元任务中学到重要的知识,并将其应用到目标任务中。因此,迁移学习能很好地解决目标任务标注数据紧缺的问题。
预训练早期的工作主要致力于迁移学习[6],依赖于先前的经验来解决新问题。在迁移学习中,可能原任务和目标任务有不同的领域和任务设置,但是要求的知识是一致的[7]。所以,选择一个灵活的方法将知识从原始任务迁移到目标任务是很重要的。预训练模型的提出就是为了建立原任务和目标任务的桥梁,先在多元任务上预训练获得通用知识,然后使用少量目标任务上的标注数据进行微调,使得微调的模型能够很好地处理目标任务。
图2 迁移学习将已有知识重用到目标任务的原理图
一般来说,迁移学习中存在两种预训练方法:特征迁移和参数迁移。迁移学习初期被广泛应用在计算机视觉领域,在人类标注的ImageNet数据集上预训练的模型通过小数据集的微调就可以很好地应用在下游任务中,这掀起了预训练模型(Pre-trained Model, PTM)的热潮。受此启发,NLP 社区也开始探索针对 NLP 任务的预训练模型,最具有代表性的工作是 CoVE[8]。和图像处理领域最大的区别在于,NLP 领域没有人类标注的大量数据集,因此 NLP 社区开始充分使用大量未标注的数据,并且在未标注的数据上使用自监督方法,能够让预训练模型学习到语言本身的特征。
1.2 自监督学习与自监督训练
迁移学习能够分类为四种子设置:归纳迁移学习、直推式迁移学习、自学迁移学习和无监督迁移学习。其中归纳迁移学习和直推式迁移学习是研究的核心,因为它们能够将监督学习中学到的知识迁移到目标任务中。由于监督学习需要大量的标注数据,因此越来越多的研究者开始关注大规模的无标注数据,并尝试从无标注数据中提取关键信息。
自监督学习是从无标注数据中提取知识的一种手段,它能够利用数据本身的隐藏信息作为监督,和无监督有非常相似的设置。由于自然语言很难标注且又存在大量未标注的句子,所以NLP 领域的预训练模型主要致力于自监督学习,进而大大促进了NLP领域的发展。NLP任务早期的预训练模型就是广为人知的单词词嵌入编码。由于单词通常存在一词多义的问题 [4],进一步提出了能够捕获单词上下文语义信息的句子级别单词词嵌入编码模型,这种模型几乎成为当前 NLP 任务的最常见模式,其中最具代表性的工作是自回归语言模型(GPT)和自编码语言模型(BERT)。受二者的启发,后期又提出了很多更高效的预训练模型,如 RoBERTa[9]、XLNET[10]、BART和T5[11]。
2、代表性工作
预训练模型成功的关键是自监督学习与Transformer的结合,具有代表性的工作是 GPT 和BERT系列模型。后续的其他预训练模型都是这两个经典模型的变体。预训练模型的相关模型家族如图3所示。
图3 近年来的预训练模型家族
2.1 Transformer
Transformer是一个应用自注意力机制的编码-解码器结构,它能够建模输入句子中不同单词之间的关系。归因于self-attention机制的平行计算,Transformer能够充分利用增强的计算设备去训练大范围模型。Transformer的编码和解码阶段,self-attention机制可以计算所有输入单词的表示,Transformer的模型结构如图4所示。
在编码阶段,给定一个单词,Transformer通过比较该单词与输入的其他单词来计算注意力得分,每一个注意力得分显示了其他单词对该单词表示的贡献程度,然后该注意力得分被作为其他单词对该单词的权重来计算给定单词的加权表示。通过喂入所有单词表示的加权平均到全连接网络,可以获得给定单词的影响力表示。这个过程是整个句子信息回归方法,在平行计算的辅助下,可以同时为所有单词生成句子表示。在解码阶段,注意力机制是相似于编码阶段的,唯一不同的是,它一次只能从左到右解码一个表示,并且每一步的解码过程都会考虑以前的解码结果。
由于突出的优势,Transformer逐渐成为自然语言理解和生成的标准网络结构。此外,它还充当随后派生的PTM的主干结构。下文将介绍的GPT和BERT两个模型,完全打开了大规模自监督PTMs时代的里程碑。总的来说,GPT擅长自然语言生成,而BERT更侧重于自然语言理解。
图4 Transformer的模型结构
2.2 GPT
PTMs主要包含两个阶段,预训练阶段和微调阶段。GPT采用Transformer结构作为模型骨架,应用生成式预训练和鉴别式微调。理论上来说,GPT是第一个结合Transformer结构和自监督预训练目标的模型,它在自然语言推理、问答任务和常识推理等多个NLP任务上都取得了重大的成功。
具体来说,给定一个无标签的大规模语料库,GPT能够优化一个标准的自回归语言模型,即最大化单词在给定上下文情况下的预测条件概率。在GPT的预训练阶段,每个单词的条件概率由Transformer建模。GPT对特定任务的适应过程是微调的,通过使用 GPT的预训练参数作为下游任务的起点。在微调阶段,将输入序列通过 GPT,我们可以获得GPT Transformer 最后一层的表示。通过使用最后一层的表示和特定于任务的标签,GPT使用简单的额外输出层优化下游任务的标准目标,GPT模型的具体结构如图5所示。
由于GPT有数亿个参数,在8个GPU上训练了1个月,这是 NLP历史上第一个“大规模”的PTM,GPT的成功为后续一系列大规模PTM的兴起铺平了道路。
图5 GPT模型结构
2.3 BERT
BERT是另一个最具代表性的模型。与GPT相比,BERT 使用双向深度Transformer作为主要结构,BERT的模型结构如图6所示。BERT模型包括预训练和微调两个阶段。在预训练阶段,BERT应用自编码语言建模,受完形填空的启发,提出了一种Mask语言模型(MLM),将目标词用[MASK]符号遮盖,目的是在预测该遮盖词时能够同时考虑到上文和下文的全部信息。与GPT采用的单向自回归语言建模相比,MLM 可以学习到深度双向所有token的表示。
除了MLM任务之外,还采用下一句预测(NSP)的目标来捕捉句子之间的话语关系,用于一些多个句子的下游任务。在预训练阶段,MLM和NSP共同优化BERT的参数。
预训练后,BERT可以获得下游任务的稳健参数。通过使用下游任务的数据修改输入和输出,BERT 可以针对任何 NLP 任务进行微调。BERT 可以通过输入单个句子或句子对有效地处理这些应用程序。对于输入,它的模式是用特殊标记 [SEP] 连接的两个句子,它可以表示:(1)释义中的句子对;(2)蕴涵中的假设-前提对;(3)问答中的问题-段落对;(4) 用于文本分类或序列标记的单个句子。对于输出,BERT 将为每个令牌生成一个token-level表示,可用于处理序列标记或问答,并且特殊令牌 [CLS] 可以输入额外的层进行分类。
图6 BERT模型结构
2.4 GPT和BERT的子子孙孙
在GPT和BERT预训练模型之后,又出现了一些基于二者的改进,如RoBERTa和 ALBERT[12]。RoBERTa的改进思路主要是去除了NSP任务,增加了训练步数以及更多的数据,并将[MASK]改变为动态模式。实证结果表明Roberta比BERT更好,并且RoBERTa 已经指出 NSP 任务对于BERT的训练来说是相对无用的。
ALBERT是BERT的另一个重要变体,它的出发点是减少模型的参数。首先,它将输入词嵌入矩阵分解为两个较小的矩阵;其次它强制所有 transformer 层之间的参数共享以减少参数量;第三,它提出了句子顺序预测任务来代替BERT的NSP任务。但是,由于牺牲了空间效率,ALBERT 的微调和推理速度相对较慢。
除了 RoBERTa和ALBERT之外,近年来研究者们还提出了各种预训练模型以更好地从未标注数据中获取知识。一些工作改进了模型架构并探索了新的预训练任务,如 XLNet[10]、UniLM[13]、MASS[14]、SpanBERT[15]和ELECTRA[16]。此外研究者尝试在模型中整合更多的知识,如多语言语料库、知识图谱和图像等。
3、小 结
由于NLP领域没有公开的大规模标注语料库,所以预训练模型的提出使得NLP模型能够充分地利用到海量无标注的数据,从而大大提升了NLP任务的性能。特别是,GPT和BERT预训练模型的出现,让NLP领域有了突飞式发展,同时,优化与完善的预训练模型也如雨后春笋般涌现,相关的探索工作将在下篇详细介绍。
参考文献
[1] Xu H, Zhengyan Z, Ning D, et al. Pre-Trained Models: Past, Present and Future[J]. arXiv preprint arXiv:2106.07139, 2021.
[2] T. Mikolov, I. Sutskever, K. Chen, G. S. Corrado, and J. Dean, “Distributed representations of words and phrases and their compositionality,” in Advances in neural information processing systems, pp. 3111–3119, 2013.
[3] O. Melamud, J. Goldberger, and I. Dagan, “context2vec: Learning generic context embedding with bidirectional lstm,” in Proceedings of the 20th SIGNLL conference on computational natural language learning, pp. 51–61, 2016.
[4] M. E. Peters, M. Neumann, M. Iyyer, M. Gardner, C. Clark, K. Lee, and L. Zettlemoyer, “Deep contex-tualized word representations,” arXiv preprint arXiv:1802.05365, 2018.
[5] J. Howard and S. Ruder, “Universal language model fine-tuning for text classification,” arXiv preprint arXiv:1801.06146, 2018.
[6] S. Thrun and L. Pratt, “Learning to learn: Introduction and overview,” in Learning to learn, pp. 3–17, Springer, 1998.
[7] S. J. Pan and Q. Yang, “A survey on transfer learning,” IEEE Transactions on knowledge and data engineering, vol. 22, no. 10, pp. 1345–1359, 2009.
[8] B. McCann, J. Bradbury, C. Xiong, and R. Socher, “Learned in translation: Contextualized word vectors,” arXiv preprint arXiv:1708.00107, 2017.
[9] Y. Liu, M. Ott, N. Goyal, J. Du, M. Joshi, D. Chen, O. Levy, M. Lewis, L. Zettlemoyer, and V. Stoyanov, “Roberta: A robustly optimized bert pretraining approach,” arXiv preprint arXiv:1907.11692, 2019.
[10] Z. Yang, Z. Dai, Y. Yang, J. Carbonell, R. R. Salakhutdinov, and Q. V. Le, “Xlnet: Generalized autoregressive pretraining for language understanding,” Advances in neural information processing systems, vol. 32, 2019.
[11] A. Roberts, C. Raffel, K. Lee, M. Matena, N. Shazeer, P. J. Liu, S. Narang, W. Li, and Y. Zhou,
“Exploring the limits of transfer learning with a unified text-to-text transformer,” 2019.
[12] Z. Lan, M. Chen, S. Goodman, K. Gimpel, P. Sharma, and R. Soricut, “Albert: A lite bert for self-supervised learning of language representations,” arXiv preprint arXiv:1909.11942, 2019.
[13] L. Dong, N. Yang, W. Wang, F. Wei, X. Liu, Y. Wang, J. Gao, M. Zhou, and H.-W. Hon, “Uni-
fied language model pre-training for natural language understanding and generation,” arXiv preprint
arXiv:1905.03197, 2019.
[14] K. Song, X. Tan, T. Qin, J. Lu, and T.-Y. Liu, “Mass: Masked sequence to sequence pre-training for language generation,” arXiv preprint arXiv:1905.02450, 2019.
[15] M. Joshi, D. Chen, Y. Liu, D. S. Weld, L. Zettlemoyer, and O. Levy, “Spanbert: Improving pre-training by representing and predicting spans,” Transactions of the Association for Computational Linguistics, vol. 8, pp. 64–77, 2020.
[16] K. Clark, M.-T. Luong, Q. V. Le, and C. D. Manning, “Electra: Pre-training text encoders as discriminators rather than generators,” arXiv preprint arXiv:2003.10555, 2020.