ChatGPT技术解构与思考

更新日志


2023-07-03

  • 增加3.2中,第6)部分 关于ChatGPT 函数调用(function calling)的内容:开发者可以使用 OpenAI 的 API 自己实现完整的插件功能
  • 增加3.2中,第7)部分 关于以ChatGPT/GPT4等LLM为核心的自治代理系统(Autonomous Agent)的内容

2023-04-12

  • 增加2.2.5 中,文章34关于产生涌现能力的另一种猜想:子任务的「渐进」构成整体任务的「涌现」
  • 增加3.1中,关于ChatGPT plugin生态(使用工具的智能)和HuggingGPT调用多专家模型内容
  • 修正3.3章节中,实现时间资源成本因增加「直接预训练」后的序号错误问题

2023-03-15

  • 结合文献28~31,增加2.2.5中 GPT4最新进展和升级,关于GPT4更详细内容可以移步:关于GPT-4的十问十答

2023-03-14

  • 增加2.2.5 中,结合文献23,增加涌现能力存在于各个学科,以及观测会影响其体现的观点
  • 增加2.2.5 中,关于 加大模型规模研究人类反馈 两条路径对比和说明
  • 结合文献25甲子光年的报告,增加3.1 场景应用图、3.4信息革命图、3.5国内大模型现状
  • 增加3.4中Kosmos-1
  • 结合ChatGPT API后涌现的应用,增加3.1 应用案例

2023-03-04

  • 增加2.2.5 中,GPT3.5前发展进程的图表简述;增加ChatGPT「自身能力的认知」的进化观点,参考邱老师讲座
  • 更新3.1 第4点中,「自身升级」中New Bing的升级
  • 增加3.2 第4点「安全和监管」内容,融合部分面向安全线分享的调研内容
  • 新增3.4 「未来」内容
  • 更新 ChatGPT API和成本相关内容
  • 其他:部分缩进格式修正

2023-02-21

  • 新增3.5 「写在最后」内容

2023-02-15

  • 新增2.2.6 「从ChatGPT的成功看大型语言模型的构建思路」,融合文献16的观点

2023-02-11

  • 增加2.2.5中,ChatGPT的形成顺序图,并结合 大型语言模型(LLM)的使用和思考 中大模型对推理能力的学习,推测ChatGPT涌现能力的来源
  • 增加3.3「借鉴和使用」中,预训练层面利用的阐述

2023-02-06

  • 新增文章写作出发点的相关前言

2022-12-22

  • 新增2.2.5 ChatGPT的进化历程
  • 新增附录1-中英文术语对照表

2022-12-08

  • 修正2.1章节中对于ChatGPT推测的训练数据量级
  • 发表文章

前言

   本文首发在腾讯云开发者公众号 https://mp.weixin.qq.com/s/QA8ZOtCDP1X2EKzpZCY0RA 、知乎号 https://zhuanlan.zhihu.com/p/591122595 号中,发表为最初版本,此文进行实时更新,持续增加新的认知;该文获得司内年度知识奖


1.ChatGPT简介

1.1 ChatGPT是什么

   ChatGPT本质是一个对话模型,它可以回答日常问题、进行多轮闲聊,也可以承认错误回复、挑战不正确的前提,甚至会拒绝不适当的请求,在去除偏见和安全性上不同于以往的语言模型。ChatGPT从闲聊、回答日常问题,到文本改写、诗歌小说生成、视频脚本生成,以及编写和调试代码均展示了其令人惊叹的能力。

  在上周公布博文和试用接口后,ChatGPT很快以令人惊叹的对话能力“引爆”网络,本文主要从技术角度,通过解构ChatGPT背后涉及的技术工作,来阐述其如此强大的原因;同时深入思考其对我们目前的实际工作和方法论的改变,包括可复用和可借鉴之处。

1.2 ChatGPT的技术背景

  ChatGPT目前未释出论文文献,仅释出了介绍博文和试用demo,但从博文中提供的技术点和示意图,可以看出与年初公布的InstructGPT 核心思想一致,其关键能力来自三个方面:强大的基座大模型能力(InstructGPT),高质量的真实数据(干净且丰富),稳定的强化学习(PPO算法)。
以上是ChatGPT成功的三个要素,具体将在文中第2部分详细展开。

1.3 ChatGPT的主要特点

  ChatGPT的优点令人惊叹:

  1)强大的语言理解和生成系统;对话能力、文本生成能力、对不同语言表述的理解均很出色,以对话为载体可以回答多种多样的日常问题(同时对于多轮对话历史的记忆能力和篇幅增强):

  2)全面的回答和渊博的知识;与GPT3等大模型相比,ChatGPT回答更加全面,可以多角度全方位进行回答和阐述,相较以往的大模型,知识被“挖掘”的更充分;

  • 直接给出一篇多角度、全方位的提纲:
  • 对于一个问题,多角度展开:

  3)降低人类学习成本和节省时间成本;可以满足人类大部分日常需求,比如快速为人类改写确定目标的文字、大篇幅续写和生成小说、快速定位代码的bug等;

  • 目标改写:

  • 续写小说(当然续写对于普通LM也不是难事,“一本正经的胡说八道”):

  • 代码debug:

  4) 具有安全机制和去除偏见能力;这类问题在以前的大模型中时常出现,ChatGPT在这两点上增加了过滤处理机制,针对不适当的提问和请求,它可以做出拒绝和“圆滑”的回复。

  • 对于违法行为的提问:
  • 对于未知事物的“拒绝”:

  当然ChatGPT并非十全十美,其缺点也比较明显

  1)简单的逻辑问题错误依旧明显存在,发挥不够稳定(但总体比GPT3好很多),特别在有对话历史时,容易被用户误导而动摇;

  2)ChatGPT有时会给出看似合理、但并不正确或甚至荒谬的答案。部分答案需要自行甄别才能判断正误,特别当本身用户处于未知状态来咨询模型时,更加无法判断真伪;(强化学习训练期间不会区分事实和错误)

  • 对于不知道《观沧海》诗歌的人,很容易被误导。

  ChatGPT使得生产者可以用较低成本增加错误信息,而这一固有缺点已经造成了一些实际影响。编程问答网站 StackOverflow 宣布暂时禁止用户发布来自 ChatGPT 生成的内容,网站 mods 表示:看似合理但实际上错误的回复数量太多,已经超过了网站的承受能力;

  3)抵抗不安全的prompt能力较差,ChatGPT对于提问方式比较敏感,一些不安全或有偏见的问题,用户通过改变提问方式即可绕过审核,回答继而会表现出偏见;

  4)过分猜测用户意图,主要体现在当用户提问意图不明确时,ChatGPT会猜测用户意图,理想情况应为要求用户澄清;此时当用户意图不明确时,很大概率给出不合适的回复;

  5)部分回复废话较多,句式固定;通常过度使用一些常见的短语和句式,这与构造训练数据时,用户倾向于选择更长的回复有关。

  • 简单的问一个算式结果,ChatGPT回答较啰嗦:

2. ChatGPT的工作原理

2.1 ChatGPT的训练过程

  ChatGPT训练过程很清晰,主要分为三个步骤,示意如图所示:

Step1:

  使用有监督学习方式,基于GPT3.5微调训练一个初始模型;训练数据约为2w~3w量级(感谢goethe同学指正,此处仅为推测量级,是我们根据兄弟模型InstructGPT的训练数据量级估算的,后者详情可参阅https://arxiv.org/pdf/2203.02155.pdf P33 Table6,真实数据以ChatGPT公布结果为准),由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据;值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。

  以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。经过第一步,微调过的GPT3.5初步具备了理解人类Prompt所包含意图的能力,可以根据不同意图给出高质量的回答

Step2:

  收集相同上文下,根据回复质量进行排序的数据:即随机抽取一大批Prompt,使用第一阶段微调模型,产生多个不同回答:$ (P,a_1), (P,a_2), (P,a_3) … (P,a_k)$ ,之后标注人员对$k$个结果排序,形成$ C_{k}^{2} $组训练数据对,使用pairwise loss来训练奖励模型,从而可以预测出标注者更喜欢哪个输出,”从比较中”学习可以给出相对精确的奖励值。

  这一步使得ChatGPT从命令驱动转向了意图驱动,用李宏毅老师的原话,它会不断“引导GPT说人类要他说的”。训练数据不需过多,维持在万量级即可,因为它不需要穷尽所有的问题,只是要告诉模型人类的喜好,强化模型意图驱动的能力。

Step3:

  使用PPO强化学习策略来微调第一阶段的模型。核心思想是随机抽取新的Prompt,用第二阶段的Reward Model给产生的回答打分,这个分数即回答的整体reward;进而将此reward回传,由此产生的策略梯度可以更新PPO模型参数;整个过程迭代数次直到模型收敛。

  强化学习算法可以简单理解为通过调整模型参数,使模型得到最大的奖励(reward),最大奖励意味着此时的回复最符合人工的选择取向。
而对于PPO,我们知道它是2017年OpenAI提出的一种新型的强化学习策略优化的算法即可。它提出了新的目标函数,可以在多个训练步骤实现小批量的更新,其实现简单、易于理解、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练。

  以上三个步骤即ChatGPT的训练过程,合称为文献中提到的RLHF(Reinforcement Learning from Human Feedback)技术。

2.2 ChatGPT为何成功?

  为何三段式的训练方法就可以让ChatGPT如此强大?其实,以上的训练过程蕴含了上文我们提到的关键点,而这些关键点正是ChatGPT成功的原因:

  • 强大的指令学习能力(InstructGPT);
  • 大规模参数语言模型(GPT3.5);
  • 高质量的真实数据(精标的多轮对话数据和比较排序数据);
  • 性能稳定的强化学习算法(PPO算法)

  我们需要注意的是,ChatGPT的成功,是在前期大量工作基础上实现的,非凭空产生的“惊雷”。

2.2.1 InstructGPT

  ChatGPT是InstructGPT的兄弟模型(sibling model),后者经过训练以遵循Prompt中的指令,提供详细的响应。InstructGPT是OpenAI在今年3月在Training language models to follow instructions with human feedback文献中提出的工作,整体流程和以上的ChatGPT流程基本相同,除了在数据收集和基座模型(GPT3 vs GPT 3.5),以及第三步初始化PPO模型时略有不同。

  此篇可以视为RLHF 1.0的收官之作。一方面,从官网来看,这篇文章之后暂时没有发布RLHF的新研究,另一方面这篇文章也佐证了Instruction Tuning的有效性。

  在InstuctGPT的工作中,与ChatGPT类似,给定Instruction,需要人工写回答。首先训练一个InstructGPT的早期版本,使用完全人工标注的数据,数据分为3类:Instruction+Answer,Instruction+多个examples和用户在使用API过程中提出的需求。从第二类数据的标注,推测ChatGPT可能用检索来提供多个In-context Learning的示例,供人工标注。剩余步骤与以上ChatGPT相同。

  尤其需要重视但往往容易被忽视的,即OpenAI对于数据质量和数据泛化性的把控,这也是OpenAI的一大优势:

  1)寻找高质量标注者:寻找在识别和回应敏感提示的能力筛选测试中,表现良好的labeler;

  2)使用集外标注者保证泛化性:即用未经历以上1)步骤的更广大群体的标注者对训练数据进行验证,保证训练数据与更广泛群体的偏好一致。

  在完成以上工作后,我们可以来看看InstuctGPT与GPT3的区别,通过下图可以明显看出:

  GPT3的回答简短,回复过于通用毫无亮点;而InstructGPT“侃侃而谈”,解释自由主义为何愚蠢,显然模型学到了对于此类问题人们更想要的长篇大论的回答。

  GPT3只是个语言模型,它被用来预测下一个单词,丝毫没有考虑用户想要的答案;当使用代表用户喜好的三类人工标注为微调数据后,1.3B参数的InstructGPT在多场景下的效果超越175B的GPT3:

  InstuctGPT的工作具有开创性,它在“解锁”(unlock)和挖掘GPT3学到的海量数据中的知识和能力,但这些仅通过快速的In-context的方式较难获得;可以说,InstuctGPT找到了一种面向主观任务来挖掘GPT3强大语言能力的方式。
OpenAI博文中有这样一段原话:

1
This technique uses human preferences as a reward signal to fine-tune our models, which is important as the safety and alignment problems we are aiming to solve are complex and subjective, and aren’t fully captured by simple automatic metrics.

  当中提到很关键的一点, 当我们要解决的安全和对齐问题是复杂和主观,而它的好坏无法完全被自动指标衡量的时候,此时需要用人类的偏好来作为奖励信号来微调我们的模型。

2.2.2 InstuctGPT的前序工作:GPT与强化学习的结合

  再往前回溯,其实在2019年GPT2出世后,OpenAI就有尝试结合GPT-2和强化学习。在NeurIPS 2020的Learning to Summarize with Human Feedback工作中,OpenAI在摘要生成中,利用了从人类反馈中的强化学习来训练。可以从这篇工作的整体流程图中,看出三步走的核心思想: 收集反馈数据 -> 训练奖励模型 -> PPO强化学习。

  RLHF第一阶段,针对多个候选摘要,人工排序(这里就体现出OpenAI的钞能力,按标注时间计费,标注过快的会被开除);第二阶段,训练排序模型(依旧使用GPT模型);第三阶段,利用PPO算法学习Policy(在摘要任务上微调过的GPT)。

  文中模型可以产生比10倍更大模型容量更好的摘要效果。但文中也同样指出,模型的成功部分归功于增大了奖励模型的规模,而这需要很大量级的计算资源,训练6.7B的强化学习模型需要320 GPU-days的成本。

  另一篇2020年初的工作,是OpenAI的Fine-Tuning GPT-2 from Human Preferences工作,同样首先利用预训练模型,训练reward模型;进而使用PPO策略进行强化学习,整体步骤初见ChatGPT的雏形。

  而RLHF(reinforcement learning from human feedback )的思想,是在更早的2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences工作提出,核心思想是利用人类的反馈,判断最接近视频行为目标的片段,通过训练来找到最能解释人类判断的奖励函数,然后使用RL来学习如何实现这个目标。

  可以说,ChatGPT是站在InstructGPT以及以上理论的肩膀上完成的一项出色的工作,它们将LLM(large language model)/PTM(pretrain language model)与RL(reinforcement learning)出色结合,证明这条方向可行,同时也是未来还将持续发展的NLP甚至通用智能体的方向。

2.2.3 PPO

  PPO(Proximal Policy Optimization) 一种新型的Policy Gradient算法(Policy Gradient是一种强化学习算法,通过优化智能体的行为策略来解决在环境中实现目标的问题)。我们只需了解普通的Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。

  而PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。由于其实现简单、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练等优势,近年来收到广泛的关注,同时也成为OpenAI默认强化学习算法。

