带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

大数据技术丛书
点击查看第二章
点击查看第三章
Greenplum:从大数据战略到实现

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

]

冯 雷 姚延栋 高小明 杨 瑜 著

第1章 ABC:人工智能、大数据和云计算

人工智能(Artif?icial Intelligence,AI)、大数据(Big Data)和云计算(Cloud Computing)是当前最受关注的技术,业内常常取这三个技术英文名的首字母将其合称为ABC。最近10年,资本和媒体对这三种技术的热度按时间排序依次为:云计算、大数据和人工智能。事实上,若按照技术出现的时间排序,结果正好相反,人工智能出现最早,大数据其次,云计算则出现得最晚。由于每种技术都能应用于各个领域,因此人们可以从不同的角度分别解读每种技术。作为同时在研发和使用这三种技术的机构负责人,作者将尝试从大数据的角度解释ABC的关系,并且阐述这三种技术对于企业、机构和人类社会的重要性。

1.1 再谈云计算

我们在《Cloud Foundry:从数字化战略到实现》一书中曾详细讨论过云计算的定义、机理和技术驱动的新商业模式,这里不再重复。作为P层云技术的领先企业和研发团队,我们也在该书中分享了关于P层云存在的必要性和由其带来的云计算的新高潮的观点。这里将着重讨论自《Cloud Foundry:从数字化战略到实现》出版至今P层云的新发展以及对于大数据系统的影响。

1.1.1 云计算由南向转为北向

因为地图中一般把上面标记为北,所以在战略决策讨论中,一般把从下往上看的视角称为北向,从上往下看的视角称为南向。在软件栈中,P层云在I层云的上面,所以由P层云向I层云看齐叫作南向,由I层云向P层云看齐叫作北向。在一个正确的时间点选择一个正确的视角是战略成功的关键。
在Cloud Foundry产品出现和Pivotal公司成立之前,整个云计算行业是南向的。云计算行业的研发集聚在I层云,包括虚拟机、虚拟机动态迁移、网络虚拟化、软件定义的存储乃至整个软件定义的数据中心。分析师虽然提出了P层云,但是大部分云厂商把P层云看作I层云的一个工具集或者服务抽象层,没有一个云厂商真正发布过一款独立的P层云产品能够兼容其他云厂商的I层云服务。
Cloud Foundry第一次作为一个独立的PaaS云产品由VMWare提出,但是早期也只朝南向vSphere产品看齐。一直到Pivotal公司独立于VMWare公司运作以后,行业才看到了Cloud Foundry成为一个独立的PaaS云产品的决心,之后又看到了Cloud Foundry在AWS、Azure和谷歌云等各大云厂商上的兼容。即便如此,分析师在和作者交流的过程中还是会问:“前面的I层云巨头都有类似的一个P层云的功能集,Pivotal公司作为一个云计算的新玩家如何在PaaS云市场胜出?”在作者看来,虽然同为PaaS云产品,但Cloud Foundry的视角却是和其他云厂商的P层云产品完全相反。这就像在PC兴起的年代,虽然每个大型机厂商都有自己的操作系统,但是微软作为一个新公司发明的DOS和Windows操作系统却因为视角的转变最终获得胜出的机会。
从南向转变到北向的云计算行业趋势在2018年变得明朗起来。Pivotal公司的Cloud Foundry产品在500强企业数字化转型中不断得到认可。Pivotal公司也在2018年4月成功登录纽交所,被分析师称为“PaaS第一股”。更为明显的迹象是各个云厂商研发明显由I层云向P层云迁移。P层云的新技术Kubernetes和背后的CNCF(Cloud Native Computing Foundation)基金会的热度空前高涨。前不久,作者应Linux基金会(也是CNCF和Cloud Foundry Foundation的母基金会)邀请参加开放云服务产业专题讨论,探讨如何引导产业将I层云做得更加开放和标准,以迎接P层云的兴起。Pivotal公司的Cloud Foundry和Greenplum系统作为P层云上软件的典范来验证I层云的开放和标准化程度。在Cloud Foundry和Greenplum出现的早期,主要由Pivotal公司和其社群来完成这两个P层云产品在各个I层云上的适配。Linux基金会号召所有云厂商开放和支持I层云的标准,使得P层云产品的适配更加容易和无障碍。这也充分说明了云计算从P层云向I层云兼容的南向视角开始转变为由I层云向P层云适配的北向视角。

1.1.2 P层云的精细化发展

Cloud Foundry和Pivotal公司的成功以及IBM大手笔收购Redhat的举措,使得P层云的热度空前高涨。最近5年,Docker、Kubernetes和Cloud Foundry技术生态圈不断扩充北向视角的P层云,技术不断细化,目前已经形成了如下涵盖容器服务、应用服务和函数服务的架构:

  • 在容器技术层面,代表性技术主要有Cloud Foundry为主导的Garden容器技术和Docker
    容器技术。在容器编排技术方面,除了Cloud Foundry,以谷歌为代表的Kubernetes(缩写为K8s)技术逐渐盛行。在Pivotal公司发行的Cloud Foundry 2.0中也融入了Kubernetes和Docker容器,并且联合谷歌公司和兄弟公司VMWare发布了Pivotal容器服务(Pivotal Container Service,PKS)。
  • 在应用服务技术层面,Pivotal Cloud Foundry 2.0把原来的1.0版的PaaS应用服务发布成为Pivotal Application Service(缩写为PAS),继续为开发者提供透明的应用全生命周期管理。
  • 在函数服务方面,亚马逊最近推出的Lambda服务最终成就了函数即服务(Function as a Servivce,FaaS)。在FaaS基础上,AWS等云计算服务以比服务器更细粒度的服务和对应的计费被业界称为无服务器计算(Serverless Computing)。随后,谷歌在Knative的基础上推出了谷歌的无服务器计算。Pivotal公司在Knative的基础上推
    出了Pivotal函数服务(Pivotal Function Service,PFS),PFS也是Pivotal Cloud Foundry 2.0的组成部分。

综上所述,P层云目前的技术构成可以用图1-1表示。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

这里之所以要剖析P层云的层次,是为了帮助读者理解大数据系统在云中部署的实际情况和最新的趋势。

1.1.3 大数据系统在云中部署不断朝南上移

大数据的技术发展动力和商业赋能将在后面的章节展开讨论,本节将讨论云计算技术的发展对Greenplum和Hadoop这样的大数据系统的部署的影响。在图1-1中,大数据系统可以运行在云计算数据中心的裸机硬件、I层云或者P层云的容器服务上。
1)将大数据系统直接运行在硬件上面。因为大数据软件本身的机制,一个好的大数据系统能满足云计算定义:计算资源可以随业务增长的需求而弹性增长。具体细节将在下一节中阐述。国内的公有云厂商为*和企业提供专有云服务,为其专门部署属于他们自己的硬件环境。
2)将大数据系统运行在公有云或者私有云的IaaS上面。不少公有云上的Hadoop服务就属于这类情况。
3)将大数据系统运行在PaaS云的容器服务上面。截至本书完稿时,Pivotal和阿里云等主流云计算厂商都认为将Greenplum运行在容器层可以有效减轻大数据系统的运维工作。因此,不少公有云服务商喜欢把大数据系统划为P层云服务。
现在,主流云计算厂商都支持以上三种形式的大数据系统的部署。当企业将大数据系统部署不断从硬件和I层云向北迁移至P层云的时候,云计算系统管理和调度的资源粒度更细,大数据系统部署的成本优势和敏捷程度也不断提升。另外,因为P层云的容器的标准化,使得大数据系统更容易实现跨云部署。这种北向迁移的变化表面看没有什么特别之处,事实上这标志着大数据系统开始走向平民化。在后面的章节会谈到,在算力和存储资源提升的基础上,大数据系统模型的准确程度也有所提升。在云计算出现之前,小企业投资和管理上百台服务器组成的大数据系统是不敢想象的。公有云按资源使用量收费的模式,使得小企业运行大数据系统成为可能。例如,不少企业在一个季度结束的时候,在公有云上申请几百台服务器和内置的大数据服务,将这些计算资源开启数周来计算自己的企业数据,以获得对自己企业的商业洞察。P层云带来的更加精细的计费方式和更加标准的服务方式,使得企业可以在整个互联网上快速获得大数据系统运营所需要的资源。云计算从早期I层云的跑马圈地转变到P层云的应用和分析结果导向的精耕细作,这种精益化运作意味着这项技术走向成熟。

1.2 大数据

云计算是个概念清晰的新技术,相比之下,大数据则是在量变到质变的过程中突然火爆起来的。大数据可以看作是一系列技术和商业实践的集合,因此业界对于大数据的定义可谓丰富。如同在《Cloud Foundry:从数字化战略到实现》一书中解读云计算那样,作者仍将通过剖析技术背后产业变迁的驱动力的方式来解读大数据。
知名咨询公司Gartner指出,数字宇宙在不断膨胀。谷歌首席经济学家范里安也指出:“从人类文明诞生到2003年,一共创造了5ET的数据,而现在几乎每两天就能创造这么多数据。”早在2012年,作者和易安信(EMC)联邦的大数据产品*讨论PC时代如何向云计算时代跨越时,就谈及大数据产业发展趋势以及我们应该建立怎样的技术。

1.2.1 从CRUD到CRAP

