☰
常量位宽Transformer仍图灵完备:从理论证明到低精度部署的启示
2026/10/15 5:16:33 网站建设 项目流程

假设你手里刚跑完一个量化到 4bit 的模型,参数全是小整数,激活值也压到了低位宽。这时候如果有人问:它到底有没有“通用计算”能力?听起来像一个纯理论的问题,但有一篇投向机器学习顶会的工作,标题直接把答案写在了第一行:Constant Bit-size Transformers Are Turing Complete。翻译过来就是——哪怕把一个 Transformer 里所有数值都锁死在固定位数上,它仍然可以模拟任意图灵机,具备通用计算能力。

这篇博文不打算复述论文的每一页推导,而是想拆开这个标题背后真正有意思的东西:为什么“常量位宽”会让图灵完备性的证明难度骤然上升?想绕过这个坎,有哪些关键技术构造是可以想象的?以及最重要的,这个理论结论对我们这些天天训练、部署模型的人到底意味着什么。适合对计算理论感兴趣的机器学习研究者,也适合想搞清楚“低精度模型到底行不行”的推理工程师。

1. 先把“图灵完备”这顶帽子摘清楚:Transformer 凭什么谈通用计算

1.1 图灵完备不是“什么都能干”,而是“原则上什么函数都能算”

很多同学第一次听到“图灵完备”是在区块链或者智能合约的营销文章里,感觉它是个很高级的词汇。其实它的定义非常朴素:一个计算系统,如果能模拟图灵机,那它就是图灵完备的。所谓图灵机,抽象来看不过是一台由“有限状态控制器”加“无限长纸带”组成的机器,纸带每个格子里写着一个有限字母表上的符号,控制器可以根据当前状态和读到的符号,决定往格子里写什么、往左还是往右移动、以及跳到哪个新状态。

关键点在于“无限纸带”。有了它,机器的存储空间才是无界的;有了无界存储,它才能表示任意大的整数、任意长的中间结果,从而计算任何可计算函数。所以图灵完备性讨论的是“原则上的计算能力”,而不是“实际跑得多快”。一个模型哪怕指数级慢,只要在有限时间内能给出所有可计算函数的正确结果,它就有资格被称为图灵完备。效率、实用性、可学习性,在这些证明里统统不是重点。

1.2 Transformer 天生就是一个“非平凡”的序列计算模型

从架构上看,Transformer 处理的是变长序列到变长序列的映射。输入 token 数量可以变化,输出 token 数量也可以变化,这就让它和只能处理固定长度输入的模型有了本质区别。一个能把任意长度输入映射为任意长度输出的系统,从外形上已经非常接近“一台程序”了:输入是纸带上的初始内容,输出是计算结束后的纸带内容。

更有利的是,Transformer 的注意力机制允许每个位置“看到”所有其他位置的信息,这使得它天然支持对任意距离的数据做寻址和组合。再加上位置编码给每个 token 一个身份标记,模型理论上可以在序列中定位到“第 k 个位置”“最后一个特殊符号”这样具体的对象。这些能力加在一起,让 Transformer 在可计算性理论里站到了一个相当高的起点上:它不再是一台简单的有限状态自动机,而是一个具备潜在通用计算形态的架构。

1.3 但“具备潜力”不等于“已经图灵完备”,证明是要负责任的

如果把 Transformer 看作一台机器,那么它上面可以跑的程序其实是被它的权重“烧录”下来的。要证明图灵完备,不能只是说“我觉得它可以”,而要给出一个构造性方案:给定任意一台图灵机 M 和任意输入 w,如何设计一组具体的 Transformer 权重,使得模型在输入 w 的编码之后,通过一层层计算逐步模拟 M 的每一步,直到停机并输出编码后的结果。

这听起来像编译器的活儿——把图灵机的规则表翻译成 Transformer 的参数。难点在于 Transformer 的算子非常特殊,它没有“变量”,没有“循环语句”,没有“指针”,只有矩阵乘法、注意力加权、逐层非线性变换。你得证明这一套数学运算能够精确地表达状态更新、条件跳转、读写头移动这些底层操作,而且每一步都不能出错。一个细节出错,整个模拟就会跑偏,证明就失败了。所以历史上每一个“某某模型是图灵完备的”结果,都会附带一堆非常精巧的构造和编码方案。

2. 常量位宽为什么是道坎:从无限精度到固定精度的难度跃迁

2.1 先看历史:以前的图灵完备证明大多“偷偷放宽了精度”