2.2.4 WebGPT和CICERO

  其实近两年,利用LLM+RL以及对强化学习和NLP训练的研究,各大巨头在这个领域做了非常多扎实的工作,而这些成果和ChatGPT一样都有可圈可点之处。这里以OpenAI的WebGPT和Meta的Cicero为例。

  WebGPT是2021年底OpenAI的工作,其核心思想是使用GPT3模型强大的生成能力,学习人类使用搜索引擎的一系列行为,通过训练奖励模型来预测人类的偏好,使WebGPT可以自己搜索网页来回答开放域的问题,而产生的答案尽可能满足人类的喜好。

  Cicero是Meta AI上个月发布的可以以人类水平玩文字策略游戏的AI系统, 其同样可以与人类互动,可以使用战略推理和自然语言与人类在游戏玩法中进行互动和竞争。Cicero的核心是由一个对话引擎和一个战略推理引擎共同驱动的,而战略推理引擎集中使用了RL,对话引擎与GPT3类似。

  正如Meta原blog中所说:

1
The technology behind CICERO could one day lead to more intelligent assistants in the physical and virtual worlds.

  而以上也是我们未来力求突破的方向和愿景:一个真正全方位智能的文字助手。

(12-22更新)

2.2.5 ChatGPT进化历程

  最近阅读Yao Fu的两篇关于LLM进化历程,以及LLM Emergent Ability (突现能力)相关的blog,启发良多,此处推荐这两篇有价值的blog:
https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tracing-Emergent-Abilities-of-Language-Models-to-their-Sources-b9a57ac0fcf74f30a1ab9e3e36fa1dc1
https://yaofu.notion.site/A-Closer-Look-at-Large-Language-Models-Emergent-Abilities-493876b55df5479d80686f68a1abd72f

(2023-03-15更新)

  GPT1~GPT3主要靠增加模型参数量和数据量,通过无监督方式来得到基建语言模型。GPT3.5之后开始聚焦数据质量、场景和训练方式,通过有监督方式进行指令学习;最新出炉的GPT4,是在ChatGPT基础上,扩充了训练数据源,包含了正误数学问题、强弱推理、矛盾一致陈述及各种意识形态的数据,整体和ChatGPT区别不大,主体依旧是RLHF;不过值得注意的一点是,在事实性和安全性问题解决中,后训练过程是提效的关键,单纯GPT-4模型提升不明显,而经过后训练过程即特定信号的RLHF之后,GPT-4在生成模型固有的局限性上改善显著,其他具体细节没有更多公布。

  GPT4和ChatGPT相比主要的优势是:

    ● 能力升级:回答更可靠、更有创意并可以处理更细微的指令,这在多类考试测验中以及与各LLM任务比较中得到;

    ● 风格自有控制:“系统”自发Prompt,让模型可以按照规定风格个任务回复;

    ● 局限性改善:幻觉问题显著减轻,比最新的 GPT-3.5 模型高 40%;RLHF 训练中加入额外的安全奖励信号(奖励由 GPT-4 的zero-shot分类器提供),不安全内容下降82%;

    ● 训练行为预测:此点值得重视,因为LLM参数量过多,广泛调参不可行,可以用较小模型提前预测训练行为和loss,可以极大提升训练效率,降低训练成本

    ● 建立LLM测试标准:开源OpenAI Evals,创建和运行基准测试的框架,对GPT-4等模型进行评估,以此进一步帮助模型改进;

    ● 专用超算:OpenAI和微软合作,在Azure重建了深度学习堆栈,从头设计了一台专用超级计算机。

  整体合为下面一张ppt:

  回到GPT3.5出现之前,此处其实有两条路可以往下走:一是继续加大模型规模;另一条路是更聚焦的训练方式;第一条路数据相比算力,反而成为了瓶颈,根据OpenAI 2020的结论,计算预算增加 10 倍,数据集大小应增加约 1.83 倍,模型大小应增加 5.48 倍;Deepmind 2022年Chinchilla的作者发现,数据和模型大小应该按相等比例缩放。如按照GPT-3使用来自 Common Crawl 的45 TB数据估算,要训练一个100万亿参数的模型需要 180 PB 数据(下限),而Common Crawl 的整体大小约为12 PB:

  第一条路显然过于“夸张”,于是OpenAI开始探索第二条路:更好的训练方式,设计更贴近人类需求的真实任务,而非纯单词预测;这就是GPT 3.5之后的整体逻辑,而RLHF的方法得到了验证,原作者也提到,预算分配给人类反馈数据可能比计算更有意义,我们从InstructGPT中下图也可以看到,经过PPO的1.3B的模型,效果已超出微调的175B的模型,而模型参数减少了100倍;这意味着在正确类型的数据上进行训练,比简单地将模型规模扩大(比如扩大100倍)的价值要大得多。

  此处借用以上文献的表格供大家参考:

能力 OpenAI模型 训练方法 OpenAI API OpenAI论文 近似的开源模型
GPT3系列
语言生成
+ 世界知识
+ 上下文学习
GPT-3初始版本
大部分的能力已经存在于模型中,尽管表面上看起来很弱。
语言建模 Davinci GPT3论文 Meta OPT
+ 遵循人类的指令
+ 泛化到没有见过的任务
Instruct-GPT初始版本 指令微调 Davinci-Instruct-Beta Instruct-GPT论文 T0论文
Google FLAN论文
+ 代码理解
+ 代码生成
Codex初始版本 在代码上进行训练 Code-Cushman-001 Codex论文 Salesforce CodeGen
GPT3.5系列
++ 代码理解
++ 代码生成
++ 复杂推理 / 思维链
+ 长距离的依赖 (很可能)
现在的Codex
GPT3.5系列中最强大的模型
在代码+文本上进行训练
在指令上进行微调
Code-Davinci-002
(目前免费的版本 = 2022年12月)
Codex论文
++ 遵循人类指令
- 上下文学习
- 推理能力
++ 零样本生成
有监督的Instruct-GPT
通过牺牲上下文学习换取零样本生成的能力
监督学习版的指令微调** Text-Davinci-002 InsructGPT论文 有监督部分 T0论文
Google FLAN论文
+ 遵循人类价值观
+ 包含更多细节的生成
+ 上下文学习
+ 零样本生成
经过RLHF训练的Instruct-GPT
**和002模型相比,和人类更加对齐,并且更少的性能损失
强化学习版的指令微调** Text-Davinci-003 InsructGPT论文 从人类反馈中学习 Deepmind Sparrow
AI2 RL4LMs
++ 遵循人类价值观
++ 包含更多细节的生成
++ 拒绝知识范围外的问题
++ 建模对话历史的能力
– 上下文学习
ChatGPT
** 通过牺牲上下文学习的能力换取建模对话历史的能力**
使用对话数据进行强化学习指令微调** Deepmind Sparrow
AI2 RL4LMs

(2023-02-11更新)

  以上我们可以更清晰的总结为下图(参考文献14提供,此文献可以帮助对于LM了解较少的同学,从0了解ChatGPT的形成):

  可以看出ChatGPT强大的涌现能力(模型举一反三、领域外迁移、强泛化能力等),来源于:

    ● 代码微调:Code-davinci-002模型在代码上有过微调;一种合理的解释是,「“代码”是一种建立在具备高度抽象性和逻辑性的思维模式下的“语言”」,海量代码使模型逐渐掌握代码背后的抽象能力逻辑能力,函数之间的调用关系本质上是将复杂问题拆解为多个小问题来组合解决,引入代码数据来训练模型能够有效提升模型的思维链能力,该技术也被认为是打破scaling law的关键,进而涌现出ChatGPT上感受到的“智能”;

    ● 指令学习:InstructGPT(GPT-3 text-davinci-002)中的supervised instruction tuning;此条通过对比实验得到,因为text-davinci-001没有推理能力,而经过指令学习的 text-davinci-002有较好的推理能力,Google的PaLM也是如此;指令学习构造了更符合自然语言形式的训练数据,在提升语义建模能力的同时,也提升了模型在多种未知下游任务(OOD,out of distribution)的泛化能力;

    ● CoT微调(GPT-3 text-davinci-002)进行CoT数据微调后,LLM倾向于拥有Emergent Abilities;ChatGPT没有公开进行过此类的微调,但推测数据中可能有CoT的数据;至少在PaLM关于CoT数据的结论出现后,OpenAI有理由做出参考。

