理解LLM的范式——它就是个差分机?

作为一个外行,我一直对“AI”的魔力感到惊奇,我一度以为神经网络一层一层传播,可以看成某种有限步骤的图灵机。AI提醒我不要瞎类比,图灵机左移右移是离散,确定的逻辑,神经网络是fp32上连续的概率映射。

后来稍微深入了解了一下,认识到对于一个深度固定的 Transformer 模型(比如 96 层的 GPT-4),它的单次前向传播算是一个深度固定的有向无环图(DAG)。所谓的 predict next token,可以粗糙理解成

  next_token = eval(model_weights, history+input)

这里最奇特的算是:自回归(Autoregression)。传统的冯·诺依曼架构中,指令(Code)和数据(Data)是分开的。但在 LLM 中,上下文是动态的指令+数据。输出什么样话,什么时机结束。LLM得自己想办法把画圆回来,并且知道什么时候该停止吐词。

这种 控制面 和 数据面 混合的做法让我感到非常不适,也是诸多prompt injection问题无解的根源

不过一旦get到这个范式,我想到一个有趣的类比,一般的 gpt 是 dcoder-only,VRAM里权重就如同 .exe 加载到内存里一样,是永久不会动的;kvcache才是 malloc 去操作的独占内存。BERT那种 encoder-decoder 模型,算是一个可以自我修改的.exe?

如果拿python/java对比,LLM就是显存里一些可以边运行边修改的bytecode,只不过是fp而不是指令和数据

后来又了解到,要纯从设计上来说,RNN是明显超过transformer架构的。但是 RNN 死穴很明显,第一计算精度传播越到后面误差越大,第二它不知道什么时候停下来。第三它是串行的。越到后面越慢

transformer 算是一种不是那么直接,但是非常能“并行” scale 的体系。 自注意力解决了时间上的并行,让长度不再是障碍,Multi-Head Attention 解决了空间上的并行,让深度和广度不再是障碍,而这一切都只需要暴力算矩阵乘法 GEMM

我了解到这一步的时候,忽然回忆起,这不就是google当年解决ranking的套路吗?虽然把整个互联网看成一个巨大的邻接矩阵的做法,看上去更笨更重,但是能 scale 啊

基于上面的一些认知,我明确看好taalas


最近不知道看到什么资料,突然想起一个圣遗物——差分机

在 19 世纪,航海、天文、甚至银行算账全靠人工查阅印制的《数学表》(对数表、三角函数表等)。但当时负责计算的“人类计算员(Computers)”极其容易算错或抄错。巴贝奇恶心透了这种低效,于是想:“为什么不用蒸汽机来摇出准确的数字?”
核心思想是,任何复杂的低阶多项式函数,只要你求导(做差分)足够多次,最终它的“差分值”都会变成一个常数。
那么可以反推,既然最后是常数,那只要把这个常数固定住,反向一层一层做加法,就能像堆积木一样,把所有复杂的乘方运算全算出来!
差分机一号(Difference Engine No.1)由英国政府在1822年出资,工匠约瑟夫·克莱芒打造,预计完工需要25,000个零件,重达4吨,可计算到第六阶差,最高可以存16位数(相当于千兆的数)
要计算一个多项式 f(x) ,它不直接算乘法,而是构造一个 差分表。
初始值 f(0), Δf(0), Δ²f(0), ……
每次步进 x → x+1 只需做加法:
f ← f + Δf
Δf ← Δf + Δ²f
等等
我们用一个最简单的 2阶多项式为例 f(x) = x²
让 x 从 1 开始,步长为 1 地往下算

x 的值 函数结果 f(x)(原函数) 一阶差分 Δ₁(相当于一阶导数) 二阶差分 Δ₂(相当于二阶导数)
1 1² = 1
2 2² = 4 4 − 1 = 3
3 3² = 9 9 − 4 = 5 5 − 3 = 2(变成常数了!)
4 4² = 16 16 − 9 = 7 7 − 5 = 2(永远是 2!)
5 5² = 25 25 − 16 = 9 9 − 7 = 2(闭眼都是 2!)

那个最终的常数 2这就是巴贝奇的“高地”

