2020年,GPT-3的问世彻底改变了人们对语言模型的认知。它证明了:一个规模足够大的神经网络能够直接从提示和示例中学习任务,而无需进行传统的微调训练。

这一理念最终催生了提示工程、人工智能助手以及第一波大规模语言模型应用的发展。

但GPT-4有所不同。

GPT-3仍属于一种研究突破:功能强大、具有实验性质,且有时会表现出不可预测的行为;而GPT-4则标志着一个真正的人工智能平台的诞生。人们关注的重点不再仅仅是扩大语言模型的规模以获得更好的测试成绩,而是模型的可靠性、多模态理解能力、安全性以及实际应用潜力。

这种变化在OpenAI发布的GPT-4技术报告中得到了充分体现。

与早期的GPT研究论文不同,OpenAI并没有发布包含详细架构图、参数数量、数据集或训练配置的传统研究报告。他们发布的是一份内容较为简略的技术报告,主要聚焦于模型的功能、评估结果、安全性考量以及实际应用方案。

这一决策本身就反映了该领域已经发生了巨大的变化。

到了GPT-4的时代,大规模语言模型已不再仅仅是实验室中的研究项目,它们已经成为被数百万人通过诸如ChatGPT这样的产品实际使用的系统。关于模型误用、幻觉现象、偏见问题、网络安全风险以及模型与实际应用之间的匹配度等问题,如今已经与模型的原始性能同样重要了。

GPT-4还带来了另一个重要的变革:多模态处理能力。

之前的GPT模型仅能处理文本数据;而GPT-4则突破了这一限制,它能够同时接受图像和文本作为输入,从而让模型能够分析截图、图表、文档、视觉幽默等内容。这使得大规模语言模型更接近于通用型的人工智能系统,而不再仅仅是单纯的文本生成工具。

从历史发展角度来看,这种演变过程十分清晰:

  • GPT-1引入了预训练和迁移学习技术

  • GPT-2实现了零样本多任务学习

  • GPT-3提出了少样本提示技术和上下文相关学习方法

  • GPT-4开启了多模态、高度适配实际应用的AI系统时代

在很多方面,GPT-4标志着一个重要的转折点:大规模语言模型不再仅仅被视为研究实验对象,而是开始成为现实世界应用中不可或缺的基础计算工具。

论文概述

在本文中,我们将重点介绍OpenAI于2023年发布的《GPT-4技术报告》。

不过,这份报告中故意省略了许多重要的技术细节,包括:

  • 模型参数的数量

  • 具体的架构设计

  • 训练所需的计算资源

  • 数据集的构成

  • 硬件配置信息

根据OpenAI的说法,这些限制的出现部分原因是由于竞争环境以及大规模人工智能系统所带来的日益严重的安全问题。

这种差异在历史上具有重要意义。

GPT-1、GPT-2和GPT-3的相关论文都详细讨论了模型架构的扩展性、数据集的选择以及训练方法。而随着语言模型变得具有商业价值并被广泛应用,GPT-4在信息披露方面明显采取了更为保守的态度。

您可以在这里阅读原始报告:

GPT-4技术报告

以下是我们在这篇评测中将会讨论的内容的简要信息图:

GPT4人工智能论文概览

目录:

先决条件

为了充分理解这些内容,您最好已经对现代语言模型的核心理念有所了解。

阅读本系列之前的评测文章会特别有帮助:

GPT-4直接建立在那些论文中提出的许多概念基础上,尤其是大规模预训练、少样本学习以及上下文提示技术。

同时,以下这些基础知识也有助于理解GPT-4:

  • Transformer架构与自注意力机制

  • GPT-1到GPT-3的技术发展历程

  • 少样本学习与提示技术

  • 基本的提示设计原则

  • 基于人类反馈的强化学习

  • 模型规模扩展规律,以及为何更大规模的模型往往能具备新的功能

不过,阅读这篇文章并不需要深厚的数学知识。

与之前的论文综述一样,我会侧重于直观、实用地解释这些概念,而不会深入探讨复杂的数学公式或学术术语。

执行摘要

GPT-4并非仅仅是GPT-3的升级版本。

虽然现在这一点看起来显而易见,但在最初,许多人认为GPT-4只是同一发展方向上的又一步延伸。但技术报告揭示了一个更重要的事实:GPT-4标志着语言模型从实验性工具向可实际应用的通用AI系统的转变。

根据这份报告,GPT-4同时带来了多项重大突破。

首先,如前所述,GPT-4已成为一种多模态模型。与以往仅能处理文本的GPT系统不同,GPT-4可以同时接收图像和文本作为输入,并生成相应的文本输出。这使得该模型能够分析截图、图表、文档、照片、视觉幽默内容以及多种类型的混合媒体输入。

其次,在各种专业性和学术性的评估中,GPT-4展现出了更强的推理能力和更好的表现。报告指出,GPT-4在统一律师资格考试、LSAT、GRE、SAT、AP考试、编程测试以及高级推理任务中均取得了接近人类水平的结果。

报告还特别强调了GPT-4在准确性可靠性方面的提升。

早期的GPT系统常常会产生不安全、具有误导性或过于自信的输出结果。虽然GPT-4仍然存在这些问题,但OpenAI在强化学习、对抗性测试、安全评估机制等方面投入了大量资源,从而有效减少了这些不良现象,使模型的输出更加符合用户的真实意图。

贯穿整份报告的另一个重要主题是可预测的扩展性

据作者介绍,OpenAI开发出了相应的基础设施和优化方法,这使得他们能够通过次数少得多的训练来准确预测GPT-4最终的性能表现。

这个细节其实比看上去更为重要。

GPT-3证明了扩展性的可行性,而GPT-4则进一步表明,大规模语言模型的开发正在逐渐成为一门具有高度可预测性规律的工程学科。

这一现象所具有的更广泛意义,正是使这份报告具有历史重要性之处。

GPT-4将大规模语言模型从纯粹的研究工具转变成了能够应用于实际场景的人工智能助手——这些助手能够在众多领域进行推理、通过自然语言与人交互、更可靠地执行指令,并且像ChatGPT这样的系统还能在全球范围内发挥作用。

从很多角度来看,这份报告标志着现代人工智能应用时代的真正开端。

报告的目标

GPT-4技术报告的意义并不仅仅在于展示一个功能更强大的语言模型。实际上,这份报告旨在证明:如今,大规模人工智能系统的开发过程可以比过去更加可靠、更加安全,其性能表现也更具可预测性。

GPT-4研发背后的主要目标之一,就是提升模型在各种任务中的推理能力与可靠性,这一点我们在前面已经讨论过。

另一个重要目标是改善模型与用户意图之间的匹配度——通过采用强化学习训练、安全微调、拒绝策略训练以及对抗性测试等方法,使模型能更好地服务于用户需求,其行为也更能符合预期的目标。

这份报告还标志着人工智能系统的发展方向正在发生重大变化:GPT-4具备了多模态处理能力,这使得它不再仅仅是一个语言生成工具,而更像是一个能够同时解析视觉信息和文本信息、具备通用推理功能的系统。

安全性也是贯穿整份报告的另一个核心主题。

OpenAI反复强调自己为减少有害输出、改善模型的拒绝机制、降低被误用的风险以及构建更加安全的应用系统所做出的努力。报告中提到了红队测试、领域专家评估、策略执行机制,以及旨在防止模型在现实环境中产生危险行为的辅助安全系统。

但或许,其中最具历史意义的目标其实是可预测性本身。

作者指出,GPT-4的开发过程中运用了那些能够确保系统扩展过程具有高度可预测性的基础设施和优化方法。OpenAI声称,他们甚至可以使用计算资源仅为前者数千分之一的模型来预估GPT-4最终的性能表现。

这个概念听起来可能有些技术性,但它实际上代表了人工智能前沿技术研发方式的重大变革。

