居然还有拿Excel讲大数据的。严格说来我不是真正做大数据的人,但是我可以非常明确的告诉你,凡有人拿出一张Excel 表格告诉你他做的是大数据,此人百分之两百都不懂大数据。
大数据说到底就是一个大字。到底有多大?拿上的例子来说,CERN做的LHC(大型強子對撞機)周长27公里,里面一共有1.5亿个传感器,每秒钟读数达四千万次。每秒钟发生的粒子对撞高达6亿次。剔除99.999%的无用数据,每秒钟也有100次碰撞需要记录。如果在这些数据里面仅仅使用十万分之一,那么一年也要积累25 petabytes的数据,相当于25000个1TB的硬盘。
在这些数据里寻找希格斯玻色子的证据,是真正的大海捞针。这么大的数据你给我用Excel算算看?不要说计算,根本连载入内存都不可能。
再比如说,Facebook据说拥有500亿以上的用户照片。前些日子美国波士顿发生了爆炸案。这些照片里可能就有爆炸案的线索。那你给我找找看那张照片上面有嫌犯?波士顿马拉松仅运动员就有两三万人,围观群众近五十万。在同一时间同一地点拍摄的照片可能有几十万张,录像可能有几千小时。用人工一张一张看过来是不切实际的。如果要考察爆炸案前后几天的照片那就更不现实了。还有的照片根本就没有时间和地点信息。
再举一个例子。2009年华盛顿大学的研究人员使用15万张Flickr上的图片,重建了整个罗马城的3D模型。整个重建过程的计算使用了496个CPU核心,耗时8小时。如果每张照片按100KB计算,总数据量达到15GB。至少要达到这个级别的数据,才能称得上大数据。下面为照片和重建模型的对比。更多照片和视频参看:Building Rome in a Day
大数据因为大,不仅远远超过人工的处理能力,也远远超过普通台式机的处理能力。只有特定的算法和特别设计的硬件架构才能够有效的处理大数据。简单说来,硬件上要把很多CPU或者很多台式机连起来,算法上采取分而治之的策略。有的数据前后没有关联,特别适合分而治之的方法。而处理互相联系多的数据就比较困难。如果只要寻找嫌犯的脸,可以对每张照片分别处理。如果要考虑连续拍摄的照片有些并没有捕捉到脸,但嫌犯的位置和穿着是相对不变的,这就要考虑照片之间的关系,要分而治之就相对困难一些。
举一个做加法的例子来说明分而治之。比如有两道加法题:34+18和54+39。这两道题目如果两个人分别计算,就比一个人计算要快一倍。这就是分治的优势。但是如果只有一道加法题怎么办?比如两个人要计算34+18博亚体育,那只好一个人计算个位,一个人计算十位。十位上计算3+1=4,但是还必须考虑个位的进位。所以计算十位的人必须等待计算个位的人给出结果之后,再决定要不要在自己的结果上再加1。为了统一结果一等待,计算速度就变慢了,这就是我们说结果之间存在的关系拖慢计算。
既然大数据处理起来这么困难,为什么还要使用大数据?使用小数据不行吗?这就要说到大数据的应用。所谓机器学习,一般是首先建立一个数据之间关系的模型。然后通过数据来确定模型中的参数。这就是所谓训练。大多数模型都是比较简单的。建模的时候为了简便,往往忽略现实中的很多因素。但是数据多了以后,往往可以弥补模型的简陋。所以数据多是有好处的。
那么我们建立一个复杂的模型不行吗?可惜越复杂的模型参数就越多。训练所需要的数据量就越大。随着人类计算能力的增长,能处理的数据量越来越多,统计模型也不断变的更精细更复杂。计算能力,数据量,统计模型三者是相辅相成的。最近兴起的Deep Learning,就是在强大的计算能力辅助下,使用巨大的数据训练多层复杂模型的一种方法。
举一个糖果厂的例子。某糖果厂按比例生产红色和绿色两种糖果博亚体育。作为一个传统的中国股民,我特别喜欢红色,讨厌绿色大数据。但糖果是包起来的,外面看不出来。那怎么才知道这个糖果厂的生产比例是什么?最简单的模型就是,买一百粒糖果全部剥开看看。比如有60粒红色,我就得出结论说红色比例是0.6。买的糖果越多,估算出的比例和实际比例就越接近。
你说这模型也太弱智了吧。那么好,我们可以考虑食用色素的价格对糖果颜色的影响。通过观察红绿两素价格和糖果比例之间的关系,可以预测何时糖果厂会大量生产红色糖果。到时候我就买一堆放家里慢慢吃。但是注意,这计算就需要色素价格的数据了。我们还可以继续构建更加复杂的模型,比如考虑糖果的销量,竞争对手的产品颜色,厂长的心情,天气晴阴等等。考虑的因素越多,需要的数据也越多。
你说扯淡。天气和糖果有什么关系?老实说,有没有关系实在搞不清楚。如果把这个因素放到模型里,多多少少也能算出一点关系来。但算出有关系不代表真有关系。那能不能通过算法自动找出那些因素是真有关系,那些是假装有关系?这就是Deep Learning想要解决的一个问题。
话说回来,只要你考虑的因素正确,又有足够的数据来测算因素之间的关系,那往往可以提升模型的预测能力。所以统计模型在往精细和复杂的方向发展。有些预测能力看起来似乎不可思议。比如预测那些人和你会买同样的书和音乐,比如预测你下班回家的路会不会堵车。有些预测能力似乎稀松平常。比如你一句话还没说完,我大概就能猜到你下一句会说什么。这能力基本上每个人都有,但对计算机来说难如登天,简直如同神迹。