在PC时代,计算机主要用于流程的自动化,因为在流程的各个环节都会产生大量事务(Transaction),计算机的数据系统主要用于对这些事务记录进行操作。假设我们要为一所学校创建一个学生管理系统。当一个学生被录取,系统就需要记录这样一个事务,为此需要创建(Create)一条学生记录,记录学生的一些信息,例如身份证号、性别、年龄、籍贯和录取分数等。当该名学生到学校报到的时候,我们可能需要更新(Update)相关的记录(比如,学籍管理字段用于记录学生报到时间,此时就需要把这条字段更新到最新的报到日期)。如果报到后有人获得授权查询该学生的录取分数,则可以从数据库系统中获取(Retrieve)该学生的记录。因为系统的存储容量有限,所以当系统饱和的时候,就会删除(Delete)一些过去的记录。简言之,记录的上述操作可归结为创建(Create)、获取(Retrieve)、更新(Update)和删除(Delete)的组合,取英文首字母的缩写叫作CRUD。关系数据库管理系统(RDBMS)的关键就是保证事务操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),取四个英文单词的首字母叫作ACID属性(我们会在后面详细介绍ACID属性)。目前,读者只要记住ACID是保证记录的CRUD操作不出现任何错误的重要性质即可。这个工作听上去容易,但考虑到多个用户产生的事务同时操作一条记录,以及像银行这样要确保任何一笔事务都实现零差错(不然用户账户余额可能出现差错)的情况,事情就不那么简单了。Oracle数据库、IBM的DB2数据库和微软的SQL Server数据库就是靠卓越的ACID能力成为PC时代伟大的产品。
随着数据记录的数量与日俱增,一些企业开始对历史记录进行数据挖掘,以获取有价值的信息。比如,美国的学校非常关心自己的生源和学生就业之间的关系。如果说GRE分数越高的学生就业越好,那么是否应该提高录取的GRE分数?反之,是否可以在录取条件中降低GRE的录取分数?这些带着预设问题的报表操作就叫作商业智能(Business Intelligence,BI),它其实和人工智能开始接近。在BI上尝到甜头的企业,在清理事务数据系统的记录的时候会把它们导入到另外一个叫作数据仓库(Data Warehousing)的数据管理系统,以备后续BI操作之用。此外,如果在事务数据系统中运行BI操作,会导致事务数据系统性能急剧下降,进而影响正常业务应用。举个例子,一个学生入学的时候,教务处希望更新该学生学籍,而前面一个BI操作正在生成所有毕业生的GRE成绩和就业单位起薪的报表,那么更新学籍的操作就会等待很长时间才能执行。所以,需要建立一个专门针对BI的数据仓库系统以便让事务系统的运行不受干扰。当事务系统接近存储极限的时候,可以把部分老数据导入到数据仓库,以免丢失有价值的历史数据。由此,数据仓库系统出现了两个很有意思的操作:历史数据追加(Append)操作和报表处理(Process)操作。当然,数据仓库系统依然需要创建(Create)和获取(Retrieve)操作。但是,因为数据仓库中的数据记录都是有价值的,所以数据仓库中的删除(Delete)操作会减少,即使执行删除,记录也会被备份到更加低速、廉价的存储介质上而不是真正被删除。此外,更新(Update)操作在数据仓库里面也被减少,因为历史记录是有价值的,所以当一条记录被更新时候,系统只是追加了一条新的记录,而不是将原记录替换为新记录。例如,用户每次更新密码的时候,系统会在数据仓库系统里面追加老密码的记录,以备后续检查(预防用户重设密码或者在用户忘记新密码的时候作为额外途径进行认证)。因为历史记录的价值在BI系统中被逐步发现,所以数据系统的创建(Create)、获取(Retrieve)、更新(Update)和删除(Delete)为主的CRUD操作慢慢转为创建(Create)、获取(Retrieve)、追加(Append)和处理(Process)为主的CRAP操作(CRAP是四个操作的英文首字母)。伴随着数据仓库技术的发展带来数据量的上升和数据处理速度提升的要求,工业界对于数据处理技术的要求也不断提升,于是大规模并行计算(Massively Parallel Processing,MPP)技术应运而生。

1.2.2 MPP(大规模并行计算)

原来专注于事务的数据库管理系统主要涉及针对单条记录的CRUD操作。因为数据仓库的出现,BI(甚至早期的AI)算法开始整表整表地扫描所有数据。为了提高数据的处理速度,在PC时代人们不再挑战单个大型机的性能极限,取而代之的是利用一个PC集群来提高计算性能。人类面临复杂问题的时候,分而治之是常用策略,MPP是典型的分而治之策略的产物。为了帮助读者理解分而治之的策略,我们来解析一个快速排序算法的设计,无论读者是否有计算机专业背景,理解这种方法背后的设计原则都是有益的。
快速排序算法问题陈述:假设给定任意一组无序的和不定数量的数,例如{0,50,24,9,23,7,35,17},我们要让计算机找到一个步骤(算法)将这堆数从小到大依次排列。
快速排序算法描述:采用分而治之策略的快速排序算法就是在中间位置挑选一个数(即枢数,英文为Pivot),比枢数小的数移到其左边,比枢数大的数则移到其右边。然后,依次对左边的一组数和右边的一组数分别再进行快速排序。如果我们挑选23作为第一趟排序的枢数,那么第一趟排序后的结果为:

{0,9,7,17},23,{54,24,35}

读者可以自己尝试对左右两组数继续做第二趟排序。注意,这时,本来对一堆数排序变成了对两堆数分别排序,第二趟排序后就有四堆数需要排序,这就是一个不断分而治之的过程。
同样地,并行计算也不是新理论,只是在BI业务场景下它有独特的适用之处。随着数据量越来越大,BI业务的结果返回速度越来越慢。作者从几个世界级公司的大数据团队那里了解到,得出一个市场活动的报表常常需要几天乃至数周。可见,提高处理(Process)的速度已成为关键。MPP的分而治之策略就是把数据均匀分布到一群PC上,然后让每台机器同时工作进行处理。举个简单的例子,我们要找出双十一活动中消费金额最高的顾客给予奖励。假设我们把双十一的消费记录导入数据仓库并均匀分布在数据仓库的10台PC服务器上。只要同时对这10台服务器上的数据进行扫描,每台服务器分别返回消费金额最高的顾客记录,然后对比这10台服务器各自返回的消费金额最高的顾客记录,最终找到获奖的顾客。这种方式的扫描速度接近单台服务器速度的10倍。如果企业还是觉得这个速度不够快,那么可以把数据仓库扩大到100台等同的PC服务器,速度可以再快10倍。当然,实际情况没有这么简单,因为在这个例子中,10台服务器只要交换一次数据就可以解决问题。喜欢挑战的读者可以考虑一下如何计算消费记录的中数,就会发现10台服务器之间交换的数据量要大很多。当然,现在Greenplum中有大量的技术可以用于处理这些复杂场景下的系统性能。热爱技术的读者可以在后续章节领略到Greenplum中大量体现匠人精神的性能设计方式。一个技术产品是一系列设计艺术的集合,它需要人才、时间和组织文化的沉淀。
随着大数据的爆发,产业趋势拉动数据仓库技术朝大数据平台的方向发展。产业需要数据仓库产品拥抱开源、云计算和人工智能等新趋势。Greenplum和Teradata等伙伴们一直在演进,Greenplum因为Pivotal的第三平台战略的要求,演进速度非常快,这些将在后续章节阐述。值得一提的是,市场迫切需要一个数据仓库以外的MPP数据引擎,以处理数据仓库结构化数据以外的半结构化数据。典型的场景是Google的搜索,它需要处理大量半结构化的Web文本。为此,Google提出了MapReduce并行计算和Google文件系统(Google File System,GFS)。Google虽然发表了论文,但是并没有提供软件和源代码。于是,社区里热心的粉丝们启动了一个Hadoop项目,实现了类似的Hadoop MapReduce和Hadoop文件系统(Hadoop File System,HDFS)。Greenplum为了支持Hadoop社区,把Greenplum的并行SQL执行引擎和HDFS结合,创建了Hadoop生态内的HAWQ项目。HAWQ的研发工作主要在Pivotal中国研发中心内部完成,并且在2018年成为Apache的*开源项目。
除了结构化数据和半结构化数据的MPP,Pivotal中国研发中心还对其他特定场景数据的并行计算进行了探索。Pivotal上海研发团队曾发起Open-MPI项目,探索基于开放高速消息传递接口的并行化以计算社交网络图谱数据。这样的探索最终不一定都会取得商业上的成功,但是对于一个意图成为MPP计算行业意见领袖的机构来说是必须的。基于这种探索精神,Greenplum和HAWQ产品创造了行业中很多从无到有的创新点。

1.2.3 大数据系统