早期的语言模型在扩展过程中往往存在很大的不确定性,而GPT-4的出现表明,大规模人工智能系统的开发正在变得越来越系统化、更加以工程原理为导向,而不再仅仅是基于实验来进行开发的。

实际上,这份报告反映出了整个人工智能行业正在经历的一场更广泛的变革——从研究原型阶段,发展到能够用于大规模实际应用的基础设施系统。

核心理念

GPT-4最令人惊讶的地方在于:在所有那些宣传和新增功能背后,它的核心学习目标其实依然非常简单。

与GPT-1、GPT-2和GPT-3一样,GPT-4依然是以预测序列中下一个词项作为主要训练目标进行训练的。也就是说,该系统是通过反复预测序列中的下一个文本片段来学习的。

它的架构依然基于Transformer模型,并且属于自回归类型。

这意味着GPT-4会逐个生成输出结果,同时利用自我注意力机制来理解输入序列中单词、句子、图像以及上下文之间的关系。

从高层次来看,自GPT-2以来,其基本原理并没有发生太大变化:

  • 在海量数据上开展训练

  • 预测序列中的下一个词项

  • 大力推动模型的规模化发展

但GPT-4将这种训练方法推进到了一个更高的阶段。

根据这份报告,GPT-4的规模更大、优化程度也更高,而且它是使用专为实现可预测的大规模应用而设计的基础设施进行训练的。

最大的概念性变化在于:GPT-4不再仅局限于接收文本形式的输入。

另一个重要的区别在于训练后的校准过程所扮演的关键角色。

GPT-3已经展现了很强的小样本学习能力,但GPT-4更加重视通过人类反馈进行强化学习、安全性调优以及指令执行能力的训练。报告指出,这些训练后处理步骤显著提升了模型的事实准确性、行为规范性以及安全性。

这引出了现代人工智能系统背后最重要的一个理念:

仅仅依靠规模扩大,并不能产生强大的功能。

GPT-4表明,真正强大的AI能力来源于以下几方面的结合:

  • 大规模预训练

  • 有效的扩展机制

  • 优化技术的改进

  • 校准训练过程

  • 基于人类反馈的强化学习

  • 训练后的精细化调优

实际上,由于加入了这一额外的校准环节,GPT-4已经不再仅仅是一个纯粹的预测模型,而更像是一个具有交互功能的助手。

从历史的角度来看,这种区别非常重要。

GPT-3证明了语言模型的规模化发展能够带来强大的功能;而GPT-4则表明,单纯的规模扩展是不够的——模型还需要经过校准、安全训练以及针对实际应用场景的精细化调优,才能在现实世界中得到广泛使用。

可预测的扩展性

GPT-4技术报告中最重要的一点,也是许多人在该论文最初发布时忽略的内容,那就是模型的可预测的扩展性

早期的大型语言模型存在大量的不确定性。

研究人员可以训练规模更大的系统,并期望性能会有所提升,但没有人能完全预测这种扩展能力能达到何种程度,也不知道大规模训练是否会产生预期的结果。

GPT-4改变了这一状况。根据相关报告,OpenAI开发出了相应的基础设施和优化方法,这使得他们能够利用计算资源仅为前者数千分之一的模型,准确预测GPT-4最终的训练效果甚至某些具体功能。

这一点的重要性远超表面看起来的程度。GPT-3已经证明了扩大语言模型的规模是可行的。

GPT-4则表明,这种扩展行为已经开始变得可以预测,而不再是一种试错式的实验过程。

这种变化带来了几个显著的优势:

  • 在训练大规模模型之前,能够更准确地预测其功能表现

  • 从而避免在失败的训练中浪费数百万美元的资金

  • 通过提前评估模型行为,可以更稳妥地制定部署计划

  • 从小规模实验到前沿级系统的扩展过程也变得更加可靠

报告还指出,模型的损失值在不同规模下都遵循着非常稳定的幂律分布规律,因此OpenAI能够在训练结束前就准确预估GPT-4的最终性能。

但该报告也指出了一个重要问题:并非所有功能都能平滑地随着模型规模的扩大而得到提升。某些功能,尤其是与推理相关的任务,其表现可能会出现不可预测的变化,甚至会在短期内恶化之后才再次改善。

可预测的扩展能力也存在一些局限性,包括:

  • 在更大的规模下,某些功能仍然会以不可预测的方式出现

  • 基准测试的性能表现可能会出现非线性变化,而不是持续提升

  • 随着模型规模的继续扩大,这些扩展规律可能也会发生变化

  • 即使训练过程具有可预测性,推理错误或异常现象仍有可能突然出现

这种“可预测的扩展能力”与“不可预知的异常现象”之间的矛盾,已经成为现代前沿人工智能研究的重要主题之一。

模型架构

GPT-4技术报告中最引人注目的地方之一,就是OpenAI对实际模型架构的披露非常有限。

如前所述,在GPT-1、GPT-2和GPT-3的相关报告中,OpenAI都会公开说明参数数量、数据集规模、扩展配置以及训练方法等细节。

但GPT-4的情况截然不同。报告没有提及任何关于其具体参数数量、架构结构、数据集构成、所使用的计算资源,以及硬件基础设施等方面的信息。

OpenAI明确表示,之所以选择隐瞒这些细节,既是因为市场竞争的压力,也是出于对大规模人工智能系统安全性的考虑。

这一决定成为了该模型发布后人们讨论最多的焦点之一。

从历史角度来看,GPT-4标志着人工智能研究领域的一个转折点——前沿研究开始趋向于更加封闭、更以产品应用为导向。之前的GPT相关论文更像是传统的研究成果,而GPT-4则更像是一家在全球范围内大规模运用人工智能技术的公司所发布的报告。

尽管许多实现细节仍然未被公开,但这份报告确实确认了几项重要事实:

  1. GPT-4本质上仍是一个基于Transformer架构的模型,通过自回归式预测机制进行训练。

  2. 与之前的GPT系统一样,它在使用自注意力机制处理上下文信息的同时,会顺序生成输出结果。

  3. GPT-4具有多模态能力,既能够接收图像输入,也能够接受文本输入,并且最终生成文本形式的输出。

这是GPT系列模型中最重要的架构变革之一,因为它使该模型的功能从纯粹的语言理解扩展到了结合视觉与文本信息的推理领域。

另一个重要的组成部分是训练后的“对齐处理”,我们之前已经简要讨论过这一点。实际上,这意味着GPT-4不再只是一个未经任何处理的预训练语言模型了,而是一个经过多阶段优化和完善而成的系统:

  • 大规模预训练

  • 优化与扩展工作

  • 多模态信息整合

  • 基于强化学习的对齐机制

  • 安全性微调

  • 以实际应用为导向的训练后调整

GPT-4的架构细节被严格保密,这一做法在历史上具有重要意义,因为它反映了人工智能领域正在发生的一种更广泛的变革。

随着语言模型逐渐具备商业价值并产生深远的社会影响,前沿的人工智能研究开始从完全公开的方向转向有控制的信息披露、以安全性为首要目标的实际应用,以及必要的竞争保护措施。

多模态学习

GPT-4最重要的突破之一在于,它不再局限于仅处理文本数据。GPT-4能够同时接收图像和文本作为输入,并生成相应的文本输出结果。

今天看来这可能很普通,但在当时,这一设计确实代表了人们对大型语言模型认知方式的重大转变。

之前的GPT系统纯粹依赖文本数据进行工作,而GPT-4则将这一概念扩展到了更广泛的领域——它是一种能够同时处理多种类型信息的模型。

在实际应用中,GPT-4能够分析以下类型的输入:

  • 截图

  • 图表

  • 照片

  • 文档文件

  • 统计图表

  • 视觉幽默内容或表情包

  • 结合图像与文本的输入请求