早期关于 Transformer 可计算性的结果,确实证明了某种条件下的图灵完备性,但很多证明都依赖比较强的假设。比如允许激活值是无限精度的实数,或者允许权重和中间表示的位宽随着输入长度、计算步数而增长,又或者允许模型深度和宽度随问题规模任意增大。这些假设在数学上是合法工具,但在工程上很奢侈,因为真实硬件的浮点数就是固定位宽的,一个 8bit 张量能表示的数值就那么几百种,哪来的无限精度。

我把几类典型假设整理成了一个表,方便大家对比。

常见理论假设在现实中的对应情况对证明难度的影响
激活值取无限精度实数现实中 FP32/FP16/INT8 都是离散有限集合大数、多项式、状态编码都很容易表示
位宽随序列长度增长部署时模型结构固定存储容量直接无界,等于开卷考试
深度或宽度随输入规模增长实际模型层数和宽度是提前定死的可以按需“加硬件”,证明价值缩水
非标准非线性单元或自定义算子硬件的算子受限,通常只有 GELU、Softmax 等可以绕开数学难点,但落实不到芯片
常量位宽 + 固定深度宽度和真实部署最接近每个数值只有有限取值,核心困难全在这

看出来了吧,早期证明和现实之间隔着一层“精度红利”。一旦要求常量位宽,很多偷懒的编码方式立刻失效。

2.2 常量位宽下的三座大山:表示、运算、寻址

位宽固定之后,第一个问题就是表示能力。假设每个数值只有 8bit,那一个 token 上携带的信息量最多就是 256 种离散取值,你没法直接在单个位置写出一个任意大的整数,更没法表示一个需要高精度的实数。原先可以用一个数存下整个程序计数器的美梦,到这儿就碎了。

第二个问题是运算误差。Transformer 里的矩阵乘法、注意力打分、LayerNorm,在有限精度下都会产生舍入误差。一次舍入可能还能忍受,但如果模拟图灵机需要执行上万步,误差就会累积,最终导致状态判断错误。更麻烦的是,图灵机的状态转移本质上是在做离散逻辑判断,一个数到底是 1 还是 0.9999999,在无限精度下清清楚楚,在定点数里却可能因为前面几步的误差变得模棱两可。

第三座大山是寻址。图灵机的读写头要能移动到“纸带上任意位置”。在 Transformer 里,这个动作要靠注意力完成,而注意力分数的计算依赖 Query 和 Key 的匹配。当所有位置编码和 token 表示都只有有限位宽时,模型很难区分距离极其接近的、内容又高度相似的位置。无限精度下你可以轻松表示“第 i 个位置”,常量位宽下你就得想别的办法来可靠地寻址。

2.3 但有一个逃逸通道:序列长度是无界的

乍一看,常量位宽加上有限状态,似乎把 Transformer 钉死在了有限状态自动机的位置上。但别忘了图灵机的纸带为什么无限——是因为它有无限多个格子,每个格子里存的符号却只是有限字母表的一员。常量位宽其实和“纸带格子里的符号来自有限字母表”在本质上是一回事。

这意味着,Transformer 的“存储无限性”不必靠单个数值的高精度来实现,而可以靠“序列长度无界”来实现。就算每个 token 只携带 2bit 信息,只要 token 数量可以无限多,总的可用信息量仍然是无限的。这就好比图书馆里单本书的页数是有限的,但书的数量没有上限,人类照样能存储无限多的知识。这个观察是整个结果的突破口:把无限存储的需求,从“数值宽度”转移到“序列长度”。这也解释了为什么这类证明通常要求模型在自回归生成或处理过程中,输入输出序列可以被无限延长,而不是一次性只读进固定长度的输入。

3. 一条可信的构造路线:把纸带摊进序列,让注意力当读写头

3.1 整体设计原则:把图灵机“翻译”成一组层间操作

要构造一个常量位宽下仍然图灵完备的 Transformer,我的理解是,大体上可以按四件事来组织:存储、寻址、状态转移、停机判断。存储解决“纸带内容放哪”,寻址解决“读写头怎么移动”,状态转移解决“控制器怎么更新规则”,停机判断解决“什么时候输出答案”。只要这四件事都能用 Transformer 的原始算子表达出来,证明就基本成立了。

这四件事里,状态转移是最容易的。图灵机的控制器本身只有有限个状态,而有限集合到有限集合的映射用多层前馈网络配合离散激活函数就能实现。真正难的是前三件,因为它们都涉及“无限”和“位置”这两个关键词。

3.2 纸带存储:让输入序列和自回归输出共同充当无限载体

