《计算机与人脑》:准确度
2024-04-09 21:50:41  阅读数 224

准确度这一章,是我看的最容易理解的章节。这一节,讲的是模拟计算机有限的准确度,以及数字计算机可扩展的准确度的特性。

模拟计算机,由于通过机械等控制,其准确度跟制作工艺等是强相关的。这就导致了要想达到1:1000没问题,但是想要达到1:10000,或者1:100000,就有难度了,更高的准确度就更夸张了(所以喽,外星文明想在飞船上加一道刻度,就等于带走了大英百科全书,这个只能是一个美好的科学幻想了,实际不可实施)。

那么数字计算机呢?数字计算机的准确度,和我们处理数的位数强相关。比如我们能够处理的数的位数是12位,那么就能达到1:(10^12)这样的准确度(冯诺依曼是以十进制的计算机来做说明的,但道理是相通的)。如果想要增加准确度,只用考虑将12位系统增加到13位系统,就在准确度上提升了一个数量级,成为了1:(10^13)。这个开销相比模拟计算机来说要小的多,可实施,因为提升一位,对于12位系统来说,增加的规模只是1/12,但是你要想在模拟计算机里提升一个准确度数量级,那得要提升多大的制作工艺才能达到。

所以综上,数字计算机能够很方便有效的提升准确度。不过我们也要考虑另一个问题,即准确度是否有那么重要?我们是否真的需要1:(10^5)以上的准确度呢?

科学家想问题,就会想的很全,对于我们来说,可能会觉得准确度改善不是好事吗?但是科学家会多想一步,就是我们有没有必要呢?

如果出现误差,尤其是随机误差,那么经过N步计算,实际带来的误差应是N^0.5的比例关系。从这个来看,似乎误差带来的影响并不算大。但是我们并不仅仅是考虑第一步产生的误差在最终的影响,还要考虑每一步运算都会带来误差(因为你的计算准确度是针对所有步骤的),这就会带来指数级的增长。书中举了一个例子,如果每一步有5%的误差,那么仅仅425步,就能达到10^9的误差(是不是跟棋盘里放麦子的问题是一样的)。

我们自己也可以算一算,如果是1:(10^5)的准确度,经过10000次计算,就能达到10%的误差,而10000次运算,对于我们日常的计算机来说,也就是一刹那的事儿。

因此,从计算机精度上来说,数字计算机的优势是很明显的,而且在日常计算中的必要性也是很明显的。从这点来看,数字计算机是完美胜出了。

冯诺依曼在讲解这些的过程中,还提到了计算深度和逻辑深度。我们要完成一个复杂计算,实际是转换成了若干四则运算等的简单运算。多数的函数运算,也是用类似的方式实现了一个近似的计算实现。这就是它的计算深度。而逻辑深度,则可能会更大,因为基本运算需要拆解成一系列的逻辑步骤,导致逻辑深度会大于计算深度。