全面地聊一下GPT的前世和今生
GPT-X 全名General Pretrained Transformer-x,后面的X代表的就是第几版,中文翻译为:通用预训练转换器,这是OpenAI开发的一个自然语言处理计算模型,最早出现在2020年5月公开发布的一篇论文中。
自然语言指的就是人类日常是使用的语言,当中包含各种语种,所谓的NLP(自然语言处理)就是一种人工智能技术,它能使计算机能够理解、解释和生成自然语言。
01
GPT本质是什么?
在ChatGPT还没有彻底火起来之前,并不是所有人都认为这是一件牛逼的玩意儿。比如Meta的AI负责人LeCun就不看好,认为这就是基于Auto-Regressive的一种LLM,从方法来说没有任何范式的突破。
这里有必要解释一下,所谓的Auto-Regressive,基本原理是:
1、首先将一段文字分割成一个个的词或字,给每个词或字一个编号;
2、用一个神经网络(一种模仿人脑神经元之间信息传递方式而设计的计算模型,它由大量节点之间相互连接构成)来学习每一个词或字出现在某个位置的时候,他前面的词或字组成的序列对应的向量表示;
3、用这个神经网络来计算每个位置上可能出现下一个词或字的概率分布,并根据这个分布来随机生成下一个词或字;
举个例子:如果我们要生成一句话:我今天很开心,步骤如下:
1、首先将这句话分割成六个字:我、今、天、很、开、心,并给他们编号:1、2、3、4、5、6;
2、用神经网络来学习每个位置上的对应向量关系,例如"今"字出现在第二个位置的时候,它前面会有"我",后面会有"天"这种状态的概率是多少;
3、不断用模型预测下一个词是什么,然后把预测出来的词代入模型再去预测下一个词是什么,不断迭代;
说白了,ChatGPT的原理就是基于Auto-Regressive(自回归),本质就是一个填词工具,但是慢慢,你会发现它的能力却远远不只是"填词"而已。
说完了Auto-Regressive,我们来探讨一下LLM这个层面。
所谓的Large Language Model(LLM)就是大语言模型的简称,这里的大指的是参数量的巨大,一般LLM指的就是参数数量大概在超过10亿这个数量级的模型,这里的参数指的是模型需要学习的权重和偏置(bias)等参数。
首先LLM是NLP的一个分支,大家都是干着如何让计算机更好地理解、处理人类语言,在早些时候,NLP的研究主要卡在这两个问题上:
1、当我们训练一个模型的时候,我们需要实用大量的数据来训练它,以便更好地完成任务,如果使用数据不足,即使我们有更复杂的模型也无法获得好的结果。
2、但当你可以提供更多数据的时候也没有用,因为它不能有效吸取数据里蕴含的知识。
这个时候Bert和GPT两个都是基于Transformer的预训练模型的出现,都给NLP领域解决这两个问题带来了新的视角,是一次技术的飞跃,产生了第一次的范式转移。
02
为什么是GPT而不是Bert?
前面说了,GPT和Bert都是OpenAI和Google基于Transformer为主题架构的预训练模型。
所谓Transformer模型,是一种用注意力机制来提高模型训练速度的模型,也就是用自动计算"输入数据"和"输出数据"的贡献大小,并通过让模型对重要信息重点关注而忽略其他不重要因素来提高效率,它还可以捕捉信息长距离的依赖关系。
假设有一个句子"我今天很高兴,因为我考试考得很好。",如果我们想要理解"高兴"这个词的含义,我门需要知道它和"考试"这个词之间的关系,而Transformer模型就是可以计算出每个词和其他所有词之间的相关性,从而捕捉到他们之间的长距离依赖关系。
当有了Transformer模型这种核心技术后,就可以让模型在大规模经过科学取样和加工的电子文本语料库上进行预训练,这就是所谓的预训练模型,当中包括两个阶段:预训练+微调
1、预训练则是指在大规模语料库上进行无监督学习(指在没有给定实现标记过的内容示例下,自动对输入内容进行分类的学习方法,目的是发现数据集中的隐含结构),学习通用语言表示,学习数据特征,目的是提高模型的泛化能力;
2、微调阶段是指在特定任务上进行有监督的学习(少量的标注数据),需要微调来适应特定任务。
例如Bert就是提前使用了大量未标注的数据来训练模型,但是在特定任务上需要微调Bert后再输出,这些特定任务例如情感分析、问答具体的应用场景。
Bert和GPT是基于Transformer预训练模型分化出来的两条技术路线。Bert更侧重于针对自然语言理解类任务,用双向语言模型与训练+应用微调的模式,GPT更侧重于针对自然语言生成类任务,用单向(自回归)语言模型与训练+Zero/Few Shot Prompt的模式。
自然语言的理解(NLU)是使计算机理解人类语言文字,提取出有用的信息,用于下游的任务,而自然语言的生成(NLG)是让计算机生成可以让人类理解的自然语言文本,两者是相辅相成的。
但是理解比生成是更容易的,因为理解任务通常是从自然语言文本中提取信息,而生成任务则需要根据给定的信息去生成新的语言文本,这里需要更多的知识和技能,所以自然语言生成的任务,在表现形式上可以兼容自然语言理解的任务,但是反过来却很难做到这一点。
GPT这种侧重于自然语言生成累的任务,意味着可以用同一个LLM生成模型去解决理解和生成的问题,自然就更加脱颖而出,这是后面GPT超越Bert的其中一个原因。
另外一个原因则在于自然语言处理的技术差异上,我们知道:Bert采用的是Fine-tuning,而GPT采用的是Zero shot/Few shot Prompting,这是两种不同的自然语言处理技术,且如果用Fine-tuning效果肯定是Bert比较好,但是如果用Zero shot/Few shot Prompting效果肯定是GPT比较好。
Fine-tuning的本质是指在预训练模型的基础上,使用标注数据进行微调,以适应特定的任务,而Zero shot/Few shot Prompting则是通过给出已知类别相关的实力,要求模型根据其已知类别的相似性对未知类别进行推断来实现的。
Fine-tuning的模式是需要不断地修正模型参数,但是对于一个巨大的LLM模型来说,规模必然非常巨大,有能力对这个模型进行修正,或者说有能力改动模型参数的机构注定是少数,但是任务的需求放却是许多的小机构和个人。
就算你真的愿意把模型开源出来,绝大部分的人都无法部署这个模型,更不用说去做Fine-tuning,从这个方面来看,我们追求的技术路线肯定是以不修证模型参数,就能让任务需求方完成任务的方式。
换句话说就是Prompt的模式,而非Fine-tuning模式。
这个时候无论是Zero-shot Prompting,还是Few-shot Prompting,都是比较优的一种推进方式,知识目前直接用人类习惯的任务表达方式去让LLM做事,你会发现LLM并不能很好理解,但是如果你能给些提示给他,他或许就能触类旁通。
你可以理解为Zero-shot Prompting是我们追求的终极形态,但是因为现在技术还达不到,所以我们退而求其次,先用着Few-shot Prompting这种过渡技术来代替。
很长一段时间,GPT3.0+Prompting是一个固定组合,被大家认为是过渡期的技术,后面ChatGPT的出现,直接打破了这一僵局,用Instruct取代了Prompting,产生了第二次的新的范式转移。
ChatGPT3.5的新,在于新加入了一些人工标注的数据,量级很少只有数万,但这些不是所谓的"世界知识",而是所谓的"人类偏好"。
举个例子,人类习惯会把"把下面句子翻译成英文"这种句式作为要调用"机器翻译"这种功能的表达形态,因为LLM是机器并不能完全理解,所以需要ChatGPT进行人工标注数据,向里面注入这种知识,方便LLM理解人类的命令。
可以看出,ChatGPT的最大贡献在于实现了人类和LLM模型的接口对接,让LLM能适配人的习惯命令表达方式,而不是让人去适应LLM,再绞尽脑汁去给出一个能跑的命令(想想平时用Excel)。
03
GPT到底学会了什么?
GPT从海量的自由文本中学习知识,主要分为语言类知识和世界知识:
1、其中词性、句法、语意这种属于语言类知识;
2、世界知识又分为是事实型知识和常识性知识,例如"毛主席是中国人"这种是事实型知识,"人类有两只手"这种是常识性知识;
语言类的知识相对有限且静态,但是事实类的知识数量巨大且不断变化,所以增量的训练几乎都来自于世界知识。
但是上面的这些信息,如果一个人拥有超级强大的记忆力,他也是能记住的,但是能记住并不代表会运用,所谓的会运用强调的是一种推理能力。
目前在LLM模型中,推进推理行为的工作主要为两大类:
1、给LLM提供Prompt的方法,核心思想是通过合适的提示语和提示样本,更好地激发LLM本身就具备的推理能力;
2、在预训练中引入程序代买,和文本一起参与预训练,进一步增强LLM的推理能力;
其中第2种就是OpenAI正在实践的思路,利用代码增强LLM的推理能力,更体现出一种通过增加多样性的训练数据来取得推理能力的提升,而Prompt的方式不太能提升推理能力,更像是让LLM在某些时候更好地展示出这种技术和方法,前者更治本,从长远来看,第二种方式更加重要。
据了解,OpenAI对LLM在理念及相关技术方面,领先国外Google、DeepMind大约半年到一年的时间,领先国内大概两年的时间。
04
关于"涌现"
所谓涌现,可以定义为某个系统,某个能力,在某个维度参数超过某个临界点后,突然迅速增长,而这种能力在为突破临界点的之前是不存在的。
自从模型的预训练库里加入了大量代码作为语料之后,不仅仅只是能读懂和理解,从而解锁了"推理"这种能力。毫不扩张地说,"推理"这个能力就是在一定积累程度下的GPT3里"涌现"出来的。
过往的NLP模型更多是按照给定具体任何和具体数据来训练,数据的质量如果很好,也就意味着模型的效果越来越好,但是LLM的最大特点在于:数据越多越好,但是质量不是最重要的,而是次重要的。
这一个的转变代表了以LLM为首的模型,在把信息建立了更多连接之后,很多能力的出现并不依赖数据的质量,而更依赖数据的数量到达一定程度,模型能通过对新问题的推理,在无需重新训练模型的状态下给出效果更好的答案。
这种涌现的能力,称为"乌鸦"。
要解释清楚乌鸦,可以看看下面这篇朱松纯教授的文章节选:
同属自然界的鸟类,我们对比一下体型大小都差不多的乌鸦和鹦鹉。鹦鹉有很强的语言模仿能力,你说一个短句,多说几遍,它能重复,这就类似于当前的由数据驱动的聊天机器人。二者都可以说话,但鹦鹉和聊天机器人都不明白说话的语境和语义,也就是它们不能把说的话对应到物理世界和社会的物体、场景、人物,不符合因果与逻辑。
可是,乌鸦就远比鹦鹉聪明,它们能够制造工具,懂得各种物理的常识和人的活动的社会常识。
下面,我就介绍一只乌鸦,它生活在复杂的城市环境中,与人类交互和共存。YouTube网上有不少这方面的视频,大家可以找来看看。我个人认为,人工智能研究该搞一个乌鸦图腾, 因为我们必须认真向它们学习。
上图a是一只乌鸦,被研究人员在日本发现和跟踪拍摄的。乌鸦是野生的,也就是说,没人管,没人教。它必须靠自己的观察、感知、认知、学习、推理、执行,完全自主生活。假如把它看成机器人的话,它就在我们现实生活中活下来。如果这是一个自主的流浪汉进城了,他要在城里活下去,包括与城管周旋。
首先,乌鸦面临一个任务,就是寻找食物。它找到了坚果(至于如何发现坚果里面有果肉,那是另外一个例子了),需要砸碎,可是这个任务超出它的物理动作的能力。其它动物,如大猩猩会使用工具,找几块石头,一块大的垫在底下,一块中等的拿在手上来砸。乌鸦怎么试都不行,它把坚果从天上往下抛,发现解决不了这个任务。在这个过程中,它就发现一个诀窍,把果子放到路上让车轧过去(图b),这就是鸟机交互了。
后来进一步发现,虽然坚果被轧碎了,但它到路中间去吃是一件很危险的事。因为在一个车水马龙的路面上,随时它就牺牲了。我这里要强调一点,这个过程是没有大数据训练的,也没有所谓监督学习,乌鸦的生命没有第二次机会。这是与当前很多机器学习,特别是深度学习完全不同的机制。
然后,它又开始观察了,见图c。它发现在靠近红绿路灯的路口,车子和人有时候停下了。这时,它必须进一步领悟出红绿灯、斑马线、行人指示灯、车子停、人流停这之间复杂的因果链。甚至,哪个灯在哪个方向管用、对什么对象管用。搞清楚之后,乌鸦就选择了一根正好在斑马线上方的一根电线,蹲下来了(图d)。
这里我要强调另一点,也许它观察和学习的是别的地点,那个点没有这些蹲点的条件。它必须相信,同样的因果关系,可以搬到当前的地点来用。这一点,当前很多机器学习方法是做不到的。比如,一些增强学习方法,让机器人抓取一些固定物体,如积木玩具,换一换位置都不行;打游戏的人工智能算法,换一换画面,又得重新开始学习。
它把坚果抛到斑马线上,等车子轧过去,然后等到行人灯亮了(图e)。这个时候,车子都停在斑马线外面,它终于可以从容不迫地走过去,吃到了地上的果肉。你说这个乌鸦有多聪明,这是我期望的真正的智能。
这个乌鸦给我们的启示,至少有三点:
其一、它是一个完全自主的智能。感知、认知、推理、学习、和执行, 它都有。我们前面说的, 世界上一批顶级的科学家都解决不了的问题,乌鸦向我们证明了,这个解存在。
其二、你说它有大数据学习吗?这个乌鸦有几百万人工标注好的训练数据给它学习吗?没有,它自己把这个事通过少量数据想清楚了,没人教它。
其三、乌鸦头有多大?不到人脑的1%大小。人脑功耗大约是10-25瓦,它就只有0.1-0.2瓦,就实现功能了,根本不需要前面谈到的核动力发电。这给硬件芯片设计者也提出了挑战和思路。十几年前我到中科院计算所讲座, 就说要做视觉芯片VPU,应该比后来的GPU更超前。我最近参与了一个计算机体系结构的大项目,也有这个目标。
在座的年轻人想想看,你们有很大的机会在这里面,这个解存在,但是我们不知道怎么用一个科学的手段去实现这个解。
讲通俗一点,我们要寻找乌鸦模式的智能,而不要鹦鹉模式的智能。当然,我们必须也要看到,鹦鹉模式的智能在商业上,针对某些垂直应用或许有效。
上面引用说到的鹦鹉模式的智能,正是我们当下层面的智能,过去的AI应用也几乎来自:需要高质量的数据、高效模型的发展,用更高的算力来发现更多的"对应关系"
过往更多是在"寻找对应关系"上做文章,而大自然用乌鸦的例子向我们证明,真正的人工智能应该在"懂"这个层面去深化。
ChatGPT是否真的有在"懂"的层面做深化,我们可以通过以下问题去验证:
1、问题描述越详细,ChatGPT回答得越好(因为越详细的描述在预训练里能找到对应关系的概率就越低);
2、询问ChatGPT互联网上并不存在的内容时,能给出较好的答案;
3、给出一个新的游戏规则,ChatGPT能和你玩;
与其说过往的智能形态是靠我们不断提供新的数据,然后模型继而模仿,本质上是基于寻找对应关系,而未来新的智能形态更多是靠我们不断去调教和优化,然后慢慢它竟然懂了,本质上是完善了内在逻辑的补充。
为此我们可以尝试做个总结,在这里厉害的LLM模型是GPT-4,而把GPT-4真正能与人类需求对接起来的是ChatGPT(因为添加了Instruct的方式),其中Instruct用的是RLHF这项技术,这个虽然有难度但也不会说特别难,而真正的难是难在涌现出"乌鸦"的能力。
乌鸦能力的涌现,是具有不确定性的,其涌现的路径更是无从复制,我们都知道最有实力和OpenAI做抗衡的,也许是提出了Transformer的祖师爷Google,我们应该时刻关注着Google,看看它什么时候才能在自己的模型下涌现乌鸦能力。
作者 | 雅格布,寻找收益与风险的不对称性。