当前chatGPT的大名基本无人不知无人不晓,大行其道颇有一统江湖之势。
身处历史变局时刻,目睹chatGPT的发展之快,让人应接不暇。各种产品、服务、学术论文层出不穷,快速演进以天来计算,一个月以前的认知有可能都是过时的。
作为软件攻城狮,大家最关注是会不会被chatGPT替代。
目前普遍的观点很扎心--攻城狮不会被chatGPT替代,但会被善用chatGPT的人替代。
森林碰到熊,第一时间要穿钉鞋,跑不过熊不要紧,要能跑过其他人。提前了解怎么用好gpt,就相当于穿了钉鞋。
用好chatGPT的前提是深入理解它:
它跟人脑比有啥相似处?又有哪些限制?有没有它不擅长的东西?
开始分析前我来先给你演示一个小案例,加深你对gpt的认知。
求150和250之间的所有素数?
chatGPT给了些分析和代码,并给出了答案。
大家发现没有,gpt给出的答案中的251是错误的。
追问之后,还是没有算对。
gpt煞有其事地推导了一番,可惜还是没有算对。
这是怎么回事呢?gpt有强大的推导能力,为啥这么简单的数学题反而做不对呢?
根本原因,gpt是个语言模型,它是人的语言训练出来的,它的思维很像人的大脑,不像计算机程序。
见上图,当 ChatGPT 做一些事情,比如写一篇文章时,它所做的基本上只是反复询问 “鉴于到目前为止的文本,下一个词应该是什么?” —— 而且每次都增加一个词。(更准确地说,正如我将解释的那样,它在添加一个 “标记”,这可能只是一个词的一部分,这就是为什么它有时可以 “编造新词”)。
但是,好吧,在每一步,它得到一个带有概率的单词列表。
但是,它究竟应该选择哪一个来添加到它正在写的文章(或其他什么文本)中呢?人们可能认为它应该是 “排名最高” 的词(即被分配到最高 “概率” 的那个)。
但是,这时就会有一点巫术开始悄悄出现。因为出于某种原因 —— 也许有一天我们会有一个科学式的理解 —— 如果我们总是挑选排名最高的词,我们通常会得到一篇非常 “平淡” 的文章,似乎从来没有 “显示出任何创造力”(甚至有时一字不差地重复)。
但是,如果有时(随机的)我们挑选排名较低的词,我们会得到一篇 “更有趣” 的文章。
这里有随机性的事实意味着,如果我们多次使用同一个提示,我们很可能每次都得到不同的内容。而且,为了与巫术的想法保持一致,有一个特定的所谓 “温度” 参数(temperature parameter),它决定了以什么样的频率使用排名较低的词,而对于论文的生成,事实证明,0.8 的 “温度” 似乎是最好的。(值得强调的是,这里没有使用任何 “理论”;这只是一个在实践中被发现可行的问题)。例如,“温度” 的概念之所以存在,是因为恰好使用了统计物理学中熟悉的指数分布,但没有 “物理” 联系 —— 至少到目前为止我们如此认为。见下面openAI CEO的表述)
人脑碰到这种场景时,不仅会考虑词频和语法,还会考虑语义,尤其考虑当前语境下词与词的关系是什么。而gpt在transform架构的帮助下,只是在寻找下一个词而已。
但是没有语义的理解和串接,为啥gpt会有这么好的效果呢?
你可能觉得openAI已经把这些问题都搞明白了,故意对外保密?
其实恰恰相反,可以肯定地说,现在没有科学答案,没人知道chatGPT为什么这么有效,也没有什么第一性原理能告诉你模型到底需要多少参数,需要设置多少超参,基本靠经验和感觉,这和艺术非常相似,有首歌怎么唱的,跟着感觉走,紧拉着梦的手。。。
不信大家可以看看OpenAI的CEO sam altman的原话:
“就是上天的眷顾”,OpenAI最应该感恩的是运气。
大家可以再看看altman的原话:
chatGPT只是个语言模型,不过它确实很神奇。
有人会说chatGPT就这?不就是语言模型吗?何来神奇?
其实不尽然,再来一段altman的原话:
不像大家想的那样看似简单,其实简单中透着神奇。
为什么神奇呢?
神奇来源于大模型的开悟和涌现能力。
所谓开悟是指就是训练和生成之间的关系。
如上图,红色是训练的次数,蓝色是生成的能力。
当大模型训练足够多的次数,它对生成性题目的解决能力突然大幅提升,就像一个孩子长大了一样,这种现象就是开悟。
所谓涌现就是指当一个复杂系统复杂到一定程度后,就会发生超越系统元素简单叠加的,自组织的现象。比如单个蜜蜂行动很盲目,但蜂群却有足够的组织性和目的性;还有股市中每个投资者都是自由的,而整个股票市场的涨跌和震荡却显得非常有序。
大模型就具备这种涌现能力,就如同孩子长大后往往会出乎家长的预料。
其实从事后分析,涌现新能力的关键机制就是思维链,关键点来了:
思维链怎么工作的呢?就是当大模型听说一个东东后,会嘟嘟囔囔自言自语,把它所知道的关于这个东东的各种事情都一一说出来。然后把这些事情的相关性做特别标记并进行关联,从而形成了逻辑能力。
我们做个实验,比如你问大模型:“棒球棒能藏入人的耳朵里面吗?”
它会说不行,然后会长篇大论告诉你一堆逻辑。
其实这就是思维链工作原理,展开如下:
首先它听到棒球棒,就会罗列一堆跟棒球棒相关的东西,尺寸、材质、使用场景等等,然后又会罗列“入人耳”相关的事物,由于有“入”这个字,耳朵的尺寸就被着重标识了出来,棒球棒的尺寸和耳朵的尺寸就建立了联系,并且两者尺寸明显不配套,逻辑被涌现出来了,进一步形成了思维链。这个过程非常像人脑思考的过程,使用语言进行思考就是思维链建立的过程。
有个佐证,非洲的兄弟口算上亿的大数时非常吃力,比如“十亿五千万+九十亿六千万”,因为非洲当地语言“亿”的发音音节相对汉语来说长的多得多,所以口算时思维链也会长的多;而汉语“十亿五千万”就5个音节,口算就会快的多,这也说明人脑的思维链之一也是语言思维。
开悟和涌现就是chatGPT的撒手锏。
这也给我们如何用好chatGPT提了个醒:
当需要大模型涌现时,可以显式让它建立思维链,即先让它先自言自语描述下要涌现事物,然后再发问让它建立关联,这样更能得到靠谱的答案。
那回到开头,chatGPT为啥计算数学有点不太行了吗?
看下图:
大圈表示一切能够计算的问题,其中:
左边小圈代表神经计算,适合神经网络处理,我们的大脑包括GPT在内,神经计算善于发现事物的规律,但对数学问题的处理能力有限。
右边的小圈代表形式逻辑,这里的特点是精准推理,不怕繁杂,持续推演,只要有方程有算法,就能算出来,这是特别适合传统计算机领域。
人脑和GPT也可以处理一部分形式逻辑,所以两个小圈有交集;但是我们处理不了特别繁杂的计算,所以交集不大。
有没有可能将来GPT越来越厉害,让左边的小圈完全覆盖右边的小圈?基本不太可能,语言思考的本质,是在寻找规律。而规律是对客观世界的一种压缩。有些东西确实有规律可以压缩,有些东西比如复杂计算,本质就不能压缩。
这就是GPT不能处理好繁杂数学问题的根因所在。
GPT跟人脑一样,总想找规律走捷径,可是有些数学题只能老老实实地死算。
更致命的是,GPT的神经网络是纯粹的前馈网络,只会往前走,不会回头,没有循环,不像长短记忆神经网络等,这就是它连一般的数学算法都执行不好的原因。
这就是GPT的阿喀琉斯之踵:
它是用来思考的,而不是用来执行严谨持续计算的。
小结:
GPT撒手锏就是它是大语言模型,并且具备开悟和涌现能力,可以看作相当程度拥有人的思维,现在还没有科学理论能够完整解释它为什么能做到,但是确实做到了。
GPT的阿喀琉斯之踵就是它太像人脑了:擅长归纳总结,不擅长做数学计算;它擅长编程,但却不能执行程序。
不过GPT的这个问题很好弥补,通过插件的方式让GPT具备触发执行传统计算机的操作,给GPT装上“手”、“脚”和“口”,就解决了这个问题,相信这个变化不久就会到来。
参考资料
stephen wolfram,《what is chatGPT doing...and why does it work?》