前言.
- 1946年第一台电子计算机ENIAC问世,经过70多年的发展历程,如今的计算机已经能够解决诸多智能问题。人工智能(Artificial Intelligence)作为社会与公众感受计算机强大能力的新兴领域,某种程度上由于诸多科幻作品的推波助澜,使得不了解AI背后技术的群体对于AI的能力有过高的估计,从而产生不切实际的期望或是镜花水月的恐惧。
- 电影作品中,天网Skynet应该是知名度最高的,意图毁灭人类的AI,在《终结者》世界观中,天网一个人类于20世纪后期创造的以计算机为基础的人工智能防御系统,最初是研究用于军事的发展,后自我意识觉醒,视全人类为威胁,以诱发核弹攻击为起步发动了将整个人类置于灭绝边缘的审判日。
- 年轻人喜欢的作品中,在《复仇者联盟2:奥创纪元》登场的超级AI奥创Ultron也是以毁灭人类为目的。天网与奥创被制造的目的最初都是保护人类,但最终他们依靠超级计算能力做出的决策都成了毁灭人类 —— 与最初目的背道而驰。以奥创为例(实际上本人不清楚天网叛变的过程),他是托尼斯塔克为了抵御外星力量、保卫地球安全创造的超级人工智能防御系统。但奥创拥有自我意识后,发现正是由于地球人类的侵略性、进攻性日益强大,世界各地冲突频发,才会引来外星力量注意以及随后的武装侵略,从而奥创得出的解决方法就是毁灭全部人类。
- 这些作品使得很多人开始对人工智能的飞速发展萌生怀疑乃至迷信的态度,如果AI能够像人一样独立思考,并且有着超级计算能力,那么整个AI群体无疑会飞速发展并且在短时间内超越并统治人类。这里抛开AI研究涉及道德、哲学问题不谈,从技术上来说,由于人类对于脑科学的研究远远不够,所以要想制造出像人一样思考的AI,即通用人工智能Artificial General Intelligence,还有很长很长的路要走。至于天网、奥创那样的超级AI,意欲毁灭、统治人类的场景,我想在我的有生之年应该是无幸得见。
- 对于今天使用的计算机而言,其五花八门的具体应用表现出的能力,使得人们忽视了重要的一点 —— 计算机的数学模型。1936年,也就是ENIAC问世的十年前,图灵提出了图灵机,即抽象计算机数学模型。图灵对于图灵机的定义,划定了能够由计算机解决的问题范畴,即可计算(Computability)问题。
- 数学上来说,可计算问题属于有答案问题的子集(至于是否为真子集尚未确定),而希尔伯特第十问题则划定了有答案问题的范畴。
希尔伯特第十问题.
- 现代计算机之所以显得如此智能,是数学模型、数据资源与硬件资源三者融合越来越紧密的结果。大数据保证有海量的数据提供给模型训练,硬件发展切实地训练出模型,而众多看似神乎其技的计算机应用背后,都是远没有该应用本身那么令人惊讶的数学模型在发挥作用。
- 语音识别、机器翻译背后的隐马尔可夫模型,搜索引擎背后的布尔代数,新闻分类背后的余弦定理…
- 这些数学模型起到桥梁的作用,将各式各样的实际问题转化为计算问题,这些问题是可以由计算机计算的数学问题。但跳出这个可以由计算机计算的数学问题范畴来考虑,是否所有的数学问题都存在解?
- 这个问题现在来看当然是否定的,1930年数学家哥德尔提出了以他命名的不完备定理:
任何理论体系都包含了既不能证明为真,也不能证明为假的命题。
- 这个理论某种程度上说明了数学方法的局限性,数学不是一切。抛开意识问题,专注于数学领域来看,不完备定理说明:存在这样的数学问题,它没有明确的答案。
- 所有数学问题是否都有解这一论题的研究历史可以追溯到1900年,大数学家希尔伯特在国际数学大会上提出了二十三个数学问题,其中一个的原始内容为:
对于任意一个不定方程,能否通过有限步运算,判定其是否存在整数解。
- 因为该问题被提出时排序第十,因此被称为希尔伯特第十问题。剧透一下,第十问题由苏联天才数学家尤里·马蒂亚塞维奇(Yuri Matiyasevich)于1970年解决,彼时他只是一个大学毕业两年的“应届生”,他证明了一般情况下,无法通过有限步运算判定不定方程是否存在整数解。
- 不定方程在狭义上也称为丢番图方程Diophantine Equation,有一个或者几个变量的整系数方程,它们的求解仅仅在整数范围内进行。例如我们熟悉的勾股定理: a 2 + b 2 = c 2 a^2+b^2=c^2 a2+b2=c2显然任意一组勾股数都是该不定方程的解。
- 另外著名的费马大定理也是关于丢番图方程的: x N + y N = z N , N > 2 x^N+y^N=z^N~,~N>2 xN+yN=zN , N>2费马大定理从1637左右被提出,直至1995年被证明(这个时间距离我们已经没有那么遥远了),它经历了众多对我们而言只存在于课本上的人物 —— 欧拉、高斯、柯西,最终由英国数学家安德鲁·怀尔斯证明不存在正整数解。(关于费马大定理的证明历史,可以参考《证明费马大定理有多难?》)
- 而对于更加一般的不定方程,情况就更加复杂了,无法通过有限步的运算来判定它是否存在整数解,并且更糟糕的是,即使能够判定它有整数解,这一结论和如何得到解之间依旧有很长的路要走(还不知道有没有路)。
- 俗话说办法总比问题多,但希尔伯特第十问题却揭示了与之相反的现实 —— 问题远远多于办法。
- 因此希尔伯特第十问题的提出,以及其解答的给出,明确了各种层次的问题之间的关系:
- 上图中关键的是,数学问题中只有一部分是可以判定是否存在解的问题,而可判定问题中又只有一部分是有解问题。从计算机的实用角度来说,针对确定有解问题的研究才是真正有意义的。但问题依旧存在,确定有解的问题都能够通过计算机解出吗?
图灵机.
- 计算机科学之父Alan Mathison Turing于1936年提出的一种计算模型,将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。图灵机在逻辑上十分强大,任何可以通过有限步逻辑和数学运算解决的问题,理论上来说都可以通过一个设定的过程,在图灵机上完成。
- 现代的各种计算机,包括被大肆报导突破传统计算机桎梏的量子计算机,都是图灵机这一数学模型的具体实现方式,即使是量子计算机也并没有超出图灵机的逻辑范畴。在计算机科学领域,将能够勇图灵机计算的问题称为可计算问题。
- 如果将人类解决数学题目的过程简化,可以将其概括为下面两个动作:①写下或擦去符号;②移动书写位置,另外人脑中还记忆了运算规则。本着模拟人类运算过程的想法,图灵机由以下 4 4 4 个部分组成:
- ① 无限长的纸带,被划分为连续的一个个格子,从左到右编号为 0 , 1 , 2 , ⋯ 0,1,2,\cdots 0,1,2,⋯ ,纸带对应人类运算时的纸张,在图灵机中,纸带长度是无限的,也就是说图灵机有着无限的存储容量;
- ② 可以在纸带一维空间内自由移动的读写头,能够读取当前格中内容以及改变他们;
- ③ 控制规则,根据图灵机当前状态与当前读写头读取到的内容确定读写头的动作,对应于人类计算时记忆的运算规则;
- ④ 状态寄存器,用于保存图灵机当前所处的状态,当遇到特殊状态 —— 终止状态时机器停止,根据终止状态具体是成功状态还是失败状态来给出对应结果。
- 图灵机抽象的描述了解决问题的完整过程,但对于不同的问题,具体的控制规则,也就是通常所说的算法,还需要程序的设计者具体地给出。在计算理论中图灵机形式化地定义为有序七元组: T = ( Q , Γ , Σ , b , δ , q 0 , F ) T=(Q,\Gamma,\Sigma,b,\delta,q_0,F) T=(Q,Γ,Σ,b,δ,q0,F)
- Q Q Q 是非空有限状态集合,包含机器可能出现的所有状态;
- Γ \Gamma Γ 是非空有限字母表,包含机器可能遇到的所有符号,其中包括空白符 b b b;
- Σ \Sigma Σ 是非空有限输入字母表,不包括空白符 b b b,所以实际上 Σ ⊂ Γ \Sigma\subset\Gamma Σ⊂Γ;
- b b b 表示空白符;
- δ \delta δ 是从 Q / F × Γ → Q / F × Γ × { L e f t , R i g h t } Q/F\times\Gamma\rightarrow Q/F\times\Gamma\times\{Left,Right\} Q/F×Γ→Q/F×Γ×{Left,Right} 的映射,其中 Q / F Q/F Q/F 表示不包含终止状态的状态集合, { L e f t , R i g h t } \{Left,Right\} {Left,Right} 表示指针的左右合法移动;
- q 0 ∈ Q q_0\in Q q0∈Q,是机器起始状态;
- F ⊂ Q F\subset Q F⊂Q,是机器终止状态,其中包含了接受状态 q a c c q_{acc} qacc 和拒绝状态 q r e j q_{rej} qrej,并且 q a c c ≠ q r e j . q_{acc}\neq q_{rej}. qacc=qrej.
- 在图灵机上计算一个问题,会出现三种结果:① 机器进入接受状态;② 机器进入拒绝状态;③ 机器不停机,一直循环下去。最终机器进入接受状态的问题,是可计算问题,如果将输入符号串视为语言,即在形式语言的领域讨论这一问题,能够被图灵机接受的语言是可计算语言,对应的文法是乔姆斯基定义的 0 0 0 型文法。
- 当字母表 Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1} 时,就对应于我们现在使用的二进制计算机。从图灵机这一数学模型出发,如果图灵机 A A A 能够模拟图灵机 B B B 的全部运算,并且 B B B 也能模拟 A A A 的全部运算,那么这两个图灵机解决问题的能力是一样的,称它们等价。
- 可以证明二进制图灵机和任意字母表图灵机是等价的,因此量子计算机在没有突破图灵机这一数学模型能力限制的情况下,并不会对计算机的计算能力带来本质的飞跃,所以也不会带来奥创那样的超级AI.
后话.
- 在图灵机上运行进入接受状态的问题是可计算问题,如果一个问题对应的语言是是可计算的,并且其补集(等价于对应语言的补集)是可计算的,那么该问题(及其对应的语言)是可判定的Decidability.
- 注意这里的可判定Decidability和前面讨论数学问题中是否所有问题都存在解时的可判定问题不同,此处是严格定义下的可判定 —— 原语言集合可计算并且补集语言集合可计算,上面仅仅是字面意思的可以判断是否有解。
- 对应于可判定语言,也称为上下文有关语言的机器是特殊的图灵机,可以视为图灵机的真子集 —— 判定机,也称为线性有界自动机Linear Bounded Automaton. 关于形式语言以及识别它们的自动机,可以参考《正则语言的封闭性》.
- 在逻辑上计算能力超过图灵机的数学模型有很多,但几乎都已经有了玄学的味道,有生之年大概是看不到它们的具体实现了 —— 《有没有比图灵机能力更强的计算模型?》.