font-family:微软雅黑, 黑体, sans-serif;

[Home]

人工智能、大数据及云计算导论

 

0. 概述

云计算是什么?云计算的历史是怎样发展的?云计算又是如何运作的?本文从这些角度出发,研究了云计算作为一门行业的历史学。接着分别论述其与大数据人工智能的联系与互相作用。希望从一个科学的角度去研究云,并希望能给出确切的指导意义。

1. 什么是云计算?

1.1 云计算的定义

云计算,顾名思义,就是依靠网络云(Network Cloud)来进行计算的数据处理手段。云计算的兴起,离不开分布式计算(Distribute Computing)和并行计算(Parallel Computing)技术的发展。利用高速的网速串联和存储,借助互联网的扩展性和灵活性,发展出了一种按需求量计算效益的计算服务模式1。在云计算的框架下,巨型服务器提供存储和计算能力,而用户的终端(Devices)则用来发送和接收内容,或是数据。

1.2 云计算的发展历史

一个很形象的比喻,云计算就像大型的电力公司,给中小型,甚至在未来是所有生产形式提供电力(计算 力)。就像在十九世纪末,从来没有哪一家工厂想过不需要自己来发电一样,在高速网络还没有普及的年代,人们也很难想到计算机能够像电力一样,成为一种集中化生产以及网状结构分发出去的资源2

光纤的出现解决了早期拨号上网所无法承担的高负荷问题。有了蒂姆·伯纳斯·李的万维网,光纤电缆,再加上 不断爆炸式增长的微处理器性能,一种新型的IT内容提供商便诞生了:互联网公司就是新时代的产物。不同于早期 沉迷于向私有计算机系统提供软硬件设备的供应商和服务商,互联网公司将网络环境作为软件的运行环境,而硬件似乎仅仅只是一项服务。这类互联网公司的代表一般有:Google,Amazon等。

大约从十年前开始,云计算的革命悄然兴起,首先是亚马逊,由于Amazon本身作为一个电商平台需要有大量计算,存储和网络资源来应对高峰期,这些资源在平时便闲置了下来,亚马逊将开源的KVM虚拟化技术加以改进,建立了属于自己的公有云系统,开创了这一个领域,并取得了丰厚的收益3。后来者迎头跟进,目前Google Cloud Platform,Microsoft Azure,以及国内的阿里云等都是云计算行业的代表。

1.3 云计算技术详解

严格地说,并不是分布式计算推动了云计算的发展,而是云计算切实地给分布式计算系统做出了贡献。一个巨 大而复杂的问题,通过计算机科学的方式转化为多个子问题,并可以通过多台闲置的计算机进行计算4。而云计算使得这样的计算能够更容易地使用巨型服务器来处理。

另一方面,并行计算和云计算的关系就紧密的多了,由于单个处理器,或者说单个时间的集群计算不能满足巨大的需求,并行计算的优势就体现出来了,一次性多个指令的输入使得同时满足多个客户的需求成为了可能。这给了云计算在空间和时间上巨大的灵活度

在早期,服务器资源的分配和采购都是以物理形式衡量的,用户一般很难对服务器资源进行定制化操作,VMware为代表的虚拟化技术提供商很大程度上解决了这个问题,将巨量的资源以一种虚拟分割的方式建立实例(instantiation),在这个基础上,使用机器算法来进行虚拟机的调度(Scheduler),这个就叫网络的池化,一个易于维护,易于实现的计算池就产生了。

目前普遍使用的云计算模式是Rackspace开发的开源系统OpenStack,基于这个系统,虚拟化技术和并行计算技术等帮助,我们实现了计算和存储资源的弹性,这就是云计算的IaaS(Infrastructure as a Service)。

然而我们还要在应用层面上实现弹性,一个没有操作系统和通用服务的虚拟机,必然是无法为用户提供服务的,在早期服务器数量较少的情况下,运维工程师可以通过手动方式安装这些服务,到后来计算集群出现后,仍然可以通过脚本来实现安装。

然而脚本对跨平台的环境支持却不尽如人意,于是出现了我们如今应用的容器(Container)技术5。如果要将容器在现实中找一个比喻,那应该是码头的集装箱。集装箱使得货物运输标准化和快速化,容器也实现了这一要求。通过LXC(Linux Container),容器能够对大量软件进行隔离6,然后通过封装成镜像(Mirroring)进行传播,这种方式简单而优雅,也造成了我们所说的云计算的PaaS(Platform as a Service)。

