向AI提问的艺术:提示工程入门与应用
上QQ阅读APP看书,第一时间看更新

1.2.2 GPT模型的原理

在日常生活中,有时别人说话即使我们漏听了一部分,我们也可以在脑海中迅速补全句子。例如,当有人说:“今天的天气很___,让人感觉很舒适。”如果为每个可能的词分配一个概率,那我们很可能会给“晴朗”分配一个相对较高的概率,而其他词则分配一个很低的概率,如“阴暗”或“炎热”等。这个计算概率的过程就叫作语言建模,而具有这种预测能力的系统称为语言模型。ChatGPT的核心就是一种语言模型——大语言模型。目前,ChatGPT所采用的大语言模型包括GPT-3.5和GPT-4,因为OpenAI并未公开关于GPT-4模型的技术细节,故本节主要讨论GPT-3.5模型的工作原理。

GPT-3.5是一种基于人工智能神经网络技术的语言模型。在人工智能领域,大语言模型通常以其参数数量和神经网络层数作为重要的性能衡量指标。GPT-3.5模型拥有1750亿个参数和96层神经网络。这使得GPT-3.5成为有史以来最庞大的深度学习模型之一,从性能上推断,性能更佳的GPT-4模型应该拥有更多参数,但是目前还没有明确数据公布。

神经网络和模型参数都是机器学习中的专业概念,对于非机器学习专业的人士来讲可能不太好理解,所以我们用一个五星级酒店的厨房来类比神经网络模型,神经网络层就像是厨房中各个工作台,用于完成不同阶段的烹饪任务,如切菜、调料、炒菜、摆盘等,模型参数是用来调整模型性能的关键变量,类似于各个工作台可以根据不同菜肴调节的烹饪方式。例如,切菜的形状,是切片还是切丝;调料的配置,是麻辣还是糖醋;炒菜的方式,是爆炒还是清蒸;摆盘的样式,是精致摆盘还是大致装点。模型接收输入文本就像后厨接到订单,根据订单指定的具体菜肴,每个工作台选择特定的烹饪方式,按照顺序将处理完成的食材转给下一个工作台,最终完成从原材料到美味佳肴的整个烹饪过程。类比过程如图1.2所示。

图1.2 五星级酒店厨房类比神经网络模型

这里厨房接收到的订单和最终烹饪出的菜肴就是神经网络模型的输入和输出。GPT-3.5模型的输入和输出会被划分成词元的形式,对于英文,文本初始会被切分为基本单元,每个基本单元代表一个单词或一个单词的一部分。然后,算法会根据训练数据中的频率统计将常见的词组、短语合并为一个新的词元。以“The first president of the US is”(美国第一任总统是)为例,可能的划分如下:

算法会根据训练数据中的频率将提示中的“pres”和“ident”这两个常见词元合并为一个词元,而在中文提示中,大多数汉字由单个词元组成,因此不存在合并词元的过程。之后GPT模型还会将每个词元转换成数字形式。这种将文本划分为词元,再将词元转换成数字的过程有助于提高模型的计算效率,同时也保留了文本中的关键信息。在实际应用中,当用户向ChatGPT提问时,系统会先将输入文本划分为词元,之后再将每个词元转化为数字的形式,然后对这些数字化的词元进行模型处理。模型处理完成后会生成一个数字形式的词元序列。最后,数字词元序列会被转换回文本形式作为模型的输出,整体流程如图1.3所示。

图1.3 ChatGPT词元处理流程

GPT-3.5模型是通过大量数据进行训练的。其训练数据集包含 5000 亿个词元,也就是数千亿字词。通过如此大量数据的训练,GPT模型表现出能够理解自然语言并且能够生成自然语言的特性。这里的训练是指“预训练”,是一种让大语言模型在处理数据之前先学习数据特征和结构的方法。这种方法类似课堂教学中的预习,在学生能够回答课程作业中的具体问题之前,他们需要先学习一些课程的基本知识。