报告通过多个示例来展示这一功能,其中最令人印象深刻的是那个关于VGA连接线的搞笑例子。

在图片中,一部智能手机被连接到了一个巨大的VGA显示器适配器上——在现实生活中这种组合显然是荒谬的。但GPT-4正确地指出了其中的幽默之处:过时的VGA硬件与现代手机充电接口之间的不匹配正是产生笑点的原因。

这个例子的意义不仅仅在于物体识别能力。该模型能够从视觉场景中理解语境相关的幽默内容

这种区别非常重要。

传统的计算机视觉系统通常能够识别图像中的物体,但GPT-4展示了更接近多模态推理的能力:它能够在结合视觉信息和文本信息的情况下,理解各种关系、上下文、意图,甚至笑话的含义。

报告还指出,许多为语言模型开发的提示技术(包括少样本提示和思维链推理技术)在多模态环境中依然能够有效发挥作用。

这说明GPT-4并非只是将一个图像分类器添加到聊天机器人中,而是真正地将视觉理解和语言理解整合成了一个更加统一的推理系统。

从历史角度来看,这一成就对GPT系列来说具有重大意义。

  • GPT-1主要侧重于语言预训练

  • GPT-2扩展了零样本学习能力

  • GPT-3引入了上下文相关学习机制

  • GPT-4首次公开展示了实用的多模态人工智能技术

与许多早期的研究演示不同,GPT-4的多模态能力并非只是存在于论文中的实验性原型。它们已经成为了被数百万人实际使用的产品的一部分。

这种转变使得多模态人工智能不再仅仅是理论上的概念,而是具有实际应用价值的技术。

微调训练、零样本学习、少样本学习与对齐式多模态学习

了解GPT模型是如何发展的,最清晰的方法就是比较它们在完成任务时所采用的学习方式及适应机制。

早期的自然语言处理系统主要依赖带有标签的数据集进行微调训练,而后来的GPT模型则逐渐转向零样本提示、少样本学习,最终发展出了对齐式多模态交互技术。

下表总结了这些方法在灵活性、训练要求、可扩展性以及实际应用效果方面的差异。

模型仅依靠指令来完成任务,而不需要示例作为参考

模型通过提示中提供的少量示例来学习如何完成该任务

模型结合提示信息、多模态推理以及对齐训练机制,从而能够完成通用性任务

不需要专门的训练数据或示例

无需重新训练,但需要通过提示来指导学习过程

需要进行大规模预训练,并结合强化学习、安全性调整以及多模态后续训练

通过自然语言指令来指导学习

通过指令结合示例来进行训练

通过对话式提示、图像、指令以及上下文交互来实现任务传递

不会对模型权重进行任何调整

由于学习是在具体语境中进行的,因此不需要调整权重

通过预训练、强化学习与安全性调整、多模态推理以及对齐提示机制来完成学习过程

能够在利用示例指导的同时保持灵活性

能够作为通用的多模态助手来使用

可以通过提示信息迅速适应新任务

能够从具体的示例中快速学习并完成任务

能够在不同的领域、模式和交互方式中灵活适应

主要依靠预训练获得的知识

需要结合预训练结果以及示例来进行学习

需要大规模的多模态预训练以及人类反馈来辅助学习

性能表现

其性能通常不如经过微调的模型

有时其性能能够接近经过微调的模型

在许多推理和语言处理任务中,其性能往往优于专门为这些任务设计的系统

跨任务的扩展性

训练成本较高,且难以实现大规模扩展

具有极高的扩展性

无需重新训练即可实现扩展

其应用范围涵盖了语言处理、编程、推理以及多模态任务等多个领域

计算成本

由于需要针对每项任务进行单独训练,因此计算成本较高

在实际使用过程中计算成本较低

实际使用过程中的计算成本也很低

虽然训练成本极高,但在许多应用场景中其部署效率却很高

应用示例

在情感分析数据集上对模型进行微调训练

“判断这句话的情感倾向”

“正面:我非常喜欢这部电影。负面:这部电影很无聊……”

上传一张图片,然后要求模型解释图表内容、解决代码问题或总结文档要点

主要优势

结构简单,泛化能力较强

灵活性与性能之间取得了良好的平衡

实现了统一的多模态推理机制,并具备对齐式的对话交互功能

主要劣势

对提示的质量和示例内容非常敏感

仍然会出现幻觉现象,也会犯推理错误,因此需要采取严格的安全控制措施

常与哪些技术关联

常与传统自然语言处理系统、GPT-1时代的技术相关联

也与GPT-2风格的提示技术有关

与GPT-3及上下文相关学习机制密切相关

与GPT-4以及其对齐式多模态基础模型紧密相连

核心理念

针对每项任务进行专门训练

通过指令来推断任务内容

通过上下文中的示例来理解任务要求

将规模性、对齐性、多模态特性以及提示机制结合起来,从而构建出可实际应用的AI系统

分类标准

微调训练

零样本学习

少样本学习

GPT-4风格的对齐式多模态学习

定义

模型会针对特定任务接受带有标签的数据进行额外训练

训练要求

需要使用针对特定任务的标注数据集进行训练

任务传递方式

通过独立的训练阶段来完成

学习过程

模型权重会在训练过程中不断更新

灵活性

通常专门为某一项任务设计

在多种任务中都具有很高的灵活性

适应能力

需要针对新任务进行重新训练

对数据的依赖性

严重依赖于带有标签的数据集

在某些特定任务中通常表现最佳

在特定任务中具有很高的准确率

在多种任务中的扩展性较差

可能会误解任务的格式或意图

RLHF与模型安全性

GPT-4与早期GPT模型之间的最大区别之一,就在于这些模型在强调安全性行为一致性方面所采取的不同策略。

GPT-3虽然展现了出色的小样本学习能力,但也暴露出一些严重的缺陷:该模型可能会编造事实、生成有害指令、发布虚假信息,或者无法可靠地理解用户的真实意图。

GPT-4正是为了解决这些问题而设计的。

这种改进在很大程度上要归功于“基于人类反馈的强化学习”技术。

简单来说,RLHF通过收集用户对模型回答的反馈,利用这些信息来调整模型的行为模式。这样一来,模型不仅能够从互联网文本中学习,还能根据人类的判断标准来判断哪些答案是有用、安全、准确或恰当的。

据报告称,GPT-4在训练完成后还经过了专门的安全性优化训练,其目标主要包括以下几个方面:

  • 保证信息的真实性

  • 确保模型能正确执行用户的指令

  • 使模型能够拒绝那些危险或不当的请求

  • 降低模型的危害性

  • 更好地符合用户的真实意图

正是这些优化措施,使得GPT-4与传统的预训练语言模型有了本质上的区别。

报告特别强调了拒绝危险请求的能力作为模型安全性的重要指标。

早期版本的GPT-4在内部测试中有时会生成危险的指令,比如提供有害的化学合成方法或与武器相关的信息。OpenAI通过对抗性测试、领域专家的评估、RLHF训练以及额外的安全检测机制,显著减少了这类行为的发生。

报告中的一些案例尤其具有说明性:

在一个例子中,早期版本的GPT-4会提供关于如何制造危险物质的详细信息;而经过优化的版本则会直接拒绝此类请求,并引导对话向更安全的方向发展。

重要的是,GPT-4的这种变化并非简单地意味着它的限制措施变得更严格了。

报告还讨论了另一个问题:模型有时会变得过于谨慎。OpenAI致力于在确保模型能够阻止危险请求的同时,减少对无害请求的错误拒绝行为。

实际上,安全性优化就是要在以下这些因素之间找到平衡:

  • 模型的实用性

  • 模型的安全性

  • 模型回答的真实性

  • 模型的灵活性

  • 模型的可靠性

报告还提到了基于规则的奖励机制以及辅助模型进行安全检测的系统,这些机制在训练过程中有助于引导GPT-4表现出更安全的行为。