最后再考虑一种数据层面的弹性。经过大型计算得出的许多数据是可以复用的,其中有很多数据7是开源的,这些数据如何在云计算上实现应用服务呢?这时需要用到云计算的最后一层特性SaaS(Software as a Service)。现在许多的云计算平台(如Azure)都提供了很多应用层的服务接口来满足用户对数据的需求。

有了Iaas、Paas以及Saas,一个普遍意义上的云计算平台就建立起来了。

1.4 云计算的影响

许多在二十年前让人觉得痴人说梦的技术,现在已经变成了现实,云计算就是其中的一种。一旦了解了其中的原理,云计算的出现就不再那么突兀了。

我们的计算机经过了几次革命,从原来的大型计算机到微处理器,再到服务器集群,云计算很可能就是下一次革命的开始。个人电脑已经开始将计算,或者说处理信息的任务拱手相让给了玄之又玄的云,在未来,它们很可能仅仅作为一个终端存在。这种规模化的生产力会带来巨大的经济效益提升,这是不言而喻的。而那些更早发现云计算的优势并占得先机的服务提供商,也可能在未来的IT行业处在领先地位。

未来的公司中,信息服务部门一定会被淘汰,如果每个决策者都将计算的过程和存储的载体托付给巨大的云来完成(而这些云又往往是由机器控制),反馈给决策者的会是一些简单明了的信息,那么公司为什么还要花大笔资金和时间来运维自己的服务器呢?

我们每个人都在被渐渐捆绑到云上,无论是给你的生活建议,还是工作方式,这使得这个世界正在变成一个巨大的超级电脑,或者说,是超级大脑(Brain),这在许多时候,都让我想到了Kevin Kelly的名作《失控》中描述的人工自然系统8,混沌而又有序。

说云计算就是未来不准确,但是如果不明白云计算,那一定无法掌握未来。

2. 云计算与大数据

2.1 对大数据的简单定义

大数据(Big Data),人工智能(AI)和云计算(Cloud Computing)往往被并称为ABC,大数据对应的就是这个"B"。

数据就是数值,数据就是结果。哲学意义上的数据就是现象(Phenomenon),要了解数据,我们首先得了解一下Claude Shannon的信息论。香农在论文“通信的数学原理”(A Mathematical Theory of Communication)中提出了信息熵这个概念,信息(Information)就是离散随机事件的发生概率,而信息熵就是所有信息发生的数学期望,用公式可以表示为:

从数据中获得信息,就是一个信息熵降低的过程,我们说现代是一个资讯爆炸的时代,实际上也就是说是一个数据爆炸的时代,传统的数据分析手段已经无法满足我们的要求,我们需要有一种对“大”数据的处理手段。

数据的处理无关乎五个步骤:收集传输存储处理和分析检索和挖掘。在这五个方面都做到巨大化,才能称得上是大数据。

因此,给大数据一个准确的定义就是:一种需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产9

2.2 大数据和云计算的联系

数据并不重要,重要的是数据之后的信息,在信息中提取的知识和智慧(Intelligence),才是人们想要的。

数据量很大时,在数据的处理时就不是几台计算机可以胜任的了。在收集方面,我们需要有大量机器组成的爬虫系统,传输时,我们也开发出了基于硬盘的分布式队列,存储也会用到分布式文件系统。处理分析和检索挖掘就更需要并行计算的支持了。这些工作,仅仅凭个人是完不成的。就像发射导弹,大型水利等国家工程需要电力电网支持,大数据分析也需要如同云计算一样的计算中心的支持,同时,云计算也给了小型公司和个人接触大数据的可能性。

云计算的PaaS层的一个主要应用就是大数据的部署和计算。虽然云计算比大数据的起步其实要稍早,但是大数据作为云计算当前的主要需求确是不言而喻的。

2013年是中国的大数据元年,大数据的发展势头如此猛烈,在很大程度上是云计算提供的算力支持。现有运算后有天,大数据很可能是时势造英雄。一些本来并不需要大数据分析的行业也开始追逐时代的脚步,这样的收益和经济投入是一定成正比的吗?

ABC中,大数据和其他两个明显不在一个体量上,也许在未来,大数据会是最先掉队的一个。

3. 人工智能和云计算的联系

3.1 人工智能发展简史

早在上世纪五十年代,计算机科学家就开始计算机语义学的研究。机器是否能准确的与人进行交流?在著名的NLP(Natural Language Processing)教材"Speech Language Processing"里,介绍了一种最早的原始人工智能:Weizenbaum,一位心理学家在1966年设计的一个自动聊天机器人ELIZA。这个机器人在很长时间被受试者认为是真人,即使她只有三种应答模式。

