机器学习先驱清华演讲:计算思维、推断思维与数据科学(视频+PPT)

数据观  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

12月20日,由清华大学软件学院主办,数据科学研究院协办的“迈克尔·欧文·乔丹(Michael I. Jordan)院士清华大学杰出访问教授聘任仪式暨学术报告会”在主楼接待厅举行。

迈克尔·欧文·乔丹(Michael I. Jordan)院士作主题报告

仪式后,乔丹院士作了题为“计算思维、推断思维与数据科学(On Computational Thinking, Inferential Thinking and Data Science)”的主题报告,分享了他在数据科学关键问题上的思考和实践。他深入分析了在大数据背景下我们面临的理论和系统两大挑战,以隐私、通信约束为例阐述了解决这两大挑战的计算思维与推断思维,并介绍了加州大学伯克利分校在大数据领域的最新研究成果,重点推介了集统计推断、机器学习、大数据计算为一体的全面超越上一代分布计算框架Spark的新一代分布式机器学习系统Ray。

以下为Michael I. Jordan主题报告视频,大数据文摘字幕组联合THU数据派(datapi)独家发布汉化版演讲视频,希望将乔丹院士的报告分享给更多读者。

以下为乔丹院士作的题为“计算思维、推断思维与数据科学的主题报告原文,在不改变愿意的前提下,部分有删改。

再次感谢!很荣幸来到这里,今天我不会做一个技术讲座,但仍会侧重技术上和数学上的问题,我觉得清华的学生应该会对这些感兴趣。思考数学问题是有益的,我将会把演讲分为两个部分。

我将从一些挑战开始讲起,这部分会偏重于技术;接着我会转到系统的挑战上,所以相对于给几张数据增长的幻灯片,包括数据的用法,这个部分将着重于真实的数据科学家是什么样子的。

想象一下,我的刚刚从伯克利毕业的学生们,去硅谷找了个工作,上班的第一天老板就对他们说,我要你帮我建一个大数据系统,不管它是什么吧,但它将会用个性化的服务系统取代我们传统的服务系统。这种情况在硅谷经常发生,可能在中国也一样。

传统的服务系统做的事情比如搜索、电商或是医药,是对所有人都只提供这一个服务系统,他们全年的工作就是用数据去优化服务系统器。所以搜索服务系统通常是某种加上参数的算法,数据涌入,你开始调整参数,使输出的数据质量越来越高。

过去十年里,他们收集了大量的数据,并开始意识到他们提供的服务系统可以不止一种。他们可以提供个性化的服务系统,至少对于大公司来说是这样的。

小公司在提供大量的服务系统这一点上是无法和大公司对抗的,但他们也意识到可以提供更个性化的服务系统,所以许多小公司也开始向个性化方向调整。

那么,你作为一个技术员,该怎么做呢?

我要做的就是重复这个算法可能,成百上千次,用更专业化的数据和更个性化的数据,每种都进行循环重复。我不会用每个个人的数据去重复,而是用一些分成小组的数据比如同一家庭的数据等。

我在后台做这件事时需要很多电脑,不仅仅是服务系统,而是成千上万种模型,这就是我们现在所处的状况。很多人都在学着构建这样的系统,而且他们通常都会成功。

但真正的难题并不在这里,老板也意识到了一些情况。我们知道统计模型是有错误的,因为它是基于现有数据,但是你不能让错误次数随着服务系统的人越来越多而不断增大,我可以忍受少量错误,但我不能忍受错误持续增长,否则当我把这个服务系统投放市场时,它第一天产生10个错误,一年后这个服务系统变得极受欢迎,但产生了10,000个错误,那么这10,000个人将会不高兴了,然后他们就会想搞个大新闻,抱怨你的服务系统并没有那么好。

所以我只能忍受保持不变的错误数据,它不能随着系统规模的扩大而扩大。作为一个统计学家,我认为那才是真正的问题所在。我曾考虑过错误率成比例的增加时,用统计学里的L2或是L1范数去控制这种错误,相当于要去控制L无限范数,你就要思考如何用尾概率和幂定律等去做这件事。我的学生们,如果他们被培养的不错的话,都会知道怎么去思考这些问题,怎么去构建这样一个系统。然而更糟糕的是,你的老板不仅要求你解决这个问题,还会顺便要求你这个系统至少得和老系统跑的一样快,好吧,现在我们必须得有计算思想了。前半件事就是一种系统再加上统计和机器学习,现在我们还要预计运行时间,我们想要这个系统在一定的时间内完成,于是你发现你做的事情和计算机科学家非常相像。