(2023-03-14更新)

  事实上,涌现能力存在于各个学科,蚂蚁社群、神经网络、免疫系统、互联网乃至世界经济,但凡一个过程的整体行为远比构成它的部分复杂,均可称为“涌现”现象,用最常见的水固化例子来解释,临界温度时,水液相系统的行为发生急剧变化,水将进入固相(冰,支配系统行为的规律发生了质的变化,LLM也经历了此类质变,此处作为尺度的是函数

  文献23同时提出另一个观点,此类涌现能力,与我们观测不够全面也有关。比如当评估指标不连续,且不提供“接近度”的概念时,涌现能力显现很明显;(非0即1,如击中 vs 不击中);但如果增加衡量连续性(如对比不击中1cm内 vs 不击中1m),会发现随着模型增加,能力的增加是随着参数规律上涨的,非“涌现”:

  所以,ChatGPT及相关LLM的涌现能力的出现原因和特性,需要更精细的观测和研究

  在最近的文章34中,张俊林提出的另外一个猜想是,涌现能力一般出现在复杂任务(逻辑推演、数学运算等),此类任务由多个子任务(多步骤)构成,子任务一般是“循序渐进”的,符合scaling law,而当子任务汇集成最终的整体任务,完成整体目标时,凸显出涌现能力,文中以国际象棋中的“合法移动”(子任务)和最终的“将死”(整体目标)举例;另外,也提出了用Grokking现象来解释涌现能力,即不同规模模型学到好的表征,需要数据量会越来越少,但此条为作者尝试解读思想,感觉合理性尚需论证,感兴趣的同学可以阅读文章34。

(2023-03-04更新)

  另外一种很有启发性的观点来自于参考文献17及邱锡鹏教授的讲座中,其通过模型对自身能力的认知来阐述ChatGPT相比GPT3模型的能力发展。具体可抽象为下图:

  模型能力分为四个部分:know knowns(知道自身掌握的知识,比如我知道自身对文本生成知识比较了解)、know unknowns(知道自己没掌握的知识,比如我知道自身对图像生成知识欠缺了解)、unknow knowns(不知道自己已经掌握了的知识,比如我触类旁通的掌握了模型压缩知识,但没有实际使用未发觉)、unknow unknowns(自身根本不知道有这些知识,掌握更无从谈起;比如我根本不知道三体这个问题的存在,更无从谈对其的了解和认知,此部分一般是个人认知的最大瓶颈

  以上三项来源,显然CoT通过思维链能力,发掘了模型自身潜在掌握的知识,即unknow knowns,此部分知晓后扩充至know knowns;而指令学习让模型对自身掌握/未掌握的认知更加明确,即扩大了know knowns和know unknowns的范围;而关于伦理道德等的部分,通过人工反馈学习,主动增加至know unknowns部分;最后此消彼长,核心在降低unknow unknowns的比重;可以说,模型和人类一样,unknow unknowns比例越低,智能化程度越高,对自身的认知也越清晰

(0304更新止)

  从OpenAI官方接口中ChatGPT的模型代号为text-chat-davinci-002也可以看出其为text-davinci-002的分支,可惜目前text-chat-davinci-002-20221122和text-chat-davinci-002-20230126两个模型都被官方ban掉了。

  ChatGPT的API接口在3月1号“千呼万唤始出来”:调用方式和GPT3.5模型类似:调用Completion类(此处为ChatCompletion)create方法,指定模型名gpt-3.5-turbo即可:https://platform.openai.com/docs/guides/chat ; 让人吃惊的是,成本仅为GPT3.5模型的1/10,为每1000个tokens(约750个words)0.002美元,如此相对低廉的成本,让人不禁怀疑如此强大的ChatGPT在RLHF的加成下,公开的版本是否只是百亿模型;或者此次开放的API,是否在模型加速和成本优化方面又是一次大的提升。

(2023-02-15更新)

2.2.6 从ChatGPT的成功看大型语言模型的构建思路

  最近笔者一直在思考,为何ChatGPT经过了代码微调、指令学习以及CoT微调之后,就会有强大的涌现能力(模型举一反三、领域外迁移、强泛化能力等),除了模型本身的千亿量级之外,我们是否能摸清其中的逻辑和基本思路,如果我们要构建自己的ChatGPT,需要遵从怎样的构建思路

  今天阅读参考文献16时,Yao Fu给出了比较高维和系统化的总结:即大规模语言模型(LLM)的构建,分为四步,分别是「预训练」、「指令微调」、「对齐」、「专门化」。具体来说(以下为参考文中内容进行的汇总):

   1)预训练:得到强基础模型

  「预训练可以得到语言生成、世界知识、In-context Learning、代码理解/生成、复杂推理/思维链等能力」:

  从Yao Fu文中上图可以看出,我们日常使用的开源的Bloom、OPT只属于第一层级,(好奇此处Code-davinci-002为何也属于此层级,因为它已经历过指令学习);这一层级,是我们之前通常意义上提到的大模型;

  2)指令微调:释放模型能力

  「指令微调旨在加强预训练模型的已有能力,或者开发出预训练模型不具备的能力,指令微调的思路为让模型在各项维度上的能力全面扩张。」 文中有个非常有趣的观点,即将不同指令视作线代中的一组基,指令微调学到了将这些基进行组合的能力,从而极大的扩张了它的集外泛化能力。这个观点部分解释了指令微调带来的质变,首次看到这样的解释,具有启发意味。

  此部分我们平时涉及开始变少,其中text-davinci-002/003仅有过调用;此层级也倾向属于模型基建层,self-instruct是一项值得注意的工作:https://github.com/yizhongw/self-instruct ,这部分的核心是需要构造高质量的指令数据:种类足够多,每个类别下例子足够多,而中文指令数据现在稀缺

  3)对齐:与人类价值观匹配

  文中的观点是:“对齐旨在塑造模型的「价值观」,使其符合人类的期望,进而塑造模型的「人格」。”

  到这一步,便是ChatGPT,以及Calude之类以大模型+RLHF为核心的对话模型,这里需要注意的是,对齐操作不一定非要使用强化学习,使用大批量的人工反馈数据的有监督学习,也可以达到类似的效果(至于强化学习能超出多少,此点存疑?)

  4)模型专门化:从通用到专用

  「在经过了预训练、指令微调、对齐操作后,我们进一步考虑对模型进行专门化处理,使 ChatGPT 的能力从大学生成长为博士生或教授。」如果做相同的类比,第一阶段的GPT 3.5初始模型/Bloom等相当于九年义务教育、具备初步通用知识的人,而后续模型在持续提升专业能力;这里需要注意的是,在进行模型专门化时,同样也需要进行模型预训练,接着进行指令微调

  第四步是我们应用层的机会,包括我们做的很多任务,均可以在ChatGPT等强能力模型上构造专用的智能模型。非常推荐大家详细阅读文献16及其相关文献。

  另外,附录1中增加LLM相关中英文术语和概念(同参考以上文献,但润色相关说法),它们是LLM最近研究相关的核心词,同时这些概念预计也会在未来我们的技术报告中多次涉及,供大家参考。


