跳到正文
返回

大脑为什么可以不精确,却仍然可靠?

更新于:
8分钟阅读

如果把神经元当作计算机元件,大脑看起来实在不像一台好机器。

在冯·诺依曼写作《计算机与人脑》的 1950 年代,一个神经元完成一次反应所需的时间,比真空管或晶体管慢四到五个数量级;神经信号也谈不上多精确。按照他当时的估计,大脑内部数值表达只能保留两三位有效数字。可就是这样一套又慢又不精确的元件,却能长期完成当时的计算机根本无法企及的复杂任务。

这里真正值得追问的,不是大脑如何弥补元件性能,而是它是否从一开始就在进行另一种计算。

冯·诺依曼没有把大脑简单地比作计算机。他恰恰是在比较两者之后发现:如果一套系统容忍的元件、消息和中间结果都不精确,那么它的组织方式就不可能只是精确计算机的低配版本。大脑的可靠性,不是把每一步都做对,而是让单步错误很难改变整体意义。

一次脉冲并不是一个二进制位

神经脉冲很容易诱发一种直觉:神经元要么放电,要么不放电,这不就是 0 和 1 吗?既然基本信号是“全或无”的,大脑似乎自然是一台数字计算机。

冯·诺依曼也从这里出发。他把一次脉冲的出现或缺席看成两种状态,承认神经系统首先显露出数字特征。但他很快加上了一个限制:这只是表面上的数字性。

原因在于,脉冲如何产生并不只是简单的逻辑门。一个神经元会接收许多输入;它是否响应,可能取决于输入的数量、到达位置、时间关系和此前的疲劳状态。多个脉冲只要落在一段“求和时间”内,就可能共同起效;间隔更久时,较早的脉冲也不一定立刻失去影响。输出近似离散,并不意味着产生输出的过程也是一套干净的布尔逻辑。

更重要的是,单个脉冲往往不是消息的全部。冯·诺依曼用感觉神经传递刺激强度来说明这一点:刺激可以被转换为一串脉冲的频率。一次脉冲仍然只有“有”或“无”,但连续量被编码在一段时间内的统计性质中。他还推测,除了频率,不同脉冲序列之间的相关性也可能携带信息。

这与数字计算机中的二进制位有根本差别。精确位置上的一个位如果翻转,可能让整个数值或指令改变含义;统计消息中偶尔少一个或多一个脉冲,通常只会让频率稍微偏移。载体可以是离散的,意义却不必由每个离散符号逐一决定。

所以,大脑并不是用不可靠的脉冲勉强拼出可靠的比特。更可能的方向是:它选择了一种让单个脉冲不必绝对可靠的表达方式。

精度问题其实是深度问题

为什么人工计算机如此依赖精度?直觉上的答案是任务需要精确结果,但冯·诺依曼指出,外部结果与内部计算的精度要求并不是一回事。

很多物理问题的输入本来就有测量误差,输出也只需要有限精度。然而计算机在内部仍要保留许多位数,因为一段很长的串行计算会不断累积舍入误差,早期产生的误差还可能被后续步骤放大。任务需要的不是十位小数,漫长的计算链才需要十位小数。

这把“大脑为什么能用低精度工作”改写成了另一个问题:如果大脑确实只能承受低精度,它就不能经常依赖很深的串行计算。否则误差沿着依赖链传播,很快就会淹没结果。

冯·诺依曼把连续执行的算术步骤数量称为算术深度,也把它视作逻辑深度的一部分。他最后的推断不是大脑偷偷拥有更精密的元件,而是大脑所使用的逻辑结构必须比我们熟悉的数学推导和机器程序更浅。

“浅”在这里不意味着能力简单。它意味着同一个复杂结果不能主要依靠很长的前后依赖链获得。复杂性必须被放到别处。

慢元件迫使结构走向并行

冯·诺依曼比较了当时的神经元与电子元件:人工元件少而快,生物元件多而慢,而且后者在体积和能耗上占有巨大优势。这个具体数量级属于 1950 年代,不能直接拿来评价今天的芯片;但由约束推出结构的思路并没有过时。

当元件很慢,却可以部署得极多时,合适的组织方式自然会倾向于同时获取和处理尽可能多的信息。相反,当元件昂贵但速度很快时,让少量元件依次复用更划算。于是,自然系统更偏向并行,人工计算机更偏向串行。

不过,并行不是把一串步骤平均分给许多神经元。只要后一步依赖前一步的结果,它仍然不能提前发生。冯·诺依曼特意提醒,把串行过程改成并行过程,往往必须连同“逻辑方法和组织”一起改变。否则只是增加执行单元,并没有缩短决定误差累积的依赖链。

