How Does GPT Work?

完成中。。。正在参考的资料:

作者

史蒂芬·沃尔夫勒姆(Stephen Wolfram)无需多介绍,费曼学生,Mathematica创始人已经说明了在学术和商业的成功天才人士。

前言

这本书是2023年3月份出版的,到现在有时候想不明白怎么调教GPT的时候我都会来再次翻阅它,收获颇丰。这本书不会过时。因为它讲的不是GPT的一般功能,而是数学原理和哲学思辨——数学和哲学是不会过时的。

命门

如果你让GPT-4做了个最简单的计算题,1231×434523+323×34636 等于多少?你会发现它会很容易地算错,这是怎么回事呢?GPT-4有强大的推理能力,我让它做奥数题它有时候都能做对,怎么这么简单的计算题它做不对呢?

当然它也不是什么计算都不会。你要让它算个25+48,它肯定能做对……问题是对于数字特别长的计算,它就不行了。

根本原因在于,GPT是个语言模型。它是用人的语言训练出来的,它的思维很像人的大脑——而人的大脑是不太擅长算这种数学题的。让你算你不也得用计算器吗?

GPT更像人脑,而不是像一般的计算机程序

工作原理

简单地说,GPT的工作原理(也就是语言模型的原理)是对文本进行「合理的延续」,说白了就是预测下一个词该说什么。当你给出一个句子,通过多层推理,GPT就能给出下一个最有可能出现的词。接着形成新的输入重复刚刚的推理过程直到遇到中止字符。

沃尔夫勒姆举了个例子,比如这句话:“The best thing about AI is its ability to……(AI最棒的地方在于它具有……的能力)”下一个词是什么?

模型根据它所学到的文本中的概率分布,找到五个候选词:learn(学习),predict(预测),make(制作),understand(理解),do(做事),然后它会从中选一个词。

具体选哪个,根据设定的「温度」有一定的随机性。就这么简单。GPT生成内容就是在反复问自己:根据目前为止的这些话,下一个词应该是什么?

输出质量的好坏取决于什么叫「应该」。你不能只考虑词频和语法,你必须考虑语义,尤其是要考虑在当前语境之下词与词的关系是什么。Transformer架构帮了很大的忙,你要用到思维链,等等等。

是,GPT只是在寻找下一个词;但正如奥特曼说过,难道人不也只是在生存和繁衍吗?最基本的原理简单,可是各种神奇和美丽的事物却可以从中产生。

sam_1.png

训练GPT的最主要方法是无监督学习:先给它看一段文本的前半部分,让它预测后半部分是啥。这样训练为啥就管用呢?语言模型为什么跟人的思维很接近?为了让它有足够的智慧,到底需要多少个参数?应该喂多少语料?

你可能觉得OpenAI已经把这些问题都搞明白了,故意对外保密——其实恰恰相反。沃尔夫勒姆非常肯定地说,现在没有科学答案。没人知道GPT为什么这么好使,也没有什么第一性原理能告诉你模型到底需要多少参数,这一切都只是一门艺术,你只能跟着感觉走。
sam_2.png

奥特曼也说了,问就是上天的眷顾。OpenAI最应该感恩的,是运气。

三个发现

沃尔夫勒姆讲了GPT的一些特点,我看其中有三个最幸运的发现——

第一,GPT没有让人类教给它什么「自然语言处理(NLP)」之类的规则。所有语言特征,语法也好语义也好,全是它自己发现的,说白了就是暴力破解。事实证明让神经网络自己发现一切可说和不可说的语言规则,人不插手,是最好的办法。

第二,GPT表现出强烈的「自组织」能力,也就是我们前面讲过的「涌现」和「思维链」。你不需要人为给它安排什么组织,它自己就能长出各种组织来。

