对于ChatGPT的工作原理,一个常见的解释是根据统计学规律预测下一个词。 但最近一位叫Jacob Bayless的工程师用数学方法得出惊人结论: 若是如此,所需的信息量足以让整个宇宙都坍塌成黑洞。 这一数据量是500008000,根据贝肯斯坦上限(Bekenstein bound)原理,如果把这些信息分配到空间当中,所需要的信息密度已经远超宇宙能承受的最大值。 而这仅仅是把数据存储起来的消耗,更不必说还要进行运算了。
而ChatGPT与单纯统计预测的区别,可以做这样的类比:
如果天文学家通过历史观测记录推算出月食的周期,这可以算是统计学。
但当他们总结出牛顿万有引力定律的时候,就已经超越了统计学。
一个流传很广的说法,所谓大语言模型实际上相当于一个“随机鹦鹉”——
与我们观察其输出时的情况相反,语言模型只是将其在庞大的训练数据中观察到的语素胡乱拼接在一起,根据概率生成文本,但不清楚文字背后的任何含义,就像一个随机的鹦鹉。 出自论文On The Dangers of Stochastic Parrots: Can Language Models Be Too Big
这对过去的语言模型,或许确实成立。 比如曾经流行的n-gram算法。 比如当我们在搜索引擎中进行搜索时,出现的联想词就能用此方法实现。
具体来说,下面的三行文本中,第一行纯粹是随机生成,第二行考虑了单词在英语中整体的出现概率,第三行则考虑了单词在前一个词后面出现的概率。
n = 0: RECEIVE FALL SURPRISED FRIDAY INGREDIENT… n = 1: REPRESENTING AND SPEEDILY IS AN GOOD… n = 2: THE CHARACTER OF THIS POINT IS THEREFORE…
不难看出,随着n值的升高,文本越来越接近人类语言。 而n-gram模型根本不需要掌握其中的语义或理解其中的抽象概念,就能生成像模像样的句子。 据此有人猜想,GPT-4会不会也只是一种高级的n-gram呢? Bayless提出,GPT必须学会抽象才能有如今的效果,至少GPT-4肯定如此。
要证明这一点,可以先看下棋机器人的例子。
如果有一种下棋机器人,存储了巨量棋谱数据,对于每个棋局都能推荐下一步。
那它就能通过“背谱法”模仿其他任何棋手或程序的下法。
比如Stockfish是最先进的国际象棋程序,如果仅通过对战而不看源码,是无法确定Stockfish是否在背谱。
但实际上,包含所有情形和步骤的棋谱数据量可能超到2154。
而Stockfish的程序只占用了不到50MB的空间,根本不可能存下需要的所有棋谱。
所以Stockfish肯定是通过更高级的方法来实现下棋的。
人类语言的复杂度远超过棋类游戏,因此GPT的数据量更是同理。
仅在是上一代的GPT-3的token字典中就有超过5万token。
如果对每个词都逐一建立统计信息,n-gram模型中n值将高达8000。
届时,需要存储的情景数量将达到500008000。
正如文章开头所提到,这简直是天文数字,足以让整个宇宙坍缩。
因此,GPT是“随机鹦鹉”的猜测在理论上得到了一定程度的批驳。
仅在理论上进行说明是不充分的,因此研究人员还进行了两个实验,意图证明大模型在学习过程中已经抽象出了算法。 第一个实验关于一道经典的农夫过河问题。
一个农夫有一条船,和狼、羊、菜,农夫要把这3样东西运到河到另一边,农夫每次最多只能通过这个船运一样东西,要防止狼吃羊、羊吃白菜(即不能在没有农夫在的情况下同时在同一岸边),该怎么过?
研究人员将这个问题中的农夫、船、河分别替换成地球人、虫洞和银河系。
狼、羊和菜则分别换成火星人、金星人和月球人。
替换的目的是因为互联网上不太可能出现类似语料,可以判断大语言模型是不是真的掌握了通用方法。 如果GPT不是“随机鹦鹉”,那么它至少不会犯下只有“随机鹦鹉”才会犯的错误。 GPT-4针对替换后的问题给出了正确的回答,GPT-3.5则没有。
但它们并没有犯研究人员预想的“鹦鹉”错误——即在回答中出现狼、船、河等已被替换掉的词语。 回答中使用的句子,也无法在互联网中被检索到。
这些现象都证明了现在的大语言模型的生成方式已经超越了“概率预测”。 第二个实验则是数字排序。 如果让GPT学习数字排序,它们究竟是只会记住给出过的数字顺序,还是真的研究出排序算法呢?
其实只要从GPT的输出当中就可以看出来了。
假如从1-100中随机选择10个数字,并将其顺序打乱,将一共有这么多种情形:
如果再考虑数字的重复出现,又或者数字的数量发生变化,根本不可能存储如此之多的情形。
因此,只要GPT能够针对未知的排序问题给出正确的回答,便可以说明它们是真的研究出了排序算法。
研究人员训练了一款特斯拉前AI总监Andrej Kaparthy发明的语言模型nanoGPT,专门让它做数字排序。 结果显示,随着训练步数的增加,模型给出的数字顺序越来越完美。 虽然在训练步数达到16万左右时突然出现了大量错误,但也很快得到了纠正。 这说明这款模型并不是仅仅根据学习的素材对未知的数字进行排序,而是已经掌握了背后的方法。
这个测试只是在一台笔记本电脑、算力非常有限的GPU上进行的。 更不必说GPT-4了。