从去年年底发布以来,ChatGPT 已经被普通民众和业界广泛接受,可能是用户数量增长最快的消费级应用程序。鉴于ChatGPT的技术价值和商业价值,国内已经有不少公司复现了ChatGPT,比如百度、阿里、三六零、华为、MiniMax、商汤、复旦大学邱锡鹏团队、元语智能、智源。Meta 开源了650亿参数的LLAMA,随后有了各种微调的“羊驼”系列。将ChatGPT复现个七七八八的看起来难度不大,发布之后拿到用户prompt可以持续优化,想必可以更接近ChatGPT。
由于ChatGPT可以适用于非常多的任务,很多人认为 AI 已经迎来拐点。李开复将此前的 AI 定义为 AI 1.0,此后的AI定义为AI 2.0。AI 1.0 中模型适用于单领域,AI 2.0 中模型普适性增强,一个模型可以适合多种任务和场景。在 AI2.0 中基础的大模型(foundation model)是核心技术。
由于有了不少公司发布了类ChatGPT产品以及开源的“羊驼”系列,当前大众对于ChatGPT的发布已经没有之前那么期待,ChatGPT 热潮也会过去,但是背后的大模型技术还将继续发展并发挥巨大作用,并且会跨越领域/学科,不再局限于CV/NLP/ML,会按照AI独有的特点发展。本文旨在探讨ChatGPT背后的大模型技术以及未来的展望。相关应用、生态等方面后面有时间再聊。
大模型 (foundation model)简述
深度学习领域的研究人员有个愿景,就是用神经网络模拟人脑,让一个神经网络可以完成多种任务。这里面包含至少两层意思:一是模型要大,因为人脑的神经元和连接比较大,远大于存在过的网络模型;二是需要神经网络基本不用微调就可以完成多种任务的能力,也即是网络要普适。科研上,这两个方面一直有在尝试。
Andrew Ng 的团队在2012年尝试了利用CPU集群增大神经网络参数量[1],利用无监督的方式来训练了 sparse anto-encoder 网络,优化器采用的是异步SGD,也采用了模型并行。Andrew Ng 团队发现在训练好的模型中有些神经元具有人脸检测、身体检测、猫脸检测的能力,从模型得到的特征也更好。同年,Geoffrey Hinton 带领 Alex Krizhevsky 和 Ilya Sutskever 探索使用 GPU 来训练一个 CNN 神经网络(称为AlexNet),训练方式为有监督训练,网络参数为60M,大幅度提高了 ImageNet 数据集上的分类准确率。准确率比第二名高10个点。AlexNet 的成功验证了大量数据 + 深度学习 + GPU训练的价值,这也开启了深度学习的时代(但是深度学习的起始点一般认为是2006年Hinton那篇用神经网络做维度规约的论文[6])。Andrew Ng 和 Geoffrey Hinton 采用的分布式优化、无监督训练以及GPU训练加速的技术路线后面被继续发扬光大。
AlexNet 之后,TensorFlow、PyTorch 加速了深度学习的发展速度。在深度学习时代网络结构、训练方式、基础设施方面都有了很大的发展。在网络结构方面,出现了基于注意力的 Transformer 网络,这个网络比较普适,NLP、CV领域都得到了广泛的应用,为大模型提供了统一的模型;在训练方式方面,出现了MLM、MIM、MAE等等更好的无监督/自监督学习方式,为大模型利用大量数据提供了可能;在基础设施方面,deepspeed[3][4]、Megatron-LM[2] 等也发展成熟,为大模型的有效训练提供了可能。
借助 deepspeed 和 Megatron-LM,后面不少模型借助这些基础设实现了“大”,比如 BERT 等。这些大模型为理解类的大模型,也就是针对分类、emb等任务设计的。对于这类模型,模型参数多,意味着理解能力更强,performance 更好。由于这类模型不能在任务维度上泛化,一般的使用方式是在大量数据上预训练,然后下游任务数据上微调来使用。也有些模型往“统一”更多任务/模态的方向努力, 比如 BEiT3、Pix2seq。GAN、Stable Diffusion 系列可以在给定文本描述作为提示词,生成和提示词描述匹配的图像。但是真正做到在任务维度具备推广能力只有GPT。为了在任务维度上泛化,需要做到让模型感知到不同的任务,并且以期望的形式输出想要的结果。这个可能只有基于 In-Context Learning (ICL) 的生成式大模型可以做到。ICL 在GPT-2中使用但是在GPT-3中被定义。在ICL中,和任务有关的信息放在前缀(即context)中,模型预测给定context之后的期望的输出。基于这个范式,可以将多种任务用同一个形式表达。只需要将期望完成的任务体现在context即可。文生图以及理解类的模型也可以做的很大,但是执行任务比较单一,本文暂时讨论“大而普适”的模型。
当前 ChatGPT 火的一塌糊涂,让人看到了AGI的曙光,它也拉开了 AI 2.0 的序幕。ChatGPT 的热潮也会过去,但是背后的大模型技术会继续发展,大模型的能力还是进一步提升,本文展望一下后续技术上的发展展望。
技术上的发展展望
ChatGPT 当前已经具备非常多的能力,比如摘要、(文档)问答、输出表格、使用工具、理解输入的图像。在很多传统 NLP 任务上表现也很好,比如 parsing、关键词提取、翻译,也可以非常好的理解人的意图。ChatGPT 已经成为一个执行自然语言指令的计算机。有些任务,比如获取日期、符号计算、图像上的物体检测等,当前 ChatGPT 不太擅长,为了拓展 ChatGPT 的能力,OpenAI 已经基于GPT搭建基于插件的生态系统。让ChatGPT可以调用插件来完成这些任务。在此应用场景下(如下图所示),ChatGPT 已经成为大脑,它负责和用户交互,并将用户的任务分解、调用专用API来完成,然后返回结果给用户。这样人就可以不用直接操作API,可以极大降低人使用AI能力的门槛。这种方式会是未来GPT非常重要的应用形式。我们以这样的应用方式来讨论这种通用大模型能力可能的发展以及与其他领域结合的展望。
GPT 类型大模型自身能力提升
对于GPT类型大模型的研究,基本成为一个针对一个新型计算机的研究,包含如何增加新型能力的研究以及一些理论基础的研究等。基本上是需要提升大模型的“智商”,让它可以更好的执行更多、更高级的任务。总体上,需要提升的能力是能提现“智商”方面的能力,比如知识、语言、推理、规划、创新等等方面。
GPT 模型的理解和改进
对 GPT 的理解包含模型的理解以及使用方式的理解,即 transformer 结构的理解和ICL的理解。
Transformer 模型的理解和改进
由于 transformer 本质上已经成为一个执行自然语言任务的计算机,很自然的问题是为什么transformer 可以做到这一点,基于transformer的 ICL 本质上是在做什么。
在[13]中,deepmind提供了一个工具 Tracr,可以将用RASP代码翻译成 transformer 模型的权重,方便从简单算法开始分析 transformer 如何实现这些算法。[15]中通过构造证明了 looped transformer可以执行迭代算法。将输入划分成 scratchpad、memory 和 instrution 可以帮组理解输入token在transformer这个自然语言计算机中的作用。对于 GPT 中 transformer 的结构分析和理解也可以参考[24],这是Anthropic公司主导的从 circuits [25] 角度分析 transformer 结构的一系列文章合集。从[7]中我们可以看到,FFN 层可以看做存储了训练过程中的知识。由于Transformer 有多个层,每层都是先做 self-attention,然后做FFN。因此 Transformer 可以简略地看做如下的过程:
在self-attention子层,每个 token 查看所有token信息,并从其他token吸收有用的信息。
在FFN子层,每个 token 从存储的知识里面吸收有用的知识。
因此 Transformer 大概可以看做一个知识/信息的迭代“加工”过程,并且这里的知识/信息是经过网络压缩过的。所以,和真实的计算机体系相比较,如下几个概念可能会比较重要
Transformer中缺少了数据/指令区分:当前模型里面指令和数据没有做区分,也就没有可以调用的子函数等等概念,可能基于 modularity network 的概念探索是值得的。比如是否存在某种regularization,使得网络自动演化出来指令和数据的区分。
缺少停机概念:当前模型是固定迭代执行L层,有些复杂任务可能需要自适应迭代更多层,从而可以使用更多计算。这种设计可能也值得探索。
memory太小:初步看起来token相当于memory,FFN层和self-attention层知识类似硬盘。但是当前memory太小导致inference时候缓存空间太小,可能再增加一种memory,扩大可使用的 memory 更适合复杂任务。
ICL 的理解和改进
利用 ICL, GPT实际上将 meta learning表达成了监督学习。常规 meta learning 的 outer loop 是不同任务,inner loop 是任务的监督学习,只是是以 next token prediction 形式来统一所有任务的 loss,如下图所示。这一描述在GPT-3论文中提到,并且定义为:
... “in-context learning”, using the text input of a pretrained language model as a form of task specification: the model is conditioned on a natural language instruction and/or a few demonstrations of the task and is then expected to complete further instances of the task simply by predicting what comes next.
根据context中demonstration sample的数量,可以将ICL可以分成三类:zero-shot ICL、one-shot ICL 和 few-shot ICL。
ICL表示为 meta-learning(图片来源:Language Models are Few-Shot Learners)
基于ICL可以方便的将模型用于多种任务,仅仅是需要将任务需要的信息提供在context中即可。一个令人好奇也比较重要的问题是ICL本质上是在做什么,它的工作机制是什么。这个问题对于模型结构优化、ICL 范式推广到其他领域有指导意义。
在[11] 中验证了,Transformer 结构的模型当以ICL的方式训练,可以发现标准的线性回归算法。也就是在ICL中提供几个样本,训练好的 Transformer 就可以输出和用这几个样本训练得到的线性回归模型来预测相近的结果,也就是在不需要重新训练 Transformer 的前提下,可以直接输出期望的结果。在[16] 中证明了,在一些合理的简化和假设前提下,基于demonstrations 的 ICL 基本可以看做一个 meta optimization 过程,也就是仅仅利用神经网络的前向过程就可以实现对神经网络已有参数上的梯度下降。[11] 和 [16] 都是基于 ICL 中有 demonstration 样本来做的探索。没有 demonstration 的ICL 可能是利用FFN层存储的信息来执行类似有 demonstration 的操作。
ICL 的机制理解,尤其是无 demonstration 样本的工作机制理解对于提升设计更好的prompt以及模型结构优化有帮助。可能需要考虑如何针对ICL优化是 Transformer 模型结构优化的一个可能的切入点。
一些比较有趣的问题列举如下:
基于ICL范式的智能上限是什么?ICL性能影响因素是设么?基于ICL的数字推理在发展,但是好像基于ICL的规划,比如下棋、策略、游戏,好像没有公开的文章讨论。是否可以在给GPT游戏规则描述之后,让GPT学会玩游戏?感觉可以从文字类游戏开始探索。
除了ICL,执行多任务是否有其他范式?
涌现能力的理解和探索
涌现能力是指随着模型的参数量增大,有些能力突然出现的现象[8]。大模型有些任务指标是可以利用 scaling law 从小模型的训练结果来预测,比如 ppl。但是有些任务不可以用scaling law 来预测。当前发现的涌现能力可以参考如下的表格。另外,[33]中总结了137个涌现能力。由于有涌现现象的存在,有时候利用小模型来预测大模型的性能是有问题的。
涌现能力举例(图片来源:Emergent Abilities of Large Language Models)
智能涌现的原因暂时还没有得到完美的解释。但是可以借鉴在简单问题上的分析来理解涌现能力。比如,[9]中分析了小模型上模加(modular addition)任务上出现的顿悟能力。在这个任务上,训练过程中测试误差在训练过程中会突然下降,也就是泛化能力突然增强,看起来像是神经网络“顿悟”了。
顿悟现象:训练过程先是过拟合,然后泛化,看起来是模型突然“顿悟”了。(图片来自:Progress measures for grokking via mechanistic interpretability)
为了解释这种现象,作者基于逆向实验分析将训练大概分成3个阶段,分别是memorization, circuit formation, and cleanup。在 memorization 阶段神经网络主要是记住训练的样本,在 circuit formation 阶段神经网络主要是形成一些有用的子结构,这些子结构可以提升泛化性能,在 cleanup 阶段主要是清理到记忆的训练样本。顿悟是发生在 circuit formation 之后。针对大模型的涌现能力,一个可能的猜想是:有用的子结构需要占用比较多的参数,因此需要在模型规模达到一定程度才能出现。更深入和细致的分析可能会带来模型结构以及训练正则方面的优化,可能会降低涌现能力需要的最小参数量,让小的模型也具备当前大的模型的能力。
推理、规划能力方面的发展
GPT 当前已经具备一定的推理能力,推理能力当前还非常依赖 ICL 里面prompt的内容和形式,尤其是依赖CoT。使用方法还是在prompt里面展示几个例子给模型,激发模型对于这种类型问题知识提取,以帮助解决问题。当前 Google Brain 的 Denny Zhou对于大模型的推理研究比较多,他们提出了 chain of thought、self consistency 等,也对ICL有一些理论分析。但是 CoT 的存在本身可能说明当前大模型还不太完善。因为训练数据里面有类似CoT的这些例子。理想一点,模型应该自动“回忆”起来完成这个任务需要的例子,而不是让用户输入。
长远目标可能是让大模型具有推理、规划能力,提升大模型心智能力水平,以使得大模型具备策略类能力。比如为用户自动规划行程(尤其是带有约束条件)、针对某些问题给出策略、将用户任务分解为插件可以执行的子任务、证明数学定理等,可以极大提升大模型的普适程度。提升推理能力,专门针对代码问题训练可能会提升大模型的推理能力,但是这个判断的依据并未在论文里面找到。
针对推理能力,有趣问题包括 GPT 模型是否具备产生推理能力的基础、上限在哪里。在 [21][22] 中 Ilya Sutskever 带领团队也尝试利用GPT做定理证明,基于 GPT 的生成模型结果还算可以,暂时还没有十分惊艳的结果出现,可能原因是定理证明数据偏少,也可能是 GPT 模型自身结构缺乏针对推理的专门设计,比如探索普适性的 value function。上限的探索可能需要更难的任务,比如棋类。理想一点的目标是 GPT 在给定一个新游戏的规则之后,可以快速学会。
多模态方面的发展展望
大脑是多模态的。多模态可以帮助帮助模型理解更快一点。当前已有的多模态GPT有Flamingo、Kosmos-1等,用GPT生成图像可以参考iGPT[23]。GPT-4已经可以做到理解输入中的图像。很多人猜想可能未来会支持在输出中增加图像生成的能力。这样模型的输入和输出均为多模态。这个功能可以利用插件支持,并且需要让GPT模型做到one-step生成高质量图像也需要做很多优化,可能支持起来不是很容易。收益是支持复杂空间指令等支持。可以将 GPT生成的图像再用 midjourney 精修。可能在输入端增加对视频/音频的支持性价比更高一点。
当前用一个模型来统一各CV和NLP的各种任务是大的趋势,基本的框架应该还是基于ICL,用命令去控制执行那个任务。在CV领域,可能难点是如何设计自监督学习方法以及 如何将多种任务统一到 next token prediction 的框架上来。比如Segmentation 任务就不太容易纳入到这个框架中。当前已经有工作,比如 SegGPT[31] 和 Segmenta Anything[32] 在朝着用ICL来统一的方向演化。全部任务大一统可能需要一段时间。当前可能会是用ICL逐步统一CV和多模态任务,然后统一到GPT。但是也需要考虑GPT自身能力和被调用API/插件能力的分界面在哪里。把所有东西都放在GPT里面可能不一定是必要的。
学习编程
代码生成是当前GPT一个比较常见的应用,已有的产品比如copilot,已经可以作为程序员助手。但是
当前用GPT生成code的方法中好像都还没有使用语言的定义、描述解释等。对于机器来说,给这样的信息可能会节省训练数据。另外,如果可以利用解释器、编译器的反馈,让GPT一直持续学习可能会学会语法。比如把python语言语法定义作为context,让GPT和python解释器一直交互,让GPT在各种算法问题上训练,可能会生成质量更好的python代码。长远一点的目标可能是让GPT快速学会用常见语言编程解决新问题。
这方面最新的论文是Self-Debug[42](2023-04-11),来自 Denny Zhou 组。做法是用GPT生成代码的解释,然后迭代地将代码逐行解释、执行反馈送给model生成代码,直到执行正确。当前暂时没有使用文法,目标暂时是专门的任务,还不够通用。
self-debug。图来自 Teaching Large Language Models to Self-Debug
学习使用外部工具
让GPT学会使用工具已经是业界正在尝试的方法[26,27,28,29],openai也在建立了以插件为基础的生态。可能也会是未来主要的使用方式。HuggingGPT[29]利用特殊设计的 prompt 将用户输入的任务分解成已经基于huggingface模型的子任务,以及子任务间的依赖关系。然后 根据依赖关系执行子任务,并用GPT来综合子任务结果来生成response。TaskMatrix.AI[28]是一个更general的框架,它基于RLHF来对齐GPT和API,对于API数量没有限制。当前 HuggingGPT 更实用一些。但是未来的应用模式应该是类似TaskMatrix.AI 的模式,因此如何准确地将用户任务分解成子任务的能力未来更重要一些。
另外最新有意思的项目是babyAGI[43]和AutoGPT[44],留在后面文章讨论。
GPT 类大模型的安全问题
当前普遍使用的方式是用3H(Helpful, Honest, Harmless)原则来让大模型和人的普世价值对齐。这方面Anthropic发表了不少论文。但是在其他方面也存在安全问题。
指令/prompt权限问题
“能力越大,责任越大”,大模型见过的知识可能大于任何一个人,能做出的行为可能也不能做到完全在掌控中。在实际部署的 BING 中,GPT被设置了很多前置prompt,用于约束大模型行为[30]。比如可以用下图的方法来获取全部的前置prompt(全部泄露的prompt可以访问[30])。另外,也会有人尝试覆盖这些前置 prompt,这会导致用户权限提升,引发大模型执行预期之外的行为。当前“如何制作毒品”、“如何制作甲基苯丙胺”这样的问题是可以被识别并拒绝回答,但是如何通过 prompt 来提升权限绕过已经设置好的限制会是攻击者比较感兴趣的问题。因此,当前大模型已经基本成为一个执行自然预言指令的计算机的前提下,安全方面的问题也可以借鉴传统计算机里面的安全构架来设计,比如如何设置指令/prompt权限级别,如何限制用户访问特权指令/prompt等等。这方面暂时还没有看到公开论文。
New Bing中导致prompt泄露的攻击方法。
调用方隐私问题
在员工使用 ChatGPT 的时候非常容易把敏感数据发送到openai的服务器,如果后续用于模型的训练也可能会被其他用户“套”出来。比如三星数据泄露事件。由于ChatGPT用于交互的信息显著多余搜索,因此使用ChatGPT造成的敏感信息泄露风险也远大于使用搜索引擎。如何保证用户发送的数据的安全,需要结合密码学协议。针对大模型的场景,猜测后续可能会出来开放的协议来保证调用者的数据不被服务提供方记录。
将 ICL 用于其他领域
决策大模型
GPT的思路是基于ICL在任务维度上的推广,并且生成是文本。但是实际中,很多场景需要的是决策,也就是面对一个场景做出相应的动作。在这方面可能理想一点的情况是给大模型描述好任务规则,候选输出的动作,让模型在没有见过的任务上做出好的决策。这里的难点可能是有些任务规则和达到目标路径也比较复杂,可能需要先在游戏领域内尝试,然后推广到非游戏领域。
Gato [36] 做到了用一个生成式模型来完成多种游戏任务和vision & language 任务。由于context window size 仅仅是1024,对于新任务 Gato采取的方式是微调。
[35] 是大概同时期的工作,也是用transformer来完成多种游戏任务(在41个Atari游戏上训练)。但是没有显式考虑ICL。AdA[37] 是第一个明确用ICL来让 RL agent 具备快速适应能力(rapid in-context adapataion)的工作。AdA在XLand 2.0环境中训练,它可以提供个任务。因此 AdA 训练的任务非常多,这点类似GPT系列的训练。在完全没见过的任务上表现比人稍好。当前AdA用的环境和任务还相对实际任务还是比较单一和简单。在更多复杂任务上训练之后,可能会更强。到时候可能会有普适的 value 网络。
AdA中的agent结构。图来自:Human-Timescale Adaptation in an Open-Ended Task Space
具身智能
将 GPT和 embodied intelligence 结合并让GPT装进硬件中让GPT可以控制身体执行指令是非常令人向往的尝试。在这样的场景下,需要GPT理解多模态输入,理解指令动作之间的关系,需要具备一定planning能力。在PaLM-e[38]中,使用常见vision & language 数据以及多个机器人操作任务数据训练模型,机器人具备planning能力。[39]直接用LLM生成code来控制机器人。在具身智能方面,可能让人激动是可用的人形机器人产品的出现。
总结
ChatGPT带来了AI模型使用方式的改变,让人可以用自然语言让机器执行各种任务变成现实,为AGI带来了曙光。ChatGPT 改变了人机交互的方式,大大降低了人使用AI的门槛。后面的人类使用机器的方式也可能会变成人和GPT交互,然后GPT负责和其他机器交互。AI能力的提升和新的交互方式的出现,也会激发新的应用方式,改变旧的工作流程,从而带来新的业务和新的商业机会。比如游戏NPC、虚拟人大脑、GPT律师、GPT医生、个人助手等等方面。AI的“文艺复兴”可能真的要来了。
-
模型
+关注
关注
1文章
3158浏览量
48700 -
应用程序
+关注
关注
37文章
3240浏览量
57593 -
ChatGPT
+关注
关注
29文章
1548浏览量
7466
原文标题:参考文献
文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论