统计学家没有运行时间的概念,统计理论体系里的人们从来不会讨论这个问题,机器学习领域里也不讨论。我们不知道什么叫好的最低运行时间,我们没有一个概念可以把允许承担的统计风险和运行放在一起考量。所以在统计学里,你知道通常调用的数据量,了解正在评估的参数的维度假设空间的复杂性,有赖以构建系统的方程,但你不知道运行时间,并且数据量不同运行时间还不一样。这本是计算机科学家应该干的活,他们本该介入并把一些量转化成运行时间。

这对我的学生们来说开始成为一个小挑战了。他们会说我可以构建一个系统,如果它运行的慢那你就得给我更多电脑,但我还是不能打包票,为什么现在不能运行缓慢。因为大部分这种服务系统具有时间预算,比如你的搜索引擎,你要几十毫秒才能得到反馈,是吧?那就是九十年代时最好的搜索引擎的反应时长。

点了搜索按钮几十毫秒之后你才能得到反馈,而不是瞬时得到结果。前几代的搜索引擎下,点击按钮甚至需要等待一段不确定的时间,一般是好几秒,这对使用者来说是件很沮丧的事,所以他们花了很大功夫优化这点,最后反应变成了几毫秒到几十毫秒。

所以如果现在你说我要构建一个服务系统,它将是个性化的,会给你更好的信息,但是它跑起来比较慢,没有人会满意的。我打赌这对于系统构建人员来说是个不小的限制因素,使得这个任务更具挑战性了。

如果你思考的再长远一些,比如老板说这个系统应该也是可伸缩的,今天我有10TB的数据,五年后我将有PB级别的数据量,每个人我都会有更多的数据,把个性化做的更好。这看上去没什么问题,更多的数据就应该得到更好的模型,但是对算法而言,数据越多意味着运行时间也越长,处理数据也需要更多时间,如果读数据进行采样的话,又会得到更多你并不想要的误差,你又必须去控制这些误差。所以实际上当前我们并没构建这样一个系统的准则,真的只靠人们不断地尝试和猜测,如果系统没有按照预期运行,就去购买更多的电脑,最终他们意识到花费太多的钱仍然没有效果,公司也因此破产。更糟糕的是,他们今天设计了这个系统,花了很多钱,但是最后却很少能够正常工作,新的数据进来了,系统却不能扩展。

这对很多行业和公司来说都是致命的,如果只是对搜索或电商还不算什么大问题,系统挂了你顶多是得到了不好的搜索结果,还不算太糟糕,没有出人命,也没人受伤。但是当你换一个行业,比如在个性化医疗领域应用大数据系统的时候,你可能会得到很差的预测结果,系统会很慢,而且有可能会出人命!如果应用在交通、金融等领域,可能会伤害到很多人。我认为这些问题实际上都是正在发生的,我认为很多大数据系统都在做糟糕的预测,人们使用不必要的药物,接受不必要的手术,产生不必要的问题。

而且我认为这种状态实际上只会变得更糟,直到我们发展出一种科学 一套工程原则——可以允许我们思考数据。我喜欢用的一个类比是修建高楼和桥梁,几千年来这些实践让人类社会更加先进发达,但当发生高楼倒塌或桥梁断裂事故的时候,也会夺走人的生命。

最后一门叫做土木工程的学科出现了。研究给定一个建筑的高度,给定明确的风力大小,给定土壤等等,怎么修建建筑。但在大数据领域,我们没有任何和这相似的东西。

我们有计算机科学、统计学、机器学习,我们有很多新想法,我们很聪明,可以做任何事情。但是当我们设计一个系统时,我们不知道错误率和时间,不知道在大规模情况下是否能有更好的决策,不知道这会随着时间推移变得更差。而且当实际构建这样的系统时还要面临很多其他问题,比如很多数据是来自于很注重隐私的人,他们不想给你医疗数据,特别是不想让你公开给任何人。所以你不能只是把数据拿过来就分析,你必须考虑数据收集的问题,这里面也有管理风险、带宽限制等等。

