10.2 处理大数据
在1秒钟的时间里,人们生成了35分钟的YouTube视频、1600条Twitter上的消息、11 000条Facebook消息、50 000次Google搜索请求,以及300万封电子邮件(不过其中90%都是垃圾邮件)。
哈勃望远镜从它的轨道扫描太空,每秒传回20万字节的消息。1字节数据大概就是1个字母。哈勃望远镜的继任者詹姆斯·韦伯太空望远镜拥有更大的抛物线形的镜片,每秒将向地球传回350万字节的数据。
坐落在法国和瑞士边境线上的大型强子对撞机(LHC)是世界上最大的粒子加速器。它平均每秒生成5亿字节的数据,每一年的每一秒都是如此,而一年有3100万秒。
CERN即欧洲核子研究组织,它是大型强子对撞机的建造者和维护机构。那里的科学家们还建造了一个LHC计算网格,将产生的大量数据分发到位于34个国家的服务器上,让全世界的科学家都能访问并分析LHC的数据。
人类DNA序列包含大概5500万字节的信息。全世界70亿人的基因序列大概包含4×1017比特的信息。这还只是人类一个物种。
我们很容易就能制造各种廉价的传感器,测量从温度到动作、从声音到辐射的各种事物。每一个传感器都在持续生成信息,而实际中通常会使用上千个传感器。有人形容美国军队“在传感器里游泳,在数据里淹死”。
不是所有数据都来自外部世界。许多科学实验实际操作起来十分困难或者成本昂贵,于是人们借助计算机来进行仿真实验,也可以了解生物学、物理学和化学系统中的各种交互作用。这些仿真实验同样生成了大量的有待分析的数据。
上述各种来源的数据虽然数量很大,但其中大部分都是无用信息,有的是随机噪声,还有的是冗余数据。找到数据集中关键而有用的部分是很困难的,并且需要对信息的深度解读。如果P=NP,我们只要用算法把数据过一遍,就能挑出其中重要的部分,再使用基于奥卡姆剃刀法则的工具,就能形成对数据的理解和预测能力。
而我们不太可能生活在那样一个美妙的世界,我们只能尽量根据实际需求寻找和修改我们的算法。从大量的数据中理出头绪是一个非常困难、但也十分重要的计算问题。
大数据往往是好事,尤其是在机器学习领域。机器学习研究的是如何在给定的数据集上训练算法。拥有的数据越多,训练出的算法就越好。通常,拥有更多数据胜过拥有更好的算法。Google在垃圾邮件检测、语音识别和语言翻译等方面能有不错的表现,靠的就是它所能使用的大量样例数据。
在不远的将来,我们拥有的数据将帮助我们更好地分析个人健康状况,建造更智能和节能的电力网络,也将让自动驾驶的汽车得到普及,并让我们对所处的宇宙的基本性质有更深的了解。如何理解数据以更好地丰富人们的生活,是计算机科学家面临的一大挑战。