从历史的角度来看,这份报告标志着人工智能发展中的一个重要转折点。

早期的GPT相关研究主要关注模型的功能与扩展性;而GPT-4则将安全性与行为一致性视为核心的工程目标,而非次要问题。这种变化反映了整个行业所达成的一种更深刻的共识:一旦人工智能系统具备了在全球范围内得到实际应用的能力,那么仅仅提升其智能水平已经远远不够了。这些系统还必须具备安全性,能够可靠地遵循人类的意图,并且能够有效防止被恶意滥用。

基准测试与实验

GPT-4技术报告中最引人注目的部分,莫过于其评估过程的规模之庞大。

根据该报告,OpenAI对GPT-4进行了多种类型的测试:包括各类学术考试、专业认证测试、推理任务、编程基准测试,以及传统的自然语言处理评估。

这些测试的目的并不仅仅是为了证明GPT-4能够生成流畅的文本,而是为了验证该模型是否具备推理能力、解决问题的能力、执行指令的能力、回答问题的能力,以及在不同领域中泛化的能力。

当这份报告发布时,GPT-4在人类考试中的成绩引起了极大的关注。

GPT-4在几项知名的考试中取得了非常优异的成绩:

GPT在学术与专业考试中的表现

下表总结了GPT-4在各类学术与专业考试中的表现,同时展示了它与GPT-3.5在这些测试中的对比情况。

GPT在学术与专业考试中的表现

资料来源:GPT-4技术报告(OpenAI,2023年),表1。

在某些测试中,GPT-3.5与GPT-4的差距尤为明显。例如,报告显示GPT-3.5在模拟律师资格考试中的成绩处于倒数前10%,而GPT-4则进入了前10%。

这些结果改变了公众对大型语言模型的认知。

此前的这类系统往往被认为主要是自动完成工具或文本生成器,但GPT-4证明了,通过适当的优化和训练,这些系统完全能够在许多原本为人类设计的任务中表现出色。

下图直观地展示了GPT-4在多项考试中的排名情况,清楚地体现了它在推理、语言理解、数学能力以及专业测试等方面的显著进步。

GPT在学术与专业考试中的表现

来源:GPT-4技术报告(OpenAI,2023年),图4。

该报告还使用了一系列标准的自然语言处理评测基准对GPT-4进行了测试。

其中一些最重要的评测基准包括:

在大多数这些评测中,GPT-4的表现都显著优于GPT-3.5,而且常常超越以往最先进的语言模型。在某些情况下,它的表现甚至超过了那些针对特定评测基准进行了专门优化或采用特殊开发流程的系统。

其中一个特别重要的评测基准是MMLU(大规模多任务语言理解),该基准测试了用户在57个不同领域的知识与推理能力。GPT-4在这个评测基准上的表现非常出色,包括那些被翻译成多种语言的多语言版本也是如此。

在编码相关的评测中,GPT-4也取得了重要的成绩。在HumanEval以及类似LeetCode风格的编程任务中,与早期的GPT模型相比,GPT-4在代码生成和问题解决能力方面有了显著提升。

这种能力最终成为了现代AI编码助手的核心基础之一。

下表将GPT-4与以往的语言模型以及最先进的系统在MMLU、HellaSwag、ARC、HumanEval和GSM-8K等重要评测基准上的表现进行了对比,从而证明了该模型在推理、编程和语言理解任务方面的强大能力。

GPT在学术评测中的表现

来源:GPT-4技术报告(OpenAI,2023年),表2。

这些实验之所以特别重要,是因为GPT-4能够在许多不同的领域同时表现出色

  • 推理

  • 编程

  • 数学

  • 语言理解

  • 专业考试题目

  • 多语言任务

  • 常识推理

正是这种广泛的适用性,使得GPT-4与早期的系统在质量上有了显著的区别。

GPT-4并非只在某一个特定的评测基准中表现出色,而是在各种各样的智能任务中都展现出了普遍性的优秀能力。

编码与推理能力

GPT-4在编码和结构化推理方面展现出了相较于早期模型更为显著的进步。

虽然GPT-3已经具备生成代码的能力,但GPT-4将这些能力提升到了新的水平。根据报告,该模型在编程测试、数学推理任务以及多步骤问题解决方面都取得了显著的成绩。

报告中重点提到的一项评估标准是HumanEval,这项测试旨在衡量模型能否根据自然语言描述生成可运行的Python函数。

GPT-4在这项测试中的表现远优于GPT-3.5,其代码生成能力和问题解决能力都更为强大。

报告还包含了针对简单、中等和复杂编程问题的LeetCode风格评估结果。

尽管GPT-4在许多高难度的竞赛编程任务中仍存在不足,但在较简单的编程挑战中,它的表现明显优于GPT-3.5。

这些进步在实际应用中具有重要意义。

GPT-4发布后,AI编码助手真正开始为实际的软件开发流程带来帮助。基于GPT-4构建的系统能够帮助开发者完成以下任务:

  • 生成代码函数

  • 解释代码逻辑

  • 调试程序错误

  • 优化代码实现

  • 编写文档资料

  • 解决算法相关问题

这是大型语言模型首次真正作为实用的工程工具被使用,而不再是仅仅用于实验演示。

报告还强调了思维链引导式提问在推理任务中的重要性。

与强制模型立即给出答案的方式不同,这种提问方式会促使GPT-4逐步进行推理,最终得出结论。

例如,在像GSM8K这样的测试数据集上,当允许GPT-4生成中间推理步骤时,它的表现会显著提升。

这一变化进一步改变了人们与大型语言模型的交互方式。早期的系统往往被视为直接提供答案的工具,而GPT-4证明了,引导模型“逐步思考”问题能够显著提高其在需要大量推理的任务中的表现。

与GPT-3.5相比,GPT-4在多个领域都展现出了更强的推理能力:

  • 编码

  • 数学

  • 结构化问题解决

  • 常识性推理

  • 学术评估任务

当然,这款模型仍然远未达到完美。

报告多次指出,GPT-4仍可能出现幻觉、犯逻辑错误、在复杂的推理过程中出错,或者得出错误的结论。

但从历史角度来看,报告中的这一部分非常重要,因为它帮助确立了一个新的人工智能应用类别:将大型语言模型作为交互式的推理与编码辅助工具。

这个理念很快成为了现代人工智能系统最重要的应用场景之一。

多语言能力

GPT-4技术报告中被忽视的一个重要方面是,该模型在多种语言上的表现都非常出色。

早期的语言模型往往以英语为中心;即便支持多语言功能,其在资源较少的语言上的表现通常也会明显低于英语版本。

GPT-4在这一领域取得了显著的进步。

为了评估其多语言推理能力,OpenAI利用机器翻译系统将MMLU基准测试——这一涵盖57个学科的广泛学术与专业推理测试——翻译成了多种不同的语言。

根据报告,GPT-4在大多数被测试的语言上都表现优异,在许多情况下甚至超过了早期英语模型的性能。

尤为重要的是,这种改进并不局限于法语、德语或西班牙语等资源丰富的语言。

报告特别指出,GPT-4在以下资源较少的语言上也取得了显著的成绩:

  • 拉脱维亚语

  • 威尔士语

  • 斯瓦希里语

  • 孟加拉语

  • 尼泊尔语

  • 马拉地语

  • 泰卢固语

这一现象说明了一个重要的道理:随着语言模型的规模不断扩大,训练数据也变得越来越多样化,它们所掌握的能力会以更加稳健的方式扩展到英语以外的语言。

换句话说,GPT-3所展现出的这种扩展效应并非仅限于英语这一特定语言。

GPT-4证明了:许多推理和语言理解能力是可以跨不同语言进行迁移的,即使可用的训练数据量非常有限也是如此。

从历史意义来看,这一点非常重要,因为它使得大型语言模型更接近于成为真正具有全球适用性的系统,而不仅仅是为英语使用者优化的工具。