数据模型中的预训练是如何进行的呢?其整个简化流程如图1.4所示。首先,模型需要收集大量的数据。对于像GPT-3.5这样的文本型模型,这些数据可以是来自网络、书籍、报纸等各种来源的文本。其次,模型对数据进行预处理。在经过数据预处理将这些文本处理成统一格式后,它们会被输入模型中。模型通过分析这些文本,从而学会理解词汇、语法及句子结构等基本语言知识。然后,模型要对数据进行训练、评估和优化。在训练完成后,会用一些测试数据来对模型性能进行评估,对模型中性能不符合预期的部分数据进行针对性的优化之后会再次进行训练。在完成预训练之前,“评估—优化—训练”这个循环一般会重复多次。

图1.4 数据模型预训练简化流程

GPT-3.5的训练目标是根据一系列输入词元来预测下一个词元,从而生成结构完整、语法正确且在语义上类似于训练数据的文本。这种预测并非只能进行一次,在每一次预测之后,语言模型都可以将预测到的词添加到文本中,然后进行下一次预测,不断重复。大多数手机输入法在用户输入过程中都会给出下一个词的建议,如果持续选择建议的词,通常会生成一段有趣的文本,这些文本就是由手机输入法的语言模型预测的。当然,这样的模型的预测效果远不能跟大语言模型相提并论。图1.5所示是一个简单的GPT-3.5进行推测的示例。

图1.5 简单的GPT-3.5进行推测的示例

尽管GPT-3.5具有强大的文本生成能力,但在没有适当引导的情况下,它有可能会产生错误或有害的文本。为了让模型更安全,并使它具备聊天机器人风格的问答能力,我们要对模型进行进一步的微调(Fine Tuning),使其成为可以供用户使用的版本。微调是将原始模型转变为符合特定需求的模型的过程。这个过程被称为基于人类反馈的强化学习训练(Reinforcement Learning from Human Feedback, RLHF)。

RLHF微调是机器学习领域的一个专业概念。我们继续使用前面将GPT-3.5比作五星级酒店厨房的类比来讲解微调过程。在微调之前,厨房中的大厨们已经掌握各式各样的菜肴的制作方法,但是针对特定的菜肴,他们并不知道应该制作什么样的口味。比如订单是豆腐脑时,他们并不知道应该制作甜豆腐脑还是咸豆腐脑。使用RLHF进行微调可以被当成是对各个工作台大厨进行培训,使他们的菜肴更符合特定群体食客的口味。我们需要收集真实人类的反馈。通过创建一个比较数据集也就是一系列菜品的订单来分析食客的口味,厨房需要为每个订单准备多道菜肴。当订单是豆腐脑时,后厨需要准备甜的、咸的、香辣的等多种味道的豆腐脑,然后让食客根据口感和外观对菜肴进行打分排名。这个排名在机器学习中被称作奖励模型,之后大厨就可以根据排名来了解顾客针对菜肴的口味偏好。在下次制作菜肴时,大厨会根据奖励模型来调整菜肴的制作方式。这种根据奖励模型调整菜肴制作方式的算法在机器学习中被称为近端策略优化(Proximal Policy Optimization, PPO)。这个过程重复多次,大厨就可以根据更新的顾客反馈不断提升技能。PPO确保了每次迭代,大厨都能更好地满足顾客的口味。图1.6所示是一个例子,在第一次迭代中,大厨针对豆腐脑订单制作了甜豆腐脑和咸豆腐脑,通过奖励模型大厨了解到顾客更喜欢吃甜豆腐脑,故通过PPO在第二次迭代中针对同样的豆腐脑订单制作了不同甜度的豆腐脑,进一步了解顾客喜欢吃什么甜度的豆腐脑。

图1.6 类比GPT-3.5的微调过程示例

总结一下微调的整个流程,GPT-3.5通过收集人们的反馈,根据他们的喜好创建奖励模型,然后使用PPO来提高模型性能,并且多次循环这个过程,从而GPT-3.5能够根据特定用户请求生成更好的响应。

GPT-3.5在经过模型预训练和微调之后,便成为被用作ChatGPT核心的模型。简单来说,预训练使GPT-3.5拥有推理能力和大量知识,成为“通才”,而微调提升了GPT-3.5在特定领域的能力,使其成为“专才”。