一个自然的想法是:把图灵机的纸带直接映射成 Transformer 的输入序列。原始输入的每个 token 对应纸带上的一个格子,token 的向量表示的每个维度只保留固定位宽,模拟“格子里的符号”。写操作怎么办?Transformer 不能原地修改输入,但它在自回归生成时会不断往序列右侧追加新的 token,这正好模拟了图灵机“向左或向右移动后,把新符号写到当前格子里”的动作——只不过这里“写”是以“追加新 token”来实现的。

为了让读写头能回到之前写过的位置,最简单的方式是保留完整的计算历史,而不是只保留当前纸带状态。每次生成的新 token 里不仅包含当步要写入的符号,还包含当前状态的编码。后续的注意力头可以回头查看任意历史位置的符号和状态,从而重建当前纸带内容。这是用“计算日志”换“可重写存储”的思路,代价是序列会越变越长,但理论上的无限长序列恰好消化了这个代价。

3.3 读写头寻址:用位置编码和内容匹配构造“跳到第 p 格”的算子

注意力机制是天然的寻址器。当图灵机处于位置 p 时,读写头要去读第 p 格的内容。在 Transformer 里,我们可以把位置编码设计成能让模型计算出“当前第 p 步”与“存储了符号的第 p 格”之间的匹配分数。比如给每个 token 的位置编码都携带一个坐标值,再让 Query 从当前状态中读出“目标坐标”,让 Key 与每个 token 的坐标做匹配,注意力分数最高的位置就是读写头应该读取的位置。

这里有个细节:常量位宽下,位置值本身也有限精度,没法表达任意大的绝对坐标。一个常见的替代方案是使用“相对位置 + 增量移动”。也就是说,注意力不需要知道当前位置的绝对值,只需要根据“上一步在位置 p,这一步要走到 p+1”这个增量,去寻找与当前状态相邻的位置。这样每个位置编码只需要能区分“附近若干格”即可,位宽需求大幅度下降,却仍然能在无限长的序列里持续移动。另一个方案是在序列里维护一个“指针 token”,它的值本身就是某一小段位置的编码,读写头永远只关注“指针指向的那个位置”附近的内容,需要移动时再更新指针 token 的编码。

3.4 多层协同执行:为什么一层不够,要很多层

图灵机的一步包括三个动作:读符号、更新状态、移动读写头。在一层 Transformer 里同时完成这三个动作很困难,因为注意力负责读写头的移动,前馈网络负责状态转移,两者在单层内耦合太紧,容易互相干扰。

更自然的构造是分工:一层注意力负责从序列中提取目标位置的符号;下一层前馈网络结合当前状态和读到的符号,计算出新状态、新符号和移动方向;再下一层注意力负责定位到新的位置并把新符号追加到序列中。整体上就像一个流水线,每个计算阶段都只做一件事,通过层与层之间的残差和特征沉淀把各阶段串联起来。这也是这类证明通常要求网络深度可以随模拟步数增长的深层原因:每一步图灵机的执行,需要若干层 Transformer 来协调完成。

3.5 一个关键风险:有限精度运算的误差累积怎么解决

讲了半天理想构造,还差最后一个技术细节:精度误差。理论上你可以设计一个完美的离散转移函数,但有限位宽的矩阵乘法总会带来取整误差,误差会一层层累积。

在实际可执行的构造里,通常需要引入“冗余和投票”机制:不是把一个符号存在一个 token 里,而是把同样的信息复制到多个位置,计算时让多个副本互相校验,取多数作为最终结果。更彻底的方案是干脆把网络设计成只在离散值集合上运转的“逻辑电路”,权重和激活都用极少的比特编码成查表式映射,每一步转移本质上都在一个精确的离散图上进行,不存在舍入误差。固定位宽恰恰给了这个方案一个好处:你永远只需要处理有限大小的一张转移表,这个表可以完整地烧进权重里。有点拗口,但核心思路就是“用离散逻辑代替连续近似”,把误差问题从源头消掉。

4. 更优雅的等价证明:用计数器机替代图灵机

4.1 计数器机是什么,为什么它可以当跳板

直接模拟图灵机的好处是直观,坏处是要处理读写头移动、符号改写这一整套状态机逻辑,构造很繁琐。计算理论里还有一个著名的等价模型叫“计数器机”,它只需要有限数量的计数器(通常两到三个就够),每条指令无非是“计数器加一”“计数器减一”“判断计数器是否为零”,再加上跳转语句。别看它指令这么简单,它和图灵机是计算等价的,也就是说任何一个可计算函数都能用计数器机算出来。