巴贝奇那个年代不知道会不会泰勒展开,能展开这玩意不就是万能计算器了?

冯诺依曼说过,五个参数鼻子翘,300B的参数不就能描绘世间万物了?

然后突然注意到那个 常数2 不就是个 eos_token ? 卧草,这不和梯度下降,reward model 串起来了吗?

所以我今天宣布,LLM(特别是 Reasoning Model)在物理和数学本质上,就是一个高维的、基于概率特征的现代差分机!


既然有 差分机 这个范式了,那么下一步就很自然了:

AI Agent 领域遭遇的 State 瓶颈,本质上就是试图在没有底层硬件支持的情况下,用外部工程硬生生模拟出 分析机 的“条件分支(If-Else)”与“循环(Loop)”

可能很多人问:“什么是分析机?” 实际上,巴贝奇当年的 差分机 是个典型的钓鱼工程,烂尾项目

差分机因为大量精密零件制造困难,加上巴贝奇不停地边制造边修改设计,从1822到1832年的十年间,巴贝奇只能拿出完成品的1/7部分来展示
在不断延后完成期限的严重超支后,英国政府于1842年的最后清算发现整个计划一共让国库支出了£17,500,一万两千多个还没用到的精密零件后来都被熔解报废
差分机二号(或称大型差分机)在1849年设计出来,却在有生之年只实作了很小一部分。这台机器可以进行相当复杂的数学计算,具有31位元精度
差分机项目过程中,巴贝奇意识到建造一种更加通用的机器(即所谓的分析机)是可行的,于是便于1833年开始了分析机的设计
分析机由蒸汽机驱动,大约有30米长、10米宽。它的输入由程序和数据组成,并使用打孔卡输入,这种输入方法被当时的织布机广泛采用。
分析机通过一台打印机、一个弯曲的绘图仪和一个铃铛输出,也可以在纸上打孔以便日后读取。分析机采取普通的十进制定点计数法
它的“记忆体”大约可以存储1000个50位的十进制数(共约16.2kB)。有一个算术逻辑单元可以进行四则运算、比较和求平方根操作
分析机使用的编程语言与今天的汇编语言类似,支持循环语句条件分支,因此这门语言被认为是图灵完备的。
分析机采用三种不同的打孔卡和读卡器来区分算术运算、数字常量和存储的指令,以此实现了数字在存储器和运算单元之间的加载和存储操作。
巴贝奇在1837至1840年间写下了24份程序,这些程序可以计算多项式、迭代公式、高斯消元法和伯努利数

划重点:

扩展 if 意味着什么?那就是 workflow编排。LangGraph, Dify 表示很熟

loop呢,可以理解为 human-in-the-loop,也要意识到所有的 transformer 都是 append-only,遇到犯错你无法 inplace 修改,只能用修正的循环去覆盖之前的结果。

memory 的重要性就更不要说了。RAG都红得都快凉了。什么 openclaw 各种,主打核心就是记忆系统,被玩出花了


看到有个对 记忆系统的整体评价,他说得比我精辟多了。摘抄一点

人们大量造这类轮子:

仔细看都是在解决同一个问题:每个AI对话是独立的。

实际上记忆设计是多种不同的问题被当成一个名词喊了:

Agent 不只是要知道“之前发生了什么”,还要知道:


我突然意识到一个更大的拼图:

LLM其实算 ALU 和 FPU。它的作用就是去 pretrain 的数据按照 posttrain 的风格,得出一串文本。

kvcache 就是这个时代的寄存器

加上真正的 ifloop 控制器,才是完整的“大脑”

大脑要工作,还得接存储。

文章一开始的,LLM算不算图灵机,其实差远了。

用这个范式去分析现在流行的AI论断,就很有趣了。

LLM是真正的智能吗?是 AGI 吗?

同理,ALU它懂“真正的加法”吗?它能解决 “现实世界” 的四则运算问题吗?

哈哈哈,都是什么问题啊。

什么算“智能”?它也是很多不同范式的任务被杂糅在一起的概念。而且它是什么已经。。。不重要了。关键看某一类任务它能做什么。

Comments