在Greenplum和Hadoop出现之前,数据仓库和BI有两大局限性:一是系统的成本太高;二是BI需要结合人为判断才能产生商业意义。
首先来说成本的问题。假设一个四年制高校每年有8万名在校生(即每年有2万名新生),那么事务系统只要存储8万个学生相关的记录。但是,为了保留过去20年间所有学生的记录,数据仓库系统需要保留过去16年毕业生的32万个记录。在存储价格昂贵的PC时代(读者可以回忆一下,当时容量为32MB的可以下载8首MP3的U盘要卖200多元),成本数倍于业务系统但又不是刚需的数据仓库系统对于大部分企业来说是高阶玩家的装备。更为糟糕的是,不少早期的数据产品建立在封闭的硬件和软件之上。硬件方面,数据仓库都有专用存储系统,这些存储的价格是通用磁盘或者快闪存储价格的数倍到十余倍。同时,软件系统也是封闭的,围绕软件系统开发更多BI工具或者高阶的AI算法非常困难。加上当时BI应用普遍被认为非刚需应用,使得大部分企业很难看到投入产出比(ROI),导致进一步禁锢了大数据的价值。
其次来看BI需要人为判断的问题。BI生成了很多报表,但是这些报表要靠公司的决策者来解读。依靠直觉的人为判断会浪费决策者大量时间。尽管决策者擅长分析解读数据并工作勤奋,但BI的真正问题在于只有在决策者提出一个问题后才会生成报表。例如,一名校董提出希望了解学生的GRE成绩和就业薪水的关系,数据仓库工程部门才会生成相应的报表。但是,决策者们更希望计算机的数据系统能够覆盖他们的盲点。如果一个计算机系统能够自动发现GRE分数高和就业起薪高的人群在二维空间分布图上聚集度高的规律并能自动提醒决策者,那么这样的数据仓库系统才能真正帮助到决策者(实际上,这里隐含了一个叫作聚类的非监督学习的人工智能算法)。所以,产业界开始由BI向AI迁移,但是AI比起BI需要更多的算力、更多的廉价数据存储和更开放的软件系统。
开源Hadoop和Greenplum解决了这两个进入大数据时代的绊脚石。首先,Hadoop和Greenplum是开放源代码的,这使得专用的数据仓库可以接受更多高阶算法的改进。例如,技术人员在Greenplum上面建立了一套叫作MADLib的人工智能和机器学习的库函数,企业可以在自己的数据上面应用很多高阶的机器学习算法,其中包括我们上面提到的非监督学习的算法,这意味着大数据系统可以找出更多靠人类直觉无法发现的智能和关联关系。MADLib最早是由Greenplum和加州伯克利大学联合开发的,Pivotal成立以后,将MADLib
完全开源给Apache,使其于2017年成为Apache的*开源项目。同样,Hadoop也建立了一套机器学习的库函数Spark ML,它的逻辑和MADLib几乎是平行的。
其次,Hadoop和Greenplum都建立在通用的服务器存储上,也就是说,大数据系统的存储和读者家用电脑的存储是一样的。那么,Hadoop和Greenplum是如何利用普通硬盘达到专用存储的可靠性和性能的?无论是普通硬盘还是专用存储设备,其本质都是通过相关的软件和硬件冗余来实现存储的性能和可靠性的。Hadoop和Greenplum只是把这些软件的逻辑上移到服务器层次(Tier)。因为大数据系统需要对数据整遍整遍地读取,硬盘很容易损坏,所以Hadoop和Greenplum采用冗余方式解决这个问题,即把一个数据块同时拷贝在2~3台服务器上(有些没有安全感的公司甚至拷贝到5~7台服务器上)。如图1-2所示,文件块1、2、3同时在三台服务器上存有两个拷贝。服务器A上有文件块1和3,服务器B上有文件块2和3,服务器C上有文件块1和2。这样做的好处是,任何一台服务器损坏时都不必担心,因为它上面的文件块必然在其他两台服务器上有备份。假设服务器C损坏,其硬盘上的文件块1和2丢失,此时插入一台新的服务器D,就可以从服务器A上恢复文件块1,从服务器B上恢复文件块2,最终服务器D重构了文件块1和文件块2,从而完美取代了原来的服务器C。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

数据冗余的另一个好处就是可以实现数据本地性(Data Locality)。并行计算的一个关键瓶颈是数据移动,而通过数据冗余可以实现在本地移动数据的效果。仍以图1-2为例,如果一个计算任务需要扫描文件块1,而服务器A正忙于其他任务。这时候因为服务器C上有文件块1的冗余,就可以把这个计算任务分派到服务器C。假设没有服务器C上的冗余备份,那么只能从服务器A上拷贝数据块1,在这种情况下,有大量时间不是用于计算文件块1,而是等待数据块1从服务器A拷贝C,造成大量的时间浪费。
因为Hadoop系统和Greenplum系统的开源和开放以及使用通用硬件构建大数据系统,从而极大降低了大数据系统建设和使用的门槛。加之很多学术机构和*公司已经用它们的专用系统通过大数据在机器学习和人工智能上取得成功,强烈的示范效应使大数据风靡全球。大部分中大型企业都开始考虑通过大数据系统增强自己的竞争力。

1.2.4 当大数据遇到云计算

前面谈到,大数据系统云上北向迁移的趋势很难阻挡。云计算除了带来更低的运营成本,也带来了更低的存储价格和可以伸缩的计算资源。这一趋势的推动力来自第三代平台,而第三代平台是CPU、存储和网络的产能不断升级过程中由量变到质变的产物。但是,大数据系统上云也有两个核心的技术问题要解决:1)提供适应于云计算的运维环境;2)按照云上存储环境进行适配。
首先,我们来看云计算对于大数据运维的影响。一个软件系统运维的简便性与否会极大影响软件的推广。公有云的一个优势就是把系统运维的复杂性留给了云厂商,而给用户提供了一个不需要专业人员即可运维的环境。以淘宝网为例,淘宝店主不需要太多培训就可以在淘宝网上开设并运营自己的网店。相比之下,传统线下的企业大数据系统则需要专业团队来维护,而Hadoop系统的运维尤其复杂。对于500强企业来说,可以招聘一个运维团队来运维这个系统;但对于中小企业来说,运维复杂性带来的成本增加远大于软件许可费下降带来的成本节省。Gartner在2017年发布的技术成熟度曲线指出,Hadoop系统运维的复杂性将使得Hadoop系统在到达“生产成熟期”之前直接过时。当大数据遇到云计算以后,获得了一个新的契机,那就是可以通过云上可运维性的改善让中小企业像运维淘宝网店一样运维自己的大数据系统。类似于Snowflake的一批数据产品开始朝云上可维护性这个方向发力,开源Greenplum在阿里云等公有云平台上的发布也降低了产品部署和运维的复杂性。
其次,我们再看云计算存储对于大数据的影响。云上的存储分为块(Block)存储和对象(Object)存储。前者通常依赖Dell EMC这样的存储系统保障,它的优点是快速和可靠,缺点是成本高昂。对象存储(例如亚马逊的S3)的特点是价格低廉,但计算访问速度相对较慢。在《Cloud Foundry:从数字化战略到实现》中我们说过,云计算通过软件和硬件的分离实现了软件的永生能力,而传统的大数据系统可以直接访问本地的存储。因此,云上的共享块存储环境与传统大数据系统的本地存储环境存在一定矛盾。大数据系统上云需要解决计算主体和存储主体分离的问题。另外,云上的对象存储因为廉价、可靠等优势存放了各种不同的数据源。除了半结构化的文本数据,也有大量的图片、音频和视频数据。因此,大数据系统上云也要支持对更多数据源的处理。在云上,Greenplum提供了新技术来访问S3文件系统内的半结构化数据,在后面的章节中将讨论这一点。对于云上的图片和视频等数据,因为存储和计算系统需要对相应的机器学习算法进行特殊调优,所以催生了Google的TensorFlow等产品。

1.3 人工智能

人工智能是计算机科学的一个分支,它的主要研究目标是用计算机程序来表示人类智能。这个词最早是在1956年的达特茅斯会议上正式提出的。在达特茅斯会议正式提出“人工智能”这个概念之前,图灵和早期的计算机科学家一般用“机器智能”这个词。需要强调的是,人工智能是建立在计算机之上。不管人工智能应用多么美妙和复杂,在图灵眼里都是图灵机上的一个程序(或者叫作可计算数,具体参考1.5节)。人工智能课程的主要目的是学习建立在模型之上的算法。这些算法和其他计算机领域的算法并无太大区别,只是这类算法专注在如图1-3所示的智能主体(Intelligent Agent)里面的模型。在人工智能领域,计算机科学家们试图建立模型使得智能主体能够观察周围环境并做出行动,就像人类的行为那样。
最近5年,由于智能主体模型在无人驾驶、聊天机器人和计算机视觉识别等应用的准确率的提升,人工智能的应用热度也随之提升。AlphaGo等棋类对弈让人工智能被公众津津乐道,因为计算资源和计算能力的提升,在限定时间内,对弈模型比人类棋手更具优势,这也引发了很多关于人工智能的讨论。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

1.3.1 模型化方法

要理解AI和智能主体,我们要先理解模型化的研究方式。模型之所以让人觉得神奇,是因为很多模型本身是基于经验的,很多时候我们并没有深究物理和计算机等领域的很多模型背后的逻辑。以我们熟知的*落体运动为例,我们可以为球体在斜塔*下落建立一个数学模型。在亚里士多德的年代,这个模型被认为是和物体的质量有关系的,所以构建的模型可能如下:

h = c + α×m + β×t + γ×t2

其中,h是下落高度,m是物体质量,c,α,β,γ是未定参数,t是时间。
其实,模型的构造是门艺术,依赖于构造者。但是,亚里士多德并没有验证他的模型。按照现在的科学方法,我们至少需要四组以上(h,t)的测验数据来校准四个未定参数。如果数据足够准确,我们会发现c = 0,α = 0,β = 0,γ≈5。读者可能会问,为何不构造一个和t3相关的系数?答案还是因为模型是门艺术,跟构造者的直觉有关。例如,伽利略认为*落体的下降时间和质量无关,所以他会直接从模型里去除α×m这一项。读到这里,读者可能已经感觉到,如果我们测试得到的(h,t)的数据足够多,不管哪个模型的参数调校出来的公式都接近h = 5t2。假设读者没有安全感,在模型里面加入了其他变量,只要测试足够多的数据,仍将发现这些变量的系数都接近于0。通过这个例子,读者也可以直观感受到“大”数据量有助于提高模型的准确度。
到此为止,可能很多人满足了h = 5t2的经验公式。但是,仍有好奇的读者会继续追问为什么结果是这样?背后的逻辑是什么?在后面关于人与AI的讨论中,作者会区分人的两类知识:经验和逻辑。目前为止,这只是一个经验知识。但牛顿对这个问题深究了下去,最终奠定了牛顿三定律和万有引力在内的古典力学体系。学过中学物理的读者都知道,*落体背后的逻辑是因为距离(h)、加速度(a)和时间(t)之间存在以下动力学关系:

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