3. ChatGPT应用和思考

3.1 应用

  ChatGPT的基础通用性决定了其应用的广泛性。这里可以借用AIGC的整体思路,作为“智能入口”的ChatGPT,可以作为整个AIGC的核心和Foundation model,接入海量下游任务:(下图来源:量子位、腾讯研究院,甲子智库梳理,2023年)

  1)ChatGPT对于文字模态的AIGC应用具有重要意义,可以依附于对话形态的产品和载体大有空间,包括但不限于内容创作、客服机器人、虚拟人、机器翻译、游戏、社交、教育、家庭陪护等领域,或许都将是 ChatGPT 能快速落地的方向。

  其中有些方向会涉及到交互的全面改革,比如机器翻译不再是传统的文本输入->实时翻译,而是随时以助手问答的形式出现,甚至给出一个笼统的中文意思,让机器给出对应英文;包括对于我们目前所做的写作产品,可能也会涉及创作模式的改变和革新。有些方向会全面提升产品质量,比如已存在的客服机器人、虚拟人等。

  2)ChatGPT作为文字形态的基础模型,自然可以与其他多模态结合;比如最近同为火热的Stable Diffusion或者Midjourney,利用ChatGPT生成较佳的Prompt,对于AIGC内容和日趋火热的艺术创作,提供强大的文字形态的动力。

  3)另一个讨论较多的方向,是ChatGPT对于搜索引擎的代替性;ChatGPT可以作为搜索引擎的有效补充,但至于是否能代替搜索引擎(不少人关注的地方),抛开推理成本不谈,目前只从效果上来说为时尚早。

  对于网络有答案的query,抽取就完全能满足,百度最近就有这样的功能;而对于网络上没有明确答案的内容,即使检索了相关材料(ChatGPT应该还没有这样的功能),生成结果的可信度也是一个问题。

  4)ChatGPT本身的升级:与WebGPT的结合,对信息进行实时更新,并且对于事实真假进行判断;很明显可以看到,现在的ChatGPT没有实时更新和事实判断能力,而如果结合WebGPT的自动搜索能力,让ChatGPT学会自己去海量知识库中探索和学习,将会极大提升使用方向,我们预测这可能会是GPT-4的一项能力。

  在ChatGPT持续升级的3个月内,伴随着New Bing的出现,我们可以看到更高版本的ChatGPT(/GPT-4)已经具有了实时更新和自动搜索的能力,同时给出了参考链接。ChatGPT本身的升级和进化,使其持续焕发蓬勃的生命力。

  ChatGPT API的发布极大提升了各类实际应用的发布速度,未来一到两年,会有源源不断、具有想象力的工具和应用出现。此处借用明日分享的一页ppt,具体也可参考文献26等。

  5)ChatGPT生态系统:3月23日,OpenAI推出ChatGPT plugins系统,并率先推出web browser和code interpreter两个插件;插件系统提供了如下范式:当用户在交互过程提出某些问题和需求时,ChatGPT会主动识别意图,进而选择调用更专业、更细化的第三方API,此举构建了以ChatGPT作为“大脑”和核心的AI交互生态系统,为ChatGPT提供了“耳朵”、“眼睛”等使用工具的智能,让专家模型做更专业的事。首批开放的插件如下图,包括了科学计算的Wolfram、语言教学的Speaker、trip plan的Expedia等11种插件。

  另一方面,以ChatGPT为核心的多专家模型调用也应运而生,其中有代表性的是HuggingGPT,其用ChatGPT解析意图(Task planning)、选择模型(Model Selection),在专家模型执行任务后(Task Execution),根据返回结果利用ChatGPT生成响应(Response Generation)。

  以上四个步骤被设计为超长的Prompt,暂时来说成本较高,但它利用了Huggingface中的专家模型,极大的扩展了ChatGPT的使用模态、场景和生态。具体Prompt的设计可以参考文献32。

  6)ChatGPT函数调用:6月13日,OpenAI推出ChatGPT function calling系统,开发者可以使用 OpenAI 的 API 自己实现完整的插件功能 ,此功能为插件功能的细化和升级,支持用户自定义函数名、函数参数,满足用户更细化、丰富多元拓展能力的需求,比如调用第三方HTTP服务、查询私域数据、基于私有文档提问;用户无需共享数据,只提供Saas接口即可;
  值得一提的是0613版的模型经过对应微调后,可判断何时调用函数、并以 Json的形式返回符合输出格式的参数,更大程度的规范化函数输入输出,对于下部分要提到的Agent系统颇有好处。
  以下是最新0613版本的接口调用方式,以聊天过程中常见询问天气为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
curl https://api.openai.com/v1/chat/completions --proxy 'your proxy' -H 'Your OpenAI key' -H 'Content-Type: app
lication/json' -d '{
"model": "gpt-3.5-turbo-0613",
"messages": [
{"role": "user", "content": "嘿兄弟,可以告诉我北京今天的天气怎样么?"}
],
"functions": [
{
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名或者省名,比如福建省漳州市"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'

  ChatGPT返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"id": "chatcmpl-7YDXL9WBxNNZtkO1agjpuvzTor4UR",
"object": "chat.completion",
"created": 1688389543,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": null,
"function_call": {
"name": "get_current_weather",
"arguments": "{\n \"location\": \"北京\"\n}"
}
},
"finish_reason": "function_call"
}
],
"usage": {
"prompt_tokens": 107,
"completion_tokens": 16,
"total_tokens": 123
}
}

  模型返回get_current_weather函数和对应location参数,此时可组装调用相关API,比如我们的接口函数为:

1
2
3
# 接入实时天气查询API
def get_current_weather(location="北京"):
return "晴 温度24~34摄氏度"

  整体逻辑可以用文献35中的概括:

  ChatGPT识别出对话中调用天气意图->返回调用函数名和参数->调用天气接口->返回结果用自然语言表述->返回用户,整个过程对于”天气询问”稍显冗余和复杂,但对于复杂的任务,可以极大拓展ChatGPT的精细化能力的外延。

  7)基于ChatGPT/GPT4的自治代理系统:近期有代表性的Agent System包括AutoGPT、BabyAGI、Godmode等,上文提到的HuggingGPT也属于此范畴。自治代理系统的核心是通过任务分解、自我反省(self-reflection)、结合长短期存储和工具使用,通过不断地自我迭代,最终完成不同的任务设定,一套基于LLM的自治代理系统组成如下,包含了以上提到的四个部分:

   文献36中很好的概括了这一代理系统的处理逻辑:结合外界感知/query,结合检索Memory的存储历史进行自我思考(Thought)持续计划(Plan),得到下一步动作(Action),当无法满足任务时,以上处理逻辑进行迭代,直到完成设定的目标;以上逻辑与HuggingGPT相同,均需要设计精巧的Prompt,同时对基础模型的能力要求极高,包括以上提到的输入输出格式要求严格。现有较强的Agent,基本都是以GPT4为基础模型,当然这也带来了另外一个问题:消耗成本极高,一般一个复杂的任务需要迭代数次。

   以最火爆的AutoGPT为例,以下是其的Prompt,其中格式解析的内容占到了多数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
You are {{ai-name}}, {{user-provided AI bot description}}.
Your decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.

GOALS:

1. {{user-provided goal 1}}
2. {{user-provided goal 2}}
3. ...
4. ...
5. ...

Constraints:
1. ~4000 word limit for short term memory. Your short term memory is short, so immediately save important information to files.
2. If you are unsure how you previously did something or want to recall past events, thinking about similar events will help you remember.
3. No user assistance
4. Exclusively use the commands listed in double quotes e.g. "command name"
5. Use subprocesses for commands that will not terminate within a few minutes

Commands:
1. Google Search: "google", args: "input": "<search>"
2. Browse Website: "browse_website", args: "url": "<url>", "question": "<what_you_want_to_find_on_website>"
3. Start GPT Agent: "start_agent", args: "name": "<name>", "task": "<short_task_desc>", "prompt": "<prompt>"
4. Message GPT Agent: "message_agent", args: "key": "<key>", "message": "<message>"
5. List GPT Agents: "list_agents", args:
6. Delete GPT Agent: "delete_agent", args: "key": "<key>"
7. Clone Repository: "clone_repository", args: "repository_url": "<url>", "clone_path": "<directory>"
8. Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
9. Read file: "read_file", args: "file": "<file>"
10. Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
11. Delete file: "delete_file", args: "file": "<file>"
12. Search Files: "search_files", args: "directory": "<directory>"
13. Analyze Code: "analyze_code", args: "code": "<full_code_string>"
14. Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
15. Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
16. Execute Python File: "execute_python_file", args: "file": "<file>"
17. Generate Image: "generate_image", args: "prompt": "<prompt>"
18. Send Tweet: "send_tweet", args: "text": "<text>"
19. Do Nothing: "do_nothing", args:
20. Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"

Resources:
1. Internet access for searches and information gathering.
2. Long Term memory management.
3. GPT-3.5 powered Agents for delegation of simple tasks.
4. File output.

Performance Evaluation:
1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.
2. Constructively self-criticize your big-picture behavior constantly.
3. Reflect on past decisions and strategies to refine your approach.
4. Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.

You should only respond in JSON format as described below
Response Format:
{
"thoughts": {
"text": "thought",
"reasoning": "reasoning",
"plan": "- short bulleted\n- list that conveys\n- long-term plan",
"criticism": "constructive self-criticism",
"speak": "thoughts summary to say to user"
},
"command": {
"name": "command name",
"args": {
"arg name": "value"
}
}
}
Ensure the response can be parsed by Python json.loads

  Langchain等第三方库实现封装了以上四个部分,KM上大量LangChain+LLM的问答方案,基本上是Agent System的无迭代版本,即实现单轮的 query->retrieve->prompt融合->Action。

  以上我们可以看出,AutoGPT明显的缺点是用户无法中途介入,只能设定任务而等待输出,这一点GodMode进行了改善,其支持中间结果的干预,系统会结合用户的feedback影响下一步结果。

  如上所述,Autonomous Agent=LLM+记忆+规划技能+工具使用,下图中的每个step均开启或包含了新的研究和应用方向,可以说其目前是最贴近AGI的一种早期设计和形态,是一套综合的系统。

  虽然目前有上下文长度限制规划和任务分解鲁棒性较差输出可靠性等问题,但Autonomous Agent具有极大的想象空间,笔者推测未来一段时间在此方面不同领域场景,会有很多成果输出,如文献39提出AD-AutoGPT ,以自主方式对阿尔茨海默症的复杂健康叙述进行数据收集、处理和分析;甚至外界有推断GPT-5可能会基于GPT-4+强人工反馈进行智能体循环,即Critique is all you need,从而让其进行自我修复,提升任务效果。另外值得一提的是,目前业界在这一块处于起步、相对平等竞争的状态(当然OpenAI的GPT-4还是领先一个身位),会是一个不错的竞争赛道。
  其他对于Autonomous Agent感兴趣的同学,可以阅读文献37,Liang的blog篇篇经典,值得细读。

3.2 观点

  参考上文所述,以及参阅近2年OpenAI GPT语言模型相关的文章,RLHF的方法效果显著,ChatGPT成功的核心也在于基于LLM(Large language model)的RLHF(Reinforcement Learning from Human Feedback),可以说,RLHF是一个很有希望且有趣的方向;强化学习在即将发布的GPT-4中大概率扮演这关键角色。

  结合对于ChatGPT的看法,我们从算法数据、行业创新、核心风险做出了阐述:

  1)首先对于ChatGPT的规模,目前没有更多信息支撑,所以无法明确如此智能的ChatGPT是在何规模下达成的。
最早的175B的GPT-3代号是Davinci,其他大小的模型有不同的代号。然而自此之后的代号几乎是一片迷雾,不仅没有任何论文,官方的介绍性博客也没有。OpenAI称text-davinci-002/003是GPT-3.5,而它们均为InstrucGPT类型的模型,ChatGPT是基于其中一个微调模型得到,固由此推测ChatGPT是千亿模型。(20230211:根据最新的接口参数,ChatGPT模型名为text-chat-davinci-002,是在text-davinci-002上结合RLHF训练而来,所以ChatGPT确定是千亿模型)

  2)从数据层面来说,数据处理不是简单的标注,优秀的数据也是一种极大的优势;除去技术上的考量,OpenAI很少开源数据,显然他们在数据上也下了大功夫,训练语料质量和开源的C4或The Pile不能同日而语;

  3) ChatGPT不完全算突破式的创新,而是OpenAI一步一步扎实工作积累得到的几乎理所当然的结果,属于这两年业界发展的成果汇总,某种程度上,ChatGPT是工程化的胜利。

  大家一般没有机会接触千亿模型(Bloom之前没有开源的千亿模型,GPT-3也是收费的),不了解现在千亿模型的能力边界,对全量微调这个级别的模型也无从估计。以BERT和T5为代表的早期Transformer和现在的大模型已不是一个量级。事实上11月28日OpenAI上新了text-davinci-003几乎没有引起国内的任何讨论,如果ChatGPT(11-30发布)不是免费试用,或许也不会引起这么大的反响。

  同一时期的工作还有Deepmind的Sparrow和Google的LaMDA,同样以上提到的WebGPT和Cicero也在国内没有太大的水花。这两年LLM发展已经到了此层级,或许因为成本或者工程化难度的问题,某种层面上在国内被忽视了。而此次ChatGPT正好找到了好的“曝光点”,一炮而红。

  所以,一方面我们要理性看待ChatGPT的成果,但另一方面ChatGPT的出现,会将我们的认识和国外先进思想拉到一条线上,我们应该思考如何利用这些令人激动的最新成果,而其中关键是如何找到适合我们入口的方式

(2023-03-04更新)

  4)ChatGPT的核心风险是安全和监管问题;ChatGPT自身的缺陷在1.3中有提及,在逻辑性、事实性上具有生成模型的通病;但最核心的风险是安全问题,具体来说,有以下风险:

  • 数据泄漏,主要涉及

    场景 敏感数据
    协助定位代码bug 部分源代码
    生成sql语句 表格名、表格字段名
    根据数据绘制表格/作图代码 图表中涉及的数据
    破解程序密钥、令牌 开发明文与关联上下文
    此部分在直接调用OpenAI的API时风险较高。
  • 内容安全,主要涉及虚假信息、错误知识、有害内容生成:

  • 攻击武器,涉及到有害脚本等攻击脚本的自动生成,其潜在风险是降低准入门槛、扩大恶意黑客的群体规模:
  • 知识产权,包括自动写作、音乐创作等AIGC内容的产权归属模糊,尚需法律法规界定。

  不过值得注意的一点是,ChatGPT在安全层面“不断进化”,在笔者构造不安全case时,在0213 version上“绕开成本”大幅增加,需要5~6轮“催眠”和“假设”才能绕开ChatGPT的安全限制,此前很轻易就能绕开。

  面对以上的风险,立法探索和监管势在必行;其次结合机器手段,维护训练/精调语料库清朗环境是数据层级的手段;而在技术层面,不管是生成前“魔法”打败“魔法”的Prompt Evalutor,生成时的self-correction;还是生成后的鉴别检测(水印、数学特性、分类判别等),皆是不断提升安全性的手段;最后一点,从长远来看,大模型的风险管理人才也需要培养。