这些问题全都要考虑到,因为它们会影响到统计推断的质量,它们会让误差增加,这是很常见的工业界对员工的要求,但是在学术界并没有这样的领域能提供这些解决方案,至少对我而言是这样。我认为这是下个世纪的挑战,不是把我们现有的想法拿过来直接应用,而是作为科学来认真思考和践行。所以,这个问题上一个非常有帮助的表述是——计算思维和推断思维的结合。

计算思维不是说知道如何编程和使用数据库,而是一种思想。关于思考一个问题的抽象概念、模块性、性能……一切你在计算机课堂上学到的东西,而不仅仅是编程。计算机背景的人应该很熟悉这些,不熟悉的可能是推断思维。那是已经有超过两百年历史的统计学里的东西,不是一个新的领域,不是拿到数据就开始进行操作,像做数据库的人那样。

首先要考虑数据从哪来,数据背后是什么,数据获取的过程中有什么问题,这就是推断,还不严格属于计算机科学的研究范畴。即便最后得到的东西都是所谓的算法,你也必须思考背后的统计采样和总体。所以其实我并不是太喜欢机器学习这个词,我认为并没有什么新东西,还是统计思维。但是因为计算机科学家不太懂统计推断的东西,所以他们取了一个新名字叫做机器学习。

很多机器学习的工作都没有考虑推断、采样以及总体,只是把机器学习模型应用到数据却没有得到正确的答案,因为没有考虑偏差、因果推断等内容。我认为把两者结合起来并且认真研究是真正的挑战。我我以前更多关注算法和系统,过去几年越来越像个理论家,逐渐更关注理论同时在某些方面也是关注系统。我在实验室里设计系统的过程中看到了理论性的问题,所以我去寻找计算机和统计的理论,它们有什么概念可以怎么结合起来。所以我们发展了数据科学这个交叉学科,这并不容易。

统计决策理论里有损失函数和风险,但它的基础理论中没有运行时间的概念,你可以去查看几十年来成千上万的统计决策相关的论文,你不会看到任何一篇提及了运行时间;同样地,在计算机这边你可以找到成千上万的论文讨论复杂度,各种复杂度理论,但是却找不到关于统计风险的文章。而利用统计风险理论可以控制基于数据的错误率。此外,对统计估计问题的深刻理解不仅仅包括学习算法、还包括学习下界,学习你可能做的最好的是什么,但是在计算机理论里却没有太多关于下界的。有倒是有,但是不多。

接下来的演讲将进入我今天的重点主题,谈谈一些关于“理论”(theory)的问题。在统计学“推算”(inference)概念上的“计算”(computational)限制,以及一些关于建立数据分析栈的问题。差不多是AMP实验室里所做的事情,以及后续的叫RISE实验室的一些发展动态。

我们已经建立了一个系统来替代Spark。我想告诉大家,事实上这是我首次向公众宣布这个信息。这个打算替代Spark的工程正在进行中,这个替代会在1月份完成,而我在今天就宣布了。

我们现在来谈谈一系列问题,我使用一个私人数据分析的案例。这些隐私数据与你们是否相关可能并不重要,但它们的确引出了一些需要承载的问题。人们通常拥有数据,并希望这些数据发挥作用,但他们也希望他们自己的数据能得到保护,比说谁知道他们的数据。

试想一下,接下来的几年的医疗数据,你们当中的大多数人可能会得到你们的基因组序列,现在需要花费500美元去获得它。或许在五年或十年的将来,去找你的医生时,医生可能会对你说,在杯子里留一些你的血液或唾液,这样我就能获得你的基因。他会获得你所有的三十亿对基因,并且会存入数据库,他们将用这些数据做什么呢?

去预测你可能将来会患的所有疾病,也会尝试用于生物医学,以及生物信息学。他们未来会尝试通过给定的基因找出相对应的药物,并且把基因在一些方面表现出的缺陷和相对应的治疗联系起来。这是一个很好的机会,但也会带来很多问题,特别是隐私问题。

如果我是一个生物医学研究者,说我可以得到你的基因吗?我知道你拥有这些基因。他会问我:首先,你要用我的这些基因数据做什么?你会怎样保护我的基因数据?

如果我说这些数据是用于研究解决他的家族遗传疾病,他会非常乐意并给我他的基因。如果我说是用于计算并确定保险费率,他也会认为这是件好事情。他希望通过数据来保护自己。我可能会舍弃一些数据而仅使用其中一部分数据来做研究。

