文章目录
- 一、GPT-1
- 二、GPT-2
- 三、GPT-3
- 四、从GPT-3到InstructGPT
一、GPT-1
2018年年中,就在变换器架构问世一年后,OpenAI发表了一篇题为“通过生成式预训练改进语言理解”的论文,作者是Radford, Alec等人。在这篇论文中,该公司介绍了生成式预训练变换器,也被称为GPT-1。
在GPT-1之前,构建高性能NLP神经模型的常见方法依赖于监督学习。这些学习技术使用大量手动标记的数据。例如,在情感分析任务中,目标是对给定文本进行积极或消极情感分类,一种常见策略需要收集成千上万个手动标记的文本示例来构建有效的分类模型。
然而,对大量良好标记的监督数据的需求限制了这些技术的性能,因为这样的数据集既难以生成又昂贵。
在他们的论文中,GPT-1的作者提出了一个新的学习过程,引入了一个无监督的预训练步骤。在这个预训练步骤中,不需要带标签的数据。相反,模型被训练来预测下一个令牌是什么。由于使用了允许并行化的变换器架构,这个预训练是在大量数据上进行的。
GPT-1模型在预训练中使用了BooksCorpus数据集,这是一个包含大约11,000本未发表书籍文本的数据集。这个数据集最初是在2015年的一篇科学论文“将书籍和电影对齐:通过观看电影和阅读书籍实现类似故事的视觉解释”中提出的,作者是Zhu,Yukun等人。这个BookCorpus数据集最初是在多伦多大学的网页上公开提供的。然而,如今原始数据集的官方版本已不再公开获取。
尽管GPT-1模型没有其后继者那么强大,但在各种基本NLP任务中被发现是有效的。在无监督学习阶段,该模型学会了预测BookCorpus数据集中文本的下一个项目。然而,由于模型规模较小,它无法在没有微调的情况下执行复杂任务。为了使模型适应特定目标任务,进行了第二个监督学习步骤,称为微调,该步骤在少量手动标记的数据集上进行。例如,在情感分析等分类任务中,可能需要在少量手动标记的文本示例上重新训练模型以获得良好的准确性。这个过程允许修改在初始预训练阶段学到的参数,以更好地适应当前任务。尽管规模较小,GPT-1在几个NLP任务中表现出色,仅使用少量手动标记的数据进行微调。
GPT-1的架构与2017年引入的原始变换器的解码器相似,有1.17亿个参数。这个第一个GPT模型为未来具有更大数据集和更多参数的模型铺平了道路,以更好地利用变换器架构的潜力。
二、GPT-2
在2019年初,OpenAI 提出了 GPT-2,这是 GPT-1 模型的一个规模扩大版,将参数数量和训练数据集大小增加了十倍。这个新版本的参数数量为 15 亿,在 40 GB 文本上进行了训练。2019年11月,OpenAI 发布了完整版的 GPT-2 语言模型。
GPT-2表明,在更大的数据集上训练更大的语言模型提高了语言模型理解任务的能力,并在许多任务上胜过了最先进技术。它还表明,甚至更大的语言模型可以更好地理解自然语言。
三、GPT-3
GPT的第三个版本于2020年6月由OpenAI发布。GPT-2和GPT-3之间的主要区别在于模型的规模和用于训练的数据量。GPT-3是一个更大的模型,拥有1750亿个参数,使其能够捕捉更复杂的模式。此外,GPT-3在一个更广泛的数据集上进行了训练。这包括Common Crawl,一个包含来自数十亿网页和其他来源文本的大型网络存档,如维基百科。这个训练数据集包括来自网站、书籍和文章的内容,使GPT-3能够对语言和背景有更深入的理解。因此,GPT-3在各种语言任务上表现出更好的性能。它展示了在生成的文本中更高的连贯性和创造力。它甚至能够编写代码片段,比如SQL查询,并执行其他智能任务。GPT-3还消除了对其前身所必需的微调步骤的需求。
存在一个问题,即最终用户提供的任务与模型在训练过程中所见到的内容之间存在不一致。正如我们所见,语言模型是根据输入上下文来预测下一个词。这种训练过程未必与最终用户希望模型执行的任务直接对齐。增加语言模型的规模并不从根本上使其更擅长遵循用户意图或指令。此外,像GPT-3这样的模型是在互联网不同来源的数据上进行训练的。尽管在选择来源时进行了清理,但学习数据中可能包含虚假或有问题的信息,包括种族主义、性别歧视、错误信息或虚假信息。因此,模型有时可能会说错话,甚至具有毒性。在2021年,发布了GPT-3模型的新版本,名为instruct系列。与原始基本的GPT-3模型不同,instruct模型通过强化学习和人类反馈进行优化,以遵循人类指令,同时使模型更真实、更少具有毒性。
为了说明这种差别,我们在提示中输入:“解释什么是时间复杂度。”
- 使用标准的GPT-3,我们得到的输出是:“解释什么是空间复杂度。解释big-O符号的含义。”-
- 而使用instruct GPT-3,我们得到的是:“时间复杂度是衡量算法运行并完成任务所需时间的一种方式。通常用big-O符号表示,它衡量算法的复杂性,即算法执行的操作次数。算法的时间复杂度很重要,因为它决定了算法的效率以及在处理更大输入时的扩展性如何。”
我们可以看到,对于相同的输入,第一个模型无法回答问题(答案甚至很奇怪),而第二个模型能够回答。当然,使用标准的GPT-3模型也可以获得所需的响应,但为此需要应用提示工程技术,在instruction模型下则不是必要的。
四、从GPT-3到InstructGPT
OpenAI在科学论文《使用人类反馈训练语言模型遵循指令》中介绍了instruct系列是如何构建的。
训练过程主要分为两个阶段,从GPT-3模型到instructed GPT-3模型:监督微调(supervised fine-tuning - SFT)和从人类反馈中强化学习(reinforcement learning from human feedback - RLHF)。
在每个阶段,模型都是根据前一个阶段的结果进行微调。也就是说,SFT阶段接收GPT-3模型并返回一个新模型,然后将其发送到RLHF阶段以获取instructed GPT-3模型。
下图是来自OpenAI的科学论文,详细说明了整个过程。
我们将逐个阶段地进行介绍。
在监督微调阶段,原始的GPT-3模型将通过直接的监督学习进行微调。这对应于OpenAI图中的第1步。OpenAI拥有一系列由最终用户创建的提示。
该过程从随机选择可用提示集合中的一个提示开始。然后要求人类(称为标注者)编写对该提示的理想答案示例。这个过程重复进行成千上万次,以获得由提示和相应理想响应组成的监督训练集。然后使用该数据集对GPT-3模型进行微调,以提供更一致的回答用户请求的新模型,称为SFT模型。
RLHF阶段分为两个子步骤。首先建立一个奖励模型,然后在下一步中用于强化学习过程。它们分别对应于图中的第2步和第3步。
奖励模型(reward model - RM)的目标是自动为提示的响应打分。当响应与提示中指示的内容匹配时,奖励模型的分数应该较高;否则应该较低。为构建这个RM,OpenAI首先随机选择一个问题,并使用SFT模型为该问题生成多个可能的答案。然后要求人类标注者基于与提示的匹配程度以及其他标准(如响应的毒性)对这些答案进行排名。经过多次运行这个过程后,得到了一个数据集,可用于微调SFT模型以执行评分任务。这个奖励模型将被用于在下一步中构建最终的instructGPT模型。
训练instructGPT模型的最后一步涉及强化学习,这是一个迭代过程。它始于一个初始生成模型,比如SFT模型。强化学习的过程如下:首先选择一个随机提示,模型预测一个输出,然后奖励模型评估这个输出。根据接收到的奖励,生成模型相应地进行更新。这个过程可以重复进行。
训练instructGPT模型的最后一步涉及强化学习,这是一个迭代过程。它始于一个初始生成模型,比如SFT模型。强化学习的过程如下:首先选择一个随机提示,模型预测一个输出,然后奖励模型评估这个输出。根据接收到的奖励,生成模型相应地进行更新。这个过程可以无需人类干预地重复无数次,提供了一种更高效和自动化的方法,以使模型适应更好的性能。
InstructGPT模型更擅长为用户输入的提示生成准确的完成内容。OpenAI现在建议使用instructGPT系列而不是原始模型。