3.3 借鉴和使用

  对于ChatGPT的借鉴和使用,大致可以归类以下五个方向:

(2023-02-11更新:增加第一点:预训练层面的使用)

  1) 预训练层面:即从头预训练(training from scratch),得到自己的ChatGPT;这是最直接、具有门槛且适合大公司的基础设施建设工作,具有较强的战略性;同时随着硬件利用率上升和硬件升级,训练大模型成本逐年下降,以GPT3的训练成本来说,在两年半时间里,与GPT-3性能相当的模型的训练和推理成本下降了约80%。对于大公司来讲,训练成本已非卡脖子因素,瓶颈反而在于高质量数据:「与增加高质量训练数据集的大小相比,增加模型参数的数量能获得的边际收益越来越小。」

  关于新增此点,笔者之前觉得国内对于从头预训练千亿模型呈不看好之势,但在此文形成的两个月内,国内风向突然发生变化。

  从1月底开始ChatGPT持续翻火,ChatGPT本身的能力持续被世人所认知:一方面,伴随微软和谷歌等巨头在搜索市场的激烈竞争将其推向风口,前者迅速将ChatGPT融入Bing搜索,后者推出了暂时不尽如人意的Bard;另一方面,在国内伴随营销号的宣传下其迅速呈出圈之势,各大公司突然涌向此风口,开始要做自己的ChatGPT,抑或宣称已存在自己的ChatGPT,这样的营销/宣传行为无可厚非,至少让国内也开始意识到自身在大模型上的差距,同时进行反思以及向世界看齐。

  在笔者看来,复制ChatGPT对于国内很多头部企业来说并非最大的难事,虽然有较多挑战,但最终可能会成功;但我们真正缺的是看待前沿技术的视野、前瞻性、战略眼光和发展的魄力,技术需要在做出判断后,有一定的冒险精神去做正确的事情,过于保守的逐利虽然稳妥,但没有持续的创新即意味着在原有事物中持续的“卷”和内耗。在GPT3出现后的2年半内,我们一直都有开始跟进的契机,而绝非随着ChatGPT的出现后才突然觉醒;但为时不晚,至少我们已经启程。

2)直接使用层面:此层面为复用API中效果极佳的部分,根据最新产品同学的调研结果中,可以看出设定较佳的Prompt前提下,可以快速实现高满意度的写作的多层级需求,这也是很让人激动的部分。

  直接使用的优势是可以快速实现多粒度多层级上文·功能需求,尤其是很多需求难以定义清晰、数据难以获得的情况下,复用并包装这样的功能一本万利;

  缺点也很明显,最主要是以上提到的安全问题;另一方面,直接调用成本是较高,根据GPT3.5(Davinci)的成本推测:

  1k tokens≈700 words为0.02美元,则换算后,一篇2k字的文章,直接调用需要0.4人民币,若保守按照日活1w用户,人均10篇文章计算,则每日调用成本为:10000x10x0.4=40000元,成本过于高昂,但实现时间最少;
另外,根据Musk Twitter上与OpenAI工作人员的对话,也可以看到每次聊天过程需要几美分的成本,所以ChatGPT直接调用成本较高。

  当然随着最新OpenAI接口的释出,成本比之前的预测低1/10,但要做出真正适配自身、稳定、高并发的ChatGPT,成本是高于单纯API调用成本的。

  3)间接使用层面:此层面核心思想是利用OpenAI接口,按照不同需求生成高质量小样本数据,克服现有数据难获得的瓶颈;进而利用现有Bloom(GPT3模型)进行数据扩增,这是目前比较切实,实现时间较少,是在时间成本和效果上折中的方式。

  4)思想借鉴:

  a. 参考RLHF的方法,我们目前有初步尝试,如对多候选进行标注,利用得到的标注结果重新微调生成模型,或者增加排序阶段加入RL学习;

  b. 尝试一些高效调参的方法,微调176B的Bloom,但此条受限于资源尚需评估和确认。

  实现时间: 2(直接使用API)< 3(Self-Instruct数据扩增)< 4(思想借鉴:指令学习+RLHF)< 1(从头预训练)

  资源成本: 1(从头预训练) > 2(直接使用API) > 4(思想借鉴:指令学习+RLHF) > 3(Self-Instruct数据扩增)

  其中资源成本按照长期成本估算,4需要指令数据构建的人工成本,3使用ChatGPT构建指令数据即可。

  5) 交互升级:

  将写作整体打造为ChatBot的形式,此核心思想见另一篇关于对话系统报告中相关性部分,涉及到交互层面的变革;但ChatGPT的出现和核心技术,让形式升级成为可能,而且预计随着深度学习和多智能体系统的发展,未来会有多种多样多功能的X-GPT/X-Bot出现。

  交互升级的核心是提供“个性化的服务”,用户可以得到根据自身需求定制的结果,而这些结果是用户通过交互和不同的指令修正反馈给模型,人人的需求都能被个性化地满足。

3.4 未来

  1) ChatGPT是深层次的信息革命,其核心是提升了信息获取效率,单以搜索引擎举例,人类过去需要搜索-点击-搜寻-整理,最后得到搜索结论;而随着可信度和实时性的优化,ChatGPT会直接通过交互和修正快速呈现结论,效率的提升本质是生产力的提升;基于信息效率的提升,人类会更专注于所谓“更高层次、思想编辑”的工作,未来两年内,人类的“信息搬砖”工作可能越来越少(数据来源:甲子光年智库,2023年);

  2) ChatGPT本身还有很多优化点,包括继续扩大模型参数:更长的输入框;更大的模型,更多的数据;增加多模态的信息,达到多模态智能的统一;包括Visual ChatGPT、Kosmos-1、PaLM-E的出现印证了这一点,实现真正多模态的统一的GPT4很快就会来(图为Kosmos-1):
另一方面模型的专业化,垂直类指令的学习;还有包括学会“工具”的使用,即调用外部能力,Meta AI的Toolformer已经开始涉及;

  3) ChatGPT在带来范式改变,让很多NLP子任务“消失”的同时,也会带来新的研究问题:一条路线是如何精准对大模型提出需求,对ChatGPT进行“催眠”的Prompt Enginering,网络上有很多Prompt调教指南:https://github.com/PlexPt/awesome-chatgpt-prompts-zh; 或Prompt的学习和自动生成;AI生成内容的检测延续之前的方向持续发展,虽然已有包括GPT-zero、WaterMark等方法已提出,但目前效果一般;另外就是Machine Unlearning ,目标是使得大模型可以有效地保护用户隐私数据,遗忘需要它遗忘的知识;

  4) 超越人类?此条观点主要来自于文献20,符尧认为ChatGPT类模型在并行感知:极短时间内多篇信息输入;记忆遗传:模型演化记忆;加速时间:模型进化速度可能超出人类;以及无限生命:模型权重不会丢失等层级可能会超越人类。

  这一点虽然具有某些理想主义的色彩:“数字永生”,但ChatGPT除了强大的意图理解和生成能力之外,其进化速度和持续学习等能力,确实与之前的模型有本质区别;若其进化速度果真超出scaling law,所谓的AGI可能会越来越近;当然笔者认为,归根结底ChatGPT依旧是一个概率模型,没有逻辑处理模块、没有真实记忆模块,真正的AGI需要从视觉、直觉、时间、空间上进行感知建模。

