大规模语言模型从理论到实践
引言
语言是人类与其他动物最重要的区别之一,人类的多种智能也与此密切相关。逻辑思维以语言的形式表达,大量的知识也以文字的形式记录和传播。如今,互联网上已经拥有数万亿网页资源,其中大部分信息都是用自然语言描述。因此,如果人工智能算法想要获取知识,就必须懂得如何理解人类所使用的不太精确、可能有歧义并且甚至有些混乱的语言。
语言模型(Language Model, LM)的目标就是建模自然语言的概率分布。词汇表 $V$ 上的语言模型,由函数 $P(w_1...w_m)$ 表示,可以形式化地构建为词序列 $w_1...w_m$ 的概率分布,表示词序列 $w_1 w_2 ... w_m$ 作为一个子串出现的可能性大小。由于联合概率 $P(w_1 w_2 ... w_m)$ 的参数量十分巨大,直接计算非常困难。按照《现代汉语词典 (第七版)》包含约 7 万单词,句子长度按照 20 个词计算,语言模型参数量达到天文数字。中文的书面语中,超过 100 个单词的句子也并不罕见,如果要将所有可能性都纳入考虑,语言模型的复杂度还会进一步急剧增加,以目前的计算手段无法进行存储和运算。
深度神经网络需要采用有监督方法,使用标注数据进行训练,因此,语言模型的训练过程也不可避免需要构造训练语料。但是由于训练目标可以通过无标注文本直接获得,从而使得模型的训练仅需要大规模无标注文本即可。语言模型也成为了典型的自监督学习(Self-supervised Learning)任务。互联网的发展,使得大规模文本非常容易获取,因此训练超大规模的基于神经网络的语言模型也成为了可能。
受到计算机视觉领域采用 ImageNet 对模型进行一次预训练,使得模型可以通过海量图像充分学习如何提取特征,然后再根据任务目标进行模型精调的预训练范式影响,自然语言处理领域基于预训练语言模型的方法也逐渐成为主流。以 ELMo 为代表的动态词向量模型开启了语言模型预训练的大门,此后以 GPT 和 BERT 为代表的基于 Transformer 模型的大规模预训练语言模型的出现,使得自然语言处理全面进入了预训练微调范式新时代。将预训练模型应用于下游任务时,不需要了解太多的任务细节,不需要设计特定的神经网络结构,只需要'微调'预训练模型,使用具体任务的标注数据在预训练语言模型上进行监督训练,就可以取得显著的性能提升。这类方法通常称为预训练语言模型(Pre-trained Language Models, PLM)。
大规模语言模型发展历程
大规模语言模型的发展历程虽然只有短短不到五年的时间,但是发展速度相当惊人。截止 2023 年 6 月,国内外有超过百种大模型相继发布。中国人民大学赵鑫教授团队在文献 [18] 按照时间线给出 2019 年至 2023 年 5 月比较有影响力并且模型参数量超过 100 亿的大规模语言模型。大规模语言模型的发展可以粗略地分为如下三个阶段:基础模型、能力探索、突破发展。
基础模型阶段
基础模型阶段主要集中于 2018 年至 2021 年。2017 年 Vaswani 等人提出了 Transformer 架构,在机器翻译任务上取得了突破性进展。2018 年 Google 和 OpenAI 分别提出了 BERT 和 GPT 模型,开启了预训练语言模型时代。BERT-Base 版本参数量为 1.1 亿,BERT-Large 的参数量为 3.4 亿,GPT-1 的参数量 1.17 亿。这在当时,相比其它深度神经网络的参数量已经是有数量级上提升。2019 年 OpenAI 又发布了 GPT-2,其参数量达到了 15 亿。此后,Google 也发布了参数规模为 110 亿的 T5 模型。2020 年 OpenAI 进一步将语言模型参数量扩展到 1750 亿,发布了 GPT-3。此后,国内也相继推出了一系列的大规模语言模型,包括清华大学 ERNIE (THU)、百度 ERNIE (Baidu)、华为盘古-A 等。这个阶段研究主要集中在语言模型本身,包括仅编码器(Encoder Only)、编码器 - 解码器(Encoder-Decoder)、仅解码器(Decoder Only)等各种类型的模型结构都有相应的研究。模型大小与 BERT 相类似的算法,通常采用预训练微调范式,针对不同下游任务进行微调。但是模型参数量在 10 亿以上时,由于微调的计算量很高,这类模型的影响力在当时相较 BERT 类模型有不小的差距。
能力探索阶段
能力探索阶段集中于 2019 年至 2022 年。由于大规模语言模型很难针对特定任务进行微调,研究人员们开始探索在不针对单一任务进行微调的情况下如何能够发挥大规模语言模型的能力。2019 年 Radford 等人在文献 [4] 就使用 GPT-2 模型研究了大规模语言模型在零样本情况下的任务处理能力。在此基础上,Brown 等人在 GPT-3 模型上研究了通过语境学习(In-Context Learning)进行少样本学习的方法。将不同任务的少量有标注的实例拼接到待分析的样本之前输入语言模型,使用语言模型根据实例理解任务并给出正确结果。在包括 TriviaQA、WebQSP、CoQA 等评测集上都展示出了非常强的能力,在有些任务中甚至超过了此前的有监督方法。上述方法不需要修改语言模型的参数,模型在处理不同任务时无需花费大量计算资源进行模型微调。但是仅依赖基于语言模型本身,其性能在很多任务上仍然很难达到有监督学习效果,因此研究人员们提出了指令微调(Instruction Tuning)方案,将大量各类型任务统一为生成式自然语言理解框架,并构造训练语料进行微调。大规模语言模型一次性学习数千种任务,并在未知任务上展现出了很好的泛化能力。2022 年 Ouyang 等人提出了使用有监督微调再结合强化学习方法,使用少量数据有监督就可以使得大规模语言模型服从人类指令的 InstructGPT 算法。Nakano 等人则探索了结合搜索引擎的问题回答算法 WebGPT。这些方法从直接利用大规模语言模型进行零样本和少样本学习的基础上,逐渐扩展到利用生成式框架针对大量任务进行有监督微调的方法,有效提升了模型的性能。