这一步将笔记中“全靠并行性”的判断推进得更远:并行不是大脑在慢速元件上的加速技巧,而是低精度计算能够成立的前提。它既同时利用了大量元件,也迫使问题采用较浅、较分散的表达。

可靠不是没有错误,而是错误不重要

在更早的《自动机的一般与逻辑理论》中,冯·诺依曼已经注意到自然系统和人工机器面对错误时的不同态度。

传统计算机努力让错误立刻暴露,因为一个局部故障可能让后续计算全面失效;自然系统则更像是在组织上削弱局部错误的影响,让系统可以先继续工作,再慢慢隔离或修复故障。前者要求元件尽可能正确,后者首先要求错误不容易扩散成灾难。

他用三个相同计算单元的多数表决说明冗余如何提高可靠性:单个单元可能犯错,但只要三个单元不在同一步同时出现两个错误,多数结果仍然正确。这个例子是在说明人工自动机的容错方案,并不是对神经系统结构的直接描述。它证明的是一个更一般的原则:可靠性可以是许多不可靠事件共同产生的统计结果,而不一定是每个事件都可靠的前提。

这正好与脉冲频率的表达方式接上。单个脉冲的缺失被稀释为统计量的小幅变化;大量元件的并行与冗余,又让局部故障不必占据决定性位置。系统牺牲了算术精度,却换来了逻辑可靠性。

可以把这种差别压缩成两个只改变组织方式的极简模型。调节同一个局部错误率:串行模型要求三个步骤全部成功;冗余模型让三个单元分别工作并取多数。为了单独比较结构,这里假定各单元的错误彼此独立。它们不是计算机与大脑的结构图,只用来显示错误沿依赖链传播与被群体稀释之间的差别。

相同的局部错误率,两种不同的系统结果两个模型都使用三个同样不可靠且错误相互独立的单元,改变的只有组织方式。
三步串行依赖链72.9%

三步必须全部正确,最终结果才能保持正确。

结果正确的概率
三路冗余判断97.2%

只要不同时错两个单元,多数结果仍然正确。

结果正确的概率
在这个错误率下,冗余结构多保留了 24.3 个百分点的可靠性。

这里的“可靠”也不是永不出错。冗余只能降低错误概率,无法消灭错误。真正的变化是,系统不再把正确性押在任意一个元件、一次脉冲或一条漫长的计算链上。

不要替冯·诺依曼补完答案

从今天回看,很容易用“存算一体”概括大脑,再把这个答案写回冯·诺依曼的文字里。但他在讨论记忆时其实非常谨慎。他列出了神经回路的持续活动、连接状态、化学变化和遗传机制等可能性,随后明确承认:我们并不知道神经系统中承担记忆的基本物理实体是什么。他甚至专门指出,记忆的底层元件未必与执行基本活动的元件相同。

同样,“大脑的语言不是数学的语言”也不等于“大脑无法被数学描述”。他的意思更接近:我们有意识使用的数学,可能只是一种建立在神经系统原生表达之上的短码。大脑内部真正使用的语言具有更低的逻辑深度、更低的算术精度和更强的统计性,因此不会与纸面上的公式或计算机指令同构。

他甚至期待,对神经系统的数学研究最终会反过来改变我们理解数学和逻辑的方式。这不是对数学建模的拒绝,而是对既有数学表达是否足够的怀疑。

从“更好的元件”转向“让错误无关紧要”

把大脑看成一台缓慢、低精度的计算机,只会得到一个谜:这么差的硬件为什么如此强大?冯·诺依曼真正提供的新视角,是拒绝默认两种系统必须执行同一种计算。

数字计算机用精确符号和较深的串行步骤换取可重复的结果;他设想中的神经系统则用统计消息、浅逻辑、并行和冗余,让局部的不精确不再致命。大脑的优势因此不是在每一步都胜过机器,而是把“哪一步必须绝对正确”这个问题重新设计了。

这个直觉也可以迁移到大脑之外。当系统复杂到局部错误无法彻底避免时,只提高单个元件的精度往往代价高昂。另一条路是改变信息的表达方式,缩短错误会被放大的依赖链,用并行和冗余把错误限制在局部。最可靠的系统未必拥有最可靠的每一个部分;它可能只是最少让某一个部分变得不可替代。


延伸阅读:John von Neumann, The Computer and the Brain, Yale University Press, 1958;John von Neumann, The General and Logical Theory of Automata, 1951。前者是未完成的 Silliman Lectures 讲稿,在作者去世后出版;本文涉及的历史数值与神经生理判断均按原文语境转述,不作为当代神经科学结论。