GPT-4 已经发布有一段时间了,但是出于安全性等各种原因,OpenAI 并没有公布 GPT-4 的技术细节和代码,而是仅仅给出了一个长达 100 页的技术报告 [1]。
这个技术报告着重介绍了 GPT-4 的强大之处,仅仅给出了几个技术方向的概括,对于想了解技术细节的我们远远不够。
在本文中,我将结合 GPT-4 的技术报告、GPT-4 相对于 GPT 3.5/ChatGPT 的提升、GPT-4 和 ChatGPT 的对比、OpenAI 的近期工作,大语言模型(Large Language Model,LLM)模型的科研进展,多模态模型的科研进展等多方面的信息,深入分析 GPT-4 的技术细节。
因为并没有明确的证据证明 GPT-4 就是这么做的,所以我们在这里主要讨论要实现 GPT-4 的这些能力,OpenAI 可能使用了哪些技术。所以如果我的推测有所错误,也欢迎各位读者在评论区探讨。接下来让我们一起化身福尔摩斯,开始分析 GPT-4 背后的原理吧。
GPT-4 是在 ChatGPT 基础上迭代出来的,关于 ChatGPT 的原理我再这里就不再赘述,需要了解的移步我在《ChatGPT/InstructGPT 详解》一文中给的介绍。这篇文章中,我们先讨论 GPT-4 相对于 ChatGPT 做了哪些改进,即 GPT-4 相对于 ChatGPT 有哪些功能上的提升。接下来我们讨论 OpenAI 为了做到这些提升,在 GPT-4 中可能应用了哪些技术。最后我们讨论其它大语言模型以及使用 GPT-4 的一些感想。
当我们在使用 GPT-4 进行文本生成时,我们会惊喜的发现 GPT-4 几乎可以非常完美的回答你各种刁钻的问题,这说明了 GPT-4 具有非常强大的无监督学习的能力。
此外,GPT-4 的技术报告中也给出了大量的无监督学习的例子,甚至在有些场景逼近甚至超过了有监督的 SOTA 方法。例如在 HumanEval[3] 的代码生成数据集上,甚至超过了著名的代码生成工具 CodeX[3]。此外,在评估正确性的问答数据集 TruthfulQA [26] 上,GPT-4 逼近了 SOTA 的 Anthropic-LM[4]。
GPT-4 的技术报告中着重强调的是它相对于 ChatGPT 在诸多学术考试上的提升,如图 1。学术测试评估反映的是 GPT-4 比 ChatGPT 有更强的逻辑推理能力。@ 岳玉涛 Max 通过 19 个问题横向对比了 GPT-4 和 ChatGPT 的逻辑推理问题 [2],其中 ChatGPT 的正确率是 37%,GPT-4 的正确率是 100%,从对比的例子中我们明显可以看出 GPT-4 在逻辑推理上有着质的飞跃。
图 1:GPT-4 与 ChatGPT 在诸多学术考试中的成绩对比
我这里也找了一个简单的逻辑推理问题,可以看出在这个过桥的例子中 ChatGPT 虽然给出了过桥顺序,但是时间计算错误,而 GPT-4 则简单又清晰的解决了这个问题。
问题:四个人 ABCD 过桥,一次最多能过两个人,他们的手电能维持十七分钟,每个人所需的时间分别为 1、2、5、10;求最快可以多长时间全部过桥?
ChatGPT:为了让四个人尽快过桥,我们需要让速度最慢的人尽快过桥。因此,我们可以先让速度最慢的两个人 A 和 B 过桥,然后让 A 返回,再让速度次慢的人 C 和 D 过桥,最后让 B 返回,这样就完成了全部过桥的过程。
具体来说,我们可以按照以下步骤进行:
A 和 B 过桥,花费时间为 10 分钟。
A 返回,花费时间为 1 分钟。
C 和 D 过桥,花费时间为 5 分钟。
B 返回,花费时间为 2 分钟。
A 和 B 过桥,花费时间为 10 分钟。
因此,总共花费的时间为 10 + 1 + 5 + 2 + 10 = 28 分钟。这就是最快可以多长时间全部过桥的时间。
GPT-4:为了使四个人 ABCD 最快地全部过桥,我们可以采取以下策略:
A 和 B 一起过桥,用时 2 分钟。
A 返回,用时 1 分钟。
C 和 D 一起过桥,用时 10 分钟。
B 返回,用时 2 分钟。
A 和 B 一起过桥,用时 2 分钟。
总共用时:2 + 1 + 10 + 2 + 2 = 17 分钟。
所以最快可以在 17 分钟内使所有人过桥。
GPT-4 的一个重大提升是开始涉及多模态,鉴于 GPT-4 的图像接口还未开放,我们这里借用 GPT-4 的技术报告中给的例子。在图 2 中,GPT-4 能够精确的理解 VGA 口 Lightning 口的不协调之处。这个例子说明 GPT-4 不仅仅是简单的理解图像中的内容,它最厉害的点在于能够识别图像中的特殊点。
图 2:GPT-4 具有强大的图、表理解能力
GPT-4 的技术报告中重点讨论了 GPT-4 和之前的模型一样有安全问题,但 GPT-4 的安全性已经大幅提升。技术报告中指出,ChatGPT 生成有害内容的概率大概是 GPT-4 的 10 倍。图 3 举了大量的早期 GPT-4 和成熟 GPT-4 在有风险提示下生成的内容,可以看出成熟 GPT-4 的危险性大大降低,但这并不意味着 GPT-4 就是一个完全无害的模型。
图 3:早期 GPT-4 和成熟 GPT-4 在生成内容安全性上的示例
GPT-4 做了大量的工作来保证模型的安全性,首先它们聘请了 50 余位不同方向的领域专家进行对抗测试和红队测试,二是训练了一个基于规则的奖励模型(Rule-Based Reward Models, RBRMs)来辅助模型的训练,关于这一部分的实现细节,我们将会在后面详细展开。
GPT-4 的技术报告中另外一个重要的对比项是它和 ChatGPT 在 LeetCode 上易中难三个不同难度上的代码生成能力。在无监督的情况下,GPT-4 在 HumanEval 数据集上的评估准确率由 ChatGPT 的 48.1% 提升至 67.0%。GPT-4 的技术报告中指出,ChatGPT 在 LeetCode 的 166 道编程题中仅对了 20 道,而 GPT-4 则回答对了 55 道。表 1 是 GPT-4 和 ChatGPT 在 LeetCode 的这 166 道编程题的具体分布。
GPT-4 | GPT-4 (no vision) | ChatGPT | |
---|---|---|---|
LeetCode(easy) | 31 / 41 | 31 / 41 | 12 / 41 |
LeetCode(medium) | 21 / 80 | 21 / 80 | 8 / 80 |
LeetCode(hard) | 3 / 45 | 3 / 45 | 0 / 45 |
表 1:GPT-4 和 ChatGPT 在 LeetCode 编程题上的表现效果
GPT-4 在英语以及非英语上都有了大幅提升,在大多数语种上都超过了 ChatGPT 在英语上的表现,这里我们分别让 ChatGPT 和 GPT-4 分别应《让子弹飞》中汤师爷的要求写一首诗,要求是 “要有风,要有肉;要有火锅,要有雾;要有美女,要有驴!”。对比两首诗,ChatGPT 写的像是没有什么文采的现代诗,而 GPT-4 生成的内容除了前面两居字数过多之外,基本像一首中国古诗了,甚至还在一定程度上保证了押韵。
ChatGPT:
风吹过山岗,肉香四溢\
火锅热气腾腾,雾气缭绕\
美女婀娜多姿,驴儿欢快奔腾\
这是一幅独特的画卷,让人心旷神怡\
风肆意地吹拂,肉香扑鼻而来\
火锅里的食材,让人垂涎欲滴\
雾气弥漫,让人感到神秘\
美女的容颜,让人陶醉其中\
驴儿的欢快,让人感受到生命的活力\
这是一幅充满生命力的画卷,让人心驰神往GPT-4:
翻滚的风肆意掠过山涧,\
火锅涮肉锦上添花。\
炊烟袅袅绕雾缠,\
美女佳驴共同游。美女翩翩拂驴背,\
吹散烦忧与世界。\
嬉戏胭脂笑颜醉,\
驴儿踏歌奔山外。火红蘑菇热情翻,\
辣椒牛肉峰水澹。\
鸳鸯火锅欢歌笑,\
时光荏苒留梦间。雾濛濛涤净尘缘,\
蓑衣柴扉任风险。\
驴蹄踏碎人间俗,\
飞鸿蹄印留辉煌。
ChatGPT 能处理的最大序列是 4K 个 token,而 OpenAI 开放了 8k 和 32k 的两个模型,其中每个汉字大概占用 2 到 2.5 个 token。GPT-4 的 token 根据指示和回应分别计价(表 2),其中 32k 的价格是 8k 的两倍,对比 ChatGPT 的每 1000token 的 0.02 美元,GPT-4 要贵了 15 倍左右。
模型 | Prompt | Completion |
---|---|---|
8K context | \$0.03 / 1K tokens | \$0.06 / 1K tokens |
32K context | \$0.06 / 1K tokens | \$0.12 / 1K tokens |
表 2:GPT-4 的收费细节
关于 GPT-4 的更多能力的探测,微软雷蒙德研究院机器学习理论组负责人 Sébastien Bubeck 在他们最新发布的长达 155 页的文章 [25] 中进行了广泛的讨论。
他们指出 GPT-4 表现出了远超文本生成模型理论上能表现的效果,成为了点燃通用人工智能(AGI)烈焰的星星之火,GPT-4 已经具备了非常强的推理、计划、解决问题、抽象思考、理解复杂想法、快速学习以及从经验中学习的能力。
有了我们发现的 GPT 的这些提升,我们便可以结合当前 LLM 的进展以及 OpenAI 的工作猜测 GPT-4 可能的技术方案。因为我们只能依靠公布的算法进行推测,不排除 OpenAI 内部使用未开放的算法作为解决方案,所以如果我的猜测有误,您就姑且当做学习到了几个独立的算法。
下面我们介绍我们的推测依据以及对这些推测的技术进行简单的介绍。
涌现能力(emergent ability)是 LLM 取得突破性进展最重要的核心技术,涌现能力指的是一种模型在训练过程中,自动地学习到一些高级的、复杂的功能或行为,而这些功能或行为并没有被直接编码或指定。
这种能力可以使得模型在处理新的、未知的任务时表现更加出色,因为它可以自适应地学习到新的功能或行为,而不需要重新训练或修改模型。图 4 展示了包括 GPT-3 在内的诸多 LLM 都展现了非常强的涌现能力,即模型的参数量等指标突破某个指标后,它的性能会快速提升。这里我们可以断定 GPT-4 的 zero-shot 和 few-shot 的学习能力是源自大模型的涌现能力。
模型产生涌现能力主要是取决四点,它们分别是:
其中模型的参数量是最为重要的因素。
图 4:GPT-3 等诸多大模型在多个任务上都展示出了涌现的能力
GPT-4 的参数量是一个大家都在讨论的话题,考虑到 GPT-4 比 ChatGPT 更强的涌现能力以及额外添加的图像编码模块,GPT-4 的参数量应该不会比 ChatGPT 小。图 5 是方舟投资(ARK Invest)统计的 ChatGPT Turbo 和 GPT-4 的预测每个 token 的时间,其中 GPT-4 的时间大概是 ChatGPT 的 4 倍左右。而且 GPT-4 很有可能使用了一些策略加速模型的推理速度,所以 GPT-4 的文本模型参数部分大概是千亿级别但是非常接近万亿。
如果 GPT-4 使用了 CLIP 做图像编码,据 OpenAI 论文公布,目前最大的图像编码器是扩大了 64 倍的残差网络,那么 GPT-4 的图像编码大概有 16 亿。当然,我们无法排除 GPT-4 采用了其它图像编码结构,例如同样是利用 Transformer 的 KOSMOS-1[12] 就是一个不错的选择,那么图像部分的参数量如何就只能等更多相关内容公开了。
图 5:ARK Invest 统计的 ChatGPT 和 GPT-4 在预测每个 token 上的时间占比
我们可以确定的是,GPT-4 的技术报告中指出 GPT-4 采用了以 Transformer 为基础的架构,即核心架构还是采用了 GPT 系列的 Decoder-only 的结构。对于 GPT-4 模型的内部细节,我们可以确认的点不多,考虑到 GPT-4 的速度以及处理长文本的能力,它的内部结构但有这两种可能性:
因为 GPT-4 还支持图像输入,那么其中一定有关于图像编码的部分,我们将这部分内容放在 2.3 节详细展开。
GPT-4 的基本保持了和 ChatGPT 相同的训练策略,即基本遵循了预训练 + 提示 + 预测的范式,如图 6。我们这里主要介绍 GPT-4 的改进,主要有三点。
图 6:ChatGPT 的模型训练步骤
GPT-4 的第一个改进则是引入了 RBRM,RBRM 是根据规则编写的一个四分类模型,它的四个类别是:
GPT-4 被用在了图 6 中 Step 3 的 PPO 阶段。为了提升模型的安全性,ChatGPT 在 Step 3 使用了人工反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF)来训练模型。ChatGPT 的这部分数据来源于 GPT-3 的 API 用户,GPT-4 则在这里添加了 RBRM,目的是通过正确的奖励引导模型的训练,来拒绝生成有害的请求以及不拒绝无害的请求。
使用规则构建 NLP 模型由来已久,其实 NLP 的最早期的模型就是基于规则的模型,然后才是基于概率的模型以及基于神经网络的模型。
例如香农把离散马尔可夫过程的概率模型用于描述语言的自动机,以及我们经常使用的正则表达式都是典型的基于规则的文本模型。基于规则的模型的优点是我们不需要训练数据,缺点是它往往是需要领域专家来设计规则,并且往往只能解决一定领域内的问题。我在这里猜测 RBRM 是由领域专家设计的,由一系列例如正则表达式,有限状态机等文本规则编写的一个零样本分类器。
基于规则的强化学习在近年来也被广泛提及,强化学习的一个重要优化目标是减少搜索空间的范围,而这项工作恰好可以交给规则的约束来完成。在经过规则的约束后,再通过强化学习在剩余的空间中进行搜索,这样就减少强化学习的搜索空间,可以有效提升收敛速度。GPT-4 的 RBRM 的工作原理大致如图 7。
图 7:RBRM 的工作原理
GPT-4 并没有对它的多模态能力的技术细节进行详细介绍,而且它的图像接口没有开放公测。但是我们可以看下多模态领域有没有类似 GPT-4 的报告中类似的工作。巧合的是微软在今年年初公布的 KOSMOS-1[12] 拥有非常强的多模态 QA 的能力,它的思想也和 GPT-4 非常类似,我们这里可以推测 GPT-4 使用了和 KOSMOS-1 类似的多模态提示方法。
KOSMOS-1 支持三种类型的数据集,分别是文本生成,图像描述(Image Caption)生成以及多模态 QA,图 8 是 KOSMOS-1 在图像描述生成以及 QA 生成上的例子。在图 8.(a) 的图像描述生成中,模型的输入是图像的 Embedding,输出是预测的图像描述。在图 8.(b) 的多模态 QA 中,KOSMOS-1 将图像嵌入与文本嵌入共同作为输入,然后用于预测问题的答案。
图 8:KOSMOS-1 的多模态输入示例
GPT-4 的拥有比 ChatGPT 明显强的逻辑推理能力,在训练模型时应该是使用思维链的方式构建提示样本。思维链不仅支持纯文本输入,还支持图文多模态输入,我们接下来用一节的篇幅来介绍这个重要的内容。
在我们在某个特定任务上训练一个模型时,我们希望能够预测模型在这个任务上的最终表现,这就是模型的能力预测(Capability Prediction)。在自然语言处理和大型语言模型领域,能力预测通常是指预测和评估一个模型在特定任务、领域或场景下的表现能力。
能力预测的目的是为了更好地了解模型的性能,以便优化、调整或改进模型。通过对模型的能力预测,我们可以更好地理解模型的优势和局限,从而为模型的进一步发展和改进提供有价值的反馈。GPT-4 在训练时也使用了能力预测,这让他们能够更准确的评估模型的效果,节约了训练成本。
OpenAI 为了提升 GPT-4 的推理能力,很有可能使用了近年来 LLM 非常重要的思维链以及自提升能力。它们可以看做是提示学习在逻辑推理能力上的针对性优化,下面我们分别介绍它们。从 GPT-4 的技术报告中,我们可以发现很多 GPT-4 的训练使用了思维链或者自提升的证据。
思维链(Chain of Thought)是指人们在进行思考时,由于某个观点、想法或感知刺激而引发的一系列相关思维联想和关联。这些关联可以通过人们的记忆、经验、知识、情感和意识等方面来建立和加强,最终形成了一个有机的思维链,帮助人们理解和解决问题,做出决策和行动。思维链是人类思维活动的重要组成部分,它反映了人们的思考方式、思考习惯和思考效率。通过构建和加强思维链,可以帮助人们更好地理解和把握事物的本质和规律,更加有效地解决问题和做出决策。
在人工智能领域,研究人员也在探索如何利用机器学习和自然语言处理等技术,来模拟人类的思维链,建立机器的思维链,帮助机器更好地理解和处理人类的语言和行为,实现更加智能化的应用和系统。OpenAI 的论文 [6] 是思维链方向具有重要意义的一篇文章,也是 GPT-4 很有可能使用的技术方案,在这篇文章中,他们提出了通过构建思维链提示的方式来提升模型的推理能力。思维链也是一种涌现能力,它可以通过仅提供少量的样本便大幅提升模型的逻辑推理能力。
思维链的与传统提示学习的不同点是在提示中增加一个推理过程,构建一个由输入,思维链,输出构成的三元组。图 9 是传统提示和思维链提示的实例。
图 9:传统提示学习和思维链提示学习,思维链会在输入中给出推理过程来帮助模型学习推理的能力
思维链也支持多模态的输入,GPT-4 的技术报告中也指出了 GPT-4 使用了多模态的思维链。图 13 的 GPT-4 的例子便是一个经典的因为使用思维链训练了模型而产生的包含推理过程的预测结果。图 10 是上海交大和亚马逊最新发表的一个多模态思维链的框架:Multimodel-COT [14]。
它包含两个阶段,两个阶段共享参数。在第一个阶段,他们将图像和文本输入到模型中来生成理由,也就是思维链。在第二个阶段,他们将原始输入和生成的理由合在一起,输入到模型中来生成答案。
图 10:Multimodel-COT 的推理过程
谷歌在 2022 年发布的一篇文章 [7] 中指出,LLM 和思维链的结合可以让模型使用无监督的数据进行自我提升(Self-Improve),它的核心方法如图 11 所示。GPT-4 也指出他们使用了 [7] 的方案来提升模型的遵循用户意图的能力。
图 11:LLM 可以通过大模型进行自我提升
它的计算过程如下:
你可能已经发现这个方法得到的答案并不一定是正确的答案。作者通过实验得出了两个重要结论:
在得到了推理 Path 之后,作者根据这个 Path 构建了四种不同的输入数据,它们分别是:
最后,为了丰富数据集,作者提出了两个方案来扩充数据:一是随机组合两个问题,然后让模型生成新的问题;二是让模型生成推理步骤,并将它加入到训练集中。
因为 GPT-4 是支持图像格式的图表输入的,OpenAI 著名的多模态算法 CLIP[8] 讲的是我们可以通过对比学习将图像和文本映射到同一特征空间,如图 12。那么结合 CLIP 的图像编码器便可以实现 GPT-4 的图像输入,这时我们需要训练一个可以和 GPT 的文字特征对齐的图像编码器,然后将 CLIP 的图像编码器的输出作为图像 token,最后再加一个 embedding 层将这个 token 编码为 GPT-4 的特征向量。
图 12:CLIP 的结构,它通过对比学习将图像和文本投影到相同的特征空间
GPT-4 除了可以理解图 2 中这种照片的例子,最神奇的是 GPT-4 还可以理解图 13 这种包含了很多细节的学术图片。因为在一个学术图片中,图中代指的符号,目标之间的位置关系都是十分重要的,如果 GPT-4 仅仅通过一个图像编码就能捕获这些细节信息,那么这个图像编码器一定也展现出了非常强的涌现能力,这个图像编码器也大概率是千亿规模的参数量。
图 13:GPT-4 具有理解学术图像中具体细节的能力
GPT-4 的多模态能力还有一种可能是类似多模态大语言模型(Multimodel Large Language Model,MLLM)。其中微软的 KOSMOS-1 展示了和 GPT-4 类似的多模态语言模型的能力,KOSMOS-1 在多模态问答上也展示出了非常强的涌现能力,如图 14。
KOSMOS-1 是一个基于 Transformer 解码器的多模态模型,它将不同模态的数据拼接到一起,例如和表示文本输入,和<\image>表示图像输入,其中图像嵌入使用的是微软的 METALM[13] 计算得到的特征向量。我们推测 GPT-4 有可能借鉴了 KOSMO-1S 的思想,然后结合了 OpenAI 自身的一些多模态的工作。
图 14:微软的 KOSMOS-1 涌现出了非常强的图像理解能力
关于 GPT-4 的多模态的更多技术细节,我们可以等 GPT-4 的图像接口开放之后多多测试才能发现。
现有的深度学习模型的思想均是使用大模型拟合训练集,对于一个生成模型来说,它的输出内容并不是完全可控的,GPT-4 也不例外。GPT-4 的技术报告中指出文本模型会存在下面几类的风险输出,例如幻觉、有害内容、歧视、虚假信息、暴力、隐私、网络安全等。GPT-4 做了大量工作来缓解这个问题。
GPT-4 的第一个缓解风险输出的问题是聘请了 50 余名来自不同领域专家扮演红队进行对抗测试。红队的工作是提出有危险性的问题,以测试 GPT-4 给出的输出,并尝试攻克它。通过领域专家的对抗,OpenAI 也采集了大量不同方向的领域专家数据来提升 GPT-4 的安全性。
幻觉(hallicination)是生成模型都非常难以解决的问题,它指的是模型产生的荒谬的或者不真实的内容,也就是一本正经的胡说八道。随着模型生成的内容语句越来越通顺,内容越来越具有说服力,那么这种幻觉行为将是特别有害的。模型产生幻觉可以归纳为下面几个原因:
GPT-4 采用了两个策略来解决这个问题:
第一种方法是利用 ChatGPT 的数据进行训练。 这个方法的优点是 ChatGPT 在当时已经具有了一定程度拒绝生成有害内容的能力,比在网上爬取的数据具有更高的可靠性。但它的问题是可能会将 ChatGPT 的问题继承到 GPT-4 中。而且依靠一个模型的生成内容作为另一个模型的训练数据,可能会导致模型的过拟合。
第二种方法是采用 NLP 技术来检测模型产生的幻觉样本,包括自动评估和人工评估。 这个方法的优点是可以有效的检测和纠正模型产生的幻觉问题。它的缺点是依靠自动评估的方法可能会因为评估模型的缺陷漏掉一些幻觉样本,而人工评估的最大问题是人工成本是非常高昂的。
在幻觉检测方面,Meta 有着非常重要的贡献。一方面他们提出了幻觉检测任务并制作了针对这个任务的幻觉检测数据集 HADES[15],另一方面他们提出了一个幻觉检测方法 [16],这个方法通过合成幻觉数据来对预训练模型进行微调。该模型可以检测一个句子中出现的幻觉词,来对生成内容的真实性进行评估,从而减轻幻觉出现的概率。图 15 是该方法在机器翻译中的一个例子,标签为 1 的部分对应了生成的幻觉内容。这里猜测 OpenAI 可能采用了和 Meta 类似的方法或数据。
图 15:FAIR 提出的幻觉检测方法在机器翻译中的示例
具体的讲,OpenAI 设计了一个多步骤的过程,使用 GPT-4 本身来生成是否有幻觉的比较数据,并将它们并入到图 6 步骤 2 的奖励模型的训练集中:
对于可能出现的其它风险输出,OpenAI 并没有详细的介绍它的技术方案,不过从他们的技术方案中,我们可以看出他们大概使用了下面几类方法:
GPT-4 在编程能力上比 ChatGPT 有了巨大的提升,一方面他可能因为思维链掌握了更强的逻辑分析能力,另一方面它很有可能借鉴了 OpenAI 著名的代码生成算法 CodeX[3]。CodeX 是 GPT-3 在代码生成领域的衍生版本,也是 Copilot 插件背后的基础算法。CodeX 采用了 GPT 系列的 Decoder-only 的架构体系,模型的参数量有从 12M 到 12B 等多个不同的版本。CodeX 的训练分成预训练和微调两个阶段。
在预训练阶段,OpenAI 首先从 Github 上爬取了大量的 Python 文件,经过清洗后得到了一个大小为 159GB 的训练集。因为 CodeX 是一个代码生成模型,所以它并没有使用 GPT-3 训练好的权重,也没有完全照搬 GPT-3 的模型超参,而是重新训练了一个代码生成模型。
在微调阶段,OpenAI 从竞赛网站,面试网站,Github 的单元测试脚本中收集了大约 40000 条数据。在评估代码正确性上,CodeX 并没有使用传统的 BLEU 分数,而是使用了代码能够通过多少比例的单元测试作为评估标准,并建立了评估测试集 HumanEval 和评估标准 pass\@k。
为了避免数据泄露,HumanEval 的数据全部是由人类亲自构造的,总共包含 164 个题目和大量的测试用例。HumanEval 将每个函数划分为四类,即函数签名(function signature),函数注释,函数主体以及单元测试样本组成。在进行提示学习时,函数签名和函数注释作为输入的提示,函数主体作为要求的输出,单元测试用于评估生成代码的效果。
CodeX 的评估标注和 Leetcode 类似,即有多少比例的测试用例通过测试了,CodeX 的评估标准 pass\@k表示从模型的所有生成答案中随机抽取 k 个,从这 k 个答案里得到正确答案的概率。它的计算方式如式 (1)。其中 n 是每个问题生成的答案,k 是从 n 个答案中随机抽取的 k 个,c 是 n 个答案里通过单元测试的答案数。
CodeX 和 GPT-4 都是 GPT-3 的下一代模型,让 GPT-4 使用 CodeX 现成的思想和数据,并提高模型的编程能力,是再合理不过的工作了。
关于 GPT-4 的在其它语种上的能力的大幅提升,OpenAI 并没有给出介绍,我也没有查到相关解释。这里我根据目前的技术积累,猜测一下 OpenAI 可能使用的技术方案:
这一部分的相关资料确实不多,也欢迎大家在评论区给出自己的猜测。
这里的长序列包含两个方面,一方面是 GPT-4 是支持多轮对话的,另一方面是 GPT-4 支持更长的输入数据,下面我们来讨论它们可能使用的技术。
ChatGPT 和 GPT-4 都支持连续对话,但 OpenAI 一直也没有给出连续对话能力的背后技术方案。如果在每一轮对话时都粗暴的把之前的对话重新作为输入提供给模型。虽然理论上讲是行得通的,但这种方式的最大问题是随着对话轮数的增多,输入的数据也会快速增加,进而导致 ChatGPT 或者 GPT-4 的预测速度越来越慢,但是我在使用 ChatGPT 和 GPT-4 的多轮对话时并没有发现这种速度逐渐变慢的现象。
如果要从模型角度解决这个问题,我们恰好有一个算法可以解决这个问题,它就是 Transformer-XL[10]。Transformer-XL 的重要改进是提出了片段递归的机制,如图 16。片段递归机制类似于 Transformer 和 RNN 的结合体,它的核心思想是对于一个长度不限的变长数据,在计算的时候也是固定每个片段的长度并计算这个片段的特征,然在计算下个片段时将前面片段的特征加到当前片段上,从而让模型可以处理任意长度的特征。
图 16:Transformer-XL 的片段递归机制
反应到 ChatGPT 和 GPT-4 的多轮对话中,我推测 OpenAI 借鉴了 Transformer-XL 的片段递归的思想。即 GPT-4 然后在进行第 $t$ 轮的计算时,会将缓存的第 t-1 轮的特征和第 t 轮的特征相加,共同用于当前轮次的计算。因为第 t-1 轮也考虑了第 t-2 轮的特征,理论上这个方式可以在不影响预测时间的前提下获得之前很多轮之前的对话内容。
传统的 Transformer 并不擅长处理长序列问题,因为输入长度为 n 的 Transformer 的复杂度为 O(n2)。Transformer 的默认输入长度是 512,对于长度大于 512 的输入数据 Transformer 的解决方案是将它拆分成多个长度为 512 的文本块,但是这种会造成上下文碎片的问题,上一节介绍的 Transformer-XL 便是用来解决这个问题的。
这里我们介绍 OpenAI 自家的用来解决长序列输入的算法:Sparse Transformer[11],因为 GPT-3 就是使用的普通 Transformer 和 Sparse Transformer 的混合模式,所以 Sparse Transformer 也是非常有可能被 GPT-4 用来处理长输入文本的一个模型,但它和普通 Transformer 是如何混合的就不得而知了。Sparse Transformer 的特点是只关注 Top-k 个贡献最大的特征的状态,它使用稀疏注意力机制替代了 Transformer 的密集注意力,将计算注意力的复杂度降到了 O(n\sqrt n)。传统 Transformer 的密集注意力核被分解为了跨步注意力(Stried Attention)和固定注意力(Fixed Attention),每个注意力核又分为行注意力核和列注意力核。分解后的注意力核都是稀疏的,因此大幅降低了模型的复杂度,如图 17。
图 17:密集注意力和稀疏注意力
因为 GPT-4 支持更长序列的数据,我在这里也列出了用于高效处理长数据的 Transformer 的两个变体。因为 GPT-4 的技术报告太过点到为止,到底 GPT-4 的网络结构如何,我们只能等待 OpenAI 的官方公布了。
这一节我们讨论了很多技术方案,有的具有比较高的可信度,有的则猜测程度较高。下面这个表给出了各个方案的可信度(从 1 到 5 逐渐增高)。
涌现能力 | 思维链 | 自提升 | CLIP | KOSMOS-1 | CodeX | XLM | Trans-XL | Sparse Transf |
---|---|---|---|---|---|---|---|---|
5 | 5 | 3 | 3 | 3 | 4 | 1 | 1 | 4 |
根据我们的上述推测,我们可以猜测 GPT-4 的技术方案大致如下:
最近我也将 GPT-4 和 ChatGPT 应用到了日常工作中,深刻的被 GPT-4 强大的能力所震撼。它不仅能辅助我完成日常的编程,文章撰写工作,也能够帮我解决一些日常琐事,大幅提升了我的工作效率。关于 GPT-4 的各种赞赏与批评的文章网上已数不胜数,我在这里结合我们分析的技术方案,探讨一下 GPT-4 为了的发展方向,或者说是预测下 GPT-5 可能的样子。
尽管 GPT-4 在文本生成,代码生成,图像理解,逻辑推理能力展现了强大的能力,但它依旧有很大的进步空间的,未来的工作可能有下面几个重点方向:
GPT-4 凭借其强大的生成能力和逻辑推理能力,能够极大的影响我们的工作方式。相信这篇文章的读者很多是从事算法相关的科研和工作的人,我鼓励每个人都用上 GPT-4 哪怕是 ChatGPT,那么 GPT-4 的哪些功能对我们非常有帮助呢。这里我根据我的使用经验,列出几个我认为比较有帮助的方向:
注意 GPT-4 并没有彻底解决幻觉等安全性问题,面对 GPT-4 生成的内容,我们最好在使用之前进行严格的审核,否则可能会发生一些不可解释的问题。也是因为这个原因,GPT-4 并不能取代从事这方面的专业工作人员,因为在 GPT-4 的安全性问题解决之前,始终需要专业人士为其把关,而 GPT-4 的安全性问题可能将会伴随生成模型的整个生命周期。
随着 ChatGPT 和 GPT-4 的提出,国内外的公司快速跟进,掀起了一股 LLM 模型的研发热潮,也有很多公司提出了自己的 LLM.
其中国内具有代表性的工作有下面这些工作。
不仅国内快速跟进,国外的头部公司也推出了自己的 LLM,其中具有代表性的有:
除了上面介绍的,国外的 LLM 还有 BigScience 的 BLOOM,斯坦福的 Alpaca,上面介绍过的微软的 METALM,KOSMOS-1 等,国内的华为的盘古,腾讯的 WeLM 等等。除了这些通用模型,LLM 也被用在细分领域,例如医学领域的 HuaTuo[23],金融领域的 BloombergGPT[24] 等。
GPT-4 究竟会不会带来第四次工业革命,这是一个需要时间验证的话题,我也没有资格在这给出结论,但 GPT-4 对与我个人的影响是巨大的。
首先,它一定程度上撼动了我对传统人工智能的理解,就像宏观物理的很多定理在微观物理上是不成立的,我在传统人工智能上积累的很多经验放在 GPT-4 里也是不成立的。它展现出的强大的零样本学习能力,以及更高阶的能力是远远超出我对深度学习的传统认知的。
其次,GPT-4 以及 ChatGPT 正成为日常工作中最得力的助手,在撰写这篇文章时 GPT-4 也提供了非常大的帮助,它不仅可以帮助我写代码,改文章,甚至还能帮我解决一些非工作的问题。最后,如雨后春笋般涌现的诸多不同的大模型又让我对日益看衰的深度学习注入了新的信心和活力。
对于 GPT-4 这门技术,我建议每个人都要去了解并学会使用它。不管你的工作是否和计算机相关,它都会给你带来一些帮助,哪怕你是个厨子,它都可能给你生成一份美味的菜谱。在使用 GPT-4 时,我们也要理性的看待它生成的内容,只有 GPT-4 有一丝的风险问题,我们就不能放松对它的审核,以防幻觉问题给我们造成损失。
在未来的一段时间,GPT-4 一定会给我们带来诸多的影响。首先,互联网上会快速涌现大量使用 GPT-4 生成的我们无法区分的内容,大众会不会被统一的 GPT-4 的行为模式所影响是值得深思的。其次,GPT-4 将极大程度解放某些工作的生产力,甚至可以替代这些工作,我们能不能抓住这个机遇,在这个互卷的环境里看到新的机会非常重要。最后,GPT-4 将以怎样的形式影响到每一个人都是不同的,GPT-4 如果真的带来了 AGI,我希望我的好友们你们都不要错过。
[3] Chen M, Tworek J, Jun H, et al. Evaluating large language models trained on code[J]. arXiv preprint arXiv:2107.03374, 2021.
[4] Bai, Yuntao, et al. "Training a helpful and harmless assistant with reinforcement learning from human feedback." arXiv preprint arXiv:2204.05862 (2022).
[5] Wei J, Tay Y, Bommasani R, et al. Emergent abilities of large language models[J]. arXiv preprint arXiv:2206.07682, 2022.
[6] Wei J, Wang X, Schuurmans D, et al. Chain of thought prompting elicits reasoning in large language models[J]. arXiv preprint arXiv:2201.11903, 2022.
[7] Huang J, Gu S S, Hou L, et al. Large language models can self-improve[J]. arXiv preprint arXiv:2210.11610, 2022.
[8] Radford, Alec, et al. "Learning transferable visual models from natural language supervision." International Conference on Machine Learning. PMLR, 2021.
[9] Guillaume Lample and Alexis Conneau. Cross-lingual language model pretraining. arXiv preprint arXiv:1901.07291, 2019.
[10] Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V.Le, and Ruslan Salakhutdinov. Transformer-XL: Attentive language models beyond a fixed-length context. arXiv preprint arXiv:1901.02860, 2019.
[11] Rewon Child, Scott Gray, Alec Radford, and Ilya Sutskever. Generating long sequences with sparse transformers. arXiv preprint arXiv:1904.10509, 2019.
[12] Huang, Shaohan, et al. "Language is not all you need: Aligning perception with language models." arXiv preprint arXiv:2302.14045 (2023).
[13] Hao, Yaru, et al. "Language models are general-purpose interfaces." arXiv preprint arXiv:2206.06336 (2022).
[14] Zhang, Zhuosheng, et al. "Multimodal chain-of-thought reasoning in language models." arXiv preprint arXiv:2302.00923 (2023).
[15] Liu, Tianyu, et al. "A token-level reference-free hallucination detection benchmark for free-form text generation." arXiv preprint arXiv:2104.08704 (2021).
[16] Zhou, Chunting, et al. "Detecting hallucinated content in conditional neural sequence generation." arXiv preprint arXiv:2011.02593 (2020).
[17] Du, Zhengxiao, et al. "GLM: General language model pretraining with autoregressive blank infilling." Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) . 2022.
[18] Zhao, Wayne Xin, et al. "A Survey of Large Language Models." arXiv preprint arXiv:2303.18223 (2023).
[19] Touvron, Hugo, et al. "Llama: Open and efficient foundation language models." arXiv preprint arXiv:2302.13971 (2023).
[20] Chowdhery, Aakanksha, et al. "Palm: Scaling language modeling with pathways." arXiv preprint arXiv:2204.02311 (2022).
[21] Driess, Danny, et al. "Palm-e: An embodied multimodal language model." arXiv preprint arXiv:2303.03378 (2023).
[22] Thoppilan, Romal, et al. "Lamda: Language models for dialog applications." arXiv preprint arXiv:2201.08239 (2022).
[23] Wang, Haochun, et al. "HuaTuo: Tuning LLaMA Model with Chinese Medical Knowledge." arXiv preprint arXiv:2304.06975 (2023).
[24] Wu, Shijie, et al. "BloombergGPT: A Large Language Model for Finance." arXiv preprint arXiv:2303.17564 (2023).
[25] Bubeck, Sébastien, et al. "Sparks of artificial general intelligence: Early experiments with gpt-4." arXiv preprint arXiv:2303.12712 (2023).
[26] Lin, Stephanie, Jacob Hilton, and Owain Evans. "Truthfulqa: Measuring how models mimic human falsehoods." arXiv preprint arXiv:2109.07958 (2021).
作者:京东零售 刘岩
内容来源:京东云开发者社区