别背术语了:我用一顿饭的功夫给表弟讲明白大模型

一顿饭的开头

事情是这样的。

上周末回家吃饭,我表弟也在。他今年大二,学的不是计算机,跟AI也八竿子打不着,但这段时间被铺天盖地的新闻搞得很好奇,饭桌上突然冒出来一句。

「哥,AI到底是怎么学会说话的?」

我当时筷子还夹着一块红烧肉,愣了一下。

他接着说,他看了一堆文章,什么「Transformer架构」「注意力机制」「涌现能力」,每个字都认识,连起来完全不知道在说什么。越看越懵,越懵越焦虑,感觉自己好像被这个时代甩在身后了。

我特别理解这种感觉。

你不是程序员,不需要天天跟代码打交道。你不是做AI的,没必要啃论文。你就是一个普通人,刷到一个又一个「AI又颠覆了什么」的推送,心里发慌,想搞明白这玩意到底是怎么回事,结果一搜,全是一堆术语糊你脸上。

我那时候就想,算了,别背那些名词了,我就用这顿饭的功夫,用大白话给你讲讲,大模型到底是个什么东西。

讲完之后我表弟说,卧槽,原来这么简单?

我说,原理确实就这么简单。复杂的只是工程,不是道理。

读了整个互联网,然后玩文字接龙

我先问了我表弟一个问题,你玩过文字接龙吗?

他说当然玩过,就是一个人说一个词,下一个人接着说,往下编嘛。

我说对,大模型干的事,说到底就是高配版的文字接龙。

只不过它接的不是一个个词,是一个个更小的单位,叫token。你可以把token理解成「半个词」或者「一个字」这么大小的碎片。一句话被切成一串token,模型要做的事情就一件,根据前面已经出现的一串token,猜下一个最可能是什么。

举个例子。「今天天气真」后面大概率接什么?

我表弟脱口而出,好。

对嘛。你看,你也会。你之所以会,是因为你这辈子见过太多次「今天天气真好」这个组合了,它已经刻在你脑子里。

大模型也是这个逻辑。只不过它见过的东西比你多太多了。它把整个互联网能抓到的文本,维基百科、书籍、论坛帖子、新闻、代码、聊天记录,全读了一遍。

你读了几十年的中文,它读了几百辈子都读不完的量。

读完了,它脑子里就有了一个超强的「语感」。给它一段开头,它就能顺着往下接,接出来的东西,读起来就跟人写的一模一样。

我表弟这时候插了一句,那它其实根本不知道自己在说什么,就是在猜下一个字?

我说,你抓到重点了。

它确实不是「理解」了语义,至少不是像人那样理解。它是在做概率。下一个token是什么,它算的是所有可能性的分布,「好」的概率是90%,「差」的概率是5%,它就输出「好」。就这么个事。

但神奇的地方在于,当这个概率猜得足够准,猜到连整篇文章的逻辑、语气、风格都接得严丝合缝的时候,看起来就跟它真的「懂」了一模一样。

这玩意,就是所谓的大模型。

你不用记那些架构名字,记住一句话就行,它读了整个互联网,然后玩文字接龙。

训练和推理,这俩到底有啥不一样

我表弟又问了,那它是一边跟我聊天一边学的吗?

这个问题特别关键,很多人搞混就在这里。

我说,不是。大模型有两个完全不同的阶段,一个叫训练,一个叫推理。这俩是两码事。

训练,是它「读书」的过程。就是上面说的,把整个互联网的文本灌进去,让它反复练习「猜下一个token」这个游戏,猜错了就调整参数,猜对了就强化,几万亿个token练下来,它的语感就成型了。

这个过程,花了几个月,烧了几万张显卡,几亿美金砸下去,最后产出一个「已经定型」的模型。你可以理解成,它读完了所有的书,毕业了,脑子里的知识结构固定下来了。

推理,是它「答题」的过程。你给它发一句话,它用训练好的那个脑子,一个token一个token地往外接,接出一段回答给你。

这俩阶段是完全分开的。

训练的时候它不跟你聊天,推理的时候它也不在学习。你跟它聊一万句,它的脑子也不会变得更聪明,因为训练早就结束了。你每次对话,用的都是同一个已经定型的脑子。

我表弟说,那它越聊越懂我是怎么回事?

我说,那是它能记住你这次对话里说过的话,但这个记忆是临时的,关掉窗口就没了。它只是在你这次对话的范围内,把上下文都看在眼里,回答得更贴合你。但它本身的「能力」,从你打开窗口到关掉,一丁点变化都没有。

我打个比方你就明白了。训练像是上学,把知识学进脑子里,花了十几年。推理像是考试,用学过的知识做题。你考试的时候再怎么奋笔疾书,也不会当场学会新东西,你只是在用已经会的东西。

