随着ChatGPT出现,语言大模型的进步与对话交互方式相结合,正在搅动科研、产业,以及普通人的想象力。在上周举办的青源Workshop(第20期)|LLM and Chatbot: Endgame, Worse is Better, How to Win Big 研讨会上,智源社区与青源会邀请十余位相关领域专家,围绕以上话题展开热烈研讨。其中引导报告环节,爱丁堡大学博士生符尧总结了ChatGPT背后成功的原因,即大规模语言模型(LLM)的构建,分为四步,分别是「预训练」、「指令微调」、「对齐」、「专门化」。
符尧
符尧是爱丁堡大学的博士生,也是艾伦人工智能研究所的学生研究员。他在北京大学完成了本科学位,在哥伦比亚大学完成了硕士学位。他的研究方向是人类语言的大规模生成模型。他的研究领域包括了大语言模型、复杂推理、涌现能力。
观察模型能力的动态视角
在观察模型的能力时,我们往往需要以动态的视角观察其演化过程。如上图左侧的「缩放法则」所示,当保持其它条件恒定时,模型大小、数据量大小、指令数量等因素的指数级增长将导致 In-Context Learning、零样本学习、分布外泛化、分布内泛化等性能效果的线性提升。如上图右侧的「涌现能力」曲线所示,只有当模型的大小增大到一定程度时,模型的能力(例如,举一反三、跨域迁移的能力)才会产生跳变。因此,只有大模型才能有效提升这些效果。
此外,我们还应该纵向地观察模型家族的演化。与 GPT 系列类似,我们不妨观察 PaLM 和 Gopher/Chinchilla 模型家族的变化。Google 通过预训练得到了 PaLM 模型,经过指令微调得到了 FlanPaLM、再经过 Alignment 得到它们最新的模型。DeepMind 通过预训练得到了 Gopher/Chinchilla,再通过指令微调和对齐得到 Sparrow 模型。
综合上述,我们可以将此类模型的发展分为三个阶段:
(1)预训练。得到强大的基础模型,获得语言生成、In-context Learning、获取世界知识、推理、代码生成等能力。模型大小的指数级增长伴随着数据量的指数级增长。
(2)指令微调。指令种类指数增长,导致模型零样本迁移能力的线性增长。思维链等能力有时会在预训练后直接出现(例如PaLM)。如果这种能力没有出现,我们可以将其作为特殊的指令,进行指令微调。经过预训练后,大模型相较于小模型具有更大的能力边界。如果预训练模型具备某项能力,指令微调可以继续提升该能力;若预训练模型不具备某项能力,指令微调有望开发出该能力。因此,指令微调后的小模型也有几可能获取强于大模型的能力。同时,指令微调的效果也和基础模型息息相关。
(3)对齐。牺牲模型能力,换取模型的「安全」。将模型的某些能力弱化,使其在特定方面符合人类的期望。
第1步丨预训练:得到强基础模型
预训练旨在得到强大的基础模型。一些著名的预训练模型如上图左侧所示。值得一提的是,Galactica 模型本身的预训练效果不错,然而由于其返回的结果不太符合人类预期(对齐欠佳)所以被 Meta 下线后开源。Galactica 的开源模型包含 30B 参数和 120B 参数两个版本,可以直接在 Hugging Face 上下载。预训练可以得到语言生成、世界知识、In-context Learning、代码理解/生成、复杂推理/思维链等能力。
第2步丨指令微调:释放模型能力
指令微调旨在加强预训练模型的已有能力,或者开发出预训练模型不具备的能力,要求指令种类足够多,每种指令的例子也要足够多。指令的指数级增长会带来跨域迁移能力的线性增长。单个指令下实例数指数级增长也会带来该指令能力的线性增长,但可能使其它指令的能力弱化。因此,指令微调的思路为让模型在各项维度上的能力全面扩张。
目前意识到指令微调重要性的工作并不多。其中,「LM self-instruct」较为出色,它模拟了未经过指令微调的初代 GPT 175B 到经过指令微调的 Text-davinci 001 之间的演化。
如上图右侧所示,指令微调可以有效提升模型的各项泛化能力。其中,组合泛化能力尤为重要。例如,如果给定的指令同时包含摘要、问答、生成代码的指令,模型可以自动将这三项能力混合在一起,同时完成问答、摘要生成、代码生成的任务。
我们可以将指令视为线性代数中的一组基,将不同能力混合在一起实际上就是对线性空间中的基做线性组合或凸组合。模型在没有见过指令时,只能在学到的空间内做内插,而很难外推到没有学习到的基上。
第3步丨对齐:与人类价值观匹配
对齐旨在塑造模型的「价值观」,使其符合人类的期望,进而塑造模型的「人格」。对齐将决定模型回答的字数、回答信息的倾向性和方式。在训练时,可先进行监督学习、再进行 RLHF,充分发挥 RLHF 的效果。神奇的是,经过对齐操作后,模型遇到无法解决的问题,会回答「不知道」。
第4步丨模型专门化:从通用到专用
在经过了预训练、指令微调、对齐操作后,我们进一步考虑对模型进行专门化处理,使 ChatGPT 的能力从大学生成长为博士生或教授。我们假设模型的总体能力有限,可能需要弱化模型的某些能力,同时增强其它期望的能力。
如上图所示,在进行模型专门化时,我们首先也需要进行模型预训练,接着进行指令微调。我们发现,对指令微调后的模型进行专门化处理的效果要远远优于对原始预训练模型进行专门化处理的效果。
如上图所示,针对数学问题,我们考虑测试模型的思维链推理能力。经过专门化后,模型在 BigBench-Hard 这种通用测试上的能力有所下降,而在数学问题上的思维链推理能力有所增强。通用能力下降的程度预模型大小相关,模型越大,通用能力下降得越少。为了测试模型的分布外泛化能力,我们使用 GSM8K 作为训练数据集,使用 MultiArith、ASDiv、SVAMP 作为测试集。
更多内容 尽在智源社区