第三,也许是最神奇的一件事情是,GPT用同一个神经网络架构,似乎就能解决表面上相当不同的任务!按理说,画画应该有个画画神经网络,写文章应该有个写文章神经网络,编程应该有个编程神经网络,你得去分别训练——可是事实上,这些事情用同一个神经网络就能做。

这是为什么?说不清。沃尔夫勒姆猜测,那些看似不同的任务,其实都是「类似人类」的任务,它们本质上是一样的——GPT神经网络只是捕获了普遍的 "类似人类的过程"。

这只是猜测。鉴于这些神奇功能目前都没有合理解释,它们应该算作是重大科学发现。
sam_3.png

这些是GPT的底牌:它只是一个语言模型,但同时,它很神奇。

两种计算

史蒂芬·沃尔夫勒姆眼里,世间所有的计算可以分成两类:「神经计算」和「逻辑计算」。

逻辑计算

逻辑计算在理论科学的世界里有很多的研究,例如计算机算法,部分数学运算等等。而在理论科学的历史上绝大多数的伟大成就都和简化逻辑计算,化简计算以达到预测将来系统的发展的目的。但随着理论数学和数值计算深入到一定程度,我们发现有些的数学公式组成的模型并不能让我们准确地追踪它的某一步随着模型的演化

一个古老的例子来帮助理解这种现象,行星围绕恒星做椭圆运动。根据开普勒第二定律的公式,我们可以轻松地带入一个我们想知道的值来得到预测的行星位置。在这个过程中我们就是做了简单的代入求解便可以得到某一步准确的位置信息。这就叫做可以约化的复杂,你不需要为了知道10年后的地球在太阳的什么位置而一步一步地算到10年。但是不可约化的复杂就完全相反,它不能依靠数学公式来预测,只能靠你一步一步地算到你想知道的时刻。(不可约化的复杂(computational irreducibility)是一个很值得学习的思想,很推荐进一步阅读了解)

在这里,我们用一个史蒂芬·沃尔夫勒姆的游戏来简单说明什么是不可约化的复杂。他在2002年的时候发表过一篇文章具体介绍了一个叫“元胞自动机(cellular automata)”的游戏,具体的规则可以参考文章细节,这里就不展开。你只需要知道这个游戏就是给方块设定一两条排列规则,然后这些方块就能按照规则运行下去(很像俄罗斯方块)。但是,恰恰就是这看似简单的一两条规则出现了计算不可约性。我们看下面的运动过程

cellular_automata.png
在游戏进行到前两种情况的时候(870步和843步),我们能很容易地看出这些图形分布的规律,可以很容易地用数学公式表达出来并进行预测。此时,还是处于可以约化的复杂。但随着模型运行到1599步时,模型出现了未曾预料到的变化,就好像细胞分化了一样与之前的规律完全不一样而且是细节上的不一样。这就意味着此时的模型出现了两一种性质“计算不可约性(Computational Irreducible)”。我们已经没有办法再去预测某一步模型的样子了,只能一步一步地算到那一步才知道。

至此,我们就知道世界上有些模型是没有办法用数学去预测的,只能埋头往下算才知道。这很像我们的世界运行,你永远没办法预测后天会发生什么,你只有到了后天才知道。这也就是逻辑计算的一个特点:不可约化的复杂

计算机所做的就是逻辑计算,这里的特点是精确推理,不怕繁杂,永远准确。只要你有方程有算法,这里就能兢兢业业地给你算出来。这是特别适合传统计算机的领域。

神经计算

神经计算是基于神经网络的运算。我们的大脑和包括GPT在内当前所有的AI,都在这里。神经计算善于发现事物的规律,但是对数学问题的处理能力有限。人脑的神经计算是基于神经元的电信号,具体细节还没有完全研究清楚,我们就以简单的计算机神经网络来感受神经运算是怎么运作的。

一切都是概率

