freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

图灵的魔咒
2019-09-06 09:21:16

马云和马斯克的辩论


2019年8月29日,在上海举行的世界人工智能大会开幕式上,特斯拉公司的首席执行官马斯克和阿里巴巴集团董事局主席马云展开了辩论,探讨的内容包括了人工智能的发展前景。辩论还是很有趣的,大家可以上网去搜索一下视频。大致观点是马斯克认为人工智能会超越人类智能,马云认为人工智能对人类不构成威胁,人工智能只是人类创造的另一个工具而已。

图片1.png关于人工智能是否会取代人类的辩论每隔几年就会成为热点。不只是大人物们会辩论,这个话题也是普通民众茶余饭后的谈资之一。

图灵的机器

人工智能的载体是运行在计算机上的程序。讨论人工智能的本质和边界就不能不讲到计算机和程序。所以,下面要上溯到计算机的本质和发源——图灵机。

图灵机器.gif图灵在“论可计算数及其在判定性问题上的应用”这篇跨越时代的论文中描述了一种并不存在的机器。这种机器具有有限个m-格局(m-condition),机器根据所处的m-格局执行不同的操作。现代计算机领域一般用状态(state)这个术语来表述m-格局。这种机器还配有纸带,纸带穿过机器,纸带被分成一个个方格,每个方格可以放置一个符号。任何时刻,只有一个方格里的符号被机器读到。这个方格被称为“扫描格”,扫描格中的符号被称为“扫描符”。扫描符是机器当前唯一可以直接感知的符号。通过调节状态,机器可以有效地记住之前扫描过的字符。在任何时候机器可能的行为就是由当前的状态和扫描符共同来决定。图灵在论文中将状态和扫描符的组合称为“格局”。格局决定了机器可能的行为。这就是规则表。在某些格局里,扫描格为空,机器会在这个扫描格中写下新的符号。在某些格局里,机器会擦除扫描符,也就是将扫描格变为空;在某些格局里,机器可以改变扫描的位置,向左或向右移动一格。

图片2.png

在“论可计算数及其在判定性问题上的应用”这篇论文中,图灵定义了图灵机的编码规范,让图灵机与一串数字相对应。接着图灵定义了通用图灵机,通用图灵机读入代表某个图灵机的数字,之后通用图灵机的表现就和那个数字所代表的特定图灵机一样了。

图灵的论文是很难理解的。简单总结一下,图灵机对应现代计算机上的一个程序,通用图灵机对应计算机。如果对通用图灵机也进行编码,那就相当于一个虚拟机了。

为什么图灵要定义出一个并不存在的,抽象的,难以理解的机器呢?这和20世纪初的一段数学理论尝试有关。

希尔伯特的计划

1917年9月11日,希尔伯特在瑞士苏黎世做了一次题为“公理化思考”的演讲。这次演讲引入了希尔伯特计划,该计划试图为所有的数学体系寻求严格的公理系统。希尔伯特的野心是构建一个形式化的数学系统。这个系统应该具有以下四个互相关联的特性:

l独立性。不存在任何冗余的公理,没有一个公理可以由其他公理推导出来。

l一致性。由公理推导出来的任何两个定理不能相互矛盾。

l完备性。从已有公理能够推导出所有为真的公式。假设公式A和公式B是相反的,那么二者中必有一个为真。如果通过公理即不能推导出公式A,又不能推导出公式B,那么该公理系统是不完备的。

l可判定性。希尔伯特想要寻找一个通用的判定过程,用于确定任意公式的可证明性。可判定性独立于完备性。假设公式A和公式B都不可证明,因而该公理系统不完备,但是仍然可以存在一个判定过程,判定公式A和公式B都不可证明。

如果希尔伯特计划成功,那么数学家将会“无所事事”,因为希尔伯特计划的目的是让公理系统本身“自动”推导出整个数学体系中的所有定理。这对当时世界上的顶尖数学家是一个巨大的诱惑。大批年轻而有梦想的数学家投身到数理逻辑的研究中。很快,希尔伯特计划的拥护者变成了反对者。1931年,年轻的奥地利数学家哥德尔向希尔伯特系统的完备性发起攻击。哥德尔在论文“论《数学原理》及有关系统的形式不可判定命题I”中提到了哥德尔不完备定理,也就是说存在既不能证明,也不能证伪的命题,从而撼动了完备性。哥德尔不完备定理的通俗例子是,某人说:“我这句话是谎话。”听者无法判断这句话是真是假。

