# 计算的本质
# 什么是计算机
很多科学史专家们将中国的算盘作为了最早的计算机,人们靠一套珠算口诀来控制操作进行计算,算盘打熟了,就可以利用肌肉记忆得到计算结果,这和后来出现的图灵机计算原理很相似。我们都知道一句俗话,就是三下五除二,这其实就是一句珠算口诀,它是指加3时,可以先把算盘上面的5落下来,再从下面扣除2个珠子,这个过程不需要熟悉数学计算,只要背下口诀,小孩子都能打算盘进行复杂计算。
从算盘的设计和使用上可以看出构成计算机的三个要素:计算单元、存储单元和控制指令序列。任何能计算、有存储能力、受指令控制的机器都可以被算作计算机,在这三个要素中,人们习惯于把它们再分成硬件和软件,硬件就是计算单元和存储单元,以及控制单元,软件则是指令序列。计算机只有通过指令序列被控制起来,才能完成一定的功能,今天计算机的种种优势,主要差别大部分还是在软件上。
# 开关电路
人们使用算盘其实并不容易,不仅要掌握口诀,还要练习手指的肌肉记忆,这便成了使用的门槛,因此人们会自然而然的想到去发明不需要训练也能使用的计算机。
最早的机械计算机可以通过机械转轮解决逢十进一的问题,从而进行加减乘除运算,但是这类仪器既笨重又昂贵,机械复杂到一定程度就会受技术所困,无法制造出来,所以早期的机械计算机和差分机都无疾而终。
布尔代数的出现解决了差分机的瓶颈,通过二级制能够将算数和简单的数理逻辑统一起来,并实现任何十进制运算,同时进行复杂的逻辑控制。香农从理论上指出任何逻辑控制和计算都和开关电路等价,奠定了今天数字电路的基础。
我们现代计算机内部采用的是二进制,而不是十进制,其原因就是二级制很简单,而且它除了可以记数以外,还天然的和逻辑相对应,这两个特性在计算机中非常有用,它可以把复杂的情况进行分类、单独处理,这就给计算机的控制带来了很大的灵活性。
香农的电路设计思想可以被总结为“模块化”和“等价性”。模块化就是用少量简单的模块搭建出各种复杂的功能,等价性是指再复杂的计算都可以等价成加减乘除的运算,再进而等价成开关电路的逻辑运算。我们在工作中常常遇到某个问题很难解决,不过存在一个容易解决的等价问题,于是我们会先去解决那个等价问题,等到它被解决后,原来的难题就迎刃而解了。就像我们在证明三角形全等的过程中,只需要证明两个角加上一个边相等,而不需要直接证明三角形完全相等一样,等价问题的解决难度会下降一个梯度。
# 图灵机
在图灵之前,人类制造计算机都是先从简单问题的计算机开始,再越做越复杂。图灵在思考计算机相关问题时,回到了问题的本源,他抛开了具体技术,从计算的本质来寻找计算机的极限,他思考的问题如下:
- 数学问题是否都有明确的答案。
- 如果有明确的答案,是否可以通过有限步计算得到答案。
- 对于那些有可能在有限步计算出来的数学问题,能否有一种假象的机器,通过不断的运动,当它停下来的时候问题就解决了。
其实以目前的科学技术水平来看,很多数学问题并没有明确的答案,即使有可能也很难在有限步内找到,于是图灵将精力集中在那些能够在有限步内能够计算出的数学问题上,为此他设计出了一种被称为图灵机的数学模型。这个模型的全部定义一共有四条:
- 要有一条无限长被分成一个个格子的纸带,每个格子里记录着符号或数字,为了清楚起见,可以为这些格子上编号1、2、3、4......这就相当于人们计算数学题时使用的纸张。
- 有一个读写笔,在纸带上左右移动,它停到哪里就可以改变哪里的符号或数字,这就相当于人们算题的过程。
- 有一套规则表,根据图灵机当前的状态和读写笔所指向格子中的符号或数字,人们查到后就知道下一步该做什么,完成这个步骤后,图灵机就进入了一个新的状态。这就相当于老师教的算题方法。
- 图灵机的状态需要记录在一个地方,图灵机的状态是有限的,其中有一个特殊状态是停机,一旦进入中国状态则表示计算完成。
图灵认为这种机器能模拟任何具体的计算过程,但并未指出如何实现这样的机器。它将世界上的数学问题分成了两类,一类是可以用图灵机在有限步内完成计算的,另一类是不可以的。今天我们说一个软件问题能不能计算,其实不是指数学计算,而是能否用图灵机这个简单逻辑来计算。
图灵机虽然是虚构的,但是它给后人设计计算机制定了一个行之有效的原则,就是计算机可以通过存储地址、计算机状态、规则表和当前位置的读写来进行计算。今天计算机可以被理解成由多个能够被控制的开关构成,这些开关的运动和计算过程是对应的,其实今天计算机的本质也还是机械运动。
# 人工智能的边界
ChatGPT的出现会让很多人担心是不是世界上所有的事情计算机都会做得比人快,还比人好。这种担心其实有点杞人忧天,因为无论什么样的计算机,它都只能解决世界上很小一部分问题。
在数学领域,只有一部分问题我们能够判断是否存在答案,大部分问题是无法预判答案是否存在的。在有答案的问题中,有些可以通过图灵机解决,有些问题因为计算复杂度过高,其实还是解决不了。
今天的人工智能技术主要是指基于大数据的深度学习和强化学习,这类问题通常可以定义为可解问题,并没有超出图灵机的范畴。之所以我们看到人工智能变得越来越聪明,只是因为很多问题过去大家没有找到转变为数学问题的桥梁,现在找到了而已。