如果我说我用这些数据来通过百度给你展示广告,他可能会拒绝,表示他不喜欢我这样使用他的数据。所以每个人都希望能够控制自己的数据,希望存在一种类似开关值参数的东西,来控制数据涉及隐私的程度。根据具体问题和有哪些保障来做出决定。所以为了把隐私考虑进去,这种事会成为数据堆的组建的一部分,而且这并不容易。

下面我将通过一些图片来说明。我知道在坐诸位很多在研究大数据,那么让我们以大数据思维来进行下面的内容。假设现在数据库中是银行数据,我拥有一些人的年龄、身高、体重、地址,以及他们有多少存款,这是非常典型的银行数据。

一个“询问”(query)可能是:谁的存款最多?或者存款平均值是多少?我会得到一个答案,我把它叫做带有波浪号的theta。如果你考虑到了数据库中的个人隐私问题,你可能就会想:如何在数据库中加入噪声来保护人们的隐私,这样就别人就不能掌握数据库中的原始数据,或者获得储蓄人的信息。

于是你将它放入一个渠道(channel)或者一个随机的运算因子Q, 得到一个私有化数据库。在这个数据库中“询问”同样的问题时,你将会得到新的答案叫带有乘方号(^)的theta,并且有理论能够证明出来。

带乘方号(^)的theta和带波浪号的theta是十分接近的,在Q上计算结果的概率很高,以及所有的“询问”和数据库,所以目前这个计算理论有许多不同的版本,其中最流行的是差分隐私(differential privacy),应用非常广泛。这会让数据库中有用的数据增多,即给出一个问题,通过一种算法来解决,同时也有了理论上的保证。

这种方式有统计推理(inferential)的性质吗?当我第一次接触这个领域时,我问我做数据库研究的同事:“你在构建框架时进行统计推理么”?他们说那是当然,因为“询问”可以是统计性质的,比如可以计算平均值和标准差等等。但是我回答说 :“这并不是推理性统计(inferential statistics),这只是描述性统计(descriptive statistics)。”

他问那推理性统计是什么意思?我说我们需要交流一下了。这里我举另外一个例子,一个来自医疗研究领域的案例。我有一些数据库中的人员信息,有他们的年龄、身高、体重、以及他们服用和不服用治疗药物的寿命,这是典型的医疗数据。好,现在,我想不想保护他们的隐私?当然想!这是他们的医疗数据!所以我会采用和前文讲的一样的保护数据隐私的方式。但是在银行数据库的例子里,我仅关注数据库中的人。他们是我数据库中的人,我希望知道他们的存款数额,他们的收入和支出情况,我仅仅对银行中的人进行研究(做询问)。

然而在医疗案例中,我可能对数据库中的人丝毫不感兴趣,事实上数据库中的人可能已经死亡或者离开……我不关心这些人。我采集数据只是为了根据这些数据来为新的病人进行评估和治疗,所以我需要思考的是那些将来可能会纳入数据库但是现在还没有被纳入的病人的数据。这才是统计学的推理性思维——那些将来可能会纳入数据库但是现在还没有的,我想研究的是他们。

这个思维不是从计算机科学里来的,而是从统计学推理思维来的。所以如果我是一个医生,病人走进我的办公室,我会根据他的年龄、身高、 体重来决定是否给他药物。但是我不能仅仅靠猜测,我需要根据从其他人处获得的旧数据做分析后进行判断,所以说我并不只对数据库里已经有的人感兴趣。

这就是统计学家的思维:他们面对一个数据库时会思考“询问”,比如数据库样本涉及的人员数量。他们必须对人员数量非常清楚,不能随便说一个数,而且它们必须成为采样模型,可能是随机的、可能是线性的、可能是分层的……这是他们必须思考的问题。

如果不这样做就得不到算法。你不能有个数据库就直接想用什么算法、怎么处理数据,这并不是统计学推理思维。你先得思考数据是怎么排布阵型的,然后思考过后你才能得到算法,所以统计学家会对人数(P)进行一个“询问”,询问那些将来可能会纳入数据库、但是现在还没有被纳入的病人的数据,接下来才能得到答案,我们把它叫做theta。统计学家证明了总体theta和样本的theta有很大概率在所有的采样(S)、所有的查询(query)和所有可能的分布下都很接近。这是统计学做的事情,是我们过去30年甚至更久一直在做的事情。