希尔伯特计划就像一头巨兽,哥德尔射出的**重伤了它,但它还没有倒下。图灵和丘奇给予了它致命的一击,图灵在“论可计算数及其在判定性问题上的应用”中得出了结论——希尔伯特的可判定性是无解的。

图片3.png上图从左到右依次为:希尔伯特、哥德尔、和图灵。

码农的必要性

在任何真实的计算机上,程序的运行多少都会有一些限制,比如内存的大小,CPU的频率等等。随着技术的进步,一些限制会被放开。假如所有的限制都被放开,程序能做任何事吗?答案是不能。程序,或者说图灵机,可以分为两类:第一类是对任何输入都会停机,不论对或错这类图灵机都会给出一个明确的答复(输出);另一类则是在不接受的输入上,可能停机也可能陷入死循环。在这种图灵机上,无论运行了多久,你都无法知道它是否接受输入。

有一个朴素的想法,能否让程序(图灵机)判定另一个程序(图灵机)是属于哪一类呢。

下面这个程序的输出是“hello, world”。

int main()

{

  char *s="hello, world";

  printf(s);

}

能否编出一个程序来判断另一个程序的输出是否是“hello, world”。似乎不难,是吧。假设已经有了这样的一个判定其它程序是否输出“hello, world”的程序,那么让下面这个程序作为它的输入:

int exp(int i,n)

{

int ans=1, j;for (j=1; j<=n; j++) ans *= i;return ans;}int main(){int n, total, x, y, z;scanf(“%d”, &n);total = 3;while (1) {for (x=1; x<=total-2; x++)for (y=1; y<=total-x-1; y++) {z = total – x – y;if (exp(x, n) + exp(y, n) == exp(z,n))printf(“hello, world\n”);}total++;}}

解释一下,exp函数进行的是指数计算。主程序的目的是寻找整数3元组,满足xn+yn=zn。如果找到了这样的3元组,程序输出“hello, world”。

300年前数学家费马曾断言如果n>2,则方程xn+yn=zn没有整数解,这就是费马大定理。历经三百多年的历史,在1995年费马大定理被英国数学家安德鲁·怀尔斯彻底证明。如果有程序能够判断任何一个程序能或不能输出“hello, world”。那么费马大定理就可以被计算机程序证明了。可惜,没有这样的好事。再高明的程序员也编不出这样的程序。像证明费马大定理这样的工作还得依靠数学家们一代一代前仆后继的奋斗。

简单地说,在图灵的论文中,一串数字和图灵机一一对应起来,但是无法判定某个数字所对应的图灵机是否是一个“好的”图灵机,即这个图灵机能否针对每个输入都给出明确的输出。无法用一个图灵机来判定任意一个图灵机是否会在某些输入下陷入死循环,不断地运行,永远不结束。这就是图灵机的不可判定问题。

图灵机的不可判定问题设定了计算机程序的边界。不论计算机技术如何发展,CPU主频多么快,内存多么大,网速多么快,它仍然有不能做的事情。比如,编程、测试、和运维。自计算机诞生以来,程序员队伍发展壮大,至今仍然是有增无减。为什么呢?因为计算机程序不能编出计算机程序。一个卑微的小码农,拿着微薄的薪水,但是却能做全世界最大最快的计算机也不能做的事情——编程。虽然他/她可能只会copy-paste,然后再修改一点点代码,但是最顶尖的计算机也不知道碰到未知情况时copy什么,paste到哪儿,出了错修改哪里。一个小测试员虽然在重复无聊的点鼠标敲键盘的工作,但是他/她的工作还不能完全被程序所替代。同样,完全脱离人的监管的计算机系统其实是相当相当少的,绝大多数情况下还是需要运维人员坐在监视器前,或者无聊或者抓狂地应付还未发生或者已经发生的系统问题。

现在,不是人类离不开计算机,而是计算机离不开人类。计算机有先天缺陷,无法完成一些任务。这是由图灵机的不可判定性决定的。图灵在计算机还未诞生的时候就给它下了个“魔咒”,让计算机无法超越人类!

人工智能的边界

人工智能可以做什么,不能做什么?这就是人工智能的边界。到目前为止,人工智能等同于图灵机,人工智能只是一段程序,图灵机的不可判定性也适用于所有的人工智能程序。那么问题来了,难道人类就不能发明出比图灵机更高明的“机器”了吗?

