简单整理、总结一下人工智能生成式大模型的训练和演化过程。
大模型的演化过程大体可分为预训练、指令微调和从人类反馈强化学习三个阶段。预训练是为了得到基座模型;指令微调是为了释放基座模型的能力,使模型可以理解用户指令;从人类反馈强化学习是为了在价值观等方面与人类对齐(alignment)。
一、预训练
如今ChatGPT等大模型的预训练采用最简单的语言模型训练任务,即基于上文预测文本序列中的下一个单词。预训练这一阶段的特点是数据量大、数据质量不高、所需算力大。具体来说,这一阶段一般需要数万亿单词组成的预训练数据,在上千块A100GPU组成的集群上进行数月的训练。
预训练之后模型具备的能力:
(1)流利的文本续写生成。预训练之后的模型应当能够根据上文流利地补全下文。值得注意的是,预训练模型很多时候不能直接理解用户指令,不能像ChatGPT一样直接与人聊天,这种能力需要指令微调来实现,下一节会提到。
(2)上下文学习。预训练之后的大模型一般具有上下文学习的能力,即可以使用少样本数据作为提示增强完成相应任务的能力。
(3)世界知识。预训练之后的大模型已经存储了相当数量的世界知识。
(4)代码理解和生成。预训练阶段如果包含代码预训练数据,那么预训练后的模型会具备基本的代码理解和生成能力。
(5)思维链推理。一些比较强大的预训练模型在预训练之后拥有少样本思维链推理的能力。不过思维链推理作为一种涌现能力,只有当模型超过一定规模(一般认为超过100亿参数)且足够强大时才具备。
二、指令微调
指令微调是指在预训练之后,在指令-回复的配对数据上对模型进行微调,使微调之后的模型能够理解并遵循用户指令做出回复。指令微调是一个序列到序列的任务。与预训练阶段不同,指令微调所需的算力较小,例如Alpaca只需要8张A100GPU便可在一周内完成对百亿参数模型的指令微调,与参数高效微调算法结合后,最新的Alpaca-LoRA甚至只需要1~2张4090GPU便可在2~3天内完成对百亿参数模型的指令微调。所需的算力减小,主要是因为指令微调这一阶段对数据量的要求小,仅需要几千到几万条样本即可。但是指令微调对数据的质量要求很高,因此如何收集高质量的指令微调数据依旧是一个尚未得到解决的科学问题。
指令微调之后模型具备的能力:相较于预训练之后的模型,指令微调后模型获得的主要能力是能够在零样本情况下理解用户指令并做出相应回复。在对话数据上进行指令微调后的模型还能够进行对话。模型在预训练阶段获得的能力均可以在指令微调后面向用户时显现出来。值得注意的是,如果在指令微调阶段不刻意加入少量上下文学习数据样本的话,指令微调之后模型的上下文学习能力会有一定程度的下降。
三、通过强化学习与人类对齐
ChatGPT、GPT-4和Claude等模型的演化路线最后一个阶段是通过强化学习使模型与人类对齐。这里的“对齐”,简而言之就是使模型的行为更像人类,从定义上看,主要指有帮助的(helpful)、诚实的(honest)、无害的(harmless)的对齐。这一训练阶段所需的算力和数据资源与指令微调阶段类似,只需要较少的算力资源和数万条数据样本即可,但对数据的质量要求高,对数量要求低。
技术方案:目前与人类对齐的技术方案主要是从人类反馈中强化学习,这也是ChatGPT和GPT-4等模型采取的技术方案。在该方案中,模型首先需要经过上一阶段的指令微调,然后让模型针对不同的用户指令,每条指令输出多条回复。之后需要人工对模型的多条回复进行排序,标注出自己的偏好。这些排序的标注数据将会被用来训练一个奖励模型(rewardmodel)。最后,以经过指令微调之后的模型作为策略模型(policymodel),使用经典的近端策略优化(PPO)强化学习算法通过奖励模型对策略模型进行训练。在InstructGPT论文中,用于训练奖励模型的人工标注数据量不大,仅用到了十万条左右。
对齐之后模型具备的能力:在经过指令微调的模型的基础上,对齐之后模型的输出一般会变得更有帮助、更诚实、更无害和安全。然而,模型在通过对齐获得安全性的同时,往往会少量牺牲其他维度的能力作为代价,这一代价通常被称为对齐税(alignmenttax)。