3.5 写在最后

  做中国自己的ChatGPT是国内讨论火热的话题之一,各大厂已经纷纷押注。如文献18提到,ChatGPT = 50% 数据 + 30% 场景 + 10% 算力 + 10% 团队,国内的优势是工程化人才的成本、数量和应用规模巨大,得到国内的ChatGPT难度尚可,但笔者认为,“罗马非一日建成”,单纯复现得到ChatGPT非关键,核心是对于战略性的技术、对于卡脖子的基础设施,我们需要具有发展的眼光,持续关注、持续投入、长远发展,才能真正具有核心竞争力。

  大模型从算力、数据到模型建立,非一朝一夕之功,需要集中力量办大事,企业的责任是一方面,也需要国家的整体战略,从下图可以看出中国的大模型(除了图中的OpenAI相关)基础并不差,战略更加重视之后会有更长足的发展(图来源:HTI,甲子光年智库梳理,2023年)。

  最后援引川总的一段话作结:

  希望在“技术的洪流”中我们皆为站在浪尖的弄潮儿,也愿每个技术人都能够实现自己的技术理想。


  欢迎大家踊跃讨论ChatGPT相关的技术和思想,有问题随时指正,感谢~

  注:本篇报告中,ryanran(冉昱)负责主体框架和内容梳理以及编写,xiamixue(薛晨)在第二章节的工作原理、相关技术以及对于ChatGPT的思考章节提供了有思辨性的思路、观点和文本内容。


4. 参考文献

  1. https://chat.openai.com/chat
  2. ChatGPT: Optimizing Language Models for Dialogue
  3. 如何评价OpenAI的超级对话模型ChatGPT? - 知乎
  4. Aligning Language Models to Follow Instructions
  5. Learning to Summarize with Human Feedback
  6. Fine-Tuning GPT-2 from Human Preferences
  7. Learning from Human Preferences
  8. Proximal Policy Optimization
  9. WebGPT: Improving the Factual Accuracy of Language Models through Web Browsing
  10. CICERO: AI That Can Collaborate and Negotiate With You | Meta
  11. ChatGPT (可能)是怎麼煉成的 - GPT 社會化的過程 https://www.youtube.com/watch?v=e0aKI2GGZNg
  12. A Closer Look at Large Language Models Emergent Abilities https://yaofu.notion.site/A-Closer-Look-at-Large-Language-Models-Emergent-Abilities-493876b55df5479d80686f68a1abd72f
  13. How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources https://yaofu.notion.site/How-does-GPT-Obtain-its-Ability-Tracing-Emergent-Abilities-of-Language-Models-to-their-Sources-b9a57ac0fcf74f30a1ab9e3e36fa1dc1
  14. From zero to ChatGPT https://xv44586.github.io/2023/01/09/zero-to-chatgpt/
  15. The Economics of Large Language Models https://sunyan.substack.com/p/the-economics-of-large-language-models
  16. ChatGPT成功做对了这4步丨爱丁堡大学符尧 https://mp.weixin.qq.com/s/U5v8CFmGIpjWBheDDWXCPA
  17. ChatGPT: potential, prospects, and limitations | SpringerLink https://link.springer.com/article/10.1631/FITEE.2300089
  18. chatGPT 制胜的关键 https://mp.weixin.qq.com/s/yXO4CEq2kMbQtFLLsiaiYA
  19. 斗象解读:ChatGPT将如何影响网络安全实战攻防 https://zhuanlan.zhihu.com/p/609750526
  20. 探索智能的极限 https://yaofu.notion.site/e1cd16d1fae84f87aeddf872c838e07c /
  21. ChatGPT 所帶來的研究問題 https://www.youtube.com/watch?v=UsaZhQ9bY2k
  22. 出道即巅峰?国产ChatGPT的风险与应对https://km.woa.com/group/induswatchtower/articles/show/535867
  23. Emergent Abilities of Large Language Models https://www.assemblyai.com/blog/emergent-abilities-of-large-language-models/
  24. Language Is Not All You Need: Aligning Perception with Language Models https://arxiv.org/pdf/2302.14045.pdf
  25. 2023中国AIGC市场研究报告:ChatGPT的技术演进、变革风向与投资机会分析 https://km.woa.com/asset/5cd39cd314eb4f4f964713e667518a60?height=70&width=765
  26. ChatGPT的神奇应用 https://km.woa.com/asset/d07addd3535f44809f3519119fa2d43f?height=70&width=833
  27. In AI, is bigger always better? https://www.nature.com/articles/d41586-023-00641-w https://hub.baai.ac.cn/view/24755
  28. GPT-4 https://openai.com/research/gpt-4
  29. GPT-4震撼发布-机器之心 https://mp.weixin.qq.com/s/kA7FBZsT6SIvwIkRwFS-xw
  30. GPT-4 is OpenAI’s most advanced system, producing safer and more useful responses https://openai.com/product/gpt-4
  31. GPT-4 Technical Report https://cdn.openai.com/papers/gpt-4.pdf
  32. HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face https://arxiv.org/pdf/2303.17580.pdf
  33. ChatGPT plugins https://openai.com/blog/chatgpt-plugins
  34. ChatGPT 类大语言模型为什么会带来“神奇”的涌现能力?https://mp.weixin.qq.com/s/RSrS9eHMy38MaFLnhC4-rw
  35. ChatGPT重磅更新,函数调用实战讲解 https://juejin.cn/post/7244818685651419194
  36. Generative Agents: Interactive Simulacra of Human Behavior https://arxiv.org/pdf/2304.03442.pdf
  37. LLM Powered Autonomous Agents https://lilianweng.github.io/posts/2023-06-23-agent/#agent-system-overview
  38. 【生成式AI 2023】讓 AI 做計劃然後自己運行自己 https://www.youtube.com/watch?v=eQNADlR0jSs
  39. AD-AutoGPT: An Autonomous GPT for Alzheimer’s Disease Infodemiology https://arxiv.org/pdf/2306.10095.pdf
  40. Function calling and other API updates https://openai.com/blog/function-calling-and-other-api-updates

附录

  1. LLM中英术语/概念对照表(12-22增加)
    英文 中文 释义
    Emergent Ability 涌现/突现能力 小模型不显现能力,当模型大到一定程度发生质变,突然出现的能力
    Prompt 提示词 将prompt 输入给大模型,大模型会给出相应的completion
    In-context Learning 上下文学习 在 prompt中给大模型提供几个例子,模型即可按照例子做生成
    Instruction Tuning 指令微调 用 Instruction 指令来 fine-tune 大模型
    Code Tuning 代码微调 用代码来 fine-tune 大模型
    Reinforcement Learning with
    Human Feedback (RLHF)
    基于人类反馈的强化学习 使用人工结果打分来调整模型
    Chain-of-Thought(CoT) 逻辑链/思维链 写 prompt 时,不仅给出结果,还要将得到结果的步骤一步步写出
    Scaling Laws 缩放法则 模型效果的线性增长,要求模型的大小指数增长
    Alignment 与人类对齐 让机器生成符合人类期望的,符合人类价值观的句子