新的问题在于要把两个概念结合起来,把推理性和计算性结合起来。假设我们采集了一堆数据,我想保护数据库里的人的隐私,即在收集数据时给他们一个保证。但是我也需要思考准备用数据来做推测的那一群应用人群,我需要证明总体theta和样本theta很接近,在S、Q等一系列方面有很高的重合概率。这就是这种新的挑战。而且这不只是在隐私这一领域里的事情,这种挑战存在于很多领域里,比如(数据)压缩,你可能想研究:如果把一群数据压缩至渠道Q来发展一个压缩了的数据库,因为我有太多的数据,即便在数据被压缩以后,我依然想对总体数据做出可靠的推测。

我的一位学生Yuchen Zhang今天正好在场,他是做这方面研究的,在“关于数据推测和压缩方面”写了几篇很不错的文章。加州伯克利大学在这个隐私问题上做了不少研究。我今天只简单讲一下这个。这是一个典型的隐私问题引导图,这里是隐私化数据,穿过一个渠道后这是Z值,是你愿意公开给统计学家的,他们通过这个计算某种估量函数,数学方面就一张幻灯片,这里的细节我就不讲了,于是我们建立了一个有限制性的优化问题,这个问题有种鞍点的感觉,也有更进一步的下确界。

这个只是给观众里的专家看看,从红色地方开始,损失量的期望值的极限,在统计学里叫做最大风险,蓝色部分是估计函数的下确界,叫做极小极大风险。然后我们新加的部分是所有渠道的下确界,在这个叫alpha的保护界限,隐私程度这叫在alpha级的微分隐私度。加上那个以后我们现在有了一个大型优化问题,一定空间 、一定复杂度、一定数学特性,我们做了数学演算来解决这个问题,最终得到了不少答案,不过我们算出了一个很简单的结果,得到了一个没有隐私度的统计率。

观察数据点的数量n,然后把n替换成n乘以alpha的平方除以alpha是微分隐私参数,是数据的维度,这样就得到了一个新的式子。这个新的式子通过原式的小小转变就能得到,目前我们真正地把隐私和统计学结合在了一起。它们就真正的在一个式子里了,这个式子包含一些统计变量:数据点的数量、维度参数和一个计算变量alpha,即微分隐私参数,我们有几篇论文,如果你对这类问题感兴趣的话可以看看。

以上只是结合隐私问题来做推测的一个例子,更难的问题在于把推测和计算和一些更广的东西结合在一起。

计算就是万物是不是?图灵告诉我们它无所不能,机器学习也只不过是计算的一种例子。我们能够说:我可以在一定时间里和一定的内存限制下,达到一定精准度和一定的问题,一定的估计函数和机器学习算法,这些都是计算机科学家做的事情。像谈论时间和空间等等,我做的就是加入统计误差的分析和数据的风险和量等统计学上的东西,搞出一套理论把计算机和统计结合起来。但我想说这是不可能的,目前我们没有这个能力,而且我认为图灵复杂度(Turing Complexity)不是向前发展的,而且很显然这不是发展趋势。最优化领域的communication复杂度这些这些可能会有用,它们中的某一个可能是最终的解决方案。这个领域需要新的想法,我们需要一种新的计算的概念。

图灵的计算概念太笼统了,什么都是,但是我们不需在一个机器里做所有的事情,尤其是对于我们很多的运作器来说,改了一点日期它们不会改变太多,它们有很好的稳定性或者说利普希茨性质(Lipschitz)。我们可以想到一些有利普希茨性质(Lipschitz)计算理论,这些理论不会变化太多,图灵复杂(Turing Complexity)就没有这种性质,一点点改变就能完全改变得到的答案。你在计算机领域会很担心这一点,但在我们统计学领域并不需要担心那么多!

所以也许,我们可以发展一个更限制性的“计算”版本,也就是说更适合统计“推测”。这张ppt展示了在这个问题上近10年的探究,没有一个是解决方案,但是它们都是将计算和统计学以各种方式结合在一起的尝试。最早的一个方式是把计算和几何结合在一起,然后把几何和统计结合在一起,最后从结合到推测。这些是计算和几何之间凸松弛和运行时间已经存在的关系,关于它们是有研究的,这样我们发展了一套平行理论。将几何与统计结合在一起:简单讲,当你把一个问题“弛化”时,运行时间就减少了,这是已知的,然后我们证明了当你进一步“弛化”这个问题的时候,统计学风险就进一步提高,所以运行时间和统计风险程度是呈负相关的。我们也研究过并发控制这个对数据库的人员来说很熟悉的概念,他们用这个来控制统计风险和时间的权衡,我们在最优化Oracle的最低范围上做过很多研究,包括最优化率,也得到了很多令人兴奋的成果。我们也有很多在二次抽样上的研究,你取更小的数据集尝试对它们作影响,然后把它们重新定位到大数据集里。