因此,要证明 Transformer 图灵完备,一个更聪明的做法是:证明它能模拟任何一台计数器机。只要能做到这一点,图灵完备性就到手了。这比直接啃图灵机的读写头舒服得多,因为计数器机的核心难点只集中在一件事上:维护一个可以无限增长的整数,并支持加一、减一、比较是否为零。

4.2 用固定位宽的数表示任意大的整数:把大数拆到多个 token 上

一个任意大的整数 v,在常量位宽下没法用一个数字表示,但可以拆成很多个 token 来表示。最直接的思路是二进制展开:每个 token 保存一位二进制位,v 的第 i 位存在序列的第 i 个位置。这样 v 的存储空间随着表示长度线性增长,而每个 token 始终只需要 1bit,完美符合常量位宽的要求。

然后问题就变成:如何在这个“多 token 大整数”上执行加一和减一?加一操作是这样的:从最低位开始,把所有连续的“1”翻转为“0”,然后把遇到的第一个“0”翻转为“1”。这本质上是一个模式识别任务——找到“一串 1 后面跟着的第一个 0”。Transformer 的注意力完全有能力实现这种模式匹配:让一个注意力头专门检测“从最低位起连续 1 的边界”,另一个注意力头在那个边界位置执行改写。减一则是反过来,找“一串 0 后面的第一个 1”。判断是否为零更简单,只要维护一个额外的标志 token,只要在每次操作后更新它就行。

4.3 为什么计数器机路线更贴合 Transformer 的“气质”

图灵机的读写头是顺序移动的,每一步只能看一个格子。计数器机则完全不同,它的计算瓶颈在于“找某个特定位置”,而注意力本质上就是大规模并行寻址。只要让注意力头学会“寻找下一个 0 的位置”这类模式,它就能在 O(1) 层内定位到目标位置,不需要一步一格地挪过去。

更重要的是,计数器机的程序指令数量是有限的,指令逻辑可以用前馈网络直接实现为一个离散的查表函数。状态寄存器和计数器的值分散在序列的各个 token 里,由注意力负责按需读取。这种“状态与数据分离、通过寻址来交互”的方式,和 Transformer 自身的计算范式非常匹配。我倾向于认为,论文里实际采用的证明路径很可能走的是这一类的构造,而不是去生硬地模拟图灵机的逐格移动。

5. 结果的价值与边界:量化、效率与常见误区

5.1 现实意义:8bit 模型的理论上限没有被精度卡死

这个结果最直接的影响,是给低精度模型“正名”了。过去很多人直觉上认为,你把模型压到 4bit 或者 8bit,它就从“通用计算设备”退化成了某种特殊的有限状态机。如果这篇标题的结论成立,那么至少在理想推理条件下(允许序列无限长、推理步数不受限),常量位宽 Transformer 仍然是普遍计算能力的。

这不等于说量化后的模型一定很强,但它确实说明了:精度带来的限制,可以从“有没有能力”这一层被挪到“效率与可靠性”那一层。对那些正在做极端低比特量化的工程师来说,这是一个不错的心理支撑——你压缩的不是模型的理论天花板,而是它在有限预算下能发挥出来的工程性能。你不会因为把权重换成 INT8 就突然把模型的“类计算机”资格弄丢了。

5.2 但“图灵完备”从来不是“效率承诺”

理论证明里允许的往往是天马行空的构造:为了模拟一步加一,可能要在序列中铺开几百上千个 token,层数也可能随模拟步数线性甚至更高速地增长。为了保证离散逻辑精确执行,还需要冗余复制、多数表决之类的开销。这些都极端奢侈,绝对不可能直接用在线上服务里。

所以我对这类结果的态度一直是:它是边界探索,不是工程蓝图。它告诉我们,即便在极其苛刻的数值约束下,通用计算在原理上依然存在。但一个实际模型能不能在 32 层、4096 上下文、几十亿参数的成本下去解决实际问题,那完全是另一个话题。理论证明里那种“用无限长序列换无限存储”的方式,映射到现实里就变成了“上下文窗口长度”,而上下文窗口永远是有限的。这个落差,决定了理论图灵完备性和实际智能表现之间存在巨大鸿沟。

5.3 常见误区校正:图灵完备不等于强智能,也不等于“真的在编程”

看到这个标题,很容易有人激动地说“看吧,Transformer 就是通用计算机,AGI 可期”。这种推论属于典型的跳跃。图灵完备性只说明架构具备表达所有可计算函数的能力,却不保证训练过程能学到那个函数,更不保证能用合理的时间算出来。你给纸笔,任何受过教育的人理论上都能手动模拟一台图灵机,但没人会因此说“人类走路就是超级计算机”。