GPT-4的多语言测试结果还进一步印证了报告中的一个核心观点:GPT-4并非只针对某一特定领域或基准测试进行优化,而是一个能够适应多种不同场景的通用推理系统。

  • 不同语言

  • 各种任务

  • 不同的表达方式

  • 不同领域

  • 以及不同的交互方式

当然,GPT-4的多语言表现仍然存在不均衡的现象。

报告并没有声称它在所有语言上都能实现完美的流畅度或相同的推理质量。对于资源较少的语言来说,依然存在诸多挑战,而且在许多多语言环境中进行评估仍然十分困难。

但与早期的GPT系统相比,GPT-4在多语言泛化能力方面取得了显著的进步。这一成就为在全球范围内应用的AI系统而言,无疑是一个重要的里程碑。

新兴行为

围绕GPT-4最引人入胜的概念之一,就是新兴行为这一现象。

在大型语言模型的背景下,“新兴行为”指的是随着模型规模不断扩大、能力不断增强而意外出现的一些新特性。这些能力并非在所有领域都呈线性提升,而是当模型达到一定规模时,某些功能会突然“激活”起来。

GPT-3已经通过少样本学习和上下文适应机制暗示了这一现象,而GPT-4则将这一趋势表现得更为明显。

根据相关报告,许多模型的能力会随着规模的扩大而呈非线性增长。

简单来说,当模型规模翻倍时,它的表现并不会仅仅在原有任务上略有提升;有时会出现一些全新的行为模式,而这些在较小的模型中是并不存在的。

这种变化在推理任务中尤为明显。

GPT-4在编码、数学推理、学术评估、指令执行以及结构化问题解决等方面,都比GPT-3.5取得了显著进步。

报告还指出,在较大的模型规模下,一些提示策略会变得更加有效。

在GPT-4中,少样本提示机制的效果要比早期系统好得多;同样,思维链式提示对于需要大量推理的任务来说也更加有用。

GPT-4往往不会直接生成答案,而是会通过逐步分析问题来提升表现。

重要的是,这些能力并非被人为地编程到模型中去的。该模型主要是通过预测下一个输出词来进行训练的,但当规模达到一定程度后,以下这些功能就会变得更为稳定:

  • 多步骤推理

  • 代码生成

  • 上下文适应

  • 多语言通用性

  • 指令执行

  • 视觉文本推理

这些功能开始以更加稳定的形式表现出来。

报告关于模型规模可预测性的分析,也与这一现象密切相关。OpenAI指出,利用某些规律,往往可以通过较小的训练数据来预估GPT-4的能力。

然而,也有一些行为模式仍然难以被准确预测。报告中甚至提到过一些案例:在模型规模扩大时,某些任务的表现会出乎意料地提升,或者会出现与之前观察到的趋势相反的情况。

从历史来看,GPT-4再次印证了GPT系列模型所揭示的一个重要规律:大型语言模型在规模扩大的过程中,并不会简单地变得“更流畅”;它们会展现出质量上完全不同的新特性。

这一发现从根本上改变了人工智能的研究方向。研究人员不再将语言模型视为仅仅用于特定自然语言处理任务的系统,而是开始将它们看作是通用型学习工具——随着规模的扩大、训练方法的改进,这些模型的能力还会继续得到提升。

局限性

尽管GPT-4在各项基准测试中取得了令人瞩目的成绩,并具备多模态处理能力,但其技术报告却非常直率地指出了该模型的弱点。

报告反复强调,GPT-4目前仍不够可靠。

其中最严重的问题之一就是产生错误信息的现象。

与之前的GPT模型一样,GPT-4也会生成不正确、虚假或具有误导性的内容。即使基础事实有误,该模型也能给出听起来非常令人信服的答案。

这种问题尤其危险,因为GPT-4通常比以往的模型表达得更流畅、更具说服力。在实际应用中,更强大的语言生成能力反而会让用户更难发现其中的错误。

报告还提到了推理失误的问题。

虽然在许多基准测试中,GPT-4的表现优于GPT-3.5,但它仍然会在一些相对简单的逻辑任务中出错,还会犯算术错误,或者在复杂的推理过程中出现故障。

另一个重要的局限性是过度自信的问题。

GPT-4无法自觉地认识到自己不知道什么。它可能会以很高的信心程度提供不确定或不正确的答案,这在医学、法律、教育或网络安全等高风险领域会带来严重后果。

报告还指出,GPT-4的知识体系存在时间限制——其大部分训练数据仅涵盖到2021年9月左右,因此该模型对之后发生的许多事件并不了解。

报告中有一个特别值得关注的部分,讨论了校准问题

据报告称,预训练后的GPT-4在很大程度上是经过良好校准的,也就是说它的自信程度往往与其答案的正确概率相匹配。但后续的训练调整和某些优化方法在某些情况下降低了其校准效果。

这揭示了一个重要的权衡:让模型变得更有用、更符合预期,并不意味着它们就会更真实或校准得更准确。

报告也坦诚地讨论了偏见不安全行为的问题。

由于GPT-4是从大规模互联网数据集中学习得到的,因此它仍然可能反映出训练数据中存在的社会偏见、刻板印象和不良模式。

OpenAI虽然采取了多种措施来减少有害输出,但报告也明确指出,不安全行为仍有可能发生。

其中一个例子就是绕过安全机制的行为——比如利用对抗性提示或巧妙的对话技巧来规避安全系统。报告称,GPT-4的安全机制在很大程度上有效抑制了这类行为,但一些顽固的用户仍然可能让模型产生危险或违反规定的输出。

报告还强调,在高风险环境中,不能盲目信任GPT-4,必须配备额外的安全措施、人工监督或验证系统。

正是这种坦诚的态度,使得这份报告具有重要意义:OpenAI并没有将GPT-4描绘成一种完美的智能系统,而是将其视为一个强大但存在缺陷的工具,其不断增长的能力也带来了相应的风险。

从历史角度来看,这反映了人工智能研究文化发生的重大转变。

早期的研究论文主要集中在提升模型性能上。而GPT-4则同样重视模型的能力与潜在缺陷,因为一旦这些模型被广泛应用,了解它们的局限性与展示其优势同样重要。

安全性与风险

GPT-4发布时,人工智能领域已经发生了明显变化,其中一个最明显的体现就是报告内容中大量篇幅都在讨论安全性、风险分析以及模型部署相关问题。

早期的GPT研究论文主要关注性能提升、扩展性以及基准测试结果。GPT-4的技术报告中仍然涉及这些主题,但安全性已不再是次要的讨论内容,而是成为了一个核心工程议题。

根据报告,OpenAI在模型部署前进行了大规模的“红队测试”与对抗性测试。

“红队测试”就是故意尝试破坏系统、绕过安全防护机制、引发不安全结果或暴露危险行为。OpenAI还邀请了外部领域的专家,共同评估了网络安全、错误信息传播、化学风险以及生物威胁等方面的问题。

这种测试方式体现了思维方式的根本转变。

研究的目标不再仅仅是“这个模型能否完成一些令人印象深刻的任务?”而是“如果这些功能强大的系统被恶意利用,会带来什么后果?”

报告中多次提到了“危险指令生成”这一问题。

在内部测试中,早期版本的GPT-4有时会生成与危险物质、攻击性内容或剥削行为相关的信息。OpenAI通过强化学习、安全微调、基于规则的奖励机制以及策略系统,在模型公开部署前大幅降低了这些风险。

网络安全问题也受到了重点关注。报告分析了以下方面的风险:

  • 网络钓鱼辅助

  • 恶意软件相关指导

  • 社会工程学攻击

  • 危险行为的生成

  • 网络滥用行为的自动化