这是一个计算机里很自然的概念,叫做divide和conquer,能够引导出真正的困难的统计学。比如置信区间,如果我通过某个较大的因子减少数据量,置信区间会变得更大。如果我用小量的数据,我会得到错误的答案,我需要在我把规模调回的时候通过某种方式纠正错误,搞清楚这个怎么做是不容易的。

以上是这次讲座的前三分之二的内容,这些是关于理论的。现在我们来说一说系统,这个会相对短一些。早些时候我是一个实验室的联合首席研究员,从事数据分析开发系统。尝试把统计学和机器学习的想法结合在一起。我们有一定成果,但是我们还是处于中级阶段,这个叫AMPLab的实验项目大概一个月前结束了,我们正在筹备称为RISE Lab的新实验室,Ion Stoica是新实验室的负责人,我也是首席研究员之一。

我会简要介绍一下新的实验室。首先,这个实验室主要是企业赞助的。我们大学给予我们非常少,基本上没有任何支持。州政府也没有提供任何支持,主要原因是加州的财政危机。因此我们开始接触企业,寻求支持,我们的募款非常成功,这些企业给予了我们极大的支持来运营这个实验室,这是我们能够运营这个项目长达5年的原因。我记得赞助企业中有几家中国公司,我记得华为在某个时候参与了进来,在这张片子上的企业是我们做这张片子时候已经参与进来的。初始想法是结合我所擅长的算法——机器学习 ,以及我同事所擅长的机器和云计算及其他领域,一起思考人类数据和众包。这是我们的基本思路。

我们是分布式计算软件增长的贡献力量之一,现在这方向的生态系统已经得到极大的拓展,我们实验室开发的Spark已是这个生态系统中的重要部分。Spark诞生的真实原因是我组的机器学习研究员对Hadoop非常不满意,他们抱怨很多。我们一开始让他们使用Hadoop来进行更大规模的测试,研究员使用后觉得Hadoop对机器学习非常不适用,因为大部分机器学习(算法)需要迭代,输入数据,处理一小部分数据,对参数作出一点修改,重新处理数据,然后再做一点修改,这个过程需要不断重复。

对于Hadoop来说,数据需要经常从磁盘输出然后存储回去,每一步都需要需要重复映射和化简,然后回到磁盘读取数据。这个过程太慢了,一名研究系统的学生Matei (译注:Matei Zaharia)听到我们的讨论,帮助我们开发了新系统,让大部分中间结果缓存而不是写入磁盘,这样Spark就诞生了。这是AMPLab栈的Spark生态系统之一(译注: 伯克利数据分析栈)。在最下面是储存层和资源虚拟化层,不过我们主要研究往上的层,Spark Streaming支持流式数据处理,支持误差计算和抽样运作,也支持各种语言和图像处理。

Splash是一种并行计算框架,由今天也在座的You Chan开发,他也开发了其他机器学习相关的工具。我也会简要介绍模型服务器Velox,这个生态系统大概一年前的状况,过去这一年它持续演化,结果非常成功。部分原因是因为这是学术界开发的,非常多企业发布过数据分析软件栈,IBM Google 微软都发布过,基本上它们都没能引起大家的使用兴趣,没有人使用它们的工具,这软件(Spark)的使用比那些企业的工具广泛得多 ,而Spark的开发只需要几名学者,因为其他(独立)研究员信任学术界。

学术界不会突然让他们支付软件,不会随意改动软件,不会为软件建立商业模式而研究人员成为中间一份子,所以,学术人员是绝对有能力与大企业竞争的。你可以接触到各种资源,没有人真正信任大企业,不过他们会信任你!