所以下次你看到新闻说「某某模型发布了」「某某模型又训练完了」,说的是训练。你日常用它聊天写东西,那是推理。俩事,别混。

为什么它记不住你前面说的话

聊到这儿,我表弟突然想起一件事。

他说怪不得,他有次跟AI聊了特别久,聊到后面它就开始「忘事」,前面说过的人名都对不上了,是不是因为它脑子就这么大?

我说,你猜得八九不离十。这个事儿有个名字,叫上下文窗口。

还是用读书来打比方。你读书的时候,眼睛看到这一行,脑子里还留着前面几行的印象,对吧。但你不可能把一整本书从头到尾每个字都同时摆在脑子里,那太难了。

大模型也一样。它有一个「能同时看多少token」的上限,这就是上下文窗口。早期的大模型,窗口很小,只能看几千个token,大概几页纸的量。你聊着聊着超了,它就把最早的对话给挤出去,跟金鱼似的,只能记住最近这一段。

现在厉害了,有些模型窗口能做到几十万甚至上百万token,能塞进去一整本书。但说到底还是有上限的,不是无限。

你想想看,它要预测下一个token,得把前面所有的token都看一遍,算一遍注意力。前面越长,计算量越大,成本越高。所以窗口不可能无限大,这是物理限制,不是它小气。

我表弟说,那它为什么不把重要的话存下来,像人记笔记一样?

我说这个思路特别对,而且现在确实有人这么干了,搞了一套「外挂记忆」的方案,让它把重要信息存到外面的数据库里,需要的时候再去翻。但这就是另一层工程的事了,底层模型本身,记不住就是记不住。

所以你用大模型的时候有个小窍门,别指望它记住你三天前说过的话。重要的东西,每次对话开头再跟它说一遍。它不是不想记,是真记不住。

能写代码,却算不对小学算术

这顿饭聊到这儿,我表弟抛了个我觉得特别好的问题。

他说他让AI写过一段Python脚本,写得还挺好,能跑。但他又让AI算一道三位数乘法,AI算错了。他想不通,写代码这么难的事它都会,三位数乘法小学生都会,它为什么不会?

我当时就笑了,这个问题问得太好了,而且答案特别反直觉。

我说你还记得我前面说的吧,大模型是在干什么?

他说,猜下一个token。

对。它所有的事情,不管写代码还是做算术,用的都是同一套方法,猜下一个token。

那写代码和做算术的区别在哪?

写代码这件事,互联网上太多了。GitHub上几亿行代码,教程、文档、问答、博客,全是。模型训练的时候把这些都读了,它见过太多太多「这个需求该怎么写」的例子,所以接起来特别顺,准得吓人。

但三位数乘法呢?

你想,互联网上有多少内容是「376乘以824等于多少」然后老老实实把答案写出来的?几乎没有。网上讨论乘法的地方,要么是讲方法,要么是讲原理,真正把一道道具体算式和正确答案摆在那儿的纯文本,少得可怜。

模型没见过足够的例子,它的「语感」在这块就弱。它只能靠硬猜,而乘法的进位规则是一种严格的、确定性的逻辑,不是靠概率能猜对的。它猜出来的数字,看起来像个答案,位数也对,但就是算错了。

其实就是它在「背」和「模仿」,不是在「算」。

这个其实挺像人的。你背过九九乘法表,你算8乘7能秒答56,因为你背过。但你算376乘824,得列竖式一步一步来,对吧。你不是靠语感算的,你是靠一套严格的步骤算的。大模型没有那套步骤,它只有语感。

所以你会看到一个特别魔幻的现象,这玩意能写出几百行逻辑复杂的代码,能在你想不到的地方给你灵感,但你让它做一道小学奥数题,它能理直气壮地给你一个错误答案,还附上一段看起来特别有道理的「解题过程」。

这不是它笨,是它的「思维方式」从头到尾就不是算术那套逻辑。

一顿饭之后

饭吃完了,我表弟靠在椅背上,说感觉脑子里那些乱七八糟的术语终于对上号了。

我说其实你记住几件事就行。大模型就是读了整个互联网然后玩文字接龙。训练是上学,推理是考试,俩阶段分开的。它有个记忆窗口,超了就忘。它靠概率不靠计算,所以能写代码但算不对乘法。

他说那它有时候一本正经胡说八道是怎么回事,上次让它查个资料,它编得头头是道,全是假的。

我说这个,下回再聊。

这个坑比算术深多了,也挺有意思的。它有个名字叫「幻觉」,但你别急着记这个词,因为它背后那个原因,比这个词本身好玩一百倍。

下顿饭,我跟你慢慢说。

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。

/ 作者,词元Max

评论区

暂无评论,快来抢沙发吧