BERT、GPT 等大规模预训练模型(PTM)最近取得了巨大成功,成为人工智能领域的里程碑。由于复杂的预训练目标和庞大的模型参数,大规模 PTM 可以有效地从大量标记和未标记的数据中捕获知识。通过将知识存储到大量的参数中并对特定任务进行微调,大量参数中隐式编码的丰富知识可以使各种下游任务受益,这已通过实验验证和实证分析得到广泛证明。现在人工智能社区的共识是采用 PTM 作为下游任务的支柱,而不是从头开始学习模型。
        近年来,随着各大厂商的激烈角逐,预训练模型(The Pretrained Foundation Models ,PFMs)的发展可谓百花争鸣,谁都想在这场没有硝烟的战争中力压群雄,作为下游任务的基础,像BERT、GPT-3、MAE、DALLE-E和ChatGPT基于大规模数据训练,可为各种下游应用提供合理的参数初始化。这种迁移学习范式,让预训练模型以一种高傲的姿态在各种任务和应用中大放异彩。特别是最近大火ChatGPT,带着其独有的"思维”在各大领域乱杀,也将人工智能推向了新一轮高潮。本文也是从预训练模型成长的几个关键因素做了系统阐述,旨在带领大家一起见证预训练模型的蜕变历程。
        简介
         367080.png
        图 1:PFMs的历史和演变
        目前PFMS已经在NLP、CV、GL这三个主要的AI领域得到了广泛的研究,如图一所示,通过在大型语料中学习通用的特征表示,再针对不同的下游任务进行微调,已经在文本分类、图像分类、对象检测、图形分类等任务中表现出色。特别是针对NLP领域,预训练模型有着独特的优势,它的训练数据可以来自任何没有标记的文本,得到的语言模型(Language Models,LM)可以捕获到文本中的长期依赖、层次结构等关联信息。早期的预训练是一种静态技术,例如NNLM[1]和Word2vec[2],但静态方法难以适应不同的语义环境。因此,像BERT[3]、XLNET[4]这类的动态预训练技术应运而生。
        PFMs能在nlp中盛行起来,得益于能它同时对单词的句法和语义表示进行建模,并根据不同的输入动态改变多义词的表示上下文。PFM能学习丰富的语法和语义推理知识,效果更好。表1是对近几年来NLP领域PFMs相关信息的汇总。其中,Transforms作为PFMs主流的模型架构,它使用了Attention机制,将序列中的任意两个位置之间的距离缩小为一个常量,在分析预测更长的文本时,捕捉间隔较长的语义关联效果更好;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架,能够利用分布式GPU进行并行训练,提升模型训练效率。
         367083.png
        表1:NLP领域的预训练模型
        目前在NLP领域PFMs的学习方法主要分为监督学习、半监督学习、弱监督学习、自监督学习和强化学习这五种,同时根据预训练任务根据上述的的学习方法可分为五类:掩码语言建模(MLM)、去噪自动编码器 (DAE)、替换令牌检测 (RTD)、下一句预测 (NSP)、句子顺序预测 (SOP)。其中,MLM在输入序列中随机擦除一些单词,然后在预训练期间预测这些擦除的单词,典型的例子包括BERT 和SpanBERT[5];DAE 用于向原始语料库添加噪声,并使用包含噪声的语料库重建原始输入,BART[6] 就是一个典型的例子;RTD 是一个判别任务,用于确定 LM 是否已替换当前令牌,这项任务在ELECTRA[7] 中引入;为了使模型理解两个句子之间的相关性并捕获句子级表示,引入了NSP任务。PFM 输入来自不同文档的两个句子,并检查句子的顺序是否正确,一个典型的例子是BERT;与NSP不同,SOP使用文档中的两个连续片段作为正样本,并使用两个片段的交换顺序作为负样本。PFM可以更好地模拟句子之间的相关性,例如ALBERT 。
        字表征
        当前大规模的预训练模型在问答、机器阅读理解和自然语言推理中取得了比人类更好的性能,表明目前PFM的构建方法是实用的。现有的预训练语言模型根据字表征方法主要分为三个分支:(1)自回归语言模型,(2)上下文语言模型,(3)排列语言模型。其中单词预测方向和上下文信息是其中最重要的因素。
        1.自回归语言模型
        自回归语言模型基于前一个单词预测下一个可能的单词,或基于后续单词预测最后一个可能的单词。它被选为特征提取器,并从前一个单词中提取文本表示。因此,它在自然语言生成(Natural language generation,NLG)任务中具有更好的性能,例如文本摘要和机器翻译。对于一个序列,根据前一个词计算的给定单词的概率为前向LM,公式如下:
        其中 ,是输入序列的长度。此外,双向LM(Bi-LM)也是基于自回归语言模型,以及从向前和向后方向提取的文本表示连接在一起模型架构设计方法。GPT[9]采用自监督预训练、监督微调和stacked Transformer [10] 作为其解码器。后续,OpenAI提出了GPT-2[11],并将stacked Transformer层数增加到48层。参数总数达到15亿。GPT-2还引入了多任务学习。GPT-2 具有相当大的模型容量,可以针对不同的任务模型进行调整,而不是微调它们。但是,GPT-2 也使用自回归语言模型。因此,它提高了模型的性能而不会大幅增加成本。由于是单向transformer缺乏上下文建模能力,GPT-2的主要性能提升来自于多任务的综合效应预训练、超大型数据集和超大型模型。对于特定的下游任务,仍然需要基于任务的数据集进行微调。但是,扩大LM的训练规模可以显著提高与任务无关的性能。因此,提出了 GPT-3[12] ,它将模型大小增加到 175亿个参数,并使用 45TB 的数据进行训练。因此,它可以实现良好的性能无需针对特定的下游任务进行微调。
        2.上下文语言模型
        自回归语言模型仅使用上文或下文的信息,不能同时使用上下文的信息。ELMO[13] 仅使用双向长短期记忆 (LSTM),它是两个向后和向前单向 LSTM 的串联。上下文LM预测基于上下文词。它使用变压器编码器,模型的上层和下层由于自注意力机制而直接相互连接。对于单词序列 T,给定单词的概率计算如下:
        BERT模型输入由三部分组成:词嵌入,段嵌入和位置嵌入。它使用双向transformer作为特征提取器,这抵消了ELMO和GPT的缺陷。但是,BERT的缺点也不容忽视。双向transformer结构并没有消除自编码模型的约束。其大量的模型参数对计算资源低的设备非常不友好,并且难以部署和应用。大多数PFM需要更多的训练任务和更大的语料库。针对训练不足的问题,后续提出了RoBERTa[14]。它使用更大的批次大小和未标记的数据。此外,它可以训练更长的模型,删除 NSP 任务,并添加长序列训练。在处理文本输入时,采用字节对编码(BPE)[15]进行分词。BPE 对每个输入序列使用不同的掩码模式,即使输入顺序相同。
        3.排列语言模型
        使用上下文语言模型的建模方法可以视为自动编码模型。但是,由于训练阶段和微调阶段的不一致,性能的自动编码模型在自然语言生成 (NLG) 任务中很差。排列语言模型旨在结合了自回归语言模型和自动编码器语言模型的优点。它改善了两种模型在很大程度上可以作为未来预训练目标构建的基本思路任务。对于给定的输入序列,排列语言模型的目标函数的形式表示如下:
         367079.jpg
        其中 是所有排列中的共享参数,表示所有可能排列的集合输入序列 和和表示第t个元素和a的元素排列.
        以BERT为代表的的MLM可以很好地实现双向编码。然而,MLM在预训练期间使用掩码标记,但在微调期间不使用,这导致在预训练和微调期间数据不一致。为了实现双向编码,避免了MLM的问题,提出了排列语言模型。排列语言模型基于自回归语言模型,避免了不一致数据的影响。然而,与传统的自回归模型不同,排列语言模型不再按顺序对序列进行建模。它以最大化序列给出了序列的所有可能的排列。通过这种方式,任何位置都可以利用来自所有位置的上下文信息,使排列语言模型实现双向编码。最常见的排列语言模型模型是XLNET和MPNet[16]。XLNET是第一个基于LM的排列PFM。此外,XLNet还集成了Transformer-XL的两个最关键技术:相对位置编码和段递归机制。MPNet将MLM模型与排列语言模型相结合,通过排列语言模型预测tokens之间的依赖关系。它使用辅助位置信息作为输入,使模型能够看到完整的句子,从而减少位置差异。
        模型架构
         367084.png
        图 2:BART架构
        早期ELMO采用多层RNN结构。每一层都是双向LSTM结构,有向前和向后 LM。以这两个方向的最大可能性为目标功能。与词向量法相比,ELMO引入了上下文信息并改进了多义问题,但ELMO提取语言特征的整体能力较弱。PFMs的应用研究主要有两个方向。一种是具有微调功能的PFM(例如BERT),另一个是具有zero/few-shot prompts(例如 GPT)的 PFM。BERT使用双向编码器以预测哪些单词被屏蔽并确定两个句子是否与上下文相关。但是,文档是双向编码的,并且被屏蔽的单词是独立预测的,这降低了生成能力。GPT 使用自回归解码器作为特征提取器,根据前几个单词预测下一个单词,并使用微调解决下游任务,因此更适合文本生成任务。但是,GPT 仅使用前一个词进行预测,无法学习双向交互信息。与这些模型不同,BART是由 seq2seq 模型构建的降噪自动编码器,采用编码器-解码器结构,如图2所示。预训练主要包括使用噪声销毁文本并使用 seq2seq 模型重建原始文本。预训练主要包括使用噪声销毁文本和使用 seq2seq 模型重建原始文本。编码层采用双向Transformer。它采用五种添加噪声模式:(1)单字掩码;(2)字删除;(3)跨度掩码;(4)句子改编;(5)文件重新排列。在编码器部分,序列具有在将其输入编码器之前被屏蔽。然后,解码器根据编码器输出的编码表示形式和未屏蔽的序列恢复原始序列。这添加一系列噪声模式使 BART 在序列生成方面的性能在自然语言推理任务显著改善。
        掩码设计
        注意力机制首先将基本单词聚合为句子向量和重要句子向量转换为文本向量,这允许模型对不同的输入给予不同的关注。对于BERT来说,作为一个双向编码LM,输入句子中的任意两个单词都可以相互看到。但是,它阻碍了BERT模型学习NLG任务的能力。
         367082.png
        图 3:spanBERT架构
        后续基于RoBERTa的提出SpanBERT,它采用了动态掩蔽的思想和单段预训练,如图3所示,提出了跨度掩码和跨度边界目标 (SBO) 来屏蔽一定长度的单词。跨度边界的目标任务是通过两端观察到的令牌恢复所有屏蔽的跨度(tokens)。训练阶段使用RoBERTa中提出的动态掩码策略,而不是数据预处理过程中的掩码。与BERT不同,SpanBERT随机覆盖连续的文本并添加SBO训练目标。它使用最接近跨度边界的tokens预测跨度,并消除 NSP 预训练任务。
        Song 等提出了掩蔽的 seq2seq 预训练模型 MASS[17]。在训练阶段,编码器的输入序列被随机屏蔽为长度为K的连续段。掩盖的片段将通过 MASS 解码器恢复。UniLM[18]通过为输入数据中的两个句子设计不同的掩码来建模来完成NLG的学习。对于第一个句子,UniLM使用与转换编码器相同的结构,使每个单词注意到其前后单词。对于第二句,每个单词只能注意到第一句和前面的所有单词当前句子中的单词。因此,模型输入的第一句和第二句构成了经典seq2seq 模式。
        提升方式
        1.提升模型性能
        大多数流行的预训练模型都需要大量的预训练数据,这对硬件提出了巨大的要求,使得重新训练具有挑战性,只能做一些模型的微调。为了解决这些问题,出现了一些模型。例如,百度发布的ERNIE Tiny就是小型化的ERNIE[19],它减少了层数,预测速度提高了4.3倍,精度略有下降。ALBERT通过减少内存消耗和训练速度。但是,不可否认的是,无论哪种压缩对于这些大型模型,模型在这些任务中的性能将急剧下降。它要求在以后的工作中注意高级语义和语法信息的高效表示和无损压缩。通过使用字嵌入参数分解和层之间的隐藏参数共享,ALBERT显著减少了模型的参数数量,而不会降低性能。它提出了SOP的训练任务,预测两个句子的顺序以提高性能。
        2.多任务学习
        ERNIE主要由Transformer编码器和任务嵌入两部分组成。在Transformer编码器中,自注意机制用于捕获每个tokens的上下文信息并生成上下文表示嵌入。任务嵌入是一个将不同特征应用于任务的技术。ERNIE 2.0 [20] 引入了多任务学习,以实现词汇、语法和语义的预训练。ERNIE 2.0 使用七种不同的预训练任务,涵盖三个方面:词级、句级和语义级。它使用持续学习,使先前训练任务中的知识得以保留,并使模型能够获得远距离记忆。它使用转换器编码器并引入任务嵌入,使模型能够在持续学习过程中区分不同的任务。UniLM使用三个预训练任务:单向 LM、双向 LM 和编码器-解码器LM。通过自注意力层掩码机制,它可以在预训练阶段同时完成三种目标任务。在训练阶段,UniLM采用SpanBERT提出的小段掩模策略,损失函数由上述三个预训练任务的损失函数组成。为了保持所有损失函数的贡献一致性,同时训练了三个预训练任务。多个任务的建模和参数共享使LM在自然语言理解(NLU)和NLG任务中实现良好的泛化能力。
        3.针对下游任务
        预训练模型往往很大,那么如何匹配不同的下游任务同样重要。已经出现了一些在专用语料库上训练的预训练模型。Cui等人提出了BERT-whole word masking模型(BERT-WWM)。他们直接使用中文中的BERT根据原始的MLM训练进行随机屏蔽,导致语义信息的丢失。ZEN[21]是基于BERT的文本编码器,它采用N-gram 增强性能,有效集成相当细粒度的文本信息,收敛速度快,性能好。Tsai[22]等人提出了一种用于序列标记任务的定向多语言序列标记模型。针对低质量语言,采用知识蒸馏法,在词性标注和多重形态属性预测两个任务中能取得更好的表现,推理时间缩短了27倍。
        指令对齐
        指令对齐方法旨在让LM遵循人类意图并生成有意义的输出。一般方法是以监督方式使用高质量语料库微调预训练的LM。为了进一步提高学习LMs的有用性和无害性,将强化学习引入微调程序,以便学习障碍可以根据人类或人工智能的反馈修改其响应。受监督和强化学习方法可以利用思维链风格的推理来提高人类判断的性能和人工智能决策的透明度。
        1.监督式微调 (SFT)
        SFT是一种成熟的技术,可以解锁知识并应用它到特定的现实世界,甚至是看不见的任务。SFT 的模板由输入输出对和指令。例如,给定指令“将此句子翻译成英文:”和一个输入“今天天气不错”,我们希望LM生成目标"The weather is nice today",该模板通常是人造的,包括非自然指令和自然指令,或基于种子语料库的引导。LM伤害的伦理和社会风险是SFT的重要关注点。
        2.人类反馈强化学习(RLHF)
        RL已被应用于增强NLP任务中的各种模型,例如机器翻译,摘要,图像标题,问题生成,文本游戏等。RL通过将语言生成任务中的不可微分目标视为顺序决策问题来优化它们。但是,存在过度拟合使用神经网络的指标的风险,从而导致在指标上得分很高的荒谬样本。同时,其还用于使LM与人类偏好保持一致。
         367081.png
        图 4:ChatGPT框架
        InstructGPT 建议使用 PPO[23] 根据经过训练的奖励模型微调大模型,以对齐 LM与人类偏好,这与ChatGPT应用的方法相同,名为RLHF。具体见图4,奖励模型使用人工标记员手动对输出进行排名的比较数据进行训练。对于它们中的每一个,奖励模型计算一个奖励,用于使用 PPO 更新 LM。由DeepMind开发的Sparrow[24]也利用RLHF来降低不安全和不适当答案的风险。尽管RLHF 取得了一些有希望的结果,这一领域的进展因缺乏公开的基准和实现资源,导致人们认为 RL 对于 NLP 来说是一种困难的方法。因此,最近引入了一个名为RL4LMs[25]的开源库,该库由用于在基于LM的生成上微调和评估RL算法的构建块组成。
        与传统的 RL 方法相比,RLHF 的关键优势在于能更好地与人类的意图保持一致,以及以未来的反馈为条件进行规划,从各种类型的反馈中进行流畅的学习,并根据需要对反馈进行整理,所有这些都是创建真正的智能代理所不可缺少的。它还允许机器通过抽象人类的价值来学习,而不是简单地模仿人类的行为,从而使代理具有更强的适应性,更强的可解释性,以及更可靠的决策。
        3.思维链 (CoT)
        在NLP领域,这几年模型的规模是越来越大,几亿参数量现在都只能算小模型,预训练模型也已经向大模型的方向去演进,那大模型的好处显而易见:推理能力强,采样效率高,因为模型参数大,能储存很多的知识。最近几年有学者通过构建这种推理的中间过程,来简化推理取得了比较好的效果,而我们所知大模型通过prompt进行上下文小样本学习能力也是极强的。但问题就是创建很多的中间步骤用来做监督finetune是非常耗时的,而且传统的prompt方式在数学计算、常识推理等做的又不好,怎么结合上下文小样本学习能力和中间步骤来改善推理能力是一个问题。CoT在此基础上应用而生,其基础原理就是将多步求解的问题分解出中间步骤, 模型分配额外的计算能力给推理步骤,它可以增加模型的可解释性, 知道它是如何得出特定答案,并且模型还有机会通过调试推理路径中存在错误的地方,原则上适用于所有任务,只需提供少量思维链的范例,现有的大规模语言模型即可使用思维链进行推理。
        总结
        本文主要阐述了PFMs成长历程,主要针对PFMs在NLP领域的底层基础到上层技术进行了梳理。目前来看,PFMs在仅仅在参数量规模上已经很难让人产生很大共鸣了,而人们现在更加在意的是PFMs的实际的推理性能和处理复杂推理任务的能力,这里面还要额外考虑到对软硬件资源成本和实际应用场景中的合规性,更加注重PFMs的落地性和实用性,正如chatgpt一出场就能够惊艳全场,其参数量已经不是舆论的焦点了,这款AI杀手级的应用出现,其惊艳的表现可能会给世界带来新的产业革命。当然,还是受限于其模型大小和使用成本,ChatGPT并没有完全普及开来,但随着算法技术和算力技术的不断进步,下一代的PFMs也必然会更加完善,在越来越多的领域进行应用,为人类带来更好的体验感和便利性。