另外,根据万有引力定律带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算,加速度

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

在牛顿力学体系内,我们解释了经验公式带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算,并且可以精确计算出加速度(a)。站在牛顿力学的高度,我们可以通过逻辑推断出前面的*落体模型。但是,我们很快又发现万有引力F = GMm/r2仍旧是个经验模型,目前并没有一个更高层次的模型可以通过逻辑推断出万有引力模型。就这样,在一层层逻辑化自己的经验知识的过程中,聪明的读者会把自己的知识拓展至已知知识的边界。在已知知识边界外的创新,可以用来逻辑化很多我们现有的经验知识。当然,还存在另外一种情况,边界外的创新也可能会指出经验知识的局限性,例如麦克斯韦电磁学指出了光速不依赖参考系,从而帮助我们发现已知的牛顿力学的不足。
理解了模型化的科学方法以后,读者就很容易理解AI就是围绕智能主体建立模型,在这些形形色色的模型背后,有着不同的派别和研究方法。在推理(Reasoning)背后,建立了一种叫作目标树(Goal Tree)的模型;在机器学习背后,则模拟人的大脑的神经元放电机制建立了一种叫作神经网络(Neural Networks)的模型。考虑到最新一轮AI的热度很大程度上是由神经网络和深度学习带动的,所以我们在这里简单介绍一下神经网络模型的设计灵感,读者可以从中体会科学模型背后的艺术。
神经网络用于模拟人的神经元的决策机制,所以我们先来看一下人的神经元的结构。人的单个神经元如图1-4所示,树突(Dendrite)
会接受信号输入,然后在轴突(Axon)产生一个脉冲输出到神经末梢(Axon Terminal),从而输入给下一个神经元。我们可以认为人脑是神经元的集合,虽然无数神经元的协同工作涉及无数细节,但是人工神经网络模型只要抓住一些基本的细节就够了。
在图1-5中,我们对这个神经元进行简单的模型模拟,创建一个接受两个特性(X1,X2)的输入后产出一个输出的人工智能神经元。为帮助读者更直观地理解这个建模过程,我们不妨把X1设为西红柿的颜色:红色为1,青色为0;把X2设为西红柿的硬度:软的为1,硬的为0。红色并且已经软的西红柿是成熟的,可以食用(可否食用作为输出)。我们把可以食用记为1,不能食用记为0。我们的目标是设计一个数学模型来模拟和训练这个神经元以实现识别成熟可食用的西红柿的目标。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

我们认为这个神经元对颜色输入敏感,因此给X1分配一个较大的权重(Weight1),不妨记为50;这个神经元对于硬度的敏感性稍弱,因此X2的权重(Weight2)记为40;这个神经元只有在输入信号高于阈值(Threshold)60的时候才开始放电并输出脉冲(1),否则保持安静(0)。为此,我们选择S函数(也称为Sigmond函数)作为一个神经元工作函数:

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

读者可以为两个特性分别取不同的输入值,当两个输入变量都为1的时候,输出大体为1。两个变量在其他输入情况下,输出接近0。我们根据已知的输入和输出训练了这个模型的参数:Weight1、Weight2和Threshold。这个训练好的神经元基本能达到识别可食用西红柿的目的。读者可能会好奇为何要给输入乘上权重(Weight1和Weight2)?为何要选择一个阈值(Threshold)?这是为了更好地模拟生物神经元的工作原理。读者可能还会好奇为何选择Sigmond函数作为神经元函数?简单地说,这是为了方便计算调优参数并减少计算工作量。具体来说,1974年,Paul Werbos在他的哈佛大学博士毕业论文中选择了这个神经元函数,在神经网络模型中首先使用了反向传播算法。在此之前,人工神经网络因为计算量巨大,在闵斯基以后的很长一段时间内停滞不前。神经网络在20世纪80年代出现了一个小热潮,但是到20世纪90年代热度又下降了很多,甚至麻省理工学院的人工智能课程中差点删除神经网络部分的内容。2012年,多伦多大学的Geoffrey Hinton教授使用了有6000万个参数的神经网络在图像识别中取得巨大成功,这当然离不开当今时代的算力的提升(在1.4节中会继续讨论云计算的出现使得原来无法想象的神经网络训练变成可能)。Hinton也因此被认为是深度学习的奠基人,并成为谷歌大脑研发的关键人物(也曾任教于卡内基·梅隆大学)。至于如何把图像处理后输入到拥有数以万计神经元的网络进行识别,读者可以参考Hinton的工作。
因为在图像识别、语音识别、文本翻译等领域的突破,出现了最近一轮建立在神经网络上的机器学习和深度学习的热潮,对AI我们应该持有什么样的预期?为此,我们有必要回顾一下AI的历史。历史总是会重复自己,回顾AI历史能够帮助商业决策者做出正确的预期和决策。

1.3.2 AI的发展史

自远古时代,人类一直希望能够创造一种类似于人类智能的机器,将人类从乏味的重复劳动中解放出来。直到1936年,计算机科学的鼻祖图灵发表了名为《论可计算数》的论文,机器模拟人类智能的哲学话题才转变成一个可以像数学学科那样被论证的课题。在论文中,图灵构造了假想的机器来模仿人类。电影《模仿游戏》讲述的就是图灵如何构造假想的机器(计算机)来模仿人类的故事。在那个时代,人工智能的概念还没有提出,人们更多地使用“机器智能”这个词来讨论计算机带来的智能。简单地说,图灵的论文证明了机器可以模仿人类智能,所以今天的无人驾驶、聊天机器人、棋类对弈和计算机视觉识别等应用都是图灵预见的,虽然他那时并没有足够的硬件条件测试这些应用。读者如果想深入探讨计算机是否可以模仿所有人类的活动,可以参考1.5.1节中关于AI和人的讨论。
在图灵提出图灵机后,多个机构便开始设计真正意义上的遵循通用图灵机模型架构的存储程序计算机(Stored-program Computer)。虽然第一台存储程序计算机(后文称作现代计算机)是谁先发明的至今仍有争议,但是影响较大的是冯·诺依曼提出的EDVAC(Electronic Discrete Variable Automatic Computer)。冯·诺依曼在后来也确认现代计算机的核心设计思想是受到通用图灵机的启发。现代计算机发明以后,各种应用如雨后春笋一样蓬勃发展,但是真正把人工智能作为一个应用方向提出来还是在1956年的达特茅斯会议。
在20世纪40年代末现代计算机被发明后,从20世纪50年代开始,各个领域都开始关于“思考机器”(Thinking Machines)的讨论。各个领域的用词和方法的不同带来了很多混淆。于是,达特茅斯学院(Dartmouth College)年轻的助理教授麦卡锡(John McCarthy)
决定召集一个会议澄清思考机器这个话题。召集这样的会议需要赞助,聪明的麦卡锡找到了他在IBM公司的朋友罗切斯特(Nathaniel Rochester)和在普林斯顿大学的朋友闵斯基(Marvin Minsky)以及大师香农一起在1955年写了一份项目倡议。在倡议中,他使用了人工智能(Artif?icial Intelligence)这个词,避免和已经有的“思考机器”一词混淆。这里值得一提的是闵斯基,麦卡锡和闵斯基后来在麻省理工学院领导了AI实验室,成就了麻省理工学院在人工智能领域首屈一指的地位。会议在1956年举行,这里必须提到另外两位短期的参会者,来自卡内基·梅隆大学的纽厄尔(Alan Newell)和司马贺(Hubert Simon)。他们虽然只呆了一个礼拜,但是他们的报告中公布的一款程序“逻辑理论家”(Logic Theorist)代表了人工智能的另外一条路线。因为纽厄尔和司马贺的奠基工作,卡内基·梅隆大学成为人工智能的另一个重镇。至于其他参会人员和他们之间的趣闻,读者可以参考《东方早报》在人工智能60周年的报道以及相关的著作。

1.3.3 对AI应用的正确预期

达特茅斯会议的意义在于确立了“人工智能”(AI)作为计算机科学的一个研究领域,自那以后,AI在机器视觉、自然语言处理、无人驾驶等领域取得了长足发展。但是,“人工智能”这个概念常常被过度消费。过去,美国的学者用这个概念来申请*研究经费,今天有不少公司用这个概念来从资本市场募资。但实际上,AI的进展并不像很多人预言的那样乐观。就棋类对弈而言,司马贺在20世纪50年代末就预言计算机能打败人类,但没有实现;20世纪60年代末,麦卡锡打赌说计算机将在10年内打败人类,结果他输了;国际象棋程序深蓝在“限定时间内”胜出人类直到20世纪90年代末才实现。围棋程序AlphaGo在“限定时间内”胜出人类则是在2017年实现的。闵斯基在20世纪80年代末预言,二十年内可以解决自然语言处理问题,时至今日,各种AI应用在自然语言处理方面尚有极大差距。如今的“无人驾驶”在商用中实际上更多起到“辅助驾驶”的作用,因为在实际的使用中仍出现过意外情况,从保证行车安全的角度,尚不能实现真正的“无人驾驶”。
人工智能最近一次的持续升温是被包括大数据和云计算在内的软硬件技术持续发展使得很多应用得以落地而驱动的(我们将在1.4节中讨论ABC的关系)。从历史经验来看,也许是由于大众媒体和科幻电影的影响,AI界有种过于乐观的倾向。但实际上,我们对于AI模型的精度应该抱有十分谨慎的态度,因为我们构建的神经网络在内的很多AI模型本质上还是经验模型,并不是一个严格的逻辑证明。这些模型的精度比起古典力学模型精度还差了很多。即使是古典力学模型,在微观量子世界也是失效的,所以对于这些模型的使用范围也要持谨慎态度。当然,我们也不能对建立在经验模型上的AI应用持过度怀疑的态度,因为我们的大部分知识来自经验,事实证明,这些知识也是实用的。所以,AI是一个在不断前进的领域。
人工智能另外一个层面的讨论是机器能否超越人类?这个问题是令我们对于人工智能感到不安的原因。从计算机发明的第一天,图灵和其他伟大的数学家们就已经对这个话题进行过深入的讨论。与大众传媒不同,数学家和计算机科学家们对这个问题的讨论是深层次的数学和逻辑层面的讨论。1.5节将着重讨论AI和人的关系,有决心探究这一问题的读者可以参考这一节。