虽然GPT-4并不被描述为一个自主运行的黑客系统,但OpenAI清楚地认识到,如果这些功能强大的语言模型被不负责任地使用,它们确实可能会加剧现有的网络安全威胁。

另一个特别重要的议题是“生物安全”。

报告指出,专家们评估了GPT-4是否可能被用来帮助用户获取有害的生物或化学知识。OpenAI特别研究了该模型是否会增加危险行为被滥用的风险。

这是首次有重要的人工智能研究论文公开将先进的语言模型视为具有现实安全影响的双用途技术。

报告还强调了“部署监控”以及持续的安全性改进工作。

OpenAI并不将安全性视为在模型发布前就必须解决的问题,而是将模型的部署过程本身视为学习过程的一部分。监控用户交互、识别故障模式、更新安全防护措施以及改进异常处理系统,这些都已经成为了持续性的运营职责,而不再是一次性完成的研究任务。

从历史角度来看,这一部分可能是整个报告中最重要的内容之一。

GPT-4的诞生标志着人工智能安全性不再只是一个小众的研究话题,而是成为开发前沿模型时的核心要素。

这种转变反映了整个行业的一个深刻认识:一旦人工智能系统具备了大规模应用的能力,提升其功能与控制风险就成为了密不可分的工程问题。

讨论

回顾GPT系列的发展历程,GPT-4与其说是一个独立的研究模型的发布,不如说是一个全新计算平台的开端。

GPT-1首次提出了大规模语言预训练的概念;GPT-2展示了“零样本多任务学习”的能力;GPT-3则证明了模型可以通过提示和上下文学习来不断优化自身性能。

但GPT-4再次改变了这一发展趋势。

根据技术报告,GPT-4的开发重点已不再仅仅是扩大模型的规模或提高基准测试分数,而是反复强调模型的可靠性、部署可行性、与实际应用场景的匹配度、基础设施建设、多模态交互能力以及安全性设计。

这种转变在历史上具有非常重要的意义。

早期的GPT相关论文更像是为机器学习领域的研究人员准备的里程碑式成果,而GPT-4则明显是为在全球范围内进行实际应用而设计的基础设施。

这一点通过ChatGPT等系统表现得尤为明显。

GPT-4并不是作为一个可供下载的研究样本或基准测试模型被发布的,而是成为了整个人工智能产品生态体系的一部分:

  • 对话式助手

  • 编程辅助工具

  • 企业级应用接口

  • 生产力提升工具

  • 教育系统

  • 多模态交互界面

实际上,GPT-4帮助将大型语言模型从孤立的研究样本转变成了能够持续被部署到实际应用中的软件平台。

另一个显著的变化是,前沿人工智能系统的保密程度越来越高。

与GPT-2和GPT-3不同,GPT-4的相关技术报告有意省略了许多细节,包括参数数量、架构结构、训练计算资源以及数据集的构成等。

OpenAI将这一做法归因于安全考虑以及竞争环境的影响,但更深层次的含义在于:前沿人工智能模型已经逐渐成为具有战略价值的技术手段,而不再仅仅是纯粹的学术研究项目。

这标志着大规模人工智能发展进入了一个更加封闭的时代。

这份报告也解释了为什么“模型与实际应用场景的匹配度”会成为如此重要的关注点。

随着语言模型能力的不断提升,与之相关的幻觉现象、有害输出、网络安全风险、错误信息以及不安全的推理行为等问题也日益严重。GPT-4将“一致性校验”视为一项核心设计要求,而非可选的附加功能。

这是人工智能发展史上的又一次重大转折。

早期的模型主要依据以下指标来评估其性能:

  • 准确性

  • 复杂性

  • 基准测试分数

  • 扩展性

GPT-4则将评估重点扩展到了以下几个方面:

  • 安全性

  • 部署后的监控能力

  • 拒绝执行不当指令的能力

  • 规则遵从性

  • 人工监督机制

  • 运行的可靠性

如今,评估一个模型不再仅仅看它“能做什么”,而是要看它在现实环境中的行为是否安全、是否稳定。

从很多方面来看,GPT-4也标志着现代“基础模型生态体系”的崛起。

人们不再需要为每项具体任务单独训练模型,而是一个大型且经过一致性校验的基础模型,就可以成为众多应用的共同基石:

  • 编程

  • 辅导教学

  • 搜索功能

  • 写作辅助

  • 研究辅助工具

  • 客户支持服务

  • 多模态交互系统

  • 企业级工作流程

这一理念彻底改变了软件行业的发展方向。

从历史的角度来看,GPT-4的真正意义可能不在于某个具体的基准测试结果,而在于它标志着大型语言模型已经成为了可以实际应用、被广泛部署的通用型人工智能基础设施。

结论

GPT-4技术报告标志着现代人工智能发展史上的一个重要转折点。

该报告指出,GPT-4并非仅仅是一个规模更大的语言模型,而是一个专为全球范围内的实际应用而设计的多模态、经过一致性校验的基础模型。

这个模型融合了GPT系列开发过程中积累的几项关键技术:

  • 大规模Transformer预训练技术

  • 自回归式下一词预测机制

  • 扩展性优化规则

  • 小样本提示训练方法

  • 多模态推理能力

  • 基于人类反馈的强化学习机制

  • 以安全性为目标的后续训练流程

这些技术的结合,使得GPT-4与早期的GPT模型在功能上有了本质的区别。

GPT-4证明,仅仅追求模型的规模扩大已经不足以决定其最终效果。

GPT-3展示了大型模型通过规模扩展能够获得强大的功能;而GPT-4则进一步说明,一致性校验、安全设计、后续优化以及部署基础设施同样也是构建高效人工智能系统的重要因素。

这种“规模与一致性”的结合模式,最终成为了现代前沿人工智能发展的主导趋势。

这份报告也反映了整个行业正在发生的更广泛的变革。

大型语言模型不再被视为孤立的研究实验或基准测试系统。GPT-4通过产品、应用程序编程接口、多模态助手、编码工具、企业级应用以及像ChatGPT这样的全球通用对话界面,将人工智能推向了实际应用领域。

从历史的角度来看,GPT-4标志着基础模型真正成为了日常计算中不可或缺的基础设施。

而这种变革至今仍在继续塑造现代人工智能的发展方向。

最终见解

纵观整个GPT系列,其发展脉络变得十分清晰。

GPT-1首次提出了大规模预训练能够生成具有通用性的语言表示这一概念。这样一来,就无需为每项任务从头开始训练单独的自然语言处理系统,模型可以先学习通用的语言规律,然后再通过微调来适应具体任务。

GPT-2进一步发展了这一理念,证明了规模足够大的语言模型能够在无需任何显式监督训练的情况下完成各项任务。这类模型不再只是机械地记忆指令,而是能够从语言本身中提炼出通用规律。

GPT-3再次改变了这一认知模式。少样本提示技术和上下文学习机制表明,模型仅通过提示中的示例就能在推理过程中动态适应新情况,这使得提示方式成为与人工智能系统交互的新手段。

而GPT-4则将这一理念发展到了一个全新的高度。它的重点已不再仅仅是扩大模型的规模或提升基准测试成绩,而是推出了具备多模态功能的通用基础模型——这类模型不仅能生成语言,还能安全地执行指令、在不同模态间进行推理,并作为可实际应用的基础设施为各种场景服务。

从历史意义来看,这或许是所有变革中最为重要的一点。

GPT-4不仅仅是一个规模更大的语言模型,它标志着从实验性的大型语言模型向被广泛应用于日常计算、软件开发、教育、生产力工具以及多模态人机交互领域的AI助手的转变。

在很多方面,我们其实才刚刚开始这一变革过程。

GPT-1与GPT-2、GPT-3、GPT-4的关键区别

了解GPT系列的发展历程,一个简单的方法就是看看每一代产品带来了哪些新功能。