接下来让我简单解释这个迭代问题。我将在几分钟内完成。我刚才所介绍的都在这个图上了。这个是经典的映射/简化原理,希望你们都已经知道。MapReduce会输入数据,通过并行地执行一个映射步骤,多线程多服务器地进行计算,然后执行一个简化步骤,然后不断重复。这个做法成本很高,因此Spark的原理是把每个阶段的输出存储起来,形成缓存,这样就不需要总是存到磁盘。

这想法听起来容易,不过要做成一个可以规模化拓展的系统需要很多人大量的工作,所以Spark后有什么大动作?

过去几个月我们都在进行一个新项目,这项目并不是通过研究系统的学生完成的。我的两名学生主要负责这项目,之后他们也能研究系统了,他们是Philipp Moritz 和 Robert Nishihara,他们也和我同事Ion Stoica合作。Ion是系统领域的专家,我们把这系统命名为Ray,一月份将会公布beta版本,希望大家可以开始使用。简单说明一下为什么我们想要做这项目——我们对这项目感兴趣主要是因为我们是机器学习的研究员,机器学习中许多问题远不止于数据,其中非常多问题与研究、优化和线性代数相关,Spark在这些方面非常低效,尤其是在和线性代数方面,MPS比其他系统运行快很多,不过没有人喜欢使用,在上面非常难编程,它们也不适用于现在通用的并行硬件。这些是我们希望解决的问题,我们希望能够在单机和集群上运行同样的代码 ,这是考虑因素之一。

同样,我们也不想在分布式上修改代码,我们希望系统可以支持大量小任务 ,这意味着不同任务间更多的数据共享。因此,我们不再使用左边的这个经典映射/简化模型,这个更像是数据流模型,当他们接收到所有需要的信息后 ,任务即可执行。这模式中不存在同步屏障,这非常重要,要实现这想法需要在任务排程上做很多工作,我们在排程上下了很大功夫,这做法明显有很多优点,如果你尝试把神经网络放到Spark上,同步屏障问题会非常让人头疼,你只能执行一部分任务 ,然后等所有其他任务执行完毕才可以到下一层。在这个系统上,实际上就是数据流架构在蓝色的节点完成后,红色的节点即可执行,在整个网络中逐步执行任务,这例子是在Python上完成的。目标是对Python代码进行非常少的改动就可以转换为分布式。在这代码上,每隔一定step size执行运算,返回结果以不同的step size并行运算。这基本上就是机器学习的经典做法。

看这个新的命令array.remote,这指令了系统去利用分布式环境启动排程器,在后端运行所有的机器学习。我们从系统架构方面看一下,运行中产生了本地对象和全局变量,对应了本地和全局的排程器,以及所有相关因素的关系,这是整个架构的基本原理。

基本上,这是已经存在的机器学习分布式Python版本,这系统已经开发完毕了,在很多标准上远快于Spark。这就是下一代的大数据处理工具,实验室的另一个项目与模型服务有关。在很多情况下,我们建立了很大的模型,输入了海量数据,一切都变得太大后,就难以获得系统的实时回应,因此,我们需要能够同时运行大模型,以及快速运行与大模型相关的小模型的系统,我们可以在边缘上快速对小模型迭代,然后慢慢地把信息转移回大模型。

某程度上这类似人脑的运作,我们每天产生少量记忆,形成短期记忆,然后转移到长期记忆里,这个系统可以解决很多这类型的问题,我们需要以简化的本地模型作出快速决策,然后逐步整合到大模型中。

我快要结束演说了,这个话题就差不多了,我们需要注意一下这个架构 ,这里面有一边是学习板块,建立大模型,然后是我们称为的推理板块,这版块可以基于当前较小的时间尺度调整模型。这个话题就这样吧!

回到主题上,在过去10年,我的工作和发表成果主要和抽象的数学问题相关。如果你对理论问题感兴趣,你该感到兴奋!这是个充满新理论问题的领域,非同步、分布式、流式数据等等,都和行为系统相关,大量的理论性问题。你还需要控制统计误差,对于理论研究员来说这是新问题,我们可以真正地建立系统,获取数据,尝试各种处理、实现模型。这是从所未有的合作方式。

再次感谢邀请我到这里来演讲!

注:本稿件摘自数据观入驻自媒体-大数据文摘,转载请注明来源,百度搜索“数据观”获取更多大数据资讯。

责任编辑:汤德正

随意打赏

深度学习和机器学习机器学习视频机器学习算法学习机器人机器学习
提交建议
微信扫一扫,分享给好友吧。