ChatGPT爆发至今,讨论的声音也有很多。为什么chatGPT的能力能如何强大?乃至于影响我们的生活和工作?本文对此展开分析,分享自己关于这件事情的看法。
一、背景介绍
目前chatGPT已经被全世界所知,其影响已经渗透到国家、民营企业、国企央企、各大行以及每个个体等,未来可能会更火,并且还会衍生各种商业落地产品。
或许每个人都应该主动拥抱这个大变革,而不是观望或者无视它。
无疑,chatGPT的出现是可以拔高到PC、移动互联这个层级,这三个新事物的出现,对我们工作学习,乃至生活方式都会形成巨大影响。
而这也是我对此引发的思考,为什么chatGPT的能力能如何强大?
总结内容大致可分为以下两个方面:
当我们询问ChatGPT和以往的对话机器人(如小冰)我们会有一种强烈的感受,GPT比他们更懂人类的表述与观念,仿佛是和人在对话,这是为什么?
可以从以下两个维度来解答:
(1)模型的本质区别
首先我们要了解的是chatGPT是采用了LLM模型构建的对话机器人(large Language Model);
一般的语言模型处理任务的类型大致分为两种类型:中间任务及最终任务(完成对话);
中间任务指中文分词、词性标注、NER、句法分析、指代消解,这类任务不会解决实际问题,但对应最终任务是必需的操作步骤;
以往NLP的部分研究方向及侧重点在于中间任务的处理及优化,如如何更好的分词\指代\句法分析,从而更好的输出最终任务,如这一代(袋)苹果多少钱,应该根据上下文进行判断;
但GPT的出现提供了一个新的研究方向,它的理念是尝试从端到端进行解析,完全忽视中间任务的处理,我们可以给定大量数据,让LLM模型自动学习输出最终任务的结果,而这里面如何学习我们无须了解,如至于优化,我们也无需对中间过程专门建模;
可以说正是因为NLP技术发展未成熟,才会衍生出中间任务的建模及优化,现在有了LLM的出现,我们似乎可以寻求到新的研究方向;
而这种本质区别,就决定了GPT为什么能更好的理解用户表述及输出结果,因为GPT现在是给定人类的自然表述,LLM通过大量数据学习语义语法知识及既定事实,最终再用符合人类的表述方法进行反馈,讲究的是GPT去适应人,而不是人去适应GPT(这活脱脱是个绝对合格的乙方思路!谁能不爱)
(2)角色定位的区别:从预训练模型走向通用人工智能
以往的技术链路是构建各个专业agents,并提交中控统一管控(DM模块),组成一个对话机器人;而GPT是通过数据及LLM模型,构建成一个通用性的对话机器人;
没错,你可以想象一下,以前是设想给你创建很多个专业人员同时处理服务(N对N),现在是构建一个通用性人才,同时处理多个服务(1对N);
而为什么能这么转变?得益于LLM模型及海量的数据(以万亿为单位的文本数据);
理论上来讲,只要LLM模型足够大,喂食的数据足够多,那么GPT完全可以变身成为钢铁侠里面的贾维斯(想想就很兴奋),而且如果按照这个研究思路,未来很多NLP子研究领域将不再具备研究价值(如如何更好的分词)
以上两点,我理解就是与以往主流的对话机器人的本质区别。
2. ChatGPT如何实现知识的获取、存储、推理及实时更新
那究竟GPT如何有如此优秀的表现呢?
我们不妨从人类学习思路入手,我们学习一般可分为获取知识-存储知识-推理知识-更新知识,而这也是GPT发展及学习的过程,这更加也是GPT适应人类的表现;
(1)获取知识
首先对于知识的获取,GPT粗略可以分为语言知识及世界知识的获取,语言知识指代的就是我们自然的表述,指词性、语义、语法、分词等知识;
参考文章-“When Do You Need Billions of Words of Pre-training Data?”,对于Bert类型的语言模型来说,只用1000万到1亿单词的语料,就能学好句法语义等语言学知识;
而世界知识,指的是在这个世界上发生的一些真实事件(事实型知识,Factual Knowledge),指美国现任总统为拜登,太阳从东边升起,这类既定事实知识的学习;
而这类知识的获取学习,对数据的要求及时效性就很高,也是未来GPT的研究重点,即如何从增量知识获取世界知识;
(2)存取知识
至于GPT如何存储及提取知识,目前比较可信的思路大体是这样的,首先我们要知道一个前提,就是LLM模型是以Transformer为基础的大语言模型,而Transformer我们可以简单理解为变压器,对输入和输出进行处理的模型。
当LLM模型获取到知识(输入)时,会转化为一对信息,如<‘北京,is-capital-of,中国>,并且保存在Transformer的FFN结构,也就是说Transformer的FFN可看成存储大量具体知识的Key-Value存储器,而每个节点对应的key向量,就是知识节点和输入层每个节点的权重向量,用来匹配输入的语言需要获取什么知识;
举个例子,简单通俗点来说,当Transformer的输入是“中国的首都是[Mask]”的时候,节点从输入层探测到这个知识模式,会产生较大的响应输出。如果Key层其它神经元对这个输入都没有任何响应,那么对应的Value层的节点,其实只会接收到“北京”,这个Value对应的单词embedding放大,进而匹配出最终的结果;
(3)推理能力
首先,我们要知道LLM模型本身就具备推理能力;
保证LLM有推理能力的原因有两种方法,一种是基于Prompt的方法,核心思想是通过合适的提示语或提示样本,更好地激发出LLM本身就具备的推理能力;
第二种是是在预训练过程中引入程序代码,和文本一起参与预训练,以此进一步增强LLM的推理能力,这应该是OpenAI实践出的思路;
首先基于Prompt的方法也分为三种实现方法:
第一种方法是可以简单的理解为追问式推理,我们在LLM输出结果时,输入提示语:“Let’s think step by step”,LLM便会将它思考的思路逐一的反馈出来,而实现的方法就是,我们海量数据里面必定存在“Let’s think step by step\让我们一步一步来思考”关键信息的文本,并且这类文本通常都是携带了思考思路,而LLM模型可以通过这些数据进行学习推理;
第二种是基于示例的思维链,又称CoT,(few-shot CoT,Chain of Thought),方法是:为了教会LLM模型学会推理,给出一些人工写好的推理示例,示例里把得到最终答案前,一步步的具体推理步骤说清楚,而这些人工写的详细推理过程,就是思维链Prompting,这种方法让模型学习了一个道理,就是在推理过程中,步子不要迈得太大,否则很容易出错,改变思维模式,化大为小,逐一击破;而这也是我们生活学习需要参考的思路;
第三种是问题拆解思路,就是将一个复杂问题逐步拆解到每一个子问题,在完成了子问题的解答后,我们再从子问题的答案推导复杂问题的答案;
以上为实现chatGPT的推理能力的第一种方法-基于Prompt方法的简单介绍;
而另外一种,在预训练过程中引入程序代码,和文本一起参与预训练构造LLM推理能力的方法,目前还未证实,比较可能的猜想为如下两个方面:
而这两个猜想目前来看可能性较高,只是需要等待后续验证。
实时更新知识:
相信很多人都会想到一个问题,既然LLM模型训练是基于已有的海量数据,那这部分数据的时效性如果不符合现实情况,那chatGPT给的答案不就不可靠了吗?
如询问美国的总统是谁?按照已有的数据量来看,肯定是特朗普的数据会多于拜登,那么回答不就不可靠了?
对于这个担忧,可以说是客观存在并且是会出现的,毕竟chatGPT才出现了一段时间,但这个问题虽然还未完全解决,似乎已有三种可以处理的技术方法,归纳起来为以下三种:
(1)基于基础数据来修正知识
如同文章“Towards Tracing Factual Knowledge in Language Models Back to the Training Data”描述的从LLM模型逆向追踪到数据源的可行性;
因此我们可以在识别到错误反馈的时候,设计一个修正功能,当用户反馈说你说的不对时,实时的进行源数据的更新,而这里面需要解决的问题就是什么时候需要进行修正以及如何校验修正后的答案是符合世界认知的,但是这可以说是后话了。
(2)对LLM模型做一次fine-tuning来修正知识
第二种方法的思路就是直接从数据源开始修正,通过修正后的数据源重新训练;
这个方法最为简单直观,同时也存在问题:1)带来灾难遗忘问题,即可能遗忘掉该忘的知识,还会忘掉了不该忘的知识;2)成本高,涉及到LLM模型的重新训练及验证,可行性不高;
(3)修改LLM模型某些知识的模型参数
第三种方法其实是第二种的衍生,就是修正某一个知识领域的参数;
参考“Locating and Editing Factual Associations in GPT”和“Mass-Editing Memory in a Transformer”这两篇文章讲述了定位及修正FFN对应参数的方法;
但同样的,我们要解决的问题也就是方法一要面对的两个问题。
3. 总结归纳
以上就是我在查阅资料后整理的chatGPT的优异点,由此我们可以看出,有以下几点原因:
以上就是个人查阅部分文章内容,整理归纳了对chatGPT能如此流行的原因。
参考内容
由ChatGPT反思大语言模型(LLM)的技术精要
在此特别感谢张老师提供的关于chatGPT研究及说明,对个人的学习及思考起了很大的帮助!
拓展阅读
本文由 @SiegZhong 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议