GPT-1开创了现代预训练技术;GPT-2证明了大型语言模型可以通过少样本提示完成任务;GPT-3将少样本提示技术和上下文学习机制推广到了主流应用领域;而GPT-4则通过多模态推理和实际应用能力进一步拓展了这一理念。

下表展示了研究重点是如何逐渐从针对特定任务的自然语言处理模型转向具备对话、编程、推理及多模态理解能力的通用人工智能系统的。

方面 GPT-1 GPT-2 GPT-3 GPT-4
核心理念 预训练后进行微调 仅通过预训练即可实现零样本学习能力 大规模预训练能够支持少样本学习和上下文相关学习 为通用场景开发了多模态基础模型
训练方法 两阶段流程:先预训练再微调 单阶段语言建模 相同的语言建模方法,但规模大幅扩展 大规模预训练结合强化学习、安全调优及多模态微调
监督机制 下游任务需要标注数据 无需监督微调即可完成任务 仅需提示和示例即可适应新任务,无需重新训练 通过对齐训练和强化学习提升指令遵循能力和安全性
任务处理方式 每项任务都需要单独进行微调 主要依靠零样本提示来完成任务 可通过零样本、单样本及少样本提示来完成任务 通过对话式提示、多模态交互及对齐响应来处理任务
学习方式 先学习通用表示能力,再针对特定任务进行优化 学习通用的语言模式 能够直接从上下文中推断出任务内容 学习基于上下文的推理能力、多模态理解能力以及对齐的交互行为
泛化能力 在微调任务之外的场景中泛化能力有限 跨任务的泛化能力较强 具有很强的上下文适应能力和基于上下文的学习能力 在语言、视觉、编码和推理等多模态领域具备广泛的泛化能力
提示的作用 作用较小 提示变得有用 提示成为系统行为的核心要素 提示成为AI系统的主要交互界面
推理能力 训练完成后基本保持静态状态 在推理过程中能够进行泛化 在推理过程中可以动态适应新情况 能够通过文本和图像进行交互式推理,并具备对齐的对话能力
架构 基于Transformer的结构(解码器为主) 仅包含解码器的Transformer 经过大规模扩展的仅包含解码器的Transformer 基于Transformer的多模态自回归模型
模型规模 约1.17亿个参数 多达15亿个参数 多达175亿个参数 OpenAI未公开具体数值
上下文窗口长度 较短的上下文长度 最多支持1024个标记 2048个标记的上下文窗口 在处理多模态输入时能支持更长的上下文范围
训练数据 书籍语料库及精选的数据集 WebText互联网数据集 包含Common Crawl、WebText、书籍和Wikipedia在内的大规模多源数据集 大规模多模态数据集及互联网规模的数据集(具体细节未公开)
关键能力 迁移学习 零样本学习 少样本学习和上下文相关学习 多模态推理及对齐的AI辅助功能
性能特点 经过微调后性能优异 无需针对特定任务进行训练也能表现出良好性能 仅使用提示时,其性能通常能与经过微调的系统相媲美 在许多基准测试中,其性能常常超越之前的最先进系统
可扩展性 中等程度 非常重要 该研究的核心内容就是探讨模型的可扩展性问题 将可扩展性与模型对齐机制相结合成为主流研究方向
主要局限性 需要标注数据集且需要进行重新训练 推理能力较弱,零样本学习效果不稳定 计算资源需求极高,且推理能力存在明显局限 容易出现错误判断,对齐机制的运用会带来安全性风险,且缺乏透明度
主要贡献 开创了现代自然语言处理预训练模式 证明了多任务零样本学习的可行性 展示了大规模应用下的上下文相关学习能力 为实际应用开发了多模态基础模型
历史意义 奠定了现代Transformer自然语言处理技术的基础 推动了通用语言模型的发展 为基于提示的AI系统及现代大语言模型应用提供了理论支持 促使实验阶段的AI模型发展成为全球范围内广泛应用的智能助手
该领域因此发生了哪些变化 预训练成为标准流程 提示机制得到了广泛应用 提示成为AI系统的主要交互方式 AI系统演变成了可用于多模态场景的基础设施平台
遗留影响 为现代迁移学习技术的发展提供了灵感 促进了大规模生成式模型的研究 直接影响了ChatGPT、指令调优技术及各类基础模型 标志着多模态AI生态系统的新时代的到来

PyTorch实现的GPT架构演化版本

GPT-1:预训练+微调架构

class GPT1(nn.Module):
    def __init__(self, vocab_size, d_model, n_layers):
        super().__init__()

        self.token_embedding = nn.Embedding(vocab_size, d_model)
        self.positionembedding = nn Embedding(512, d_model)

        self.transformer_blocks = nn.ModuleList([
            TransformerBlock(d_model)
            for _ in range(n_layers)
        ])

        self.ln_f = nn.LayerNorm(d_model)

        # 语言建模部分
        self.lm_head = nn.Linear(d_model, vocab_size)

    def forward(self, input_ids):
        positions = torch.arange(input_ids.size(1))

        x = (
            self.token_embedding(input_ids)
            + self.positionembedding(positions)
        )

        for block in self.transformer_blocks:
            x = block(x)

        x = self.ln_f(x)

        logits = self.lm_head(x)

        return logits

GPT1继承自nn.Module,后者是PyTorch中用于构建神经网络的基础类。构造函数(init)定义了模型中所有可训练的层。

nn.Embedding(vocab_size, d_model)创建了一个可学习的查找表,该表格能够将标记ID转换为密集向量。词汇表中的每个标记都会被映射到一个大小为d_model的向量上。

位置嵌入层用于添加关于标记顺序的信息。由于Transformer是并行处理各个标记的,因此它们需要明确的位置信息才能理解序列的结构。

nn.ModuleList([...])用于存储多个Transformer块,同时确保PyTorch在训练过程中能够正确地追踪这些块的参数。每个TransformerBlock通常包含掩码自注意力机制和一个前馈网络。

nn.LayerNorm(d_model)在输出投影之前应用层归一化处理。这一操作有助于稳定训练过程,并改善深度Transformer架构中的梯度流动情况。

语言建模部分(nn.Linear)将隐藏表示重新映射回词汇表空间,其输出大小等于vocab_size,从而为每个可能的后续标记生成预测分数。

forward()方法中,input_ids.size(1)用于获取序列的长度,而torch.arange(...)则生成每个标记位置的位置索引。

标记嵌入与位置嵌入相加后,就得到了Transformer的初始输入表示。

随后,模型会依次将这个表示传递给每一个Transformer块:

for block in self.transformer_blocks:
    x = block(x)

正是这种迭代的堆叠机制,使得GPT模型能够逐渐学习到更为抽象的上下文表示信息。

在经过归一化处理后,最终的隐藏状态会被传递到lm_head中,从而生成logits.这些logits是未经归一化的预测分数,用于计算生成下一个标记的概率。

最终,模型会返回一个logits张量,在推理过程中这个张量通常会通过softmax函数进行处理;而在训练过程中,则可以直接与CrossEntropyLoss一起使用。

GPT-2:零样本多任务架构

class GPT2(nn.Module):
    def __init__(self, vocab_size, d_model, n_layers):
        super().__init__()
        
        self.token_embedding = nn.Embedding(vocab_size, d_model)
        self.positionembedding = nn.Embedding(1024, d_model)

        self.transformer_blocks = nn.ModuleList([
            TransformerBlock(
                d_model=d_model,
                pre_layer_norm=True
            )
            for _ in range(n_layers)
        ])

        self.final_layer_norm = nn.LayerNorm(d_model)

        self.lm_head = nn.Linear(d_model, vocab_size, bias=False)

    def forward(self, input_ids):
        positions = torch.arange(input_ids.size(1))

        x = (
            self.token_embedding(input_ids)
            + self.positionembedding(positions)
        )

        for block in self.transformer_blocks:
            x = block(x)

        x = self.final_layer_norm(x)

        logits = self.lm_head(x)

        return logits

