收藏细品!ChatGPT的技术实质、局限与未来
一个多月前,ChatGPT仿佛横空出世,迅速火出圈,试用账号成了抢手货,相关概念股也迅速被炒了一轮……
但对价值投资者而言,技术可能是投资者的机会,更可能成为投资者之痛,如若没有足够的能力去认识它的实质,就根本无法把握它的现在,更别说是未来。
本次推文源自北大光华价值投资课程沙龙第八期的嘉宾分享。主讲人张轶既是美国人工智能协会的会员,也在金融行业有丰富的从业经验。
他将ChatGPT放在了整个AI发展史的大背景下来考量,力图尽量用平实的语言,把自己对ChatGPT及其背后相关的各种AI发展范式、技术模型的理解传达给大家。
对于重要的人物、书籍、论文甚至网络课程,也都做了指引,能帮助我们更加深入全面地去认识这个看似全新但实际上早有各种线索可循的技术产物。
以下为正文。
大家好,今天分享的内容会讲三个部分的东西:我想从(1)整个人工智能发展的历史沿革、(2)自然语言处理范式的演化,就相对比较技术方面来讨论一下ChatGPT是怎么来的。然后再按照整个技术演化的路径,看一看(3)ChatGPT所依赖的GPT 3.5这样的大语言模型(LLM)目前发展到什么阶段,从工程的角度,我们有哪些可以做的,往后有哪些可能的方向。
分享会偏技术性,尤其是第二部分,自然语言处理范式,里面可能会涉及到一些数学。我尽可能让内容既浅显易懂,又能够把它讲明白。
01
理解人工智能和ChatGPT要注意……
第一部分,我想讨论一下整个人工智能是如何发展到今天这样一个阶段的。我的自我定位是一个资深码农,所以今天更多想从一个码农的角度来讨论,整个人工智能发展到今天,ChatGPT这么出圈,到底是如何来的?往后我们该往哪个方向去?从工程角度看,有哪些问题和值得去做的事?
人工智能发展与路径依赖
在开始之前,想跟大家讨论一下我自己的方法论,这是鲁迅先生的一句话。鲁迅先生的原话是“从来如此,便对么?”这话比较尖锐,我把它说温和一点,就是:“一直以为是正确的,现在还是正确的吗?”把你带到今天的那条道路还能不能带你去远方?
我们做事情往往都会有各种各样的路径依赖。在人工智能这几十年的发展历史中,路径依赖非常明显。一会儿我们的讨论会看到,人工智能这些年来的路径依赖给人工智能带来了高峰,也带来了低谷。今天的ChatGPT或者大模型到了今天是不是依然会体现这个特点?我想大家会有自己的判断。
我们看一个具体的事实。一位资深的研究人员得出一个结论:我们人类的适应性的增长是线性的,而技术的增长,是指数式的。他认为,在今天,指数式的技术增长已经超过了人类线性的理解力的增长。
到底是不是这样?我们来看这张图,是整个移动互联网的数据量。2007年被称作移动互联网的元年,这一年发布了首代iPhone,带来了真正意义上移动互联的爆发式增长。
2007年到2019年,整个移动互联网的数据量在12年间有了3万倍的增长。12年增长了3万倍,它是不是一个确定的趋势?我想答案是肯定的,移动互联网一定是一个无可动摇的方向。但是今天我们还有多少企业在开发只在桌面电脑端能用的应用,为什么这些企业看不到移动端这样一个3万倍增长的大趋势呢?
大家有孩子的,你有多少次拦住你的孩子用iPad、用iPhone刷手机端,你自己会拿着手机端说我在浪费时间。一个3万倍的增长为什么不能改变我们的学习范式呢?
我个人最大的爱好是读书,我有两万七千册的纸质藏书,为了这两万册藏书,我买了近一百平的地下室,做了十八组密集架,在北京市的东三环,这个成本是非常非常高的。但两万册书一部iPhone就可以放得下了,我为什么要在北京这样一个寸土寸金的地方,搞这么大的地方放纸质书呢?因为我的路径依赖告诉我,拿起一本纸书叫学习,拿起一个移动端叫玩。
3万倍的增长都不足以改变我这样的认知,所以我想,整个人工智能发展的过程中,也有无数这样的事情,就是人的认知跟不上技术的发展。所以请诸位回想一下,你今后还真的要阻止你的孩子和阻止你自己用移动端吗?(移动互联网的数据量)到今年应该是20万倍以上的增长,基本上已经挤压掉所有来自桌面端的流量了。那我们还在为桌面端开发应用,我们还是拿着纸书去读——当然作为爱好无可非议。
可是,为什么我们还不能够从内心里真的接受移动端是未来,移动端是现在。这就是人的一个特别典型的路径依赖。在人工智能发展历史上,这种事情发生了无数次。
人工智能的分类,以及CHATGPT所属大类
接下来,我们需要定义一下,什么叫人工智能。人工智能有很多种定义,我自己有一个比较简单的对人工智能的分类。
人工智能在我看来,可以分为三类:
(1)弱人工智能(Narrow AI)。它干的是一些比较确信的方向,比如图像识别、语音识别、自然语言处理、车辆驾驶等特定领域里确定的事情。
(2)通用型或强人工智能(AGI)。现在的大模型一直强调自己在向着AGI这种通用型人工智能迈进,这可能更接近于科幻小说里类人的机器人。我个人觉得AGI离我们还有比较远的距离。
(3)商业产品的人工智能。我觉得它依然是一个基于人工编写的规则、策略与统计方法的自动机系统。这和人工智能有本质的区别,下面我们会谈到。
我们今天所讨论的人工智能、大模型、ChatGPT,所有这些依然是弱人工智能,在一个特定领域里面能够完成特定工作的人工智能。虽然大模型也宣称自己是AGI,很多机构也在说是AGI,但从学术定义看,我们离AGI这种通用的可以达到人类智商水平、认知水平的人工智能还有一定的距离。
弱人工智能在今天的整个实验领域主要有四个大的方向:(1)图像识别(2)语音识别(3)自然语言处理(4)车辆驾驶,以及这些排列组合衍生出来的东西。
我们不看存在于科幻或者20年、30年甚至500年后的东西,我们只看今天能够在“特定环境”中完成“特定任务目标”的智能。这句话很重要,尤其是“特定环境”这几个字非常重要。ChatGPT今天火出圈,大家对它褒贬不一,你仔细看提到的问题,依然是有没有把它放在这样一个所谓的特定环境中。这非常重要。
02
人工智能发展的历史沿革
人工智能其实是一个非常古老的话题。如果从学术定义方面寻找这个名词的起点,1956年达特茅斯会议的会议纪要里面提到了Artificial Intelligence这样一个名词。1956年对很多顶级大学来讲,人工智能专业的开设要早于计算机专业,这是一个反常识的常识。很多顶级大学首先有的人工智能专业,其次才是计算机专业。但这中间有很多次沉浮。
达特茅斯会议,实际却备受期待的起源
1956年达特茅斯会议的报告提出了人工智能这个词。想请问大家,1956年的世界是在一个什么状态下?1956年为什么会有人工智能这件事儿爆发出来,为什么会有这么一个定义,把一种我说是通用数学处理方法,起了个名字叫人工智能。为什么会有这样一个东西的出现?
达特茅斯会议的夏季项目提案
因为1956年冷战尚未全面开始,二战刚刚结束,科学家们找不到经费来源了,他们需要一个非常炫酷的名词去找国防部要经费。达特茅斯会议纪要里面写着这句话的,他们需要一个能够更有说服力的名词来找国防部要经费。因为国防部的老爷们,你讲做大规模并行通用计算,他听不懂是什么。你说这叫人工智能,将来要取代人类。好吧,我们花钱来研究这件事。人工智能的起源就是这样,非常实际。
但是起来之后,大家会发现,这个概念或者方法论,我们所有人都对它寄予了极高的期待。
1958年,日后将成为图灵奖和诺贝尔经济学奖双重得主的赫伯特•西蒙就说,十年之内,计算机将发现并证明一个重要的数学定理。1958年时,计算机是一间屋子那么庞大,闪烁着各种灯光,吞吐着纸带的大怪物。当时西蒙就认为,十年之内、1968年之前就可以发现并且证明一个数学定理。这是多么高的期望值!
神经网络研究与第一次高峰和低谷
再往下的重要事件,1963年,斯坦福的人工智能实验室(AI Lab)成立,后来李飞飞也担任了这个实验室的主任。同年,最重要的人物出现了,马尔文•明斯基(Marvin Minsky),我的偶像,成为麻省理工人工智能实验室(MIT AI Lab)的主任。
马尔文•明斯基
我非常非常崇敬他,他写的书既优雅又深奥,非常完美,我几乎读过他写的每一本著作,《心智社会》(The Society of Mind)这本书对我来说是圣经一样的。我会反复提到这个人,他也是特别典型的路径依赖的受益者和受害者。但无论如何,马尔文•明斯基对AI的整体发展有非常大的影响。
《心智社会》英文原版封面
最重要的是,1966年,爱丁堡大学建立了感知学系、机器智能与感知系。至此,人工智能最重要四所大学中三所已经冒出来了:斯坦福,MIT和爱丁堡大学,还有一所我们过会儿再说。目前全世界最重要的大模型,最重要的研究方向的来源其实依然是这几个大学。他们从1963年开始到现在,有了60年的积累。60年时间,这几所大学依然在整个人工智能领域占据着非常重要的位置。
也是在1966年,美国海军花了大价钱资助达特茅斯会议的所有科学家们去做俄语到英语的机器翻译。因为当时冷战要去监听前苏联的消息,但又没有那么多的俄语人才,所以当时最重要的一个动因就是要做俄语到英语的机器翻译。而这件事在最初的时候,被人工智能的科学家们认为是相对确信可以达成的目标。可是其实花了十年左右的时间,机器翻译失败了,美国政府资助的所有机器翻译项目都被取消。这是对人工智能的一个重大打击。
然而马尔文•明斯基却说:在一代人之内,如何创造人工智能的问题,将获得实质上的解决。1970年他说:在三到八年的时间里,我们将得到一台具有人类平均智能的机器。他在当时是全世界人工智能研究的最大的权威,他是这样的乐观。
但是事实和他们的想象差距非常大。1973年,英国政府做了一个非常深入的评估报告,认为这事儿不靠谱,就停下来了。所以到1974年,即1970年代中期,人工智能研究整体上被认为进入第一次巨大的低谷。
而在个过程中什么东西被放弃了很重要。
第一代的人工智能就是感知器+神经网络。马尔文•明斯基有一篇非常重要的论文,论述了感知器和人工神经网络总体上的局限。所以从1970年代中期起,绝大部分人工智能的学者放弃了对神经网络的研究,转向专家系统。专家系统是一套预设规则运转的系统。
专家系统与第二次高峰和低谷
后来到1980年代,日本经济非常发达,于是认为,你们当年没做成的这件事,我们现在有钱,可以拿钱把它堆出来。
所以,日本做了新的五代机,和我们所熟悉的Wintel电脑体系不太一样的第五代电脑。它是基于Prolog,基于人工智能语言的,基于推理性语言的五代机,从80年代研究到了90年代,十年时间。
而这十年时间,由于日元的注入,达成了第二次的高潮。到1986年时,AAAI的参会人数达到了成立来的最高峰。但很可惜的是,这些基于人工智能LISP语言、Prolog语言做出来的专家系统实际运行中的效果,比宣传差的非常多。
这是第二次高峰和低谷,十年时间。第一次花了二十年。
那么,专家系统为什么没有达到实际的效果呢?其实这件事我们今天回过头看会觉得蛮简单的。
什么叫专家系统,就是当它来模拟人类做决策的过程,首先需要所谓的专家,把整个决策过程用决策树这样的分支描述清楚,然后机器再去践行这个决策树。
但是我们可以用常识想一想,在我们日常生活中做决策的时候,有多少次能够把决策过程用决策树描绘出来的?有一小部分可以,但是越复杂的系统,越是混沌的系统,越无法用决策树去描绘它。人都讲不清楚,一个来模拟专家行为的系统怎么可能会取得比它更好的效果呢?
今天我们会觉得这事好像不合理,但当时人们却觉得只要堆钱,只要足够的投入资源,只要足够的去调研、去深入挖掘,就一定能把这事讲明白。但十年的时间证明了不行。第二次的高峰,即便是拿日元堆,在日本最繁荣的时候也没堆出来。
到了2002年,AAAI的参会人数只有1986年的五分之一,1986年的时候差不多有5000多人参会。那个时代,一个学术会议的年会5000多人蛮大的,但今天有多少人呢?我上一次去开会的时候大概有近3万人。
人工神经网络再次崛起
那么现在,人工神经网络怎么又能崛起了呢?在最早1956年的时候,真正的人工智能研究的就是神经网络,而不是其他任何东西。当时的报道是这么说的,当时的神经网络是一台硬件。这个是当年机器的照片。它是用物理意义上的硬件来模拟人类的神经元,来达成研究的东西。
我们可以回过头来看,可以简单地说这样不对。人脑大概有1000亿的神经元,这是我们的共识,然后加上各种突触的连接,大概是8000亿这个量级。那用硬件做一个1000亿神经元、8000亿连接的玩意儿,这个硬件可能要比地球还复杂了吧。所以这件事今天我们会觉得肯定是做不到的。但当年大家就觉得,只要到一定的规模就OK,其实最后结果不是这样的。
那后来为什么再次兴起?其实跟四个人紧密相关。
一位是蒙特利尔大学的学者Yoshua Bengio。他在2003年就提出了一系列人工神经网络模型,可以说整个神经网络结构是他设计的。他利用现代计算机技术建立了目前整个深度学习网络结构的模型。他2003年提出的论文,很可惜2012年才被翻出来,又重新认识了。
第二位更加关键人物,Geoffrey Hinton,他是我的第二个偶像。Geoffrey Hinton去Google当过实习生,他自嘲曾经是Google最老的实习生,但他实际上是整个现代神经网络的鼻祖。
2011年发生了一件重大的,但在当时看来悄无声息的事情。Geoffrey Hinton作为导师给博士生安排工作,想办法让自己的博士到处实习。这件事后来爆发了巨大的威力。他的三个博士生分别去了Microsoft和Google实习,做了神经网络,利用打游戏的英伟达显卡GPU做了识别上的巨大突破。
Geoffrey Hinton
有一个一直以来存在的图片库叫ImageNet,大家希望用各种程序在这个标准库里进行图片识别。2012年,ImageNet图片库的错误率已经降到15%,比如这张图片被视为是只猫。到了2014年的时候,它的错误率已经到了个位数水平。到了2015年的时候,神经网络的识别错误率已经低于人类了。
这背后用的全是Geoffrey Hinton提出来的反向传播算法RNN。同时,Google, Mircosoft, IBM以及多伦多大学(Geoffrey Hinton是该大学教授)联合起来,将语音识别准确率达到了日常的商用水平。
在我读大学的时候,IBM也搞了语音识别叫ViaVoice,用传统的语言模型来识别,效果感人,有一半能对就不错了。然而几年前开始,我写文章的时候是打开电脑,我口述,然后再去改错语音识别的准确度已经非常非常好了,连语气、标点符号基本都能蒙对。2012年已经能做到这个程度了。
到了2014年,人工智能两个主要公司——DeepMind和OpenAI:DeepMind让人工智能学会了打游戏,不是指在电脑里用程序打游戏,是控制游戏杆,用摄像头看着屏幕,然后用机械手控制游戏杆这样打游戏,完全模拟人的行为。
DeepMind的思维逻辑非常简单,要训练人工智能,游戏里面模拟简单,但是随着游戏世界越来越逼近现实世界,人工智能就可以从游戏世界里蹦出来,来到现实世界。这是一条路。ChatGPT的逻辑则是,我就拣最复杂的事情来做,最复杂的搞定了,简单的就搞定了,两条方法论都OK。
到了2016年,AlphaGo打败了李世石,柯洁痛哭流涕。过去一直认为围棋是计算机搞不定的,虽然当年深蓝战胜了卡斯帕罗夫,但那是在国际象棋上面,IBM的深蓝用的不是人工智能系统,而是专家决策系统。但是在围棋上专家决策系统尝试到了失败。在人工智能出现之前,最好的围棋程序也不过是业余二、三段而已。DeepMind发布了AlphaGo,干掉了所有的人类棋手,这就是人工智能的一个重大胜利。
2016年以后,人工智能就变成一个巨大的热点。
传统AI与现在的人工神经网络的差别
到底传统的AI和现在的人工神经网络有什么不一样?传统的AI关注的是什么?我上大学的时候,我们学的人工智能指的是符号逻辑、知识表达、问题推演等等,就像马尔文•明斯基的《心智社会》这本书一样,它是在研究人的思维模式,然后用计算机去复现人的思维模式,这是传统AI在搞的事情。这本书写的非常优美,我非常喜欢,很可惜工程上此路不通。
现在的人工神经网络是什么呢?是利用参数拟合,在给定输入的情况之下,最小化预期输出误差。意思就是我不管你的机制是什么,我用无数的参数去拟合你的机制,在同样的输入情况下,我希望输出的误差最小化。请大家注意,这几句话都很关键。
所以很多人就会说人工智能有一种黑箱的特点——我并不知道这些参数是干嘛的,但是我希望通过一个复杂参数系统,使最终输出能够和“正确输出”的误差最小化。我没说是“正确输出”这四个字,因为这事儿是不能保证的,我能保证的是误差会越来越小,一直在逼近正确输出。这是整个神经网络的核心问题,它是黑盒子。现在有很多人研究它到底为什么是这样,但是目前,某些简单的模型得到了结论,大部分复杂的模型没有结论。
它依然是一个通过参数拟合达成最小化误差的输出。如果大家理解了这句话,就会意识到为什么ChatGPT有时候不靠谱,因为它Design的目标就不是百分之百的靠谱。百分之百靠谱不是神经网络。神经网络的目标就是我来拟合,希望通过一个黑盒子参数让你的输出误差减小,没说变零,这是不一样的。它不是一个解析解,它是一个数值解,这点非常非常重要。
全世界最惨的时候,大概只有五六个人在研究神经网络,就是Geoffrey Hinton加四个博士生。为什么呢?
最早的时候我们研究神经网络,一直是希望利用数学方法、高斯分布,利用各种各样的方法去研究。Geoffrey Hinton非常牛的一点是他把热力学的方法引入到神经网络当中,而且做了反向传播算法,让整个神经网络计算可以得到实现。目前几个最重要的贡献全是他做出来的,几个重要的领头羊都是他的学生。
Geoffrey Hinton是英国人,在英国混不下去去了加拿大,在加拿大穷到多伦多大学给了他一份所谓的国家课题,养着你,让你活下去而已。刚才说了,11年他把几个博士生送到各个大厂去做实习生,这在现在无法想象。
另外两位重要人物,Yann Lecun是Meta的研究总监,下文也会他对以ChatCPT为最新代表的大语言模型的局限性的判断。
最后一位吴恩达大家比较熟悉,做了很多好的东西,这里不再展开。他们几个都在互联网有自己的课程,如果大家对人工智能、神经网络感兴趣,可以直接看他们的课程,我的建议是可以看吴恩达的课程。
前两次人工智能高峰失败的原因
到底人工智能两次失败的原因是什么,这件事情实际是有定论的,Geoffrey Hinton总结了过去几十年间不断失败的原因。
从1956年到2012年,深度神经网络为什么一直失败?
第一,训练用的数据集比现在小数千倍,太小了。当希望一个神经网络有用,训练集的规模一定要大。什么程度呢?几千万条、上亿条数据集是基础。我们知道的比较小的数据集大概有5000万条记录,那已经是极度优化过的训练集了。我们可以从数学上论证这个事儿,数据集越大越好。最早的时候,由于标注和各种成本问题,规模非常小。
第二,过去的计算能力要比现在慢了有数百万倍,今天的计算能力非常强。简单的类比,我家里使用的机器是两块A6000 GPU,单讲单浮点数,那台机器的计算能力相当于半台曙光超级计算机。而GPT的训练应该使用了上万块GPU,这就是目前需要的算力。
我们训练一个模型,如果用超级计算机类比的话,需要几千台超级计算机,换算回来就是一万块显卡。大家计算过,ChatGPT的模型训练一次需要一万卡天,一万块显卡GPU一整天的时间。另外一个消息,ChatGPT的模型并不是目前需要算力最大的模型,远远不是。大模型真的需要的计算力比它大的多的多。
第三,过去用了一个特别符合common sense但特别愚蠢的方法对神经网络的参数进行初始化——随机方法。人类的神经是怎么感受的,就是这条红线,当你低于某个阈值的时候,你是感知不到它的。如果是随机初始化,是一个对称的曲线,这是不符合事实的。用随机参数进行优化的效果都不好,就这一点就可以提升无数倍的效果。是不是有更好的初始化方法,这目前是各大厂的秘密。一个模型用什么方法初始化,这是非常核心的秘密。
第四,使用了错误的非线性激活函数。
通过这四点Geoffrey总结了过去三十年的血泪。在今天我们的实践当中,这些错误还在犯:我们的数据集不够大,对算力的估计不够大,初始化的方法没有被重视——因为那是个工程问题,但这个工程问题直接影响到模型的质量和结果。
03
自然语言处理与ChatGPT的由来
这部分我们来看一下,在自然语言处理这方面,我们走过哪些道路?怎么走到今天的?是什么让ChatGPT火出圈的?
什么是自然语言处理?
什么是自然语言处理?这事儿最简单,我向ChatGPT提了这个问题。ChatGPT的答案非常好,非常标准,他说是人工智能和语言学的交叉领域,就是怎么去理解和分析人工语言。
在我看来,自然语言处理就两类任务,一类任务叫自然语言的理解,一类叫自然语言的生成。我既要能听懂你说什么,我还要能说话。
自然语言常见的任务,首先就是分词。比如“ChatGPT最近超级火”,怎么把它拆成词?这是中英混杂的,分词还挺麻烦的。通过各种方式模型把它分成这四个词:ChatGPT、最近、超级、火。这是所有分析的基础。
第二是情感分析。这一点很重要,要分清到底是正向的还是负向的。比如“ChatGPT最近超级火”就是挺正向的情感。
第三是文本的匹配。语言有个特点,不精确。无论是中文、英文,任何一种语言都不精确,它有很多同义词等价表述的方式,得让它匹配起来。“ChatGPT最近超级火”和“ChatGPT火出圈”,这俩是不是一回事?这对我们来讲是可以理解的,但对一个模型、一组参数和数学公式来讲,把它匹配起来是挺难的。
最后一个就是翻译。从原集到目的集,从中文到英文怎么翻,这也很有意思。
这些任务有一个特别重要的定义,叫语言模型。语言模型不是计算机的逻辑,而是专门的、语言学里面在讲的内容。语言模型有一个基本的假设,你说上一个词的时候,你说的下一个词是有概率分布的。
就像我们在iPad、iPhone输入法里敲I have such a,它会给你一个选项:great, great day, lovely等等,这是有概率的。它大概可以猜到你下面会说什么,这个就叫语言模型。这和人工智能、计算机没有任何关系。语言学研究的结论,所有语言都是这样,动词后面大概率跟一个名词,介词后面可能是副词,这叫语言模型。这很重要,我们生成语言,就要靠语言模型。我们学中文、英语的语法,语法就是语言模型,可以这样简单粗暴地去理解。
语言单词之间有关系,就可以拿神经网络的复杂参数集去拟合它,这就是语言生成的理论基础。
一个语句的单词是有顺序的,单词之间是有关系的,虽然不能够百分之百地明确描述这些关系式,但是我们可以拿一套复杂的参数集——神经网络去拟合它,让它的偏离度最小。
这是和专家系统迥然不同的思路。专家系统会要求你一定要讲清楚,这个词后面跟哪个词。50%概率这个词,30%概率那个词,这叫决策树。神经网络最基本的思路,就是你有概率,我去拟合概率,它是一个非常复杂的线性系统去拟合。
监督学习和无监督学习,这两个事儿很重要。
监督学习简单粗暴地说就是人类打标签,机器做分类。所有东西的分类是人告诉它,这是电视机,这是书,这是水瓶子,全是人给的标签,要标注的。
无监督学习就是不用人,机器自己找。这三个是一堆的,但是啥我不知道,中间是条线,是啥我也不知道,这是需要机器去拟合的东西。
显而易见,监督学习的效果一定好,因为你把你的结果已经告诉他了。无监督学习一定便宜,因为不用人参与。
这就是整个神经网络发展过程中碰到的问题,你是要好还是要便宜。你说我们要标注1000亿个单词,这不是人能完成的工作量,这个成本是不可接受的,所以它只能用无监督学习。
自然语言处理的第一种范式,机器学习范式
基本概念讲完了,我们看一下自然语言处理(NLP)的范式。
自然语言处理到现在,发展经过了四个范式。
范式有演进的意味,不是取代。今天已经到了所谓的第四种范式。但事实上,第一、第二、第三种范式都在使用,效果不一定差。一般认为越往后效果越好,但并不是百分之百。同时,后面的范式大部分来自前面的范式。
第一种范式是机器学习范式。我想搞清楚一句话,那很简单,我可以把每句话里的分词都猜出来,其次可以分析它的频率。我可以用无数的书,把所有的藏书都给它看一遍,把里面所有的英文单词都猜出来,把每个词出现的频率猜出来,把它的特征也能猜出来。哪个词跟着哪个词,我都可以猜出来,也都可以统计出来。这是太稀疏的矩阵,大量没有什么关系,我让它做一些数学的变形,为了好计算,把稀疏矩阵压缩一下。它是一个统计学的方式。
第一范式里面最核心的,就是语言是统计学的概念。
我把所有都弄出来,都有哪些词,哪个词跟着哪个词,频率是多少,有什么特征,它跟往前隔一个词什么关系,隔两个词什么关系,它的词性有什么关系……我可以找出无数这种特征。我可以把各种各样的矩阵构建出来。
但这非常有问题,因为这个接进来之后,有了标准就要分类。
早在1957年的时候,IBM就通过硬件实现了感知器,五吨重,可以去区分你从左边打孔的还是右边打孔的,它有分类的作用。
1969年,马尔文•明斯基写了一篇论文,从理论上证明了感知器是有局限的,从此之后,神经网络就被干掉了。因为神经网络的核心就是感知器。有这么多的统计特征,就要把他们分类。
所以从1969年到2012年之间,很多时候只有Geoffrey Hinton一个人在搞感知器研究。他基于上面提到的总结,用新的方法,更复杂的感知器、更巨型的算力、更大的训练模型来做了一个非常复杂的网络。过去的感知器是很简单的线性方程组,Sigmoid函数:+1,0,-1,分成三类。
Geoffrey说第一,你的初始方法错了,我用Re LU来重新做。这是他真正跑起来的第一个模型,每一个模型都是一个线性的、复杂的方程组。
卷积神经网络与图像识别
斯坦福AI Lab的主任李飞飞最初在做图像识别取得了巨大的胜利。李飞飞最成名的就是在Trump当选之前,从Google Map的Image里拿了5000万张图片做分析,以96%的概率预测了Trump要当选。她的预测是到美国每个小选区,是投票给Trump还是民主党。因此一战成名。
Geoffrey和他的两个学生 Alex Krizhevsky、Ilya Sutskever 使用深度卷积神经网络在ImageNet 图像识别任务中击败当时最先进的模型,把 top-5错误率从以前的 26.2% 一举降低到 15.3%。他是怎么做到的?大家不要以为它有智能或者情感,它本质上就是CNN,卷积神经网络。你看一幅图像,把它分成无数个像素点,每个像素点就是三原色,每个颜色有个RGB数值从0-255,每个图像都可以拆成这样一个矩阵。
这个矩阵太复杂了,我把它卷一下,把9×9的矩阵和(1, 0, -1) 乘一下得到一个值,九个变成一个了,我做了一个近似。
为了减少计算量,我把一个无比庞大的矩阵变成一个更小的矩阵,这个小矩阵不行,我再变小一点,这就是一层、二层、三层的概念。
这有什么好处呢?它是一个很聪明的办法,这样一个卷积核卷过之后,大概率能把它还原回去,几乎没有损失什么信息。同时,你的计算比一个3×3的矩阵小了非常多倍。而且,这是并行的,我这九个格跟旁边的九个格、下面的九个格没关系。每一次挪一列、挪一行,这样计算下去,我可以并行计算。
如果只能算一条线的话只能用一个进程进行计算,但如果这样的话,你有多少个进程我都可以用。一块GPU最新的A6000 Ada大概有18000多个进程可以同时算,极高地发挥了GPU的计算能力。要提高数百万倍的计算效率,这就是一个方法。
这叫卷积神经网络,所有的视频类、图像类的核心算法就是卷积神经网络。
这在图形领域取得了巨大的成功,到2015年,ImageNet的识别错误率只有3.57%,人的错误率是在15%左右。它用了152层卷积,这是巨大的数学计算量,每一层都很简单,但有152层,层层下去,同时为了防止信息丢失,它还要跳层计算。所以152层复杂无比,不是152次,是152的几次方的计算量。所以大家就能够理解为什么它对计算能力的需求是无限的。
三种模型互补处理语言
卷积神经网络(CNN)在图像领域非常成功,那它在自然语言领域怎么样?不怎么样,效果比较差,还不如那个统计模型呢。
为什么?很简单。我们讲话的语言不是从前到后的,从后到前也会有影响,上下文也会有影响,两句话之间也会有影响。我们讲话有上下文的情境(context),但是卷积神经网络一个方向算过来了,只是一个方向,这不行。
那怎么办?用循环神经网络RNN,循环算。
一个方向不行,我就正算一遍,倒算一遍:第一个词到第二个词,第二个词到第三个词,第三个词到第二个词,第二个词到第三个词,第三个词到第四个词,第四个词到第三个词,第四个词到第二个词……这么循环往复的计算,每种可能性都要穷尽一下,所以它的计算量比卷积神经网络大了非常多。
同时,RNN有个问题,既然我是从前到后,从后到前,我有顺序问题,我不能全并发,不能百分百地利用GPU。RNN效果很好,但计算能力不行,不能像CNN那样疯狂利用并发能力,给它堆硬件,速度上不去。RNN有很多种变形,LSTM、GRU等,这中间加了各种各样的优化,但它的逻辑是一样的,把上下文全部放进去算一遍。
计算能力不行怎么办?
我们研究一下人的行为。当看一幅图像的时候,并不是所有点都对我们有同样的重要性。这不是模拟的,是测脑电波和眼球运动得出来的,看眼睛在哪个点停留时间长,看你读一幅图像时在什么地方花的时间多,通过对人的眼球和脑电波活动追踪得到的结果。整个图像需要注意的地方很少,红色热点的区域很小。
这是人的特点,我们理解一篇文章也是这样,不需要把每个字都理解了。一本书可能就那么几句话特别重要,但你要把那几句话找出来,这叫注意力(Attention)机制。我不需要对一个图像里所有的点给予同样的重要性,我做RNN也不需要把每一个词都放的一样重要,我只要找到那几个最关键的点,把计算力扔到那几个点上去,而把其他的简化。
有了Attention机制就可以解决计算力不行的问题。RNN,算力搞不定,加入Attention机制,重要的放在一起,不重要的拆开。什么重要呢?研究证明,计算完两个相关性更高一点就更重要一点。加入Attention机制解决了并发的问题。
用RNN+Attention机制跑自然语言处理(NLP)的效果非常好。Google翻译几年前有一次重大的提升,从翻单句变成可以翻文章,就是引入了Attention。数学上可以证明,怎么用向量计算保证它的效率。
第二种范式,深度学习范式
第二种范式是什么?大家应该记得,神经网络是用一个你也不知道为什么的参数集去模拟输入情况下最大概率的输出结果。有了Attention机制,我们不再去统计词频、关系之类的,直接丢一个复杂的参数集去模拟翻译是不是能跟人翻译的是一样的。
这就是第二个范式,深度学习范式,我们管它叫“炼丹”。因为我也不知道那个参数是怎么来的,但无论如何,当我拿一个巨大的训练集去训练它,当这个参数得到的结果跟我想要的输出接近一致的时候,我认为它就好了。这就是“炼丹”的机制。
之前讲到的大神Bengio提出了一个重要的模型:神经网络语言模型。他用神经网络的方式描述了语言模型。之前提到,语言模型是一个词后面大概跟哪个词。他在2003年的时候提出了利用神经网络可以去预测下一个词。2003年没有引起关注,但到了2013年Word2Vec非常火。大家突然发现,Word2Vec理论依据就是这篇论文《一种神经概率语言模型》(A Neural Probabilistic Language Model)。
什么叫Word2Vec?
刚才我们原来的方法说要统计词频,但这事很麻烦,基本上要统计人类所有的语言作品才能描述清楚。但我能不能把这个词变成一个向量,按照某种规则变成向量,不考虑频率了,就考虑两个词向量之间的关系。比如Men跟Women这两个向量是有关系的,有啥关系我不需要清晰地知道;Queen跟King有关系。我就拿这些向量去描述。这个方法就叫Word2Vec。
Word2Vec在翻译领域的效果非常好,比如男人和女人在英语里有关系,在中文里也有关系,是啥关系我不管,但他们关系的方向应该是一致的,做翻译的时候就可很容易类比。Word2Vec不是语言模型,是一个词向量,但事实上把NNLM(神经网络语言模型)与Word2Vector结合起来,就是语言模型了。
2017年6月,一声惊雷,Google 发表论文 《注意力就是你所需要的一切》(Attention is All You Need)提出Transformer 模型。这个东西非常复杂,但它干了两件事,Encoder和Decoder,把源语言编码成一个谁也看不懂的参数集,又从参数集编码出目标语言。Transformer是一个本质的变化,把语言编码成参数集以后,可以出来的既是源语言又是目标语言。为什么?因为有Word2Vec向量机制。每一种语言,只要向量是一致的,就认为语义是接近的。
Transformer重要到什么程度?今天所有能找到的已实现的大语言模型(LLM)无一例外底层全是Transformer,只是在它上面进行了各种优化和变形。
如果有兴趣,读一下Google的这篇论文就能完全理解目前这些大模型是怎么回事了。底层就是一堆的向量计算。这些数字是论文里提出来的,里面有的有解释,有的没解释,但这个值就是好用。
Transformer有特别多优点,用Attention机制实现了CNN通道的概念,高效率并发,同时表达效果又特别好,它比CNN, RNN, LSTM等你听过所有的都好。所以目前所有大语言模型的底层全是Transformer。
第三种范式,BERT
2018年,GPT-1出现了。2018年6月,OpenAI 发表革命性论文GPT (Generative Pre-Training),基于Transformer,Transformer encode编码成参数集,参数集可以decode成目标语言,这就是今天大语言模型的雏形。所以OpenAI利用Transformer立刻就把大语言模型搞定了。12 层,768个特征向量维度,12 个Attention 头,效果不是特别好,但是它的方法是革命性的。
在GPT-1之前,训练模型都是自己构建的,亲自找一堆的样例数据训练集,建模型,训练模型,做推理,这是常规做法。但GPT说,训练挺麻烦的,几百块卡工程问题难以解决,我来替你训练好,我预训练一个模型给你。这个训练模型某种意义上是一个半成品,在训练模型基础上稍微再加工一下,就变成你的应用了。
预训练的大模型,这是革命性的东西。在这之前,所有的模型都要自己训练,我们这些AI的码农天天在炼丹,以后呢,不叫“炼丹”,叫“挖矿”。GPT-1方法很好,但实现效果并不好。有一个测试标准叫SOTA,12个任务有9个搞定了,OK,但不那么好。这是GPT-1的效果。
2018年10月,Google发表BERT论文,BERT从各方面全面超越GPT-1。12个任务搞定了11个。怎么超过的?很简单,叫大力出奇迹。
BERT搞了24层,1024个向量,16个Attention头,3.4亿个参数,相比GPT-1全部翻倍。它已经用了800M文字的BookCorpus和2500M文字的Wikipedia。
BERT出来之后,是轰动性质的,此后无数的大模型跟着不断冒出来。因为大家发现,这个好用,不用再去训练了,拿一个模型过来,稍微调整下,就可以直接用了。这些很熟悉的词都是从BERT衍生出来的。
但是BERT也带来了另外一个问题,它对算力和硬件的要求非常高。跑BERT大概需要200块GPU,一大块GPU在中国买大概5万人民币。它对小团队并不友好。
但是BERT效果实在太好了。BERT出来之后,大家觉得语言这事儿到此为止了。因为BERT的翻译效果太好了,这是Google Translation第二次升级。升级以后就可以大段大段整屏幕地翻译了。点个浏览器,整个文章给翻译了就是BERT出来之后的事情。
BERT是第三种范式:预训练+微调。它给你训练好,你按需求再调整下就行。
GPT-3代表的第四种范式,从“炼丹”到“挖矿”
OpenAI不甘落后,2019年2月,OpenAI发布了GPT-2。
GPT-2是15.4亿个参数,48层。又是一个大力出奇迹的效果。但效果不是特别好。为什么?因为它没有做微调。但是它有另外一个办法,就是调Prompt(文本提示)。Prompt的好处是向模型提问,模型已经OK了,但你如何去提问让它给出那个更接近于你想要的结果。尽管GPT-2本身效果不那么好,但是这个模型可以进化,这件事的突破很厉害。以后我们的工作从炼丹变成挖矿,我知道这里有矿,但我不知道怎么把它挖出来,Prompt调整好就可以变得更好一点。
到2020年5月,GPT-3发布了。GPT-3用了 1750亿的模型参数,复杂程度已经超乎人类想象,传说用了全互联网的数据做训练。之前提到,BERT的训练集是800M和2500M,到了GPT-3是410B,提高了三个数量集。参数的复杂度也从最开始的几万个参数到几百万个参数再到1750亿个参数。人类大脑的神经元在1000亿量级。从参数的量级上,GPT-3的神经元已经可以和人脑匹配了。GPT-3的效果非常好,然后OpenAI宣布GPT-3闭源,不开源了。
第四范式是预训练+提示+预测。GPT-3之前叫“炼丹”,通过预训练模型来迁就各种下游任务,GPT-3是让各种下游任务来迁就语言模型,我们叫“挖矿”。因为这个语言模型足够大,足够复杂,1750亿个参数,相信它能模拟很多情况,用Prompt去挖矿。这就是第四和第三范式最不一样的地方。核心是没钱去训练大模型了,因此更多变成调试如何提问。
04
ChatGPT的核心、能力与局限
ChatGPT的核心
ChatGPT最核心的就是它找到了一种非常适合人类自然语言的提问方式。这个说白了就是完型填空,既带有提示,又带有疑问,让语言模型输出你更想要的东西,依然是填空。不要以为它有智能,背后其实是1750亿个参数代表的巨量向量方程组,核心就是一堆矩阵计算。它和CNN的transmission没变化,只不过是参数集来到1750亿。现在有个专有名词Prompt Engineering,它就是专门做这事,用小的神经网络去训练如何提问——怎么提问也是有技巧的,要去训练它。
ChatGPT的能力与局限
来到ChatGPT这块。GPT怎么发展过来的,简而言之就是两句话:“大力出奇迹”和“算力出奇迹”。一个指数据量大,一个指算力大。这两个东西堆出来的一个特别好的结果。
那ChatGPT能干什么?不止翻译,模拟成一个Terminal也行,让它出代码也行,比如告诉我怎么写冒泡排序,它直接就可以生成出来。最牛的一点是它有思维链,有推理过程,这显得它有智能。
这是怎么产生的?很多论文说是因为它学习了GitHub里面所有的代码之后产生的逻辑链,但这只是一种假设,目前没有得到确认。
那它到底是怎么来的?我们可以看一下整个的源流。最早的时候GPT-3代码叫Davinci,Davinci分成了两个方向,一个方向是怎么去搞定“提问”,做了一堆的训练和优化。OpenAI把它叫做GPT-3.5,可以理解为在GPT-3基础上就如何提问做了优化。
本质还是那个大语言模型,只不过它对自然语言提问这件事做了优化。在这之前,如果想对大模型的输出效果做出一些控制,要用正则表达式,那个很复杂,现在用自然语言就可以搞定了。我相信ChatGPT还有很多功能和玩法没有被发掘出来,为什么?因为自然语言也是一个界面,可以在自然语言上进一步优化它的提问方式,以达成你想要的结果。它是一个金矿,在于你怎么去挖掘它。
ChatGPT有好的一面,但也有局限。
它好的这一面,大家觉得ChatGPT的回答非常接近人的感受,我们管它叫“人工”智能。它要加强(Reinforce)人类的训练。媒体报道大概有40个人工智能博士专门做人工标注,然后把标注完的数据喂给ChatGPT。
之前提到监督学习和无监督学习。我们有40个人专门按照人的理解去选答案,标注答案,再喂给ChatGPT让它去学习,所以它的输出更像人的语言,所以它是“人工”智能。
这不是完全无监督学习来的,它有大量的监督学习在里面。而它用什么做监督学习?抱歉,这是OpenAI的秘密,没有任何论文描述这件事。我们唯一知道的是,40个人在做标注,至于这40个人是人工智能的博士做标注,还是他们带着更多的人做标注,不知道。标注什么,不知道。以什么为标准,不知道。但是anyway,我们知道它是一个“人工”智能,它是有人在标注,所以它的输出更友好,对人类更友好。
这是它好的一面。
那它有限的一面是什么?它有很多问题,比如它就训练到2021年三季度,2021年四季度之后的事情它不知道。对提问的方式高度敏感,你需要去适应它的方式。同时,它似乎会一点数值计算,但它本身是向量方程组,所以它真正意义上对数值计算、符号计算、逻辑推理不够好,因为它本身是为自然语言设计的。它可以做一点数值计算的事,但它把这些当成自然语言的一部分在处理,而不是当一个计算引擎在处理。
然后,它又经常在胡扯。整个神经网络的目标是用一堆参数拟合你的提问,给出一个最接近你想要答案的答案,这个接近可能很远,这个接近未必是正确的,所以它经常会胡扯。这是应该的,理所应当的,没有任何一个神经网络的模型说我不胡扯的。因为它理解的接近,离你100米叫近,离你1个光年可能也叫近。我们觉得它在胡扯,但那就是它选择好的最接近的答案。这会随着你对它的训练而改善,但没有数学方法消除它,因为这是整个神经网络的本质。所以它能不能取代搜索引擎呢?不太能。搜索引擎给的答案要是精确的。你搜出来的东西都是错的,没有找到那个网址,我肯定是不认的。
Meta的研究总监Yann Lecun一直在讲,大语言模型的局限是什么。以下是他的原话,我一字未改:
首先,大语言模型对写作非常有帮助。
第二,它叫再激活,并没有逻辑和原因。
很多文章说它有逻辑,但其实它的本质还是向量计算,只是你的输入激活了某一部分参数得到输出。不能把它想象成一个有理智、有智能的人。
第三,它经常会编造或假装一些东西。
第四,它的错误可以被改善,但无法消除。
最后,是Meta自己的广告,会有更好的系统。
05
ChatGPT及大语言模型的未来
最后看一下大语言模型的发展。
ChatGPT只是大模型的一部分。2019年到现在,大模型遍地开花。GPT-3的模型参数有1750亿,去年的模型已经到了5400亿这个量级,目前还在往上涨。
大语言模型有两种办法,一种叫“炼丹”+精调模式;一种叫“挖矿”,改为提问模式。开源的模型,我可以炼丹。闭源的模型,我只能挖矿。这是两个办法。对于一个独立的码农,我买不起1万块显卡,不能炼丹,我就挖矿。1万块显卡跑满一天才能训练一次,而这个事情成功,可能要训练几百次。可以看到,GPT-3的训练资金是1200-2760万美元,实在太贵了。
整个语言大模型的研发就三件事:预训练、预热和推理。
预训练是要分配算力、算法或者数据,算力和数据同样重要。但是新的论文证明,提高数据规模依然可以提高它的效果。提高模型的复杂度可以提升效果,这事我们已经证明了,从最初几万个参数到现在5400亿个参数,继续提升依然还有效果。大模型的“大”来自参数规模和数据量,两者都需要巨大的算力。
预热就像ChatGPT,在真实提供给你前,先弄小一点的数据玩一玩、试一试,让它更接近于你的输出。几千亿个参数太复杂,我先预热一下,让它更能向特定任务靠近。ChatGPT就可以认为是预热后fine-tuning的东西。
第三就是做推理,怎么提问。这是提问工程,很复杂,有大量东西做。提问训练的收益是非常大的,因为模型足够复杂,能够拟合到的情况足够多,没有被我们完整地利用出来。目前地很多应用,包括ChatGPT都没有达到GPT-3或者GPT-3.5的上限,模型还有很多潜力可以挖。所以Prompt就很好,这个Prompt Engineering目前是热点,有很多方法论出来了。
那我们能干什么?能干的事比想象的少。左边这些是只给你API,可以微调,不开源的;右边是开源的,可以自己玩的。网上能找到的就这么多,其他没了。
我们有两种模式,第一种是研发模式。OPT-175B就是Meta的开源模型,
最少要350G的GPU内存,就是8张A100来运行这个模型。
但更多是调用模式,ChatGPT等更漂亮的模型闭源了,只能通过API调用。调用模式蛮不错的,但有个问题,一些特定领域和机密数据,你不愿意喂给它。金融机构特别明显,有一些内部数据肯定不愿意喂给它,不得不走到研发模式上,成本就非常高了。
将来,大语言模型会如何变化?
首先,结果可控。我不可以消除错误,但我可以不间断地减少错误。
第二,超篇幅语境输入。现在所有的提问只能2048个token,超出它不认,我们需要把传输量加大或者用工程的方法比如类似CNN那样卷一下。
第三,机密数据怎么处理。
第四,机构内应用的方式等等。在大模型应用方面,机会是非常非常多的,但不能路径依赖。Prompt Engineering的方式(挖矿)和训练一个大模型(炼丹)完全不一样, NLP的工程师需要去适应这种新的方式。他不是去调整这个模型,而是去发掘这个模型的能力,用更好的提问方式让它吐出你更想要的结果。现在有很多团队在炼丹,但更多的团队是在挖矿、练提问。
无论如何,最大的风险是什么都不做,干等着肯定不对。整个世界的发展,这方面的发展一日千里,请大家一定要去尝试,整个大模型应用领域里面各种机会都是尝试出来的。
06
Q&A
Q:翻译软件的底层逻辑是什么?
现在翻译软件的底层逻辑其实不太一样,四个范式不是相互替代的。最早的基于统计的翻译软件还在运行,基于最新的语言大模型的翻译软件也在运行中。所以,翻译软件的底层逻辑不一样,效果都不一样。包括大模型其实也有两条最明确的道路,DeepMind那条路和OpenAI这条,我们今天讲的是OpenAI这边,比较少的涉及DeepMind那边。DeepMind在翻译方面的成功也是非常显著的。
Q:对GPT-4有什么展望?
个人猜测,仅保证50%的准确率。模型肯定会更大,会有提升效率的手段,我们猜测它会对数据做更多的处理,更加精准有效。当然,我相信它依然会用Transformer做底层模型。同时,GPT-4更关注准确和安全。GPT-4相比GPT-3.5更靠近你预期的答案。这个事儿挺难,要做到更准确、更安全地生成文本,其实挺难的。因为文本的生产本身没有取向,只是一个数学公式,在这里面还要加上权重和判断,成本是蛮大的,这会是一个挺大的飞跃。另外,我猜它的推理能力会更强。总的来说,GPT-4会是GPT-3各方面的优化。
Q:文科生如何更好地学习理解人工智能?
多用,天天用,你用它就可以训练它,就可以用好。
Q:人工智能在汽车上的应用进展如何?国内和国际水平的差异多大?
人工智能在汽车上的应用和大模型差别比较大,它是另外一个分支。
Q:国内和国际在大语言模型技术水平的差距多大?
国内也已经有千亿级别的大模型出现了,我们在这方面落后并不多。
Q:如何看待New Bing?
GPT-3.5与Bing搜索的结合,我个人觉得这是微软特别漂亮的一步。无论是和Bing的结合还是和Office的结合,其实解决了大模型本身两个重要的问题:一个是训练的数据来源,一个是反馈的来源。微软把这两件事都解决了,这是可以值得期待的事情。
版权声明:部分文章推送时未能与原作者取得联系。若涉及版权问题,敬请原作者联系我们。
微信扫码关注该文公众号作者