"); //-->
来源:机器之心
GPT是鹦鹉学舌,还是真的具有类人智能?带你一探究竟。
「两位说英语的荒岛幸存者被困在相邻岛屿上,中间隔着危险水域。幸运的是,他们发现了前任居民留下的电报机,电报机通过一条水下电缆连接起来,他们能够通过电报传递信息。但是,他们不知道的是:附近水域里,生活着一个具备超级智能的章鱼,它劫持了水下电缆并****了他们之间传送的消息。尽管章鱼不懂英语,但其超级智能使其能够检测到电报信息文字的统计模式,并能准确表示各种电报信号间的统计关系。在章鱼觉得自己已经学好这些统计规律之后,它切断水下电缆,将自己两个长触手定位在电缆的两个末端,基于它所识别出来的统计模式,接收并自己来回复两名漂流者的电报信号。无论两位幸存者是否注意到交流对象已发生变化,章鱼发送出去的信息,在本质上似乎没有任何含义。毕竟,章鱼只是遵循它从人类之间的前期交流中学到的统计模式,而并没有看到过任何人类对信号的解释,比如 “椰子” 或 “海水” 所代表的真实含义。此外,章鱼甚至可能都不明白这些信号是具有意义的,或起到了促进交流的功能。」 —— 「章鱼测试(The Octopus Test)」- Bender & Koller
如果我们把「章鱼测试」里的章鱼换成 ChatGPT 或 GPT 4,您会怎么看这个问题呢?也就是说,下述两种观点,您支持哪一种呢?一种观点与 “章鱼测试” 看法类似,认为 GPT 4 这种 LLM 模型仅仅学会了语言中的单词共现等浅层的表面统计关系,其实并未具备智能,只是类似鹦鹉学舌的语言片段缝合怪而已;另外一种观点则认为:GPT 4 不仅学会了语言元素间的表面统计关系,而且学到了人类语言甚至包括物理世界的内在运行规律,文字是由内在智能产生的,所以 LLM 具备类人智能。
这两种观点针锋相对,我不确定您属于哪一派。目前无论是学术界,还是社会层面,其实持有两方观点的人数都不少,相互之间争论很激烈。比如不认为大语言模型具备智能的反方知名代表人物,AI 圈子里的大佬代表是 LeCun,语言学界代表人物是乔姆斯基,都否认通过 Next Token Prediction 这种方式训练出来的大语言模型能够具备智能;而正方代表人物也很多,OpenAI 不说了,毫无疑问是最具影响力的正方代表,从目前的公开言论看,Hinton 老爷子很明显也持正方观点,而且特别正方,不仅认为 GPT 4 具备类人智能,而且觉得将来人类这种碳基智能很可能是 LLM 这种硅基智能的引导启动程序 (Booster),在这点上 Hinton 和马斯克(这是简称,全名为:埃隆・电动车之王・火箭先驱・Twitter 再造者・环保先锋・火星殖民者・OpenAI 唾弃者・马斯克)的看法是类似的。
目前规模够大的 LLM 模型,在训练基座模型的时候,都采用「Next Token Prediction,NTP」 (后文为了书写简洁,有时会简称为 NTP) 任务。Next Token Prediction 如此简单的操作,就是通过语言中前面的单词,来产生下一个单词,很明显这样学到的不就是单词之间的表层统计关系吗?对于持正方观点的人士来说,这个问题其实并不好反驳,因为乍一看上去确实如此,我相信绝大多数正方人士很难给出有理有据的另反方人士信服的解释。
至于我本人,如果看过我年初写的《张俊林:通向 AGI 之路:大型语言模型(LLM)技术精要》,很容易看出持正方立场。其实当时在那篇文章的最初版本里,有一节内容,主题就是讨论 NTP 为何会产生智能。按照 23 年 1 月份版本的我当时对 LLM 的理解,把 NTP 产生智能归纳为「通过 NTP 任务,LLM 在模型参数里学到了一个****的知识图谱,当输入 Prompt 的时候,Prompt 包含的概念启动知识图谱相关节点,然后在知识图谱上按照 < 激活 - 扩散 > 理论引发知识间的激活扩散和信息传递,由此导致 LLM 产生了智能」。当时版本的我是这么理解这个问题的答案的,现在版本的我再去审视这个看法,虽然不能说是错的,但是很明显这种认知还是浅了些或粗略了些。当时,由于那篇文章已有内容已经太长,再加上支持上述看法的依据不太充足,所以我在发文的时候把那节内容删掉了。
本文专门探讨这个主题,我试图梳理归纳目前已有的一些片段性的证据,对上述问题给出一个相对有依据的回答。其实目前正方并没有专门的研究来解释这个问题,但是,如果把各种已知用于研究其它问题的研究结论片段联系到一起来看,即我们可以把寻找这个问题的答案当作一个拼图游戏,在已知研究的拼图碎片基础上,如再加一些合理的推论和假设,我认为正方大致是能给出一些起码看似合理的解释的。本文在结构上首先会比较细致地介绍下 OpenAI 对这个问题的看法,这个对大多数人来说应该是个很新颖的角度,之后会收集汇总现有的研究结论,之后会给出我认为还算合理的解释。
天平的两端:压缩即智能
假设有一个想象中的天平,天平的左端用来称量大语言模型的数据压缩能力,天平的右端用来称量大语言模型的智能水准。问题是:这个天平的称量结果是可信的吗?换句话说,如果大语言模型具备越强的数据压缩能力,是否意味着它具备越强的 AGI 智能呢?
OpenAI 肯定是相信两者间存在等价性的,目前看,这可能是推动 OpenAI 大模型发展方向的一个核心理念。OpenAI 首席科学家 Ilya Sutskever 在今年早期的一些公开访谈初步透漏了这个思路。而后续 OpenAI 负责大模型团队的 Jack Rae 在 Stanford MLSys 研讨会上做了以「Compression for AGI」 为主题的报告,则是从理论层面,概念性地论证了这一理念。
本部分主要参照 Jack Rae 报告内容,转述 OpenAI 坚信的 “压缩即智能” 论证过程。我们先从一个数据压缩传输的假想实验讲起。
利用 LLM 进行数据压缩
我们假设小帅和小美分别住在地球和火星,现在小帅获得一批机密数据 ,需要以最小传输成本传送给远在火星的小美,小帅计划通过 LLM 模型比如 GPT 来对数据进行压缩,然后把压缩后的数据传给小美,以此来减少传输数据数量。同时,他希望信息压缩是无损的,也就是说,小美要能够根据拿到的压缩数据,利用一定方法完整恢复原始数据,不能有任何差异。这个事情看似不太容易做到,怎么办呢?
首先,小帅把 GPT 模型的代码,包括代码本身、初始化方法以及随机种子等信息传给小美,小美根据小帅传过来的 GPT 模型的信息,利用同样的代码、初始化方法以及随机种子,复制并初始化了一份自己的 GPT,以此来让自己手上的 GPT 模型和小帅手上的模型,在初始状态保持一致。
接下来,小帅以 Next Token Prediction 作为任务,以 作为训练数据,启动 GPT 模型的训练过程,训练过程本身其实就是数据压缩过程。我们假设小帅已经对数据 通过 GPT 进行了压缩,对应的压缩数据为,并将这批压缩数据陆续传给了小美,现在准备传送数据 。我们在这里按下 “慢放” 键,仔细观察下 GPT 是如何对数据 进行压缩编码和解码的。
编码阶段:我们的目的是利用 GPT 压缩 数据,小帅以 作为 GPT 的输入,利用当前版本的 GPT 模型 做一次 Next Token 预测。假设 Token 词典是,则 GPT 模型经过 Next Token 预测,产生了词典 中每一个单词的生成概率, 中有些单词生成概率大,有些生成概率小,所有单词的生成概率之和为 1,于是形成 的概率分布 。若设原始数据 ,此时,可以利用某种数据压缩算法,比如算术编码(Algorithm Coding, AC ),根据 和 ,将 压缩成数据 (至于算术编码如何运作,稍后会说明),即,于是小帅可以把得到的压缩编码 传给小美。
另外,如果 GPT 根据上文 做 Next Token 预测得到概率最大的单词不是标准答案 ,说明模型训练得还不够好,于是小帅让 GPT 执行一次反向传播,来修正 GPT 模型参数,希望以后 GPT 遇到类似上文能够更准确地做出预测。经过反向传播,模型参数发生变化,GPT 模型从 修正到了版本。
可以看出,上述过程,其实就是针对某个 Token 做的一次标准的 GPT 训练步骤,只不过我们平常训练 GPT 的时候,不会根据 Next Token Prediction 得到的分布概率 以及算术编码来获得 的压缩编码 ,并记录下来而已。如果你愿意,完全可以在训练过程中一步步产生每个 对应的 ,并把它们记录下来,这样就会获得数据 的一份无损压缩编码版本。
解码阶段:接收到小帅传来的压缩编码 后,小美希望利用自己手上的 GPT 模型来恢复原始数据 。她也可以用算术编码来逆向对 进行解码,但是,若想解码 信息不足,除了 外,还需知道 对应的词典 中单词的概率分布 ,但是小帅并没有把 传过来,因为这个信息量太大,传过来很不合算,如何是好?
小美可以用自己手上的 GPT 来产生缺失的词典单词概率分布 ,她把之前已经解码出的 作为模型的输入,让自己手上的 版本 GPT 模型做一次 Next Token 预测,于是 GPT 模型产生了单词概率分布 ,这个与小帅的概率分布 是一样的。得到 后,小美可以利用算术编码对 解码,即 ,这样就恢复出原始数据 。类似的,如果小美手上的 GPT 此次 Next Token 预测最大概率单词不是 ,她也让 GPT 执行一次反向传播,修正模型参数,将 GPT 模型从 版本修正到 版本。只有这样,小美才能保证自己手上的 GPT 模型和小帅在传输过程中始终保持一致。
可以看出,解码过程,其实就是小美也同步进行 GPT 的一次训练步骤,并利用 Next Token Prediction 得到的词典单词概率分布 ,来帮助从压缩数据 解码到原始数据 。
如此这般,小帅和小美就通过两人同步进行 GPT 在 上的模型训练过程,完成了对数据 的压缩和解压,只要不断重复上述过程,小帅就能把 中所有数据无损地传送给小美,实现了通过 LLM 对数据的无损压缩和解压。所以我们可以说,GPT 模型的训练过程,其实就是对训练数据的无损压缩过程,只不过我们平常训练的时候跳过了这个步骤而已。
算术编码机制
上文未讲解算术编码的运行机制,此处以简单例子做简要说明。如上图所示,假设单词词典 包含 4 个单词,我们要压缩编码的原始数据 ,此时 GPT 运行 Next Token Prediction 后,词典 中单词对应的概率分布 在上图图左列出,也就是说,此刻的 GPT 预测的 Next Token,生成概率最大的单词是「too」,而不是 Ground Truth 「MaskNet」。
此时,已知 和它对应的 ,我们使用算术编码来对数据进行压缩。首先,我们可以根据词典中各个单词的生成概率,把 0 到 1 的区间按照每个单词的概率分值进行切割,单词生成概率数值越大,占据区间越长。于是,就可以得到每个单词覆盖区间的下界和上界,比如对于要编码的单词「MaskNet」,它的下界是 0.4,因为自身生成概率为 0.2,所以上界是 0.6。为了使得二进制编码后的长度尽可能短,算术编码在 「MaskNet」“” 单词覆盖的 0.4 到 0.6 区间寻找对应二进制最短的十进制小数,很明显在这个区间里,十进制数字 0.5 是二进制最短的数字,于是选择 0.5 作为编码数字,进行数制转换后得到二进制 0.1,这个数字就是单词 “MaskNet” 对应的二进制算术编码,小帅只需要把小数点后的二进制数字 1 发送给小美即可。
接着,介绍小美接收到二进制数字 1 之后的解码过程。如上文所述,小美利用自己的 GPT,也会得到一个相同的单词分布概率 ,按照算术编码原则,用这个分布概率切割 0 到 1 的数值区间,会得到和小帅一样的一个切割图。小美将二进制 0.1 进行进制转换,得到十进制数字 0.5,然后查看 0.5 落在切割图哪个单词的上下界范围内,会定位到单词 “MaskNet”,于是解码出 0.1 代表的对应单词 。
算术编码的思想是很精妙的,它对输入序列动态编码,能够以小数来对整个输入进行二进制编码,编码效率接近于香农提出的熵极限。不过,在我们描述的场景下,因为每个 对应的 在 GPT 训练过程中总是发生变化,所以某个分布 只需要压缩或者解码一个 Token,其思路看起来就很简单,当面向较长的输入序列进行算术编码,其方法可以参考:什么是算术编码 。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。