图灵是一个有趣的人,业余时间喜欢跑步。一天傍晚,跑步后躺在格兰切斯特庄园草地上休息的图灵灵光一闪,构思了一台神奇的机器。但是图灵并没有急于将他的想法发表,他“磨蹭”了很久才写出那篇跨越时代的论文——“论可计算数及其在判定性问题上的应用”。结果是美国的丘奇教授已经早半个月发表论文证明了希尔伯特的可判定性的不成立。丘奇在论文中使用的是λ(lambda)演算。从学术意义上,图灵的努力白费了。但是,图灵在剑桥大学的老师十分欣赏图灵论文的简洁和新颖,在他的努力下,图灵的论文还是发表了。结局还算不错,在剑桥大学老师的推荐下,图灵飘洋过海从英国到美国去读丘奇的博士,博士论文就是证明了λ(lambda)演算和图灵机是等价的。后来,哥德尔又提出了“递归函数”,递归函数也被证明和图灵机等价。

3个人从3个方向产生了3种计算模型,而且这3种计算模型是等价的。于是,数学界产生了丘奇-图灵论题,简单地说,丘奇-图灵论题就是认为“任何在算法上可计算的问题同样可由图灵机计算”。 丘奇-图灵论题是不能被证明的,因为它还包括今后将要被人类发明的计算模型。但是这个论题被数学家广泛地接受并且成为了一种“信仰”。这种信仰表示人类发明不出超越图灵机的算法了。

人工智能在大发展之后必然面临瓶颈。图灵机的边界就是人工智能的边界。人工智能在本质上只是将原先难做的问题解决了,原先不能做的问题,它还是不能做。这就像孙悟空怎么也翻不出如来佛的手掌心。图片4.png


人工智能的未来

人工智能无论怎么发展,也摆脱不了图灵机的“桎梏”,至少到目前还是这样。有意思的是图灵本人深信他发明的机器会带来真正的智能。他曾在接受广播电台采访时表示,一台计算机只相当于人脑的一个神经细胞,因此,就像是评论一个神经细胞不具有智能一样,说计算机不具有智能是没有意义的。言下之意,多台计算机组合在一起很可能产生质的飞跃。

计算机科学家和工程师无疑是人类中智力超群的一群人。但是,他们的作品在自然面前显得那么笨拙。n台计算机连接在一起的理论性能只能是n倍,而实际上还远远达不到,n越大,性能损耗越大。反观人脑,一个神经细胞能力很小,但是大量的神经细胞汇聚在一起却能产生智能。

当人工智能发展不那么顺利时,人工智能学者就不那么自信了。谈到未来发展时就会有一些“甩锅”的声音出现。有的学者说要想发展好人工智能需要哲学先行,哲学家要先给出智能的定义。但是,如果真的有了对智能的完备定义,你就能搞出人工智能吗?有的学者提出需要脑科学先行突破。这种论调更靠谱些。毕竟模仿人脑构建人工智能在过去几十年取得了长足的进步,典型的案例就是深度学习。

哥伦比亚大学的博士后Steven J. Cook等人历时8年终于将秀丽隐杆线虫全部1000个神经元的完整图谱,以及全部神经元之间所有的7000个连接画了出来。8年不发论文,一发就上Nature的封面!

线虫只有1000个神经元,人类大脑有860亿个神经元。1000个神经元的全部连接耗费了8年时间才画出来,要画出860亿个神经元需要多长时间呢? 

图片5.png

马云和马斯克辩论时提到,计算机是人类创造的,所以它不能比人类更聪明。这有一些道理。背后的理念多少有些“唯心”。人能够创造出一种和人一样聪明的东西吗?人创造了图灵机,那谁创造了人呢?上帝?

如果人类的智能不是上帝赐予的,那它又是怎么来的呢?如果智能是进化而来的,那么图灵机该如何进化呢?计算机的历史开端于1946年,相比于生物界太短太短了。给它1亿年,它会发展成什么样子?只是不知道图灵机怎么遗传,又怎么变异。

马云在和马斯克辩论时还举了一个汽车的例子,他说今天没有人会认为自己会比汽车跑得快。这个观点是可以抬抬杠的。如果让我选择终点的话,汽车肯定跑不过我;如果让系统随机选择终点的话,汽车很可能跑不过我。因为在地球上,大部分地点汽车根本开不到。

现在的人工智能是人类发明的一个工具。像所有的工具一样,它只是在特定领域优于人类。我们要运用好这个工具,需要做的是选择应用领域、优化工具、和改造环境。就像汽车在平坦的路面上行驶的速度优于人类,人类在提高汽车性能的同时,还修建了大量的公路,以至于让人以为汽车总是比人跑得快。



# 人工智能 # 机器学习 # AI
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者