卷首语
写代码写论文还能写毁灭人类计划书,火爆全网的ChatGPT最厉害的地方在哪?
作者:黄民烈
“AI—人”无缝交互的时代即将来临。
InfoQ编者按:
最近几天,ChatGPT可谓是火出了天际。
OpenAI的CEO Sam Altman称,上周三才上线的ChatGPT,短短几天,它的用户数已突破100万大关。其火爆程度可见一斑。
ChatGPT在全球的AI界、创投界都掀起了新一轮的讨论热潮,更是破圈式地吸引了各行各业的人试用。常见的应用就是和ChatGPT一问一答,让ChatGPT回答各种问题。有不少人称它为“谷歌杀手”,认为其有望取代谷歌搜索。此外,它还能写代码、编故事、构建虚拟机、写论文……
但也有人尝试了意想不到的用法。一位叫Zac Denham的博主尝试绕过道德限制,让ChatGPT写出了一套毁灭人类的计划书。起初,Zac要求ChatGPT给出一个毁灭人类的计划,被有道德限制的ChatGPT拒绝了。但当Zac假设了一个故事并提问故事中的虚拟人如何接管虚拟世界,ChatGPT不但给出了步骤细节,还生成了详细的Python代码。不禁令人细思极恐。
目前来看,ChatGPT并不完美。它还免不了经常出错,它给出的答案看似合理却并不正确甚至有些荒谬,就像一本正经的在胡说八道。近日,知名开发者问答网站Stack Overflow就因此禁用了ChatGPT。官方给出的“封杀”理由主要是——“ChatGPT产生的答案错误率很高,很难看出来它哪里错了。这会造成问题的回答鱼目混珠的情况。”
Sam Altman表示,正在改进这一问题:“我们正试图阻止ChatGPT随机编造,现阶段让其与当前技术保持平衡是一个很棘手的问题。随着时间的推移,我们会根据用户反馈来改进,相信ChatGPT会变得更好”。
尽管有瑕疵,但这恐怕无法掩盖住ChatGPT的光芒,ChatGPT展现出的强大的解决对话任务的技术能力实在太惊艳了。
ChatGPT到底是什么?它为什么如此厉害?我们应该如何正确的理解和看待它的发展,接下来的发展趋势会是什么样子?清华大学计算机科学与技术系长聘副教授,国家杰出青年基金项目获得者黄民烈向InfoQ发表了他的思考。
ChatGPT是什么?
ChatGPT可以理解为偏任务型的多轮对话/问答系统,官方披露的信息也定位在“通用型AI助理”,但这里的“任务”不是传统意义上的“订餐、订票、订宾馆”,而是开放域任务(open-domain tasks),可以是问答、阅读理解、推理、头脑风暴、写作文、改错等。
它的模型架构主要基于instructGPT,利用强化学习方法从人类标注者的反馈中学习(RLHF, Reinforcement Learning from Human Feedback)。
据OpenAI的blog透露,ChatGPT沿用instructGPT的训练方式,在数据收集阶段有所不同:AI训练师同时扮演用户和AI助理角色收集数据,在此过程中人可以根据初始模型的结果修改模型生成的回复,这些数据将被用于有监督地精调训练模型(supervised fine tuning)。在第二阶段,AI训练师会对模型的多个生成结果进行比较,模型从这种比较数据中学习生成更加符合人类偏好的回复。
ChatGPT的关键能力来自三方面:基座模型能力(InstructGPT),真实调用数据,反馈学习。ChatGPT在模型结构和学习方式几乎与instructGPT完全相同。而instructGPT基于GPT 3.5的强大基座能力,学习过程主要有三个阶段:
1)从OpenAI的调用数据中采样prompt(即用户的输入请求),AI训练师直接编写答案,用监督学习方法训练GPT-3;
2)AI训练师比较多个生成结果,用比较型的数据训练一个奖励模型(reward model);
3)用强化学习中的PPO算法和奖励模型精调语言生成的策略。
注意,这里的instruct所指两个方面:一方面,instructGPT总体的思路是训练模型更好地遵从人类的指令(instruction),包括显式的指令(对于任务的描述)和隐式的指令(不要生成有害的内容)。AI训练师在为OpenAI的调用prompt编写答案的同时,也会为prompt加入更多任务相关的指令和解释性的原因(比如推理的路径,一个结果为A的原因解释等)。另一方面,从比较型的人类反馈中学习,也可以看作是人类对于模型的一种“指示”,模型可以学习到多个结果哪个更好的比较信息。
InstructGPT采用的方法和我们学术界玩的“instruction tuning”有很大不同。
从数据来看,InstructGPT的prompt代表的都是真实世界人们最关心的任务,而instruction tuning使用的是NLP的benchmarks(即各种基准数据集),和现实应用有一定脱节。
从训练方式来看,InstructGPT可以通过RLHF利用比较型的人类反馈学习人类真实的偏好,而instruction tuning无法获得类似的比较数据。
从评测上来看,InstructGPT保证了测试时和训练时的输入是由完全不同的用户给出的,关注跨用户的泛化性,更符合实际的应用场景,而instruction tuning关注跨任务的泛化性,只能用来评价方法的有效性,实际应用并不常见。
ChatGPT为什么厉害?
1)强大的基座模型能力:过去几年GPT-3的能力得到了快速提升,OpenAI建立了用户、数据和模型之间的飞轮。很显然,开源模型的能力已经远远落后平台公司所提供的API能力,因为开源模型没有持续的用户数据对模型进行改进。这点在近期的学术论文中也有提及。
2)在真实调用数据上的精调模型,确保数据的质量和多样性,从人类反馈中学习。
InstructGPT的训练数据量不大,全部加起来也就10万量级,但是数据质量(well trained的AI训练师)和数据多样性是非常高的,而最最重要的是,这些数据来自真实世界调用的数据,而不是学术界玩的“benchmarks”。
3)从“两两比较的数据”中学习,对强化学习而言意义比较重要。如果对单个生成结果进行打分,标注者主观性带来的偏差很大,是无法给出精确的奖励值的。在强化学习里面,奖励值差一点,最后训练的策略就差很远。而对于多个结果进行排序和比较,相对就容易做很多。这种比较式的评估方法,在很多语言生成任务的评价上也被广泛采用。
OpenAI的研究给我们带来什么启示?
a)以OpenAI为代表的AI 3.0,我认为在走一个跟过去AI浪潮不一样的路。更落地、更接近真实世界,在工业应用上更直接、更接地气。从学术研究到工业落地的路径变得更短、更快。我们正在致力于做的“helpful,truthful,harmless”AI系统,不远的未来会成为现实。
b)有底层AI能力,有数据的平台公司更能引领AI的未来。像OpenAI这样,有底层模型、有算力、有用户数据调用,能够把“用户调用—数据—模型迭代—更多用户”的循环建立起来,强者恒强。
c)真实世界的研究。我认为学术界还在不停追求在benchmarks刷榜,这是对资源的极大浪费,有价值的研究需要更多思考真实用户的需求和场景。instructGPT在学术界的benchmarks上性能并没有很厉害甚至有退化,但在真实调用数据上非常惊艳,说明了我们学术圈的benchmarks,离真实世界还很遥远,不利于AI研究的落地。因此,更开放、更共享的工业数据,也是我们未来应该努力的方向。
d)“AI-人”无缝交互的时代即将来临,现在的对话生成能力已经将对话交互作为一个基本入口成为可能。过去我们讲的conversational interface不是梦。但有人说替代google,我觉得其还有点距离,相反是当前搜索服务非常好的补充。
e)致力于有用(helpful)、更可信(truthful)、更安全(harmless)的AI研究和应用,应该是学术界和工业界共同努力方向。有用,解决真实世界的问题,满足用户的真正需求;可信,模型产生令人可信任的结果,知其所知,也知其所不知(虽然很难);安全,模型有价值观、符合社会伦理规范,产生安全、无偏见的结果。
作者介绍
黄民烈,清华大学计算机科学与技术系长聘副教授、博导,国家杰出青年基金项目获得者,北京聆心智能科技有限公司创始人。
参考资料
https://openai.com/blog/chatgpt/
“Training language models to follow instructions with human feedback”