这个案例的成功使得许多研究者,包括语义学家和哲学家觉得,人也许真的能够替代上帝创造智能。或者说,ELIZA启发了我们去研究使计算机能够理解人类的数学规律。如果把这些数学公式般的规则变成程序输入进计算机,那它不就能像一个真人一样说话了吗?同时,如Chomsky的语言学家建立的形式语言学也为人工智能奠定了一定的理论基础。

但是许多时候,我们的大脑认识并不是能够总结出确切的规则的。我们看到一张猫的图片就能把它和现实中的物种猫对应起来,这一切能够用数学公式来表达吗10?这就暴露了监督学习(Supervised Learning)的缺陷。我们很多时候会抱怨Siri或者Cortana听不懂我们说话,或者搜索引擎往往只能准确地搜出关键词和句子片段。我们和语音助手说的口语,是能够以一种确切的语法规则来表达的吗11?显然不是的。

于是出现了半监督学习和无监督学习,首先出现的是基于数据统计的人工智能学习算法,比如早期的NLP算法NNLM。1986年,Hinton证明了词向量(Word Embedding)和上下文的语义联系,成为NLP的理论基础之一。通过大量数据和预先取得的字典,机器通过训练就能够了解词语之间的特点联系。

但是这种统计规律取决于语料(Corpus)的独立性,而在现实中是很少能够找到完全独立的数据的。既然计算机科学在很大程度上远远超过了生物脑科学的研究进度,那我们为什么不干脆模拟一下神经网络呢?这便是无监督学习的起源,也是目前的主流趋势。通过将一个个神经元表达成数学语言12,我们建立了卷积神经网络,这些神经元有触点,输入和输出,我们通过对这些神经元的不断微调,就模拟了机器学习(Machine Learning)的过程。

3.2 为什么人工智能需要云计算的支持?

从以上的发展简史中也可以很容易的看出,人工智能的训练过程需要很大的数据量和运算能力(一般是浮点运算)作为支持。无论是半监督学习还是无监督学习,对机器的配置是极大的要求13,用云计算的极大运算能力来进行人工智能的研究,可以说是应运而生。

人工智能在很多年都处于一个沉寂状态,直到2016年Google向全世界揭示了人工智能的发展已经到了一个未来可期的状态。作为ABC中最新兴的产业,人工智能急需一个体系化和理论化的支持。而在这个过程中,云计算提供的平台能够让很多平凡的研究者获得机会。而反过来说,人工智能的发展也能够使得云计算更友好化,服务更智能化。

4. 总结

人工智能,大数据和云计算这三个行业就这样联系了起来。作为计算机领域应用层面新兴的三大热点,三者在很大程度上都代表了计算机科学领域的技术结晶。

古希腊名谚:不可盲目追逐耀眼的太阳,炙手可热的背后可能是炒作和无知。就像最近Keras之父Chollet所说,大部分深度学习的论文都是垃圾,因为它们的根本研究方向是错误的。我们研究云计算,要研究的是云作为一门科学在知识史所处的位置,这门科学或许可以叫做云科学(Cloud Computing),从一个较为赛博朋克(Cyberpunk)的角度来说,云是一种隐藏着极权危险的自由14

 


1 按照美国国家标准与技术研究院(NIST)的准确定义,云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的快速提供的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务)
2 1961年,约翰·麦卡锡曾经预言过:“未来电脑运算有可能成为一项公共事业,就像电话系统已成为一项公共事业一样。”
3 2017年,AWS(Amazon Workspace)营收122亿美元,运营利润31亿美元。
4 比较著名的一个分布式计算系统是1996年由Prof.Smith设计的GIMPS(Great Internet Mersenne Prime Search) 。
5 我们所熟知的容器有Puppet,Chef,以及十分优秀的Docker。
6 隔离方式一般有两种,软件层面上的Namespace隔离和硬件层面上的Cgroups隔离。
7 特别是在机器学习领域,训练好的模型和数据由于耗费过大,往往是重复利用的。
8 对于这一切的数学研究开始,我想应该归功于伟大的庞加莱(Poincaré)对混沌确定体系的开创性研究。
9 这个定义是由Gartner给出的。
10 Lyall Watson:如果我们的大脑能简单的被人所理解,那我们一定简单地不能理解大脑。
11 这在很多时候就体现出应用语言学和纯粹语言学的分歧了。
12 这种数学语言可以是向量,函数,或者方程。
13 笔者本人曾经用集成显卡跑NLP的训练,深有体会。
14 关于这一点,我极为推荐阅读星云奖名作《神经浪游者》。