不管是人类还是ChatGPT在说话的时候本质上都是在预测下一个最合适的字是什么,为了中英文解释方便,我们把下一个生成的词叫做token。神经网络所有的复杂结构都是为了准确地预测下一个token。举个基础的句子,为了让计算机知道下一个词是什么,最简单的办法就是给它读很多文章,然后让它数出每个词出现的次数,甚至每个字母在一个词里面的频率。这就是对“math”这个词的字母出现次数统计:
count_math.png
我们看到,其实只有给计算机足够多的词,它就能算出并选择“我喜”的下一个词很大概率是“欢”。当然,这是极其简单的例子,神经网络比这种简单数字会复杂得多,但根源是完全一致的:按照学过的经验寻找下一个最有可能出现的token。

至此,我们就能大概分析出神经计算的特点:通过学习更多的信息来概括和预测事物发展的规律。

简单系统

沃尔夫勒姆有个关键的洞见:GPT能写文章,说明在计算上,写文章是一个比我们想象的更浅的问题。人类语言的本质和背后的思维,已经被一个神经网络给捕捉了。

想要说明这个思想,我们需要更深入的解释。对于神经网络来说,具体的工作原理就是每一个神经元接收信息后生成下一个token,这就是典型的“前馈(feed-forward)”网络。神经计算只能不断向前而不能循环,自然也就没办法执行算法,也就没办法迭代。从更广的角度来说,GPT所执行的能力是尝试概括总结各种规律,也就是用神经网络捕捉各种事物的规律。GPT跟人脑一样,总想找规律走捷径,可是有些数学题除了老老实实算没有别的办法。

更致命的是目前为止,GPT的神经网络是纯粹的前馈网络,只会往前走、不会回头、没有循环,这就使得它连一般的数学算法都执行不好。

这就是GPT的命门:它是用来思考的,不是用来执行冷酷无情的计算的

从计算复杂度的角度来说,虽然GPT比人脑知道的更多、反应更快,但作为神经网络,它并没有在本质上超越人脑。因为它和人脑所运行的计算是一回事,只不过只有快慢的区别。并且因为GPT和人脑都极其不擅长逻辑计算,所以神经计算也不可能达到完全覆盖神经计算,也就永远不可能达到逻辑计算的复杂度。因此,借助GPT我们能得出一个反常识的结论:

GPT证明了,语言系统是个简单系统!

沃尔夫勒姆说,用这么简单的规则组成的神经网络就能很好地模拟人脑——至少模拟了人脑的语言系统——这说明什么呢?老百姓可能说这说明GPT很厉害——而沃尔夫勒姆却说,这说明人脑的语言系统并不厉害。

在沃尔夫勒姆眼中,语言无非就是由各种规则组成的一个系统,其中有语法规则和语义规则。语法规则比较简单,语义规则包罗万象,包括像“物体可以移动”这样默认规矩。从亚里士多德开始就一直有人想把语言中所有的逻辑都列出来,但是从来没人做到——可是现在GPT给了沃尔夫勒姆信心。

沃尔夫勒姆说你GPT能做的,我也能做。他打算用一种计算语言——也就是「沃尔夫勒姆语言」——取代人类语言。这么做有两个好处。一个是精确性,人的语言毕竟有很多模糊的地方,不适合精确计算;另一个则更厉害:沃尔夫勒姆语言代表了对事物的“终极压缩”,代表了世间万物的本质……

结论

总而言之,GPT的底牌是它虽然结构原理简单,但是已经在相当程度上拥有人脑的思维。现在还没有一个科学理论能完整解释它为什么能做到,但是它做到了。GPT的命门也是因为它太像人脑了:它不太擅长做数学计算,它不是传统的计算机。

这也解释了为什么GPT很擅长编程,却不能自己执行程序:编程是语言行为,执行程序是冷酷计算行为。

理解了这些,我们研究怎么调教GPT就有了一点理论基础。而这些命门其实很容易弥补。给它配一台电脑和计算器就行了呗。

所以OpenAI给ChatGPT开启了插件功能。