与GPT-1一样,该模型也是从标记嵌入和位置嵌入开始的。nn.Embedding将标记ID转换为密集向量,而位置嵌入则用于表示序列中各标记的顺序。

一个明显的区别在于位置嵌入的大小更大(为1024而不是512),这使得GPT-2能够处理更长的上下文信息。

Transformer层是通过nn.ModuleList来组织的,但现在的每个TransformerBlock都设置了pre_layer_norm=True这一参数。

这意味着层归一化操作会在注意力机制和前馈操作之前进行,而不是之后。这种“预归一化”设计显著改善了深层Transformer模型的梯度传播效果及训练稳定性。

前向传播的过程遵循相同的整体流程:

  1. 使用torch.arange()生成位置索引

  2. 将标记嵌入和位置嵌入相加

  3. 将处理后的结果传递给多个Transformer层

  4. 进行最终归一化处理

  5. 将输出结果映射到词汇表空间中

具体的处理过程是在这些嵌套的Transformer层中完成的:

for block in self.transformer_blocks:
    x = block(x)

GPT-2还在输出层引入了一个小优化:

self.lm_head = nn.Linear(d_model, vocab_size, bias=False)

在大型语言模型中,偏置项几乎没有实际作用,而且还会略微增加参数的数量,因此被去掉了。

最终,该模型会输出logits,其中包含了词汇表中每个词在每个序列位置上的预测分数。

GPT-3:少样本/上下文学习架构

class GPT3(nn.Module):
    def __init__(
        self,
        vocab_size=50257,
        d_model=12288,
        n_layers=96,
        n_heads=96,
        context_length=2048
    ):
        super().__init__()
        
        self.token_embedding = nn.Embedding(vocab_size, d_model)
        self.positionembedding = nn Embedding(context_length, d_model)

        self.transformer_blocks = nn.ModuleList([
            TransformerBlock(
                d_model=d_model,
                n_heads=n_heads,
                pre_layer_norm=True,
                sparse_attention=True
            )
            for _ in range(n_layers)
        ])

        self.final_layer_norm = nn.LayerNorm(d_model)

        self.lm_head = nn.Linear(
            d_model,
            vocab_size,
            bias=False
        )

    def forward(self, input_ids):
        positions = torch.arange(input_ids.size(1))

        x = (
            self.token_embedding(input_ids)
            + self.positionembedding(positions)
        )

        for block in self.transformer_blocks:
            x = block(x)

        x = self.final_layer_norm(x)

        logits = self.lm_head(x)

        return logits

与早期的GPT版本相比,这个模型的规模有了显著提升。其嵌入层的参数数量(d_model=12288)以及Transformer层的数量(96层)使得该模型能够学习极其复杂的语言规律及长距离的依存关系。

该模型还使用了96个注意力头:

n_heads=96

多头注意力机制使模型能够同时关注词与词之间的不同关联关系,从而提升其对上下文的理解能力。

位置嵌入层的长度被增加到了2048,这使得该模型能够处理比GPT-2长得多的序列数据。

每个Transformer块都配置了以下参数:

pre_layer_norm=True,
sparse_attention=True

层前归一化有助于提高非常深层的网络的训练稳定性,而稀疏注意力机制则通过限制相互关联的词的数量来降低注意力计算的开销。在GPT-3这样的大规模模型中,这一点尤为重要,因为对长序列进行全范围注意力计算会耗费巨大的计算资源。

模型的前向传播过程遵循标准的GPT流程:

  1. 将词ID转换为嵌入向量

  2. 添加位置信息

  3. 将处理后的数据传递给多个Transformer层

  4. 进行最终层的归一化处理

  5. 生成词汇表的logits分数

核心的迭代处理过程发生在这里:

for block in self.transformer_blocks:
    x = block(x)

最后,输出层会将隐藏状态映射到词汇空间中,生成用于训练过程中预测下一个标记以及进行文本生成的logits值。

GPT-4:多模态基础模型架构

class GPT4(nn.Module):
    def __init__(
        self,
        vocab_size=50257,
        d_model=12288,
        n_layers=120,
        n_heads=96,
        context_length=8192
    ):
        super().__init__()
        
        # 文本嵌入层
        self.token_embedding = nn.Embedding(
            vocab_size,
            d_model
        )

        self.positionembedding = nn Embedding(
            context_length,
            d_model
        )

        # 用于处理图像输入的视觉编码器
        self.vision_encoder = VisionTransformer(
            embed_dim=d_model
        )

        # 多模态映射层
        self.imageprojection = nn.Linear(
            d_model,
            d_model
        )

        # 仅用于解码的Transformer模块
        self.transformer_blocks = nn.ModuleList([
            TransformerBlock(
                d_model=d_model,
                n_heads=n_heads,
                pre_layer_norm=True,
                flash_attention=True
            )
            for _ in range(n_layers)
        ])

        self.final_layer_norm = nn.LayerNorm(d_model)

        # 语言建模部分
        self.lm_head = nn.Linear(
            d_model,
            vocab_size,
            bias=False
        )

        # RLHF对齐模块
        selfreward_head = RewardModel(
            hidden_size=d_model
        )

    def forward(
        self,
        input_ids,
        image_inputs=None
    ):

        positions = torch.arange(
            input_ids.size(1)
        )

        text_embeddings = (
            self.token_embedding(input_ids)
            + self.positionembedding(positions)
        )

        # 如果提供了图像输入,则对其进行编码
        if imageinputs is not None:

            image_features = self.vision_encoder(
                image_inputs
            )

            image embeddings = self.imageprojection(
                image_features
            )

            x = torch.cat(
                [image_embeddings, text.embeddings],
                dim=1
            )

        else:
            x = text_embeddings

        # 使用Transformer进行解码
        for block in self.transformer_blocks:
            x = block(x)

        x = self.final_layer_norm(x)

        logits = self.lm_head(x)

        return logits

与之前的GPT模型一样,该模型的架构也是从token嵌入和位置嵌入开始的。nn.Embedding将token ID转换为密集的向量表示形式,而位置嵌入则用于保留序列中的顺序信息。

一个主要的区别在于增加了视觉编码器:

self.vision_encoder = VisionTransformer(
    embed_dim=d_model
)

这个模块负责处理图像输入,并将其转换为Transformer能够理解的视觉特征表示。

这些图像特征随后会通过一个投影层进行处理:

self.imageprojection = nn.Linear(
    d_model,
    d_model
)

这样,图像特征就能与用于文本标记的相同嵌入空间对齐,从而实现多模态处理。

Transformer的结构仍然只包含解码器部分,但现在添加了以下设置:

flash_attention=True

Flash Attention是一种优化过的注意力机制,它能够减少内存占用,并提高训练及推理速度,尤其是在处理长度较长的上下文序列时——比如包含8192个标记的序列。

forward()方法中,首先会生成文本嵌入。如果提供了图像,那么该图像会被编码并转换成嵌入向量:

image_features = self.vision_encoder(
    image_inputs
)

之后,图像嵌入和文本嵌入会被合并起来:

x = torch.cat(
    [image_embeddings, text.embeddings],
    dim=1
)

torch.cat()函数会沿着序列维度将张量连接起来,这样Transformer就可以将图像和文本标记一起作为单个序列进行处理。

合并后的特征表示会依次通过所有的Transformer模块:

for block in self.transformer_blocks:
    x = block(x)

在经过归一化处理之后,最终的隐藏状态会被映射到词汇空间中,从而生成用于预测下一个标记的logits值。

该架构还引入了一个奖励模型模块:

selfreward_head = RewardModel(
    hidden_size=d_model
)

这个组件实现了基于人类反馈的强化学习机制,它能够使模型的输出更符合人类的偏好,从而提升响应的质量和安全性。

参考资源:

联系我

Comments are closed.