另外还要区分“构造性证明”和“训练涌现”。证明里给的权重是精心设计的,不是梯度下降学出来的。一个模型在训练后表现出强大的语言能力,和它“可被构造为一台图灵机”,中间隔着十万八千里的训练动力学问题。所以读这个标题时,把它当作对 Transformer 表达能力的理论确认,而不是对当前模型智力水平的背书。

5.4 与其他模型的对比:为什么 RNN 要做到同样的事更难

顺带说一个有意思的对比。RNN 类模型也常被讨论图灵完备性,但很多证明依赖的是无界隐藏状态或者连续时间假设。一旦把隐藏状态位宽固定,RNN 的循环更新就是一个有限状态自动机的迭代,很容易退化成正则语言级别的能力。Transformer 之所以在常量位宽下还有救,关键在于它有一个“外接序列”作为无限存储,而 RNN 的主要存储是内部隐藏向量,外部输出序列并不自动参与下一时刻的状态更新。

这就是注意力架构的优势:输出追加到输入序列,上下文不断生长,相当于模型把计算历史永久保存在外部。只要这个外部序列无界,Transformer 就能持续借用“外部存储”来绕开内部状态的有限性。这个视角也提醒我们,长上下文能力对 Transformer 的理论价值比想象中更重要——它不只是“记得更多”,而是让模型距离通用计算形态更近了一步。

6. 对我们这些读者的启示:怎么把这个证明当成工具箱

6.1 读这类论文时,建议盯着四个细节看

第一,构造需要的深度是不是随模拟步数增长的,如果是,那它本质上是在用“时间换存储”。第二,位置编码用的是绝对坐标还是相对增量,这决定了它的寻址方式是否真的低精度友好。第三,是否依赖标准化、残差之外的辅助机制,比如特殊符号、显式的标志位,这些辅助 token 在真实模型里不一定存在。第四,也是最重要的,它有没有保证多项式步模拟还是可以接受超多项式开销,这对可计算性之后的下一个理论问题——计算复杂性——很关键。

6.2 对低精度训练与推理的一点实际启发

回到工程视角。如果常量位宽就足够支撑通用计算,那么我们在量化模型时对“精度损失导致能力崩溃”的担忧可以更精细一些。真正影响下游任务表现的往往是激活值中的离群通道、注意力分数的锐利程度、以及关键状态信息的保真度,而不是“所有值都必须高精度”。你可以把这篇论文的构造看作一个极端压力测试:它证明了即使所有信息都揉碎成低位宽的碎片,只要寻址和组合机制足够好,能力就不会在原理上消失。

那实际部署时能抄什么作业呢?至少有三条可以带走:第一,保留关键标志位和指针类的 token 的较高精度,因为它们承担了寻址功能;第二,对注意力分数做合理的缩放和裁剪,避免低精度下 Softmax 退化;第三,允许模型把中间结果写回上下文,这等于让模型拥有外部记忆,比把所有状态塞进隐藏向量要稳健得多。这些做法以前更多是经验性的,现在多了一个理论背景。

6.3 后续值得关注的开放问题

这类结果自然会带出更多问题。比如,常量位宽下最小的深度和位宽组合是多少?是否存在一个模型,能在位宽为 1 的条件下仍然图灵完备?注意力窗口受限时,比如只能看到最近 k 个 token,原来的构造还成立吗?如果成立,通用性靠的是“足够大的 k”还是别的机制?还有更实际的问题:有没有可能把这套构造中的寻址模式和冗余技巧,迁移到训练过程中,提升模型的长程建模能力?我觉得这些方向都很值得关注,因为它们的答案会真正拉近理论证明和落地实验之间的距离。

老实说,我每次读到这种证明性质的工作,感受都挺复杂的。一方面,它确实好看,精巧的构造像一座纸牌塔,一层扣一层,让人忍不住赞叹原来数学能做到这个地步。另一方面,我也清楚它离线上模型的实际能力相当远,不能直接拿来当论据说“模型已经是通用计算机了”。但正是这种“边界上的探索”,让我们对模型的本质更谦卑、更清醒。常量位宽下的图灵完备性,真正的价值不在于宣称谁更强,而在于告诉所有做低精度、做高效推理、做长上下文的人:这条路的尽头不是死胡同,只要设计得当,有限精度也可以装下无限的计算可能。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询