1.4 ABC之间的关系

前面已经解释了ABC的概念,这里我们来讨论一下ABC之间的重要内在关系以及这些内在关系带来的可以赋能于商业的巨大技术产能。从技术角度上看,ABC之间有以下两层重要关系:
1)大量数据输入到大数据系统,从而改善大数据系统里建立的机器学习模型。
2)云计算提供的算力使得普通机构也可以在今天用大数据系统计算大量数据从而获得AI能力。
先看第一层关系。谷歌研究院的F. Pereira、P. Norvig和A. Halevy发表了一篇文章《数据的奇效》,解释了如何通过大量数据提高机器学习模型的准确率。早在谷歌之前,微软研究院的Michele Banko和Eric Brill在他们的论文《扩展到非常非常大文本来去除自然语言歧义》中,展示了使用海量数据后各个机器模型的准确率都有大幅度提高,如图1-6所示。这一结论为机器学习和人工智能的问题求解指出了一个新方向:用大量数据和大数据计算来提高人工智能。对比一下自然语言翻译在最近10年因为利用大数据和计算所带来的进展,读者就能感觉到这种力量。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

再看第二层关系。云计算带来的巨大好处就是提供商品化的计算资源,以前只有*机构和大型企业才能拥有的巨大计算资源,现在可以被一个创业公司所拥有。这个从量变到质变的过程使得我们可以重新审视一些计算机行业的难题。计算资源的丰富使得大数据技术能够以更低的门槛被使用。云计算平民化了大数据技术,使得大数据技术被企业广泛采用,企业也利用大数据养成了保管数据的习惯,把数据当作未被开采的资源。大数据的普及给人工智能的分支—机器学习带来了意想不到的惊喜。
综合前面讨论的ABC的内在含义,当前的机器学习、人工智能可以朝着以下两个方向前进:
1)设计新的机器学习模型,在前人的模型上有所创新,改进模型效果。
2)使用已有的机器学习模型,但是利用前人所没有的数据量和云计算带来的计算能力来改进模型效果。
谷歌公司的Norvig曾经说过“我们没有更好的算法,但是有更多的数据”。显然,Norvig鼓励按第二种方法进行创新,当然,这不意味着用第一种方法创新不重要。但需要指出的是,第一种方法的创新门槛要远高于第二种,除了世界*的机构,普通机构很难拥有相应的资金、人才及配套的管理和文化来支撑第一种创新方法。第二种方法对于传统的机构也是可以重复和实践的,按照已经有的方法论、成功案例和人才培训可以实现基于大数据和机器学习的高阶数字化转型。
前面讨论的ABC的关系可以总结成图1-7。云计算从量变到质变带来前所未有和平民化的计算资源。企业和互联网在数字化应用方面产生了大量的数据。这些数据和计算能力使得大数据技术普及到普通机构,而这些机构利用大数据来创建和改善现有的机器学习模型,带来更好的人工智能成效。
到目前为止的讨论严格限制在技术的演进上。下一章将在商业层面继续讨论图1-7中大数据、模型和应用之间的关系,着重分析商业决策者如何利用在大数据系统上的AI机会来改善自己的数字应用,以巩固竞争优势。
AI带来的社会影响可能超过前三次技术革命。随着科技和商业不断推动AI技术前进,AI和人之间的关系是技术领袖、商业领袖和政策制定者们不得不思考的问题。前面关于AI和人的关系的大部分讨论都没有系统化和逻辑化,因而不是一个学术讨论,1.5节则会在邱奇和图灵的学术讨论上回顾并延伸到AI和人的讨论。这部分讨论非常硬科学,可以作为选读内容。但是对于那些有兴趣深入思考AI技术和人类关系的读者或者希望跳出AI框架内应用创新而成为系统创新者的读者,啃啃这根硬骨头定有“会当凌绝顶,一览众山小”的感觉。

1.5 AI和人

我们在2016年编写和出版《Cloud Foundry:从数字化战略到实现》时,预测了P层云在降低数字化门槛后,数字世界将呈现爆发式的发展。当前,ABC的发展以及各行各业对ABC的拥抱印证了我们的预测,ABC中的人工智能应用在中国又一次火爆。无独有偶,美国电视剧《西部世界》第二季的第一集一经播出就引起热议。一时间,人和人工智能这个话题又重新被辩论。为此,在本书中,我们有必要对此进行深入探讨,希望为读者打开一个认识这个世界的新窗口。另外,作为一个*研究机构,这些考量也是必须的,因为我们要确保自己的研究工作能够创造一个更好的未来而非相反。

1.5.1 经验与逻辑

在讨论人和人工智能的关系及其差别之前,我们先看看人类知识的构成。作者并没有哲学专业背景,这里介绍的概念不一定能和哲学概念一一对应,具有哲学专业背景的读者可以建立一个对照转换。
作者认为,人的知识由经验和逻辑两个层面构成。第一类知识是逻辑知识,可以通过分析得出新知识。下面是典型的逻辑知识:
1)所有人都会死,苏格拉底是人,所以苏格拉底会死。
2)根据勾股定理,直角三角形的三边关系满足带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算(其中x和y是两条直角边,z是斜边)。如果三角形的两条直角边长度分别是3和4,那么根据勾股定理可以得到z的长度是5。
另一类知识就是经验知识。经验通常是没有经过逻辑推理或者无法通过逻辑推理而根据过去的经验建立起来的知识。下面是两个过去的经验知识:
1)“地球是宇宙的中心”在哥白尼之前一直是人类社会的基本经验知识。
2)“地球是平的”在哥伦布之前一直是大部分人的经验知识。
3)太阳从东边升起,到今天为止还是大部分人的经验知识。
要观察人的知识体系的建立过程,可以观察小孩子的学习过程。如果把一个算盘竖起来给小孩子玩,小孩子可能会把珠子往上拨,然后珠子会掉下去。但是孩子会重复,因为他们不知道珠子总是会往下掉。为什么大人不再重复这个动作?因为学过物理的大人从逻辑上会知道珠子会因重力的作用往下掉,没有学过物理的人根据过去的经验也会知道这样做珠子会往下掉,所以不会做无用功。苹果为何总是从树上掉下来?在牛顿发明万有引力定律之前,这对于所有人来说都是经验知识。在万有引力定律发明以后,对于知晓力学的人则是逻辑知识,对于不知晓力学的人依然是经验知识。
学过物理的读者先不要得意,因为经验和逻辑的关系不是绝对的,而是相对的。逻辑知识到一定层次不能再往下推理的时候,人又会依赖经验(有时候甚至是直觉或情感)。有时候,人懒得推理,也会停留在经验知识层面上。读者也不要笑话“懒得推理”这个行为,因为人类沉淀下来的经验知识实在太多,如果要试图逻辑化所有的经验知识,在人有限的生命里是很难完成的。这就是极端聪明的人在无法逻辑化他们想逻辑化的知识的时候,他们的幽默感会诉诸一些最基本的经验(以表示无奈)。后面在介绍机器(计算机或者人工智能)的时候,我们会看到很多不可计算数,这是有限的人脑和机器在无极限的知识体系面前表现出的一种无奈。
为了解释逻辑和经验的相对性,我们再来回顾一下万有引力定律的建立过程。万有引力定律和牛顿三定律主要是用来解释开普勒观察到的天体运动规律(图1-8所示是用古典力学解释的开普勒观察到的太阳系各大行星的天体运动)。万有引力定律和牛顿三定律本身是基于一系列假设的一个数学模型,有效拟合了开普勒观察到的天体运动。这种处理方法和神经网络模型一样,都是把标注过的数据集合输入模型,调整模型的参数以拟合这些数据集。牛顿三定律和万有引力定律的参数经过拟合以后,物体间的作用力变量(F)和距离变量(r)系数关系是-2(也就是平方成反比)。所有学习过物理的人对这个结果不会有太多质疑,但是哲学家们则需要经过逻辑化才能认可这个结果。所以他们会问,为何系数是-2,而不是-1.999999…9(中间间隔足够多的9)或者-2.00000…01(中间间隔足够多的0)?这样的系数一样能够拟合所有可以观察到的数据。当然,牛顿选择-2而不是那两个长数字主要是为了处理方便,或者他相信简单的总是好的(作者没有机会用混有吴语口音的美式英语和牛顿的皇家口音英语隔着时空对话,但“简单是好”是大部分做模型的人的一个情感选择而不是逻辑选择)。当然,牛顿没有心情和这些哲学家费一番口舌,他的回答有点类似于“你们拿去用,一定屡试不爽,有问题再回来找我。”事实上,哲学家们对于牛顿万有引力定律在内的古典力学体系的质疑是有一定道理的,因为后来古典力学在描述微观世界的时候不再成立(这时就需要量子力学了)。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

