獨家 | 機器學(xué)習(xí)先驅(qū)Michael Jordan清華演講原文:計算思維,推斷思維與數(shù)據(jù)科學(xué)
聽譯&校對| 馬越 曹翔 王婷 湯人懿 蘇國睿
以下為喬丹院士作的題為“計算思維、推斷思維與數(shù)據(jù)科學(xué)的主題報告原文,在不改變愿意的前提下,部分有刪改。
再次感謝!
很榮幸來到這里,今天我不會做一個技術(shù)講座,但仍會側(cè)重技術(shù)上和數(shù)學(xué)上的問題,我覺得清華的學(xué)生應(yīng)該會對這些感興趣。思考數(shù)學(xué)問題是有益的,我將會把演講分為兩個部分。
我將從一些挑戰(zhàn)開始講起,這部分會偏重于技術(shù);接著我會轉(zhuǎn)到系統(tǒng)的挑戰(zhàn)上,所以相對于給幾張數(shù)據(jù)增長的幻燈片,包括數(shù)據(jù)的用法,這個部分將著重于真實的數(shù)據(jù)科學(xué)家是什么樣子的。
想象一下,我的剛剛從伯克利畢業(yè)的學(xué)生們,去硅谷找了個工作,上班的***天老板就對他們說,我要你幫我建一個大數(shù)據(jù)系統(tǒng),不管它是什么吧,但它將會用個性化的服務(wù)系統(tǒng)取代我們傳統(tǒng)的服務(wù)系統(tǒng)。這種情況在硅谷經(jīng)常發(fā)生,可能在中國也一樣。
傳統(tǒng)的服務(wù)系統(tǒng)做的事情比如搜索、電商或是醫(yī)藥,是對所有人都只提供這一個服務(wù)系統(tǒng),他們?nèi)甑墓ぷ骶褪怯脭?shù)據(jù)去優(yōu)化服務(wù)系統(tǒng)器。所以搜索服務(wù)系統(tǒng)通常是某種加上參數(shù)的算法,數(shù)據(jù)涌入,你開始調(diào)整參數(shù),使輸出的數(shù)據(jù)質(zhì)量越來越高。
過去十年里,他們收集了大量的數(shù)據(jù),并開始意識到他們提供的服務(wù)系統(tǒng)可以不止一種。他們可以提供個性化的服務(wù)系統(tǒng),至少對于大公司來說是這樣的。
小公司在提供大量的服務(wù)系統(tǒng)這一點上是無法和大公司對抗的,但他們也意識到可以提供更個性化的服務(wù)系統(tǒng),所以許多小公司也開始向個性化方向調(diào)整。
那么,你作為一個技術(shù)員,該怎么做呢?
我要做的就是重復(fù)這個算法可能,成百上千次,用更專業(yè)化的數(shù)據(jù)和更個性化的數(shù)據(jù),每種都進行循環(huán)重復(fù)。我不會用每個個人的數(shù)據(jù)去重復(fù),而是用一些分成小組的數(shù)據(jù)比如同一家庭的數(shù)據(jù)等。
我在后臺做這件事時需要很多電腦,不僅僅是服務(wù)系統(tǒng),而是成千上萬種模型,這就是我們現(xiàn)在所處的狀況。很多人都在學(xué)著構(gòu)建這樣的系統(tǒng),而且他們通常都會成功。
但真正的難題并不在這里,老板也意識到了一些情況。我們知道統(tǒng)計模型是有錯誤的,因為它是基于現(xiàn)有數(shù)據(jù),但是你不能讓錯誤次數(shù)隨著服務(wù)系統(tǒng)的人越來越多而不斷增大,我可以忍受少量錯誤,但我不能忍受錯誤持續(xù)增長,否則當(dāng)我把這個服務(wù)系統(tǒng)投放市場時,它***天產(chǎn)生10個錯誤,一年后這個服務(wù)系統(tǒng)變得極受歡迎,但產(chǎn)生了10,000個錯誤,那么這10,000個人將會不高興了,然后他們就會想搞個大新聞,抱怨你的服務(wù)系統(tǒng)并沒有那么好。
所以我只能忍受保持不變的錯誤數(shù)據(jù),它不能隨著系統(tǒng)規(guī)模的擴大而擴大。作為一個統(tǒng)計學(xué)家,我認(rèn)為那才是真正的問題所在。我曾考慮過錯誤率成比例的增加時,用統(tǒng)計學(xué)里的L2或是L1范數(shù)去控制這種錯誤,相當(dāng)于要去控制L***范數(shù),你就要思考如何用尾概率和冪定律等去做這件事。我的學(xué)生們,如果他們被培養(yǎng)的不錯的話,都會知道怎么去思考這些問題,怎么去構(gòu)建這樣一個系統(tǒng)。然而更糟糕的是,你的老板不僅要求你解決這個問題,還會順便要求你這個系統(tǒng)至少得和老系統(tǒng)跑的一樣快,好吧,現(xiàn)在我們必須得有計算思想了。前半件事就是一種系統(tǒng)再加上統(tǒng)計和機器學(xué)習(xí),現(xiàn)在我們還要預(yù)計運行時間,我們想要這個系統(tǒng)在一定的時間內(nèi)完成,于是你發(fā)現(xiàn)你做的事情和計算機科學(xué)家非常相像。
統(tǒng)計學(xué)家沒有運行時間的概念,統(tǒng)計理論體系里的人們從來不會討論這個問題,機器學(xué)習(xí)領(lǐng)域里也不討論。我們不知道什么叫好的***運行時間,我們沒有一個概念可以把允許承擔(dān)的統(tǒng)計風(fēng)險和運行放在一起考量。所以在統(tǒng)計學(xué)里,你知道通常調(diào)用的數(shù)據(jù)量,了解正在評估的參數(shù)的維度假設(shè)空間的復(fù)雜性,有賴以構(gòu)建系統(tǒng)的方程,但你不知道運行時間,并且數(shù)據(jù)量不同運行時間還不一樣。這本是計算機科學(xué)家應(yīng)該干的活,他們本該介入并把一些量轉(zhuǎn)化成運行時間。
這對我的學(xué)生們來說開始成為一個小挑戰(zhàn)了。他們會說我可以構(gòu)建一個系統(tǒng),如果它運行的慢那你就得給我更多電腦,但我還是不能打包票,為什么現(xiàn)在不能運行緩慢。因為大部分這種服務(wù)系統(tǒng)具有時間預(yù)算,比如你的搜索引擎,你要幾十毫秒才能得到反饋,是吧?那就是九十年代時***的搜索引擎的反應(yīng)時長。
點了搜索按鈕幾十毫秒之后你才能得到反饋,而不是瞬時得到結(jié)果。前幾代的搜索引擎下,點擊按鈕甚至需要等待一段不確定的時間,一般是好幾秒,這對使用者來說是件很沮喪的事,所以他們花了很大功夫優(yōu)化這點,***反應(yīng)變成了幾毫秒到幾十毫秒。
所以如果現(xiàn)在你說我要構(gòu)建一個服務(wù)系統(tǒng),它將是個性化的,會給你更好的信息,但是它跑起來比較慢,沒有人會滿意的。我打賭這對于系統(tǒng)構(gòu)建人員來說是個不小的限制因素,使得這個任務(wù)更具挑戰(zhàn)性了。
如果你思考的再長遠(yuǎn)一些,比如老板說這個系統(tǒng)應(yīng)該也是可伸縮的,今天我有10TB的數(shù)據(jù),五年后我將有PB級別的數(shù)據(jù)量,每個人我都會有更多的數(shù)據(jù),把個性化做的更好。這看上去沒什么問題,更多的數(shù)據(jù)就應(yīng)該得到更好的模型,但是對算法而言,數(shù)據(jù)越多意味著運行時間也越長,處理數(shù)據(jù)也需要更多時間,如果讀數(shù)據(jù)進行采樣的話,又會得到更多你并不想要的誤差,你又必須去控制這些誤差。所以實際上當(dāng)前我們并沒構(gòu)建這樣一個系統(tǒng)的準(zhǔn)則,真的只靠人們不斷地嘗試和猜測,如果系統(tǒng)沒有按照預(yù)期運行,就去購買更多的電腦,最終他們意識到花費太多的錢仍然沒有效果,公司也因此破產(chǎn)。更糟糕的是,他們今天設(shè)計了這個系統(tǒng),花了很多錢,但是***卻很少能夠正常工作,新的數(shù)據(jù)進來了,系統(tǒng)卻不能擴展。
這對很多行業(yè)和公司來說都是致命的,如果只是對搜索或電商還不算什么大問題,系統(tǒng)掛了你頂多是得到了不好的搜索結(jié)果,還不算太糟糕,沒有出人命,也沒人受傷。但是當(dāng)你換一個行業(yè),比如在個性化醫(yī)療領(lǐng)域應(yīng)用大數(shù)據(jù)系統(tǒng)的時候,你可能會得到很差的預(yù)測結(jié)果,系統(tǒng)會很慢,而且有可能會出人命!如果應(yīng)用在交通、金融等領(lǐng)域,可能會傷害到很多人。我認(rèn)為這些問題實際上都是正在發(fā)生的,我認(rèn)為很多大數(shù)據(jù)系統(tǒng)都在做糟糕的預(yù)測,人們使用不必要的藥物,接受不必要的手術(shù),產(chǎn)生不必要的問題。
而且我認(rèn)為這種狀態(tài)實際上只會變得更糟,直到我們發(fā)展出一種科學(xué) 一套工程原則——可以允許我們思考數(shù)據(jù)。我喜歡用的一個類比是修建高樓和橋梁,幾千年來這些實踐讓人類社會更加先進發(fā)達(dá),但當(dāng)發(fā)生高樓倒塌或橋梁斷裂事故的時候,也會奪走人的生命。
***一門叫做土木工程的學(xué)科出現(xiàn)了。研究給定一個建筑的高度,給定明確的風(fēng)力大小,給定土壤等等,怎么修建建筑。但在大數(shù)據(jù)領(lǐng)域,我們沒有任何和這相似的東西。
我們有計算機科學(xué)、統(tǒng)計學(xué)、機器學(xué)習(xí),我們有很多新想法,我們很聰明,可以做任何事情。但是當(dāng)我們設(shè)計一個系統(tǒng)時,我們不知道錯誤率和時間,不知道在大規(guī)模情況下是否能有更好的決策,不知道這會隨著時間推移變得更差。而且當(dāng)實際構(gòu)建這樣的系統(tǒng)時還要面臨很多其他問題,比如很多數(shù)據(jù)是來自于很注重隱私的人,他們不想給你醫(yī)療數(shù)據(jù),特別是不想讓你公開給任何人。所以你不能只是把數(shù)據(jù)拿過來就分析,你必須考慮數(shù)據(jù)收集的問題,這里面也有管理風(fēng)險、帶寬限制等等。
這些問題全都要考慮到,因為它們會影響到統(tǒng)計推斷的質(zhì)量,它們會讓誤差增加,這是很常見的工業(yè)界對員工的要求,但是在學(xué)術(shù)界并沒有這樣的領(lǐng)域能提供這些解決方案,至少對我而言是這樣。我認(rèn)為這是下個世紀(jì)的挑戰(zhàn),不是把我們現(xiàn)有的想法拿過來直接應(yīng)用,而是作為科學(xué)來認(rèn)真思考和踐行。所以,這個問題上一個非常有幫助的表述是——計算思維和推斷思維的結(jié)合。
計算思維不是說知道如何編程和使用數(shù)據(jù)庫,而是一種思想。關(guān)于思考一個問題的抽象概念、模塊性、性能……一切你在計算機課堂上學(xué)到的東西,而不僅僅是編程。計算機背景的人應(yīng)該很熟悉這些,不熟悉的可能是推斷思維。那是已經(jīng)有超過兩百年歷史的統(tǒng)計學(xué)里的東西,不是一個新的領(lǐng)域,不是拿到數(shù)據(jù)就開始進行操作,像做數(shù)據(jù)庫的人那樣。
首先要考慮數(shù)據(jù)從哪來,數(shù)據(jù)背后是什么,數(shù)據(jù)獲取的過程中有什么問題,這就是推斷,還不嚴(yán)格屬于計算機科學(xué)的研究范疇。即便***得到的東西都是所謂的算法,你也必須思考背后的統(tǒng)計采樣和總體。所以其實我并不是太喜歡機器學(xué)習(xí)這個詞,我認(rèn)為并沒有什么新東西,還是統(tǒng)計思維。但是因為計算機科學(xué)家不太懂統(tǒng)計推斷的東西,所以他們?nèi)×艘粋€新名字叫做機器學(xué)習(xí)。
很多機器學(xué)習(xí)的工作都沒有考慮推斷、采樣以及總體,只是把機器學(xué)習(xí)模型應(yīng)用到數(shù)據(jù)卻沒有得到正確的答案,因為沒有考慮偏差、因果推斷等內(nèi)容。我認(rèn)為把兩者結(jié)合起來并且認(rèn)真研究是真正的挑戰(zhàn)。我我以前更多關(guān)注算法和系統(tǒng),過去幾年越來越像個理論家,逐漸更關(guān)注理論同時在某些方面也是關(guān)注系統(tǒng)。我在實驗室里設(shè)計系統(tǒng)的過程中看到了理論性的問題,所以我去尋找計算機和統(tǒng)計的理論,它們有什么概念可以怎么結(jié)合起來。所以我們發(fā)展了數(shù)據(jù)科學(xué)這個交叉學(xué)科,這并不容易。
統(tǒng)計決策理論里有損失函數(shù)和風(fēng)險,但它的基礎(chǔ)理論中沒有運行時間的概念,你可以去查看幾十年來成千上萬的統(tǒng)計決策相關(guān)的論文,你不會看到任何一篇提及了運行時間;同樣地,在計算機這邊你可以找到成千上萬的論文討論復(fù)雜度,各種復(fù)雜度理論,但是卻找不到關(guān)于統(tǒng)計風(fēng)險的文章。而利用統(tǒng)計風(fēng)險理論可以控制基于數(shù)據(jù)的錯誤率。此外,對統(tǒng)計估計問題的深刻理解不僅僅包括學(xué)習(xí)算法、還包括學(xué)習(xí)下界,學(xué)習(xí)你可能做的***的是什么,但是在計算機理論里卻沒有太多關(guān)于下界的。有倒是有,但是不多。
接下來的演講將進入我今天的重點主題,談?wù)勔恍╆P(guān)于“理論”(theory)的問題。在統(tǒng)計學(xué)“推算”(inference)概念上的“計算”(computational)限制,以及一些關(guān)于建立數(shù)據(jù)分析棧的問題。差不多是AMP實驗室里所做的事情,以及后續(xù)的叫RISE實驗室的一些發(fā)展動態(tài)。
我們已經(jīng)建立了一個系統(tǒng)來替代Spark。我想告訴大家,事實上這是我***向公眾宣布這個信息。這個打算替代Spark的工程正在進行中,這個替代會在1月份完成,而我在今天就宣布了。
我們現(xiàn)在來談?wù)勔幌盗袉栴},我使用一個私人數(shù)據(jù)分析的案例。這些隱私數(shù)據(jù)與你們是否相關(guān)可能并不重要,但它們的確引出了一些需要承載的問題。人們通常擁有數(shù)據(jù),并希望這些數(shù)據(jù)發(fā)揮作用,但他們也希望他們自己的數(shù)據(jù)能得到保護,比說誰知道他們的數(shù)據(jù)。
試想一下,接下來的幾年的醫(yī)療數(shù)據(jù),你們當(dāng)中的大多數(shù)人可能會得到你們的基因組序列,現(xiàn)在需要花費500美元去獲得它?;蛟S在五年或十年的將來,去找你的醫(yī)生時,醫(yī)生可能會對你說,在杯子里留一些你的血液或唾液,這樣我就能獲得你的基因。他會獲得你所有的三十億對基因,并且會存入數(shù)據(jù)庫,他們將用這些數(shù)據(jù)做什么呢?
去預(yù)測你可能將來會患的所有疾病,也會嘗試用于生物醫(yī)學(xué),以及生物信息學(xué)。他們未來會嘗試通過給定的基因找出相對應(yīng)的藥物,并且把基因在一些方面表現(xiàn)出的缺陷和相對應(yīng)的治療聯(lián)系起來。這是一個很好的機會,但也會帶來很多問題,特別是隱私問題。
如果我是一個生物醫(yī)學(xué)研究者,說我可以得到你的基因嗎?我知道你擁有這些基因。他會問我:首先,你要用我的這些基因數(shù)據(jù)做什么?你會怎樣保護我的基因數(shù)據(jù)?
如果我說這些數(shù)據(jù)是用于研究解決他的家族遺傳疾病,他會非常樂意并給我他的基因。如果我說是用于計算并確定保險費率,他也會認(rèn)為這是件好事情。他希望通過數(shù)據(jù)來保護自己。我可能會舍棄一些數(shù)據(jù)而僅使用其中一部分?jǐn)?shù)據(jù)來做研究。
如果我說我用這些數(shù)據(jù)來通過百度給你展示廣告,他可能會拒絕,表示他不喜歡我這樣使用他的數(shù)據(jù)。所以每個人都希望能夠控制自己的數(shù)據(jù),希望存在一種類似開關(guān)值參數(shù)的東西,來控制數(shù)據(jù)涉及隱私的程度。根據(jù)具體問題和有哪些保障來做出決定。所以為了把隱私考慮進去,這種事會成為數(shù)據(jù)堆的組建的一部分,而且這并不容易。
下面我將通過一些圖片來說明。我知道在坐諸位很多在研究大數(shù)據(jù),那么讓我們以大數(shù)據(jù)思維來進行下面的內(nèi)容。假設(shè)現(xiàn)在數(shù)據(jù)庫中是銀行數(shù)據(jù),我擁有一些人的年齡、身高、體重、地址,以及他們有多少存款,這是非常典型的銀行數(shù)據(jù)。
一個“詢問”(query)可能是:誰的存款最多?或者存款平均值是多少?我會得到一個答案,我把它叫做帶有波浪號的theta。如果你考慮到了數(shù)據(jù)庫中的個人隱私問題,你可能就會想:如何在數(shù)據(jù)庫中加入噪聲來保護人們的隱私,這樣就別人就不能掌握數(shù)據(jù)庫中的原始數(shù)據(jù),或者獲得儲蓄人的信息。
于是你將它放入一個渠道(channel)或者一個隨機的運算因子Q, 得到一個私有化數(shù)據(jù)庫。在這個數(shù)據(jù)庫中“詢問”同樣的問題時,你將會得到新的答案叫帶有乘方號(^)的theta,并且有理論能夠證明出來。
帶乘方號(^)的theta和帶波浪號的theta是十分接近的,在Q上計算結(jié)果的概率很高,以及所有的“詢問”和數(shù)據(jù)庫,所以目前這個計算理論有許多不同的版本,其中***的是差分隱私(differential privacy),應(yīng)用非常廣泛。這會讓數(shù)據(jù)庫中有用的數(shù)據(jù)增多,即給出一個問題,通過一種算法來解決,同時也有了理論上的保證。
這種方式有統(tǒng)計推理(inferential)的性質(zhì)嗎?當(dāng)我***次接觸這個領(lǐng)域時,我問我做數(shù)據(jù)庫研究的同事:“你在構(gòu)建框架時進行統(tǒng)計推理么”?他們說那是當(dāng)然,因為“詢問”可以是統(tǒng)計性質(zhì)的,比如可以計算平均值和標(biāo)準(zhǔn)差等等。但是我回答說 :“這并不是推理性統(tǒng)計(inferential statistics),這只是描述性統(tǒng)計(descriptive statistics)。”
他問那推理性統(tǒng)計是什么意思?我說我們需要交流一下了。這里我舉另外一個例子,一個來自醫(yī)療研究領(lǐng)域的案例。我有一些數(shù)據(jù)庫中的人員信息,有他們的年齡、身高、體重、以及他們服用和不服用治療藥物的壽命,這是典型的醫(yī)療數(shù)據(jù)。好,現(xiàn)在,我想不想保護他們的隱私?當(dāng)然想!這是他們的醫(yī)療數(shù)據(jù)!所以我會采用和前文講的一樣的保護數(shù)據(jù)隱私的方式。但是在銀行數(shù)據(jù)庫的例子里,我僅關(guān)注數(shù)據(jù)庫中的人。他們是我數(shù)據(jù)庫中的人,我希望知道他們的存款數(shù)額,他們的收入和支出情況,我僅僅對銀行中的人進行研究(做詢問)。
然而在醫(yī)療案例中,我可能對數(shù)據(jù)庫中的人絲毫不感興趣,事實上數(shù)據(jù)庫中的人可能已經(jīng)死亡或者離開……我不關(guān)心這些人。我采集數(shù)據(jù)只是為了根據(jù)這些數(shù)據(jù)來為新的病人進行評估和治療,所以我需要思考的是那些將來可能會納入數(shù)據(jù)庫但是現(xiàn)在還沒有被納入的病人的數(shù)據(jù)。這才是統(tǒng)計學(xué)的推理性思維——那些將來可能會納入數(shù)據(jù)庫但是現(xiàn)在還沒有的,我想研究的是他們。
這個思維不是從計算機科學(xué)里來的,而是從統(tǒng)計學(xué)推理思維來的。所以如果我是一個醫(yī)生,病人走進我的辦公室,我會根據(jù)他的年齡、身高、 體重來決定是否給他藥物。但是我不能僅僅靠猜測,我需要根據(jù)從其他人處獲得的舊數(shù)據(jù)做分析后進行判斷,所以說我并不只對數(shù)據(jù)庫里已經(jīng)有的人感興趣。
這就是統(tǒng)計學(xué)家的思維:他們面對一個數(shù)據(jù)庫時會思考“詢問”,比如數(shù)據(jù)庫樣本涉及的人員數(shù)量。他們必須對人員數(shù)量非常清楚,不能隨便說一個數(shù),而且它們必須成為采樣模型,可能是隨機的、可能是線性的、可能是分層的……這是他們必須思考的問題。
如果不這樣做就得不到算法。你不能有個數(shù)據(jù)庫就直接想用什么算法、怎么處理數(shù)據(jù),這并不是統(tǒng)計學(xué)推理思維。你先得思考數(shù)據(jù)是怎么排布陣型的,然后思考過后你才能得到算法,所以統(tǒng)計學(xué)家會對人數(shù)(P)進行一個“詢問”,詢問那些將來可能會納入數(shù)據(jù)庫、但是現(xiàn)在還沒有被納入的病人的數(shù)據(jù),接下來才能得到答案,我們把它叫做theta。統(tǒng)計學(xué)家證明了總體theta和樣本的theta有很大概率在所有的采樣(S)、所有的查詢(query)和所有可能的分布下都很接近。這是統(tǒng)計學(xué)做的事情,是我們過去30年甚至更久一直在做的事情。
新的問題在于要把兩個概念結(jié)合起來,把推理性和計算性結(jié)合起來。假設(shè)我們采集了一堆數(shù)據(jù),我想保護數(shù)據(jù)庫里的人的隱私,即在收集數(shù)據(jù)時給他們一個保證。但是我也需要思考準(zhǔn)備用數(shù)據(jù)來做推測的那一群應(yīng)用人群,我需要證明總體theta和樣本theta很接近,在S、Q等一系列方面有很高的重合概率。這就是這種新的挑戰(zhàn)。而且這不只是在隱私這一領(lǐng)域里的事情,這種挑戰(zhàn)存在于很多領(lǐng)域里,比如(數(shù)據(jù))壓縮,你可能想研究:如果把一群數(shù)據(jù)壓縮至渠道Q來發(fā)展一個壓縮了的數(shù)據(jù)庫,因為我有太多的數(shù)據(jù),即便在數(shù)據(jù)被壓縮以后,我依然想對總體數(shù)據(jù)做出可靠的推測。
我的一位學(xué)生Yuchen Zhang今天正好在場,他是做這方面研究的,在“關(guān)于數(shù)據(jù)推測和壓縮方面”寫了幾篇很不錯的文章。加州伯克利大學(xué)在這個隱私問題上做了不少研究。我今天只簡單講一下這個。這是一個典型的隱私問題引導(dǎo)圖,這里是隱私化數(shù)據(jù),穿過一個渠道后這是Z值,是你愿意公開給統(tǒng)計學(xué)家的,他們通過這個計算某種估量函數(shù),數(shù)學(xué)方面就一張幻燈片,這里的細(xì)節(jié)我就不講了,于是我們建立了一個有限制性的優(yōu)化問題,這個問題有種鞍點的感覺,也有更進一步的下確界。
這個只是給觀眾里的專家看看,從紅色地方開始,損失量的期望值的極限,在統(tǒng)計學(xué)里叫做***風(fēng)險,藍(lán)色部分是估計函數(shù)的下確界,叫做極小極大風(fēng)險。然后我們新加的部分是所有渠道的下確界,在這個叫alpha的保護界限,隱私程度這叫在alpha級的微分隱私度。加上那個以后我們現(xiàn)在有了一個大型優(yōu)化問題,一定空間 、一定復(fù)雜度、一定數(shù)學(xué)特性,我們做了數(shù)學(xué)演算來解決這個問題,最終得到了不少答案,不過我們算出了一個很簡單的結(jié)果,得到了一個沒有隱私度的統(tǒng)計率。
觀察數(shù)據(jù)點的數(shù)量n,然后把n替換成n乘以alpha的平方除以alpha是微分隱私參數(shù),是數(shù)據(jù)的維度,這樣就得到了一個新的式子。這個新的式子通過原式的小小轉(zhuǎn)變就能得到,目前我們真正地把隱私和統(tǒng)計學(xué)結(jié)合在了一起。它們就真正的在一個式子里了,這個式子包含一些統(tǒng)計變量:數(shù)據(jù)點的數(shù)量、維度參數(shù)和一個計算變量alpha,即微分隱私參數(shù),我們有幾篇論文,如果你對這類問題感興趣的話可以看看。
以上只是結(jié)合隱私問題來做推測的一個例子,更難的問題在于把推測和計算和一些更廣的東西結(jié)合在一起。
計算就是萬物是不是?圖靈告訴我們它無所不能,機器學(xué)習(xí)也只不過是計算的一種例子。我們能夠說:我可以在一定時間里和一定的內(nèi)存限制下,達(dá)到一定精準(zhǔn)度和一定的問題,一定的估計函數(shù)和機器學(xué)習(xí)算法,這些都是計算機科學(xué)家做的事情。像談?wù)摃r間和空間等等,我做的就是加入統(tǒng)計誤差的分析和數(shù)據(jù)的風(fēng)險和量等統(tǒng)計學(xué)上的東西,搞出一套理論把計算機和統(tǒng)計結(jié)合起來。但我想說這是不可能的,目前我們沒有這個能力,而且我認(rèn)為圖靈復(fù)雜度(Turing Complexity)不是向前發(fā)展的,而且很顯然這不是發(fā)展趨勢。***化領(lǐng)域的communication復(fù)雜度這些這些可能會有用,它們中的某一個可能是最終的解決方案。這個領(lǐng)域需要新的想法,我們需要一種新的計算的概念。
圖靈的計算概念太籠統(tǒng)了,什么都是,但是我們不需在一個機器里做所有的事情,尤其是對于我們很多的運作器來說,改了一點日期它們不會改變太多,它們有很好的穩(wěn)定性或者說利普希茨性質(zhì)(Lipschitz)。我們可以想到一些有利普希茨性質(zhì)(Lipschitz)計算理論,這些理論不會變化太多,圖靈復(fù)雜(Turing Complexity)就沒有這種性質(zhì),一點點改變就能完全改變得到的答案。你在計算機領(lǐng)域會很擔(dān)心這一點,但在我們統(tǒng)計學(xué)領(lǐng)域并不需要擔(dān)心那么多!
所以也許,我們可以發(fā)展一個更限制性的“計算”版本,也就是說更適合統(tǒng)計“推測”。這張ppt展示了在這個問題上近10年的探究,沒有一個是解決方案,但是它們都是將計算和統(tǒng)計學(xué)以各種方式結(jié)合在一起的嘗試。最早的一個方式是把計算和幾何結(jié)合在一起,然后把幾何和統(tǒng)計結(jié)合在一起,***從結(jié)合到推測。這些是計算和幾何之間凸松弛和運行時間已經(jīng)存在的關(guān)系,關(guān)于它們是有研究的,這樣我們發(fā)展了一套平行理論。將幾何與統(tǒng)計結(jié)合在一起:簡單講,當(dāng)你把一個問題“弛化”時,運行時間就減少了,這是已知的,然后我們證明了當(dāng)你進一步“弛化”這個問題的時候,統(tǒng)計學(xué)風(fēng)險就進一步提高,所以運行時間和統(tǒng)計風(fēng)險程度是呈負(fù)相關(guān)的。我們也研究過并發(fā)控制這個對數(shù)據(jù)庫的人員來說很熟悉的概念,他們用這個來控制統(tǒng)計風(fēng)險和時間的權(quán)衡,我們在***化Oracle的***范圍上做過很多研究,包括***化率,也得到了很多令人興奮的成果。我們也有很多在二次抽樣上的研究,你取更小的數(shù)據(jù)集嘗試對它們作影響,然后把它們重新定位到大數(shù)據(jù)集里。
這是一個計算機里很自然的概念,叫做divide和conquer,能夠引導(dǎo)出真正的困難的統(tǒng)計學(xué)。比如置信區(qū)間,如果我通過某個較大的因子減少數(shù)據(jù)量,置信區(qū)間會變得更大。如果我用小量的數(shù)據(jù),我會得到錯誤的答案,我需要在我把規(guī)模調(diào)回的時候通過某種方式糾正錯誤,搞清楚這個怎么做是不容易的。
以上是這次講座的前三分之二的內(nèi)容,這些是關(guān)于理論的?,F(xiàn)在我們來說一說系統(tǒng),這個會相對短一些。早些時候我是一個實驗室的聯(lián)合***研究員,從事數(shù)據(jù)分析開發(fā)系統(tǒng)。嘗試把統(tǒng)計學(xué)和機器學(xué)習(xí)的想法結(jié)合在一起。我們有一定成果,但是我們還是處于中級階段,這個叫AMPLab的實驗項目大概一個月前結(jié)束了,我們正在籌備稱為RISE Lab的新實驗室,Ion Stoica是新實驗室的負(fù)責(zé)人,我也是***研究員之一。
我會簡要介紹一下新的實驗室。首先,這個實驗室主要是企業(yè)贊助的。我們大學(xué)給予我們非常少,基本上沒有任何支持。州政府也沒有提供任何支持,主要原因是加州的財政危機。因此我們開始接觸企業(yè),尋求支持,我們的募款非常成功,這些企業(yè)給予了我們極大的支持來運營這個實驗室,這是我們能夠運營這個項目長達(dá)5年的原因。我記得贊助企業(yè)中有幾家中國公司,我記得華為在某個時候參與了進來,在這張片子上的企業(yè)是我們做這張片子時候已經(jīng)參與進來的。初始想法是結(jié)合我所擅長的算法——機器學(xué)習(xí) ,以及我同事所擅長的機器和云計算及其他領(lǐng)域,一起思考人類數(shù)據(jù)和眾包。這是我們的基本思路。
我們是分布式計算軟件增長的貢獻力量之一,現(xiàn)在這方向的生態(tài)系統(tǒng)已經(jīng)得到極大的拓展,我們實驗室開發(fā)的Spark已是這個生態(tài)系統(tǒng)中的重要部分。Spark誕生的真實原因是我組的機器學(xué)習(xí)研究員對Hadoop非常不滿意,他們抱怨很多。我們一開始讓他們使用Hadoop來進行更大規(guī)模的測試,研究員使用后覺得Hadoop對機器學(xué)習(xí)非常不適用,因為大部分機器學(xué)習(xí)(算法)需要迭代,輸入數(shù)據(jù),處理一小部分?jǐn)?shù)據(jù),對參數(shù)作出一點修改,重新處理數(shù)據(jù),然后再做一點修改,這個過程需要不斷重復(fù)。
對于Hadoop來說,數(shù)據(jù)需要經(jīng)常從磁盤輸出然后存儲回去,每一步都需要需要重復(fù)映射和化簡,然后回到磁盤讀取數(shù)據(jù)。這個過程太慢了,一名研究系統(tǒng)的學(xué)生Matei (譯注:Matei Zaharia)聽到我們的討論,幫助我們開發(fā)了新系統(tǒng),讓大部分中間結(jié)果緩存而不是寫入磁盤,這樣Spark就誕生了。這是AMPLab棧的Spark生態(tài)系統(tǒng)之一(譯注: 伯克利數(shù)據(jù)分析棧)。在最下面是儲存層和資源虛擬化層,不過我們主要研究往上的層,Spark Streaming支持流式數(shù)據(jù)處理,支持誤差計算和抽樣運作,也支持各種語言和圖像處理。
Splash是一種并行計算框架,由今天也在座的You Chan開發(fā),他也開發(fā)了其他機器學(xué)習(xí)相關(guān)的工具。我也會簡要介紹模型服務(wù)器Velox,這個生態(tài)系統(tǒng)大概一年前的狀況,過去這一年它持續(xù)演化,結(jié)果非常成功。部分原因是因為這是學(xué)術(shù)界開發(fā)的,非常多企業(yè)發(fā)布過數(shù)據(jù)分析軟件棧,IBM Google 微軟都發(fā)布過,基本上它們都沒能引起大家的使用興趣,沒有人使用它們的工具,這軟件(Spark)的使用比那些企業(yè)的工具廣泛得多 ,而Spark的開發(fā)只需要幾名學(xué)者,因為其他(獨立)研究員信任學(xué)術(shù)界。
學(xué)術(shù)界不會突然讓他們支付軟件,不會隨意改動軟件,不會為軟件建立商業(yè)模式而研究人員成為中間一份子,所以,學(xué)術(shù)人員是絕對有能力與大企業(yè)競爭的。你可以接觸到各種資源,沒有人真正信任大企業(yè),不過他們會信任你!
接下來讓我簡單解釋這個迭代問題。我將在幾分鐘內(nèi)完成。我剛才所介紹的都在這個圖上了。這個是經(jīng)典的映射/簡化原理,希望你們都已經(jīng)知道。MapReduce會輸入數(shù)據(jù),通過并行地執(zhí)行一個映射步驟,多線程多服務(wù)器地進行計算,然后執(zhí)行一個簡化步驟,然后不斷重復(fù)。這個做法成本很高,因此Spark的原理是把每個階段的輸出存儲起來,形成緩存,這樣就不需要總是存到磁盤。
這想法聽起來容易,不過要做成一個可以規(guī)?;卣沟南到y(tǒng)需要很多人大量的工作,所以Spark后有什么大動作?
過去幾個月我們都在進行一個新項目,這項目并不是通過研究系統(tǒng)的學(xué)生完成的。我的兩名學(xué)生主要負(fù)責(zé)這項目,之后他們也能研究系統(tǒng)了,他們是Philipp Moritz 和 Robert Nishihara,他們也和我同事Ion Stoica合作。Ion是系統(tǒng)領(lǐng)域的專家,我們把這系統(tǒng)命名為Ray,一月份將會公布beta版本,希望大家可以開始使用。簡單說明一下為什么我們想要做這項目——我們對這項目感興趣主要是因為我們是機器學(xué)習(xí)的研究員,機器學(xué)習(xí)中許多問題遠(yuǎn)不止于數(shù)據(jù),其中非常多問題與研究、優(yōu)化和線性代數(shù)相關(guān),Spark在這些方面非常低效,尤其是在和線性代數(shù)方面,MPS比其他系統(tǒng)運行快很多,不過沒有人喜歡使用,在上面非常難編程,它們也不適用于現(xiàn)在通用的并行硬件。這些是我們希望解決的問題,我們希望能夠在單機和集群上運行同樣的代碼 ,這是考慮因素之一。
同樣,我們也不想在分布式上修改代碼,我們希望系統(tǒng)可以支持大量小任務(wù) ,這意味著不同任務(wù)間更多的數(shù)據(jù)共享。因此,我們不再使用左邊的這個經(jīng)典映射/簡化模型,這個更像是數(shù)據(jù)流模型,當(dāng)他們接收到所有需要的信息后 ,任務(wù)即可執(zhí)行。這模式中不存在同步屏障,這非常重要,要實現(xiàn)這想法需要在任務(wù)排程上做很多工作,我們在排程上下了很大功夫,這做法明顯有很多優(yōu)點,如果你嘗試把神經(jīng)網(wǎng)絡(luò)放到Spark上,同步屏障問題會非常讓人頭疼,你只能執(zhí)行一部分任務(wù) ,然后等所有其他任務(wù)執(zhí)行完畢才可以到下一層。在這個系統(tǒng)上,實際上就是數(shù)據(jù)流架構(gòu)在藍(lán)色的節(jié)點完成后,紅色的節(jié)點即可執(zhí)行,在整個網(wǎng)絡(luò)中逐步執(zhí)行任務(wù),這例子是在Python上完成的。目標(biāo)是對Python代碼進行非常少的改動就可以轉(zhuǎn)換為分布式。在這代碼上,每隔一定step size執(zhí)行運算,返回結(jié)果以不同的step size并行運算。這基本上就是機器學(xué)習(xí)的經(jīng)典做法。
看這個新的命令array.remote,這指令了系統(tǒng)去利用分布式環(huán)境啟動排程器,在后端運行所有的機器學(xué)習(xí)。我們從系統(tǒng)架構(gòu)方面看一下,運行中產(chǎn)生了本地對象和全局變量,對應(yīng)了本地和全局的排程器,以及所有相關(guān)因素的關(guān)系,這是整個架構(gòu)的基本原理。
基本上,這是已經(jīng)存在的機器學(xué)習(xí)分布式Python版本,這系統(tǒng)已經(jīng)開發(fā)完畢了,在很多標(biāo)準(zhǔn)上遠(yuǎn)快于Spark。這就是下一代的大數(shù)據(jù)處理工具,實驗室的另一個項目與模型服務(wù)有關(guān)。在很多情況下,我們建立了很大的模型,輸入了海量數(shù)據(jù),一切都變得太大后,就難以獲得系統(tǒng)的實時回應(yīng),因此,我們需要能夠同時運行大模型,以及快速運行與大模型相關(guān)的小模型的系統(tǒng),我們可以在邊緣上快速對小模型迭代,然后慢慢地把信息轉(zhuǎn)移回大模型。
某程度上這類似人腦的運作,我們每天產(chǎn)生少量記憶,形成短期記憶,然后轉(zhuǎn)移到長期記憶里,這個系統(tǒng)可以解決很多這類型的問題,我們需要以簡化的本地模型作出快速決策,然后逐步整合到大模型中。
我快要結(jié)束演說了,這個話題就差不多了,我們需要注意一下這個架構(gòu) ,這里面有一邊是學(xué)習(xí)板塊,建立大模型,然后是我們稱為的推理板塊,這版塊可以基于當(dāng)前較小的時間尺度調(diào)整模型。這個話題就這樣吧!
回到主題上,在過去10年,我的工作和發(fā)表成果主要和抽象的數(shù)學(xué)問題相關(guān)。如果你對理論問題感興趣,你該感到興奮!這是個充滿新理論問題的領(lǐng)域,非同步、分布式、流式數(shù)據(jù)等等,都和行為系統(tǒng)相關(guān),大量的理論性問題。你還需要控制統(tǒng)計誤差,對于理論研究員來說這是新問題,我們可以真正地建立系統(tǒng),獲取數(shù)據(jù),嘗試各種處理、實現(xiàn)模型。這是從所未有的合作方式。
再次感謝邀請我到這里來演講!
【本文是51CTO專欄機構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】