如果把古典力学运用到原子核和它的电子,我们无法解释为何电子不掉进原子核,这就意味着古典力学的模型无法对某些数据进行拟合。经过不断的探索,物理学家们建立了量子力学。和古典物理不同,量子力学的模型有很大一部分建立在概率基础上。例如,在量子力学中,人们无法预测电子在原子核外的固定位置,只能预测它出现在某个位置的概率。图1-9描述了氢原子的电子的波动方程。轨道的颜色深浅代表了电子出现的概率。
综合前面的讨论,万有引力实际上是根据人类在更高层次和更广范围的观察得到的经验总结。苹果下落对于没有学过物理的人而言是经验知识,而对于学习过物理的人而言,他们的知识虽然在逻辑上往上走了一层,但最终还是要依赖于一个经验数学模型(这个模型的参数不是通过逻辑推理出来的,而是根据过去数据匹配出来的一个经验值。现在人工智能领域的模型正是这种情况)。
作者具有理学和经济两个学科背景,所以对文科和理科的交叉、融合深有体会,因为当我们的认知达到一定边界的时候所做的模型和假设不得不诉诸于情感(或者直觉),就像牛顿为了简洁选择-2作为模型里面距离的系数,欧几里得的平行公理诉诸于世界是方方正正的情感(后面会详细讨论)。当然,文艺青年也不要总是陷入情感中,因为大部分的感性认知远没有到人类认知的边界,它们很容易逻辑化而上升到另外一个高度的感性认知。(这可能也是一些知名高校会要求理科生必须选修一定数量的文科课程才能毕业,文科生也必须要选修一定数量的理科课程才能毕业的原因。大家熟悉的太极拳和五禽戏也蕴含着这样的道理,前者是一套阴阳平衡逻辑,后者是一套朴素的希望像猛禽一样强健的情感表达。)实际上,作者想说的是,读者可以审视一下自己的知识系统,逻辑和内化它们是非常耗神的,所以大部分知识还处于非常朴素的经验层面。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

虽然文/理科学生受到的逻辑和经验的训练可能不太一样,但是AI和人比起来如何呢?从上一节对机器学习的讨论中看到,因为强大的计算能力,机器学习看上去要胜人一筹。例如,在判断贷款申请的风险系数时,AI能够把所有人的所有贷款历史读一遍来调校风险控制模型的参数,从而利用这些经验参数来判断当前一笔申请的风险。任何一个有丰富经验的贷款专员也只能根据自己过去看到过的坏账贷款的模糊图景来判断当前交易的风险。
如果说人算不过AI,那么人在逻辑推理方面是否比AI高出一等呢?我们需要在一个更为广阔的数学和计算机的知识体系框架下讨论这个问题。

1.5.2 公理化的逻辑系统

上一节谈到了人类的经验知识是分层次的。我们总结一下苹果落地的两个层次。第一个层次,因为我们看到苹果总是往下落地,没有往上飞过,所以我们认为苹果是落地的;第二个层次,我们建立牛顿古典力学模型,因为物体受力要朝受力方向加速前进,所以苹果脱离树枝以后,受到地心引力作用要朝地表方向前进。在这个层面,古典力学的很多模型的选择(例如,万有引力和距离平方成反比;再例如,不同参考系下,时间流逝是一样的)也是基于经验的。人类把知识一层层往上逻辑化到认知边界,依赖几个感性的假设便建立了一个认知体系。
很多伟大的科学家则从相反的角度来考虑:能否依赖几个基本的公理假设(感性选择)来建立整套认知体系?从欧几里得到希尔伯特,哲学、数学和物理学科的先贤们分别对几何知识和代数知识进行逻辑化。在这个过程中,人类开始构想,能否让机器从几个公理和规则出发,通过计算推演列出所有人类知识?这一构想直接导致了以图灵机为代表的机器智能的产生。图灵在他的经典论文《论可计算数》中构造了一个机器(后人称为图灵机)来模仿人类数学工作者。学术界普遍认为物理计算机的发明是受到图灵机的启发。冯·诺依曼等人在发明物理计算机后,给原本清贫的数学工作人员创造了高薪的编程岗位。我们在前面谈到,今天的AI技术建立在计算机之上。从理论上讲,AI学科只是图灵机系统的一个模型化算法子集。在这个子集里面讨论AI和人的关系必然是不完整的,所以在讨论AI和人的关系时,我们需要再往上追溯到公理化数学的过程。正是在这个过程中,邱奇、图灵和哥德尔等人对于机器和人的探讨远比今天大众对这个话题的讨论深入。
第一个建立公理化的逻辑系统是欧几里得的《几何原本》。如果追溯到数学的源头,欧几里得是个不得不提的人。他的著作《几何原本》对于人类影响非常深刻,据说《几何原本》在西方的发行量仅次于《圣经》。欧几里得的整个几何体系建立在如下5条公理之上:
1)过相异两点,能作且只能作一直线(直线公理)。
2)线段(有限直线)可以任意地延长。
3)以任一点为圆心、任意长为半径,可作一个圆(圆公理)。
4)凡是直角都相等(角公理)。
5)两直线被第三条直线所截,如果同侧两内角和小于两个直角,则两直线会在该侧相交(平行公理)。
其中,第五条公理可以用另一种方式表述为:在一平面内,过直线外一点,可作且只可作一条直线与此直线平行。
欧几里得平面几何(欧氏几何)的所有定理可以最终追溯到这五个公理,所以这五个公理构成了欧氏几何的边界。作者在开始学习这些公理的时候也难以理解边界这个问题,后来也就放弃追问欧几里得为何如此定义这五个公理。后来我才知道,很多学霸都不喜欢欧几里得的看上去像“主观臆断”定义出来的第五公理。其中,俄罗斯人罗巴切夫斯基(后面简称罗氏)认为第五公理应该可以通过前面四个公理推导出来。为了推导这个公理,罗氏使用了反证法。在反证法中的第一步,他假设“过直线外一点有两条平行线”,然后试图通过这个反证假设来结合前面4条公理推导出逻辑矛盾。如果推导出矛盾,那么假设错误。但是,罗氏基于他的假设并没有推导出任何矛盾,反而推导出一个和欧氏几何完全平行的几何体系—罗氏几何体系,也就是双曲几何。为帮助读者直观地理解罗氏双曲几何,图1-10给出了一个图形,这是一个三角形位于一个双曲抛物面上,另外右下方有两条在欧氏几何中应平行的分流线。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

罗氏几何体系完全不同于欧式几何,开创了非欧几何的先河。一方面,这意味着欧几里得的选择并不是随意的,他必须选择第五公理才能建立起欧氏几何体系。另一方面,这也意味着罗氏可能惹上了和哥白尼一样的大麻烦。罗氏理论标志着两个几何世界的出现:一个是欧氏几何描述的方方正正的世界,另外一个是罗氏几何描述的弯弯曲曲的世界。由于颠覆了当时大众广为认知的体系,罗氏的理论因此遭到很多非议,他个人也遭受了很多不公正待遇。这时,罗氏向另外一位学霸、有“数学王子”之称的高斯求助,希望高斯能够公开支持他的理论。高斯虽然提供了很多力所能及的帮助,但是最终没有公开站出来支持多个几何体系的存在。尽管高斯自己也感觉到第五公理的选择不是唯一的,但是他深知公众面对具有颠覆性的新事物时的恐惧。(这里插一句,其实某种程度上今天对于AI的恐惧也只是历史重现。)
罗氏的晚年在不幸中度过,他的理论一直没有公开得到支持。直到1868年,意大利数学家贝尔特拉米发表了一篇著名论文《非欧几何解释的尝试》,证明非欧几何可以在欧几里得空间的曲面(例如拟球曲,pseudosphere)上实现。也就是说,非欧几何命题可以“翻译”成相应的欧氏几何命题,如果欧氏几何没有矛盾,非欧几何也自然没有矛盾。直到这时,长期无人问津的非欧几何才开始获得学术界的普遍关注并被深入研究,罗巴切夫斯基的独创性研究也由此得到学术界的高度评价和一致赞美,他本人则被后人赞誉为“几何学中的哥白尼”。
自贝尔特拉米解除了非欧几何的束缚以后,来自德国哥廷根大学的高斯和黎曼对非欧几何进行了大刀阔斧的拓展。黎曼对于欧式几何的第五公理做了另外一个相反的假定:过直线外一点,不能做直线和已知直线不相交。由此产生了非欧几何的另一个分支—椭圆几何。关于高斯和黎曼在非欧几何领域的突破性进展,可以参考陈省身先生1987年发表的演讲《什么是几何学》。
总结来说,通过对欧几里得第五公理做出的不同假设,最终衍生出三种逻辑自洽的几何学:罗氏几何、欧式几何和黎曼几何。在三种几何中,垂直于同一线段的两条直线如图1-11所示。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

到这里,读者可能会问:计算机(人工智能)和几何有何关系?因为非欧几何的公理化体系的讨论,激发了自然数算数体系公理化的类似讨论,从而推动图灵机定义的出现。这里我们还要介绍哥廷根大学的另外一位学霸—希尔伯特。在高斯和黎曼之后,非欧几何在哥廷根大学盛行,影响了不少数学家。哥廷根大学迎来了希尔伯特,希尔伯特提出了公理化几何体系并出版了《几何基础》。整个体系从一组公理出发,层层推导。希尔伯特的公理化方式也标志着数学方式开始转移到现代的公理系统。公理系统可以摆脱现实世界,就像非欧几何的不同第五公理可以创造出不同于生活直觉的几何世界。如果说几何学是探讨几何元素的关系,那么点、直线、平面等可以用桌子、椅子等物体所取代。更为重要的是,在希尔伯特的概念里面,一个从公理系统构造出来的完整的数学系统应该具有以下特性:

  • 独立性:系统里的各个公理相互独立,任何一个公理都不能从其他公理推导出来。例如欧几里得的第五公理并不能从其他四个公理推导出来。
  • 一致性:从公理出发,不能推导出两个互相矛盾的定理。假设B是A的反命题,则不能从公理系统中同时推导出A和B成立。
  • 完备性:从公理出发,可以推导出所有真命题。假设B和A是反命题,但是从公理系统不能证明A或者B,那么系统是不完备的。因为A和它的反命题都可能是正确的,不完备的系统像知识世界存在黑洞一样,让人不安。
  • 可判定性:即给定一个数学命题,是否可以从公理出发,通过有限计算步骤来判定这个命题的可证明性。这个可以列举的计算步骤就是现在所说的算法(Algorithm)。

完备性和可判定性可能会让人混淆。如果一个系统是不完备的,那么存在命题不可被证明。可判断性则探讨是否能找到一个步骤,计算出一个命题能否被证明。
希尔伯特的伟大之处在于使公理化系统的思考方法影响到代数体系。在1900年8月举行的国际数学家大会上,希尔伯特将可判定性问题列为当时数学面临的23个问题中的第10位。这个问题被描述为:“是否可以推导出一个过程(算法),通过有限步骤判定不定方程(也叫丢番图方程)是否存在有整数解的命题?”希尔伯特的座右铭是“我们必须知道,我们必将知道。”因此,在他眼里,无论不定方程是否有解,都应该存在一个判定过程来判定它是否可以被证明。例如,费马方程带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算作为一种特定形式的不定方程,在数学家们试图证明命题“费马方程在自然数n > 2的情况下不存在整数解”之前,希望有个判定过程(算法)来判定它是否可以被证明。
事实上,费马定理的证明花费了数学家300年的努力,幸运的是它是可证明的。从费马定理证明史这个例子可以看到,代数命题通用判定过程(算法)的意义重大。要讨论通用的可判定性,首先需要清晰地定义什么是算法。为此,邱奇和图灵分别提出了不同构造和定义。图灵构造了图灵机,算法就定义在图灵机的操作之上。下一节将讨论图灵构造图灵机的过程,但是很遗憾,图灵也证明了基于自然数算术的公理化体系的通用判断过程并不存在。

1.5.3 图灵机和可计算数

图灵的论文《可计算数及其在可判定性问题上的应用》(《On Computable Numbers,with an Application to the Entscheidungsproblem》)发表于1936年,在这篇论文中,他构造了一个图灵机来计算可计算数,证明希尔伯特提出的通用可判定性方法不存在。
图灵机的具体构造可以参考图灵的论文,这篇论文阅读起来非常晦涩。但如果要理解他的构思或者灵感,那么阅读他的论文是最直接的方式。图灵不是我们同时代的人,要推测图灵的构造灵感非常困难,但是读者可以像作者这样通过阅读到的文字和听到的故事去隔空对话这位伟人,推敲他的灵感来源。电影《模仿游戏》详细地介绍了他的生平,据历史学家估计,图灵因为破解德国的恩尼格玛密码机(Enigma Machine)而拯救了1400万英国人。在破解恩尼格玛密码机的时候,图灵沉浸在密码学之中。密码学就是将一组数字按照某种规则让机器变成另外一组数字。接收方可以根据一个反向规则让机器将其变成原文。举个简单的例子,10多年前为了让我的信件不被家长偷看,我曾构造过一个简单的加密方法:把所有的英文字符换成英文字符表的下一个字符,接收者把每个英文字符换成字符表的前一个字符即可以重构原文。举一个更加复杂的例子,计算机科学一般用两位数字01,02,…26来表示英文字母A,B,…Z,用00表示空格。这样,一个关于聚会的时间和地点的文字消息就可以转化为一串数字。接收者收到这串数字后,把每两位数字转换成对应的字母,就可以还原出文字消息了。把一个句子通过一个机器逻辑映射成一个数字非常有意思,例如ICU可以映射成090321。图灵在破解恩尼格玛密码机的时候可能深谙其中的乐趣。
《Cloud Foundry:从数字化战略到实现》一书的第1章曾回顾香农信息论为代表的数字世界的崛起。我们谈到了冯·诺伊曼为何建议香农在他的信息论中采用物理学中熵的概念,但是我们并没有仔细讨论后面的哲学,这里可以再继续深入讨论一下。物理学家和数学家都隐隐约约感觉到物质和能量背后存在的信息(数字)世界,那么我们能否用数字世界来描述物理世界?香农和奈奎斯特独创了信息论。在他们两位开天辟地的工作成果下,我们可以通过一个机器把图像、音频编码成一组数字。于是,我们今天可以用二进制编辑器打开任何一台计算机上的图片或者音频,其实它们只是一串0和1编码。这些0和1的字符串对应了一个数的二进制表示,所以它还是一个数。图灵在从事密码破译工作的时候,有机会去美国的贝尔实验室协调英美两国的合作。他在贝尔实验室遇到了两位大师(可见人生结交高质量的朋友多么重要)。作者猜测图灵从两位大师制作的编解码机器中大受启发,将他对世界万物都是数的信念往前推进了一步:如果说人的五官能够感受到的世间万物都可以用机器转换成数字来表示,那么人的思考过程是否也能用机器转换成数字来表示?为帮助读者理解图灵的这个构思,可以用iPhone手机上的Siri语音助手来类比。Siri是一个能思考和分析的程序,如果你用一个二进制编辑器打开它,它也是一个用二进制0和1表示的数。但是Siri对应成iPhone这个机器(本质上就是一个图灵机)上的一个数字后,在机器上的运作就能起到人工智能的效果。通过这个例子,读者也可以看到数字化是人类前进的一个新方向,相比人类在工程和物理领域的几千年的研究,数字世界的探讨从图灵等人在20世纪40年代开辟这个话题算起,到今天才经历了几十年。
图灵的论文详细介绍了图灵机的构造和定义在图灵机上的可计算数。如果读者觉得论文太难懂,可以参考《图灵的秘密》一书,该书做了非常详细的注解。图灵用极其简单的抽象机器来模拟一个数学工作者。一个数学工作者脑子里面有个思考状态(上下文),他在纸上扫描到下一个字符的时候脑子里会产生一个状态,然后可能在纸上移动位置写下一个符号,不断重复这个过程。图灵机的构造就是这么简单,图1-12就是图灵机的一个大致描述。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

图灵机在无限长的纸带上移动,每次移动读取一个符号(数字用二进制表示),然后图灵机的内部状态进行改变,并决定图灵机下一个移动的位置。图灵在论文中给出的一个例子是打印一个分数1/3。这个图灵机很简单:打印1个0往右移动一格,然后再往后移动一格,留出一个空格做可能的符号标记,然后再打印一个1并往右移动一格,之后,图灵机再往右移动一格从而留出一个空格作为可能的符号标记。之后以此类推。以上过程可以用表1-1所示的状态切换表来表示。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

写过程序的读者会发现,这有非常经典的汇编程序的味道。机器打印出来的纸带如
图1-13所示(早期的软件工程师应该有使用穿孔纸带的经历)。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

把这个纸带标记为小数点后的二进制数字(0.010101…),读者可以用级数求和,其结果等价于1/3。读者可能有两个疑问:1)二进制表示对数字计算机的产生有极大帮助,那么图灵是如何突发奇想地想到用二进制来表示图灵机?2)图灵为何只讨论0到1之间的实数?这两个问题的确非常重要,因为这涉及我们对人和机器之间的互补和竞争关系的讨论:机器到底是否会取代人?我们在下一节中再展开讨论,这里暂时聚焦在图灵机上。
这个图灵机只做一件事情,就是表示一个可计算数1/3。为了达到举一反三的目的,我们可以把表1-1中的b和k的顺序更换一下,从而创造另外一个计算2/3的图灵机。表格如表1-2所示。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

它的纸带如图1-14所示,其中1和0的顺序与数1/3纸带中1和0的顺序正好相反。

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

我们现在了解了图灵机的定义和运行机制,能够用图灵机计算的数叫作可计算数。目前,得到了两个表格表示的不同图灵机,分别用来计算可计算数1/3和2/3。写过程序的人可以把这两个表当作两个程序,以方便理解后面的内容。如果图灵只是用假想的机器来编码可计算数,那与香农和奈奎斯特的成果没有任何可比性,因为两位大师已经用机器把图像、声音等信号用机器编码成数字。但是图灵往前走了一步,他不仅把数字编码成特定的图灵机,还把特定的图灵机编码成通用的图灵机。读者可简单地理解为图灵创造了一个通用的机器,在这个机器里面,上面的两个图灵机(可以简单理解成上面的表1-1和表1-2)也可以编码成两个可计算数(程序),这意味着(理论上)通用计算机的诞生。对于数学领域的人而言,世界上已经存在计算机了。把表1-1表示的计算1/3的程序和表1-2表示的计算2/3的程序输入到这个通用计算机,就会输出对应的纸带:图1-13和图1-14。香农和奈奎斯特的编解码机器也可以在这台通用图灵机上运行。用今天的事物来类比,就是把微信程序、地图程序、Siri程序输入到iPhone这个通用计算机上执行。普遍被认为具有人工智能的Siri,从这个意义上说只是图灵机上的一个可计算数而已。对图灵的这个通用计算机的构造有兴趣的读者可以阅读他的论文或者有注解的《图灵的秘密》一书。
提出通用计算机以后,图灵就开始为他假想出来的计算机编写程序。图灵当然也关心如何在物理世界创造出一台物理计算机,但是这需要获得大量物理世界的资源、聚集团队和持续执行才能实现。最终,冯·诺依曼实现了这个目标,但作者不认为第一台可存储程序计算机是冯·诺依曼一个人创造的,而应该是他和他的团队一起创造出来的。
数字是数,信号是数,程序也是数,世界万物都是数。自从第一台假想计算机和第一台物理计算机诞生以后,再加上香农和奈奎斯特把物理世界的信号编码成数字,数字技术开始蓬勃发展,进入了《Cloud Foundry:从数字化战略到实现》一书所谈到的大型机、PC机和云计算机时代。一批数学、物理工作者后来转变成为能编写程序的软件开发人员。从计算机发明到现在短短六七十年,开发人员编写出各种各样的程序,不少程序带有人工智能或机器学习的数学模型,涉及虚拟现实、无人驾驶、人脸识别、语音助理等领域。由于程序功能越来越强大,人们开始担心:“人工智能程序会不会全面取代人类?”

1.5.4 认知边界上的考量

人工智能是否会取代人类这个问题,实际上涉及对于认知的无穷边界的考量:图灵机能表达的带有人工智能模型的可计算数(程序)无穷大,人的思考过程也无穷大,哪个无穷大更大?面对这个问题,大部分人会困惑“两个无穷大的数还能区分大小?”所以,这里有必要重新理解一下数。数有两个让人最头疼的问题:无穷问题和无理问题。据说知名的数学家、集合论的创始人康托尔(Cantor)就因为沉溺于数的无穷问题而得了躁狂型抑郁症。作者无意将这种痛苦带给读者,但是对于思考AI是否要取代人的读者,这个是绕不过去的坎。
自然数集、有理数集合和无理数集合在有限情况下非常容易理解,但是在无限的情况下很多属性会发生变化。我们看下面两个集合(N为自然数):

  • 自然数集合A{1,2,3,4,...,2N}
  • 偶数集合B{2,4,,...,2N}

在N是个有限的数的情况下,集合A的元素的元素数(叫作基)是集合B的基的两倍。但是,当N无穷大的时候,两个集合的势(无限集合的基)就相等了。为什么呢?从偶数集中拿出一个2,从自然数集合中拿出1,再从偶数集中拿出4,从自然数集中拿出2,如此进行下去,可以用无穷自然数集1对1数的无穷集合叫作“可数”。一个无穷集合如果是可数的,那么就说它们的基和自然数集A相等。读者可以尝试证明一下无穷有理数集合也是可数的,只要把集合元素顺序的写法写得可数。具体做法就是把分子分母之和等于1,2,3,4的自然数一一列举如下:
有理数集合C{1/1,1/2,2/1,1/3,2/2,3/1…}
读者可能兴致勃勃地把这个可数的数的证明推广到实数集,但是康托尔用对角论证法证明了实数集合是不可数的。康托尔的证明激发了图灵只讨论[0,1]区间的二进制形式的数,而使用二进制对实际计算机的发明产生极大的帮助。这里简单介绍一下这个证明方法,具体证明方法可以参考*。假设我们数完了所有的[0,1]之间的实数r1,r2,举个象征性的排列例子如下(来自*):

r1 = 0 . 5 1 0 5 1 1 0 …
r2 = 0 . 4 1 3 2 0 4 3 …
r3 = 0 . 8 2 4 5 0 2 6 …
r4 = 0 . 2 3 3 0 1 2 6 …
r5 = 0 . 4 1 0 7 2 4 6 …
r6 = 0 . 9 9 3 7 8 3 8 …
r7 = 0 . 0 1 0 5 1 3 5 …

我们现在把所有无理数数完了。我们创造一个新的超越数,它的第k位取自上面数字rk的小数点后的第k个位并加1,如果遇到9变成0,所以这个新数就是0.6251346...它和上述的数都不一样,所以它不在这个可数数列表中,可得出实数集是不可数的结论。这个证明带来另外一个非常有意思的结论:同样是无穷,实数集合的无穷要比自然数集合的无穷更大。如果把自然数集合的势记为aleph-0(康托尔把它叫作超限数并用俄文字母标记为?0),因为康托尔想计算实数集的势,于是他引入了[0,1]区间的二进制形式的数和集合论。他尝试用小数点后无限位二进制数的0和1的交替的记法去对应实数里面的元素。为帮助读者理解,列举几个数如下:

0.0000000…
0.1000000…
0.0100000…
0.1100000…
0.0010000…
0.1010000…
0.0110000…
0.1110000…

如果我们把1当作?一样的标记,学过子集的读者肯定觉得这个标记和列举含3个元素{0,1,2}集合的所有子集的记法很相似:

带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算

将这个二进制小数列表无穷列举下去,那么对应的子集表也可以无穷列举下去。这些二进制形式的小数对应所有[0,1]区间的实数,而表格第五列中子集的列表也等同于无穷自然集的子集。因为一个含有N个元素(基为N)的集合的子集数目为2N,无穷自然数子集的数目就是带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算,这个数也就是实数集合的势。康托尔猜测带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算就是下一个超限数aleph1(x1),中间不存在其他超限数,也叫连续统假设(这是希尔伯特提出的23个问题中的第一个问题)。
因为康托尔的工作,我们知道了实数集与可数数集同样是无穷大,但是实数集更大。图灵发明了图灵机和定义在其上的可计算数,所以图灵自然要考虑:“可计算数对应了可数数还是整个实数集?”遗憾的是,图灵证明了可计算数虽然包含无理数中的代数数(例如带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算这样的代数方程的解)和部分超越数(例如π和e),但它是可数的。可数数的势aleph0(x0)远小于实数集合的势aleph1 = 带你读《Greenplum:从大数据战略到实现》之一:ABC:人工智能、大数据和云计算。而世间万物都是数,且大部分数都是实数,实数中的大部分超越数都无法用图灵机表示。这意味着什么?第一个选择是我们拒绝承认不可计算的实数的存在,这就等同于我们构造了不存在的数;第二个选择是我们承认它们的存在,图灵机无法表达一个随机生成的无理数。那么人脑是否有个思考过程能对应一个无限、无理的数?图灵和邱奇恰恰认为人脑不能完成这个工作,这就是他们提出的邱奇-图灵论题。这个论题可以简单地表述为:“凡是人类能够执行的算法,图灵机也可以。”用其等价的逆反命题来说是:“如果算法过程是图灵机不能解的,人类也不能解。”到这里,读者可以清晰地知道,这个是论题,它并不能被证明。人工智能是否能够取代人,本质上也依赖于这个论题是否正确。在作者眼里,这个论题就像几何的五个公理或者物理学里面的能量守恒定律一样,是我们公理化的认知边界。
到这里,读者已经看到图灵机上能表达的可计算数是无穷的,但是有个更大的实数无穷是图灵机无法表达的。这两个极限的差别表现出图灵机的解决问题的范畴是有局限的。举个例子来说,我们不能发明一个程序检查另外一个程序的错误。一个错误的程序会使图灵机进入失控状态,计算过程会进入到一个表格里面不存在的状态(m-config)。回到希尔伯特可判定性的讨论,图灵试图构造一个图灵机,从希尔伯特的《数学原理》中的几个公理和规则出发,让图灵机列举出所有可证明的公式。但是,图灵证明了这样的图灵机不存在。根据邱奇-图灵论题,人类数学工作者也找不到一个思考过程判断一个公式的可证明性。
图灵接下来讨论了一系列人和机器智能的问题。在1950年的Mind杂志上,图灵就人工智能这个话题发表了另外一篇论文“Computing Machinery and Intelligence”。在这篇论文中,他提出了“机器能够思考吗?”这个问题。他认为思考和机器(读者可以认为AI)的定义过于模糊,为此给出了知名的图灵测试来回答这个问题。在图灵测试中,被测试者(人)在一个黑暗的屋子里面与一台机器或一个人进行对话(那个年代采用文本方式,现在则可以升级到语音方式),若被测试者无法区分对话的是人还是机器,则可以称机器通过了图灵测试。这也是电影《机械姬》的故事情节的基础。
我们如何看待邱奇-图灵论题决定了我们怎么看待人和AI之间的关系。为帮助读者理解邱奇-图灵论题,作者尝试用通俗易懂的语言来表述。图灵机在某个状态下观察一个符号,然后切换到下一个状态,这个行为和我们人类数学工作者几乎一样。差别在于,邱奇和图灵认为机器的状态是有限的,类似于我们构建的表1-1的行状态是有限的。图灵认为,如果人脑有无限的状态,必然因为有些状态无限接近而造成混乱。但是作者认为“人的思想可以支持一个无穷状态”,因为我们对人的意识理解得并不清楚,证明数学不完备性的数学家哥德尔也表示了类似的观点。但是,机器智能或者人工智能的产生,极大地解放了人类在可计算数范围内求解问题的速度。机器智能的诞生似乎加速了人类对于数字世界中未知领域的探索。只是,我们对于新生事物的直觉反应总是恐惧,对机器智能的兴起也有类似的反应。图灵认为人类在上个世纪末不再会抵触和反对机器思考。但是到了今天,我们还是因为不了解或无法掌控机器智能而感到恐惧或不安,过度的恐惧和不安又有可能限制我们充分利用机器智能的长处,进而错过对于机器智能以外的世界的探索。
我们今天感受到的数字世界,存在一定的公理和论题上的边界。在这个边界里面也有黑洞,原因是不完备性;我们没有一条快速路径来鉴别黑洞,是因为不可判定性。但是,如果你和作者一样认为人的意识格局相比图灵机具有无限性,那么应该持续地去拓展这个边界。在拓展或者重构这个边界的时候,有些黑洞或许会消失,或许可以找到一条路径鉴别黑洞。就像希尔伯特说的:“我们必须知道;我们必将知道。”

上一篇:阿里巴巴小程序繁星计划 9月27日有话要说


下一篇:阿里云发布超级智能ET大脑 成全球产业AI拓荒者