關(guān)閉

澳際學(xué)費(fèi)在線支付平臺(tái)

百度前員工在美國(guó)讀博這五年對(duì)深度學(xué)習(xí)的思考

2017/02/12 11:42:40 澳際教育 編輯: 瀏覽次數(shù):1909 移動(dòng)端
虎嗅注:本文作者李沐,前百度員工,大規(guī)模機(jī)器學(xué)習(xí)和優(yōu)化算法等方面的大牛,在別人繼續(xù)在職場(chǎng)高歌猛進(jìn),或者創(chuàng)業(yè)淘金的時(shí)候,毅然決然選擇了另一條路:跑去卡內(nèi)基梅隆大學(xué)(Carnegie Mellon University,簡(jiǎn)稱CMU)讀博士,師從機(jī)器學(xué)習(xí)專家Alex Smola,并且一去就是五年。

他在今天發(fā)表在知乎上的文章中說,“人一生要工作五十年,為什么不花五年來(lái)追求下理想和情懷呢?”倒是也沒耽誤,在完成了最后一個(gè)博士報(bào)告后,沒有留戀,就踏上了回國(guó)的航班。

他說:“回想過去的五年,是折騰的五年,也是自我感悟和提升的五年。這里我嘗試記錄這五年主要做過的事情和其中的感想,希望對(duì)大家有所啟發(fā)?!币韵率撬?000多字長(zhǎng)文,希望對(duì)每一個(gè)看到的人都有啟發(fā),讓你的情懷和理想都更豐滿一些。

前言

12年8月提著一個(gè)行李箱降落在匹茲堡機(jī)場(chǎng)。沒找住的地方,也不知道CMU應(yīng)該怎么去。對(duì)未來(lái)一片迷茫,但充滿樂觀。 現(xiàn)在,剛完成了博士期間最后的一場(chǎng)報(bào)告,在同樣的機(jī)場(chǎng),不過是在等待離開的航班。

回想過去的五年,是折騰的五年,也是自我感悟和提升的五年。這里我嘗試記錄這五年主要做過的事情和其中的感想,希望對(duì)大家有所啟發(fā)。

第0年:3/11-8/12

我第一次申請(qǐng)美國(guó)的博士是在11年,但拿到的offer并沒有特別合適的導(dǎo)師,于是就北上投奔文淵去了。 我當(dāng)時(shí)在百度商務(wù)搜索部門做廣告的點(diǎn)擊預(yù)估。具體是使用機(jī)器學(xué)習(xí)來(lái)預(yù)測(cè)一個(gè)廣告是不是會(huì)被用戶點(diǎn)擊。 這時(shí)候離“大數(shù)據(jù)”這個(gè)詞流行還有兩年,但百度那時(shí)候的數(shù)據(jù)即使現(xiàn)在來(lái)看仍然是大的。我的任務(wù)是如何高效的利用數(shù)百臺(tái)機(jī)器快速的在數(shù)十T的數(shù)據(jù)上訓(xùn)練出模型。

當(dāng)時(shí)產(chǎn)品用的算法基于LBFGS,我于是想是不是可以換個(gè)收斂更快的算法。沒幾天就找到個(gè)不錯(cuò) 。但實(shí)現(xiàn)上發(fā)現(xiàn)了各種問題,包括性能,收斂,和穩(wěn)定性。而且那時(shí)有的就是一個(gè)裸的Linux和很老版本的GCC,什么都是需要從頭開始寫?;舜罅繒r(shí)間做系統(tǒng)優(yōu)化,算法改動(dòng),和線上實(shí)驗(yàn),最后一年后在整個(gè)廣告流量上上了線。

現(xiàn)在再回顧會(huì)覺得整個(gè)一年時(shí)間都在打磨各種細(xì)節(jié)上,有時(shí)候?yàn)榱?%的性能提升花上上千行代碼。這些都導(dǎo)致算法過于復(fù)雜,有過度設(shè)計(jì)之嫌。但深入各個(gè)細(xì)節(jié)對(duì)個(gè)人能力提升很大,而且很多遇到的問題成為了之后研究方向的來(lái)源。一些算法上的思考曾寫在這里,當(dāng)時(shí)候深度學(xué)習(xí)剛剛出來(lái),冥冥中覺得這個(gè)應(yīng)該是大規(guī)模機(jī)器學(xué)習(xí)的未來(lái),不過真正開始跟進(jìn)是好幾年以后了。

11年12月中的時(shí)候突然心血來(lái)潮隨手把材料重新寄了一遍,就選了CMU和MIT,結(jié)果意外收到了CMU的offer。有天在百度食堂同凱哥(余凱)和潼哥(張潼)吃飯,我說收了CMU offer,在糾結(jié)去不去。他們立馬說去跟Alex Smola啊,他要加入CMU了,我們給你引薦下。

記得是離開的前一天才開始打包行李,早上去公司開完會(huì),中午離職,跟小伙伴打招呼說出個(gè)國(guó),然后就奔機(jī)場(chǎng)了。那天北京天氣特別好,完全不記得前一天霧霾剛爆了表。

第一年:9/12-8/13

第一年的主要事情是熟悉環(huán)境和上課。CMU課程比較重,博士需要學(xué)8門課,每門課工作量巨大。而且要求做兩門課助教,做助教比上課更累。

這一年上的課中對(duì)我最有用的是“高級(jí)分布式系統(tǒng)”。之前在上交ACM班的時(shí)候已經(jīng)學(xué)過很多質(zhì)量都還不錯(cuò)課,純知識(shí)性的課程一般對(duì)我?guī)椭淮?。但這門課主要是讀論文,然后大家討論。不僅僅是關(guān)于知識(shí),很多是對(duì)設(shè)計(jì)理念的領(lǐng)悟。大家知道對(duì)于系統(tǒng)而言,設(shè)計(jì)是一門藝術(shù)而不是科學(xué),這是設(shè)計(jì)者審美和哲學(xué)理念的體現(xiàn)。同時(shí)系統(tǒng)界歷史也是由一波又一波的潮流組成,了解歷史的發(fā)展以及其中不斷重復(fù)的規(guī)律非常有意義。

那年這門課上課老師是Hui Zhang(神人之一,20多歲就在CMU任教了,學(xué)生包括了Ion Stoica,他是Spark作者M(jìn)atei的導(dǎo)師),他有非常好的大局觀,對(duì)于“Why”這個(gè)問題闡述非常到位。我是通過這門課才對(duì)分布式系統(tǒng)有了比較清晰的認(rèn)識(shí)。兩年之后我偶然發(fā)現(xiàn)我的一篇論文也在這門課的閱讀列表里了,算是小成就達(dá)成 。

除了上課,更重要是做研究。我去CMU的時(shí)候Alex那時(shí)還在Google,而且沒經(jīng)費(fèi),所以把我丟給了 Dave Andersen。于是我有了兩個(gè)導(dǎo)師,一個(gè)做機(jī)器學(xué)習(xí),一個(gè)做分布式系統(tǒng)。

前面半年都是在相互熟悉的過程。我們每周會(huì)一起聊一個(gè)小時(shí)。前半年因?yàn)锳lex不在,所以我們只能視頻。Alex那邊信號(hào)經(jīng)常不好,而且他有德國(guó)和澳大利亞口音,外加思維跳躍,經(jīng)常我聽不懂他說啥只能賣萌傻笑。還是靠著Dave不斷的打字告訴我Alex說了什么才度過了前幾次的會(huì)。

兩個(gè)導(dǎo)師風(fēng)格迥異。Alex是屬于反應(yīng)特別快,通常你說一點(diǎn),他已經(jīng)想好了接下來(lái)十點(diǎn),要跟上他節(jié)奏很難。一般拋出問題的時(shí)候他就想好了好幾個(gè)解決方法。這時(shí)候要證明自己的想法比他的更好不容易,需要大量的溝通和實(shí)驗(yàn)數(shù)據(jù)支撐。我想我大概是花了兩年證明了在某些方向上我的方案一般更好,所以這時(shí)候他就不那么hands-on了。

Dave不會(huì)給很多想法,但會(huì)幫助把一個(gè)東西理解透,然后講得很清楚。因?yàn)槲已芯糠较蛑饕菣C(jī)器學(xué)習(xí)上,基本上前兩年基本都是我在教Dave什么叫機(jī)器學(xué)習(xí),而且是盡量不用公式那種教法。

我的第一個(gè)研究工作是關(guān)于如果劃分?jǐn)?shù)據(jù)和計(jì)算使得減少機(jī)器學(xué)習(xí)求解中的網(wǎng)絡(luò)通訊量。Alex體現(xiàn)了他的強(qiáng)項(xiàng),幾分鐘就把問題歸納成了一個(gè)優(yōu)化問題,然后我們?nèi)髯蕴岢鲆粋€(gè)解法。我做了做實(shí)驗(yàn)發(fā)現(xiàn)Dave的算法更好。接下來(lái)兩個(gè)月把算法做了很多優(yōu)化,然后又做了點(diǎn)理論分析就把論文寫了。

可惜這個(gè)想法似乎有點(diǎn)超前,雖然我們一遍又一遍的改進(jìn)寫作,但投了好幾個(gè)會(huì)審稿人就是不理解,或者覺得這個(gè)問題不重要。那個(gè)時(shí)候?qū)W術(shù)界已經(jīng)開始吹噓“大數(shù)據(jù)”,但我覺得其實(shí)大部分人是不懂的,或者他們的“大數(shù)據(jù)”仍然是幾個(gè)GB的規(guī)模,烤U盤需要十來(lái)分鐘的那種。

這是我在CMU的一個(gè)工作,我覺得挺有用,但卻是唯一沒能發(fā)表的。

當(dāng)時(shí)跟我坐同一個(gè)辦公室的是Richard Peng,他做的是理論研究。我經(jīng)常跟他討論問題,然后有了些想法合作了一個(gè)工作。大體思想是把圖壓縮的快速算法做到矩陣的低秩近似上。這個(gè)工作寫了三十頁(yè)公式但沒有任何實(shí)驗(yàn),我主要當(dāng)做寫代碼間隙的悠閑娛樂,不過運(yùn)氣很好的中了FOCS。

坦白說我不是特別喜歡純理論這種,例如在bound的證明中很多大量的項(xiàng)直接丟掉了,導(dǎo)致我覺得bound特別的近似。對(duì)于做系統(tǒng)的人來(lái)說,最后拼的是常數(shù)。這個(gè)工作中這種大開大合的做法我覺得很不踏實(shí)。所以我覺得以后還是應(yīng)該做更實(shí)在點(diǎn)的東西。

在CMU回到了去百度前的一周七天工作無(wú)休的節(jié)奏。每周至少80個(gè)小時(shí)花在學(xué)校。如果累了就去健身房,我一般晚上12點(diǎn)去。不僅是我一個(gè)人,大家都很努力,例如凌晨的健身房,早3點(diǎn)的辦公室,四處都可以見到中國(guó)或者印度學(xué)生。我那時(shí)候的室友田淵棟花在學(xué)校的時(shí)候比我多很多。

那一陣子有讀了很多關(guān)于優(yōu)化的文章。其中對(duì)我啟發(fā)最大的是Bertsekas寫于80年代末的那本關(guān)于分布式計(jì)算的書。此書可以認(rèn)為是MIT控制領(lǐng)域黃金一代研究成果總結(jié),換到現(xiàn)在仍然不過時(shí)。

受啟發(fā)我轉(zhuǎn)去研究異步算法,就是分布式下不保證數(shù)據(jù)的及時(shí)性來(lái)提升系統(tǒng)性能。我基于在百度期間做的算法,做了一些改進(jìn)和理論分析,然后投了NIPS。

投完NIPS就動(dòng)身去了Google Research實(shí)習(xí)。那時(shí)候Google Brain成立不久,在“宇宙的答案”42樓,包括Jeff Dean,Geoffrey Hinton,Prabhakar Raghavan好些大牛擠在一起,加起來(lái)論文引用率能超80萬(wàn)。

Alex跟我說,你去讀讀Jure Leskovec的文章,學(xué)學(xué)人家怎么講故事。我在Google也嘗試用了些用戶GPS數(shù)據(jù)來(lái)對(duì)用戶行為建模??墒菍懳恼碌臅r(shí)候怎么也寫不出Jure的那種故事感,發(fā)現(xiàn)自己不是那塊料。這篇文章因?yàn)橛昧擞脩魯?shù)據(jù),恰逢Snowden讓大家意識(shí)到隱私的重要性,歷經(jīng)艱辛刪了一半結(jié)果Google才允許發(fā)出來(lái)。有些累覺不愛。

不過在Google期間我主要時(shí)間花在研究?jī)?nèi)部代碼和文檔上。Google的基礎(chǔ)架構(gòu)很好,文檔也很健全。雖然沒有直接學(xué)到了什么,但至少是開了眼界。

第二年:9/13-8/14

這學(xué)期上了Tuomas Sandholm的機(jī)制設(shè)計(jì),此乃另一大神,例如最近德州撲克贏了專業(yè)選手,之前開公司也賣了上億。不過這門課我是完完全全沒學(xué)懂,連承諾的課程大作業(yè)都沒怎么做出來(lái)。之后的兩年里我一遇到Tuomas他都會(huì)問下有什么進(jìn)展沒。我只能遠(yuǎn)遠(yuǎn)看見他就繞開。

NIPS被拒了,發(fā)現(xiàn)審稿人不懂線程和進(jìn)程的區(qū)別,有點(diǎn)沮喪。隔壁實(shí)驗(yàn)室一篇想法類似但簡(jiǎn)單很多的論文倒是中了oral,所以那陣子壓力很大。Alex安慰說這種事情常有發(fā)生,看淡點(diǎn),然后舉了很多自己的例子。

之后想了想,一篇好文章自然需要有足夠多的“干貨”,或者說信息量, 但一篇能被接受的文章需要滿足下面這個(gè)公式:

文章的信息量 / 文章的易讀性 < 審稿人水平 * 審稿人花的時(shí)間
對(duì)于機(jī)器學(xué)習(xí)會(huì)議,因?yàn)橥陡辶看?,所以審稿人很多自然平均水平就?huì)下降。而且很多審稿人就花半個(gè)小時(shí)到一個(gè)小時(shí)來(lái)讀文章,所以公式右邊數(shù)值通常是很小,而且不是我們能控制。

如果文章的信息量不大,例如是改進(jìn)前面工作或者一些簡(jiǎn)單的新想法,那么公式成立的概率很大。而對(duì)于信息量大的文章,就需要努力提升易讀性,包括清晰的問題設(shè)定,足夠的上下文解釋等等。而前面投的那篇NIPS,以及更早的那個(gè)被拒工作,就是因?yàn)槲覀兗僭O(shè)了審稿人有足夠多的相關(guān)專業(yè)知識(shí),而我們?nèi)M(jìn)了太多干貨使得大家都讀糊涂了。

即使對(duì)于已經(jīng)發(fā)表的文章,上面那個(gè)公式同樣可以用來(lái)衡量一篇論文的引用率。例如經(jīng)常見到干貨很多的文章沒有什么人引用,而同時(shí)期的某些工作就是考慮了其中簡(jiǎn)單特殊情況結(jié)果被大引特引。

接下來(lái)的半年我主要在做一個(gè)通用的分布式機(jī)器學(xué)習(xí)框架,是想以后做實(shí)驗(yàn)方便些。名字就叫parameter server,沿用了Alex 10年論文提出的名字?;撕芏鄷r(shí)間在接口設(shè)計(jì)上,做了好幾個(gè)版本實(shí)現(xiàn),也跑了些工業(yè)界級(jí)別的大規(guī)模的實(shí)驗(yàn)。

不過真正花了我大量時(shí)間的是在寫論文上。目標(biāo)是把這個(gè)工作投到OSDI上,OSDI是系統(tǒng)界兩大會(huì)之一。我們預(yù)計(jì)審稿人跟Dave兩年前狀態(tài)差不多,不會(huì)有太多機(jī)器學(xué)習(xí)和數(shù)學(xué)背景,所以需要盡量的少用公式。整整一個(gè)月就花在寫論文上,14頁(yè)的文章滿滿都是文字和示意圖。不過努力沒有白費(fèi),最終論文被接受了。隨后又花了好幾周準(zhǔn)備大會(huì)報(bào)告上。相對(duì)于平時(shí)花一周寫論文,兩三天準(zhǔn)備報(bào)告,這次在寫作和報(bào)告水平上有了很大的提升。沒有放進(jìn)去的公式和定理投了接下來(lái)的NIPS,這次運(yùn)氣很好的中了。

有了文章后稍微心安了點(diǎn)可以更自由的做些事情。

寒假回了趟國(guó),跑去百度找了凱哥和潼哥。潼哥說他最近有個(gè)想法,于是快糙猛的把實(shí)驗(yàn)做了然后寫了篇論文投了KDD。同時(shí)期Alex一個(gè)學(xué)生也把他一個(gè)一直想讓我做但我覺得這個(gè)小trick不值得我花時(shí)間的想法投了KDD,結(jié)果中了最佳論文。作報(bào)告那天我在的會(huì)場(chǎng)稀稀疏疏幾個(gè)人,他們隔壁會(huì)場(chǎng)人山人海。這個(gè)使得好長(zhǎng)一段時(shí)間我都在琢磨是不是還是要跟著導(dǎo)師走比較好。

那時(shí)凱哥在百度搞少帥計(jì)劃,覺得蠻合適就加入了。這時(shí)凱哥正帶著一大幫兄弟轟轟烈烈的搞深度學(xué)習(xí),我自然也是跳坑了。試過好幾個(gè)想法后,我覺得做做分布式的深度學(xué)習(xí)框架比較對(duì)胃口。我挑了CXXNet作為起點(diǎn),主要是因?yàn)楦炱姹容^熟。同時(shí)也慢慢上手跑一些Alexnet之類的實(shí)驗(yàn)。

我是因?yàn)樯賻浻?jì)劃才開始開始做深度學(xué)習(xí)相關(guān)項(xiàng)目,凱哥也很支持我做開源開發(fā)回饋社會(huì)而不是只做公司內(nèi)部的產(chǎn)品。但在少帥期間并沒有做出什么對(duì)公司有幫助的事,很是慚愧。

第三年:9/14-8/15

回CMU后Alex看見深度學(xué)習(xí)這么火,說我們也去買點(diǎn)GPU玩玩。但我們比較窮,只能去newegg上掏點(diǎn)便宜貨。這個(gè)開啟了轟轟烈烈的機(jī)器折騰之旅。整個(gè)一年我覺得我都在買買買裝裝裝上。最終我們可能就花了小幾萬(wàn)刀攢出了一個(gè)有80塊GPU的集群?,F(xiàn)在想想時(shí)間上花費(fèi)不值得,而且為了圖便宜買了各種型號(hào)的硬件導(dǎo)致維護(hù)成本高。但當(dāng)時(shí)候樂在其中。具體細(xì)節(jié)可以看這篇blog

這一年寫了很多parameter server代碼,同時(shí)花了很時(shí)間幫助用戶使用這些代碼。很難說做得很成功,現(xiàn)在想想有幾個(gè)原因。寫代碼時(shí)我會(huì)優(yōu)先考慮性能和支持最多的機(jī)器學(xué)習(xí)算法。但正如前面的錯(cuò)誤,忽略了代碼的易讀性,從而導(dǎo)致只有少部分人能理解代碼從而做一些開發(fā)。例如我嘗試讓Alex組的學(xué)生來(lái)使用這些代碼,但其中的各種異步和callback讓他們覺得很是難懂。其次是沒有人能一起審核代碼接口,導(dǎo)致這些接口有濃濃的個(gè)人味道,很難做到對(duì)所有人都簡(jiǎn)單明了。

不過幸運(yùn)的是找到一幫志同道合的小伙伴。最早是我發(fā)現(xiàn)天奇在寫xgboost的分布式啟動(dòng)腳本,我看了看發(fā)現(xiàn)挺好用,就跟他聊了聊。聊下的發(fā)現(xiàn)有很多基礎(chǔ)部件例如啟動(dòng)腳本,文件讀取應(yīng)該是可以多個(gè)項(xiàng)目共同使用,而不是每個(gè)項(xiàng)目都造一個(gè)輪子。于是跟天奇在Github上創(chuàng)建了一個(gè)叫DMLC的組織,用來(lái)加強(qiáng)合作和溝通。第一個(gè)項(xiàng)目是dmlc-core,放置了啟動(dòng)和數(shù)據(jù)讀取代碼。

DMLC的第二個(gè)新項(xiàng)目叫wormhole。想法是提供一系列分布式機(jī)器學(xué)習(xí)算法,他們使用差不多相同的配置參數(shù)來(lái)統(tǒng)一用戶體驗(yàn)。我把parameter server里面的機(jī)器學(xué)習(xí)相關(guān)算法移植了過來(lái),天奇移植了xgboost。Parameter server原有的系統(tǒng)代碼簡(jiǎn)化到了ps-lite。

中途我聽百度同學(xué)說factorization machine(FM)在廣告數(shù)據(jù)上效果不錯(cuò),所以在wormhole上實(shí)現(xiàn)了下。針對(duì)分布式做了一些優(yōu)化,然后投了WSDM。前后沒有花到一個(gè)月,但神奇的竟然拿了最佳論文提名。

在wormhole的開發(fā)中發(fā)現(xiàn)一個(gè)問題,就是各個(gè)算法還是挺不一樣,他們可以共用一些代碼,但又有各自的特點(diǎn),需要特別的優(yōu)化來(lái)保證性能。這樣導(dǎo)致維護(hù)有些困難,例如對(duì)共用代碼的改動(dòng)導(dǎo)致所有項(xiàng)目都要檢查下??偨Y(jié)下來(lái)覺得一個(gè)項(xiàng)目最好只做一件事情。所以天奇把xgboost代碼放回原來(lái)項(xiàng)目,我也把FM獨(dú)立出來(lái)一個(gè)項(xiàng)目叫difacto。

通過一系列的項(xiàng)目,我學(xué)到的一點(diǎn)是,以目前的水平和人力,做一個(gè)通用而且高效的分布式機(jī)器學(xué)習(xí)框架是很難的一件事情。比較可行的是針對(duì)一類相似的機(jī)器學(xué)習(xí)算法做針對(duì)性的項(xiàng)目。這個(gè)項(xiàng)目的接口必須是符合這類算法結(jié)構(gòu),所以做算法開發(fā)的同學(xué)也能容易理解,而不是過多暴露底層系統(tǒng)細(xì)節(jié)。

真正的讓DMLC社區(qū)壯大的項(xiàng)目是第三個(gè),叫做MXNet。當(dāng)時(shí)的背景是CXXNet達(dá)到了一定的成熟度,但它的靈活性有局限性。用戶只能通過一個(gè)配置項(xiàng)來(lái)定義模型,而不是交互式的編程。另外一個(gè)項(xiàng)目是zz和敏捷他們做的Minerva,是一個(gè)類似numpy的交互式編程接口,但這個(gè)靈活的接口對(duì)穩(wěn)定性和性能優(yōu)化帶來(lái)很多挑戰(zhàn)。我當(dāng)時(shí)候同時(shí)給兩個(gè)項(xiàng)目做分布式的擴(kuò)展,所有都有一定的了解。然后一個(gè)自然的想法是,把兩個(gè)項(xiàng)目合并起來(lái)取長(zhǎng)補(bǔ)短豈不是很好。

召集了兩個(gè)項(xiàng)目的開發(fā)人員討論了幾次,有了大致的眉目。新項(xiàng)目取名MXNet,可以叫做mixed-net,是前面兩個(gè)名字(Minerva和CXXNet)的組合。放棄開發(fā)了幾年的項(xiàng)目不是容易的決定,但幸運(yùn)的是小伙伴都愿意最求更好,所以 MXNet進(jìn)展挺順利。很快就有了可以跑的第一個(gè)版本。

第四年:9/15-8/16

前半年為difacto和MXNet寫了很多代碼。其實(shí)一開始的時(shí)候我覺得difacto更重要些,畢竟它對(duì)于線性算法的提升非常顯著而且額外的計(jì)算開銷并不大,這對(duì)廣告預(yù)估之類的應(yīng)用會(huì)有非常大的提升。但有次遇到Andrew Ng,我跟他說我同時(shí)在做這兩個(gè)項(xiàng)目,他立即告訴我我應(yīng)該全部精力放在MXNet上,這個(gè)的未來(lái)空間會(huì)大很多。我一直很佩服Andrew的眼光,所以聽了他的建議。

11月的時(shí)候MXNet就有了很高的完成度。寫了個(gè)小論文投去了NIPS的workshop也算是歇了口氣。但隨后就聽到了TensorFlow(TF)開源的消息。由 Jeff Dean領(lǐng)導(dǎo)大量全職工程師開發(fā),Google龐大的宣傳機(jī)器支持,不出意料迅速成為最流行的深度學(xué)習(xí)平臺(tái)。TF對(duì)我們壓力還是蠻大,我們有核心開發(fā)者轉(zhuǎn)去用了TF。不過TF的存在讓我領(lǐng)悟到一點(diǎn),與其過分關(guān)心和擔(dān)憂對(duì)手,不如把精力集中在把自己的做得更好。

NIPS的時(shí)候MXNet的小伙伴聚了一次,有好幾個(gè)我其實(shí)是第一次見面。隨后Nvidia的GTC邀請(qǐng)我們?nèi)プ鰣?bào)告。在這兩次之間大家爆發(fā)了一把,做了很多地方的改進(jìn)。同時(shí)用戶也在穩(wěn)步增長(zhǎng)。我們一直覺得MXNet是小開發(fā)團(tuán)隊(duì)所以做新東西快這是一個(gè)優(yōu)勢(shì),但隨著用戶增加,收到抱怨說開發(fā)太快導(dǎo)致很多模塊兼容性有問題。有段時(shí)間也在反思要在新技術(shù)開發(fā)速度和穩(wěn)定性之間做一些權(quán)衡。

這時(shí)一夜之間大數(shù)據(jù)不再流行,大家都在談深度學(xué)習(xí)了。

我也花了很多力氣在宣傳MXNet和爭(zhēng)取開發(fā)者上。包括微博知乎上吼一吼,四處給報(bào)告。在大量的點(diǎn)贊聲中有些陶醉,但很多中肯的批評(píng)也讓我意識(shí)到重要的一點(diǎn),就是應(yīng)該真誠(chéng)的分享而不是簡(jiǎn)單的吹噓。

因?yàn)榇罅康拿襟w介入,整個(gè)深度學(xué)習(xí)有娛樂化的趨勢(shì)。娛樂化的報(bào)道很多都只是一些簡(jiǎn)單信息,(有偏見)的觀點(diǎn),而沒有太多干貨。不僅對(duì)別人沒營(yíng)養(yǎng),對(duì)自己來(lái)說也就是滿足虛榮心。與其寫這些簡(jiǎn)單的水文,不如靜下心做一些有深度的分享,包括技術(shù)細(xì)節(jié),設(shè)計(jì)思路,和其中的體會(huì)。

此類分享一個(gè)容易陷入的誤區(qū)是只關(guān)注自己做了什么,結(jié)果多么好。這些確實(shí)能證明個(gè)人能力,對(duì)于想重復(fù)這個(gè)工作的人來(lái)說會(huì)有很大幫助。但更多的人更關(guān)心的是適用范圍在哪里,就是什么情況下效果會(huì)減弱;為什么結(jié)果會(huì)那么好;insight是什么。這個(gè)需要更多深入的理解和思考,而不是簡(jiǎn)單的展示結(jié)果。

這個(gè)對(duì)寫論文也是如此。只說自己的結(jié)果比基線好多少只能說明這是不錯(cuò)的工作,但結(jié)果再好并不能意味這個(gè)工作有深度。

深度學(xué)習(xí)的火熱導(dǎo)致了各種巨資收購(gòu)初創(chuàng)司不斷。Alex也有點(diǎn)按耐不住, 結(jié)果是他,Dave,Ash(曾經(jīng)是YahooCTO)和我合伙弄了一家公司,拿了幾十萬(wàn)的天使投資就開工了。Alex寫爬蟲,Dave寫框架,我跑模型,風(fēng)風(fēng)火火干了好一陣子??上е型綝ave跑路去跟Jeff做TF了。后來(lái)這個(gè)公司賣給了一個(gè)小上市公司。再后來(lái)我們覺得這個(gè)公司不靠譜也就沒考慮跟他們干了。

第一次創(chuàng)業(yè)不能說很成功,從中學(xué)到幾點(diǎn):一是跟教授開公司一定要注意有太多想法但沒死死的掐住一個(gè)做,二是找一堆兼職的博士生來(lái)干活不是特別靠譜,尤其是產(chǎn)品不明確的時(shí)候,三是即使要賣公司也一定要做一個(gè)產(chǎn)品出來(lái)。我們賣的時(shí)候給很多人的感覺是團(tuán)隊(duì)人太強(qiáng)但產(chǎn)品太弱,所以他們只想要人而已。四是試圖想要通過技術(shù)去改變一個(gè)非技術(shù)公司是很難的事情,尤其是過于新的技術(shù)。

然后我們就奔去折騰下一個(gè)公司。Ash早財(cái)務(wù)自由所以想做一個(gè)大的想法,但這時(shí)Alex剛在灣區(qū)買了個(gè)房,有還貸壓力,他選擇去了Amazon。于是算是胎死腹中。

隨后收到Jeff的郵件說有沒有興趣加入Google,自然這是一個(gè)很誘人的機(jī)會(huì)。同時(shí)我覺得小的創(chuàng)業(yè)技術(shù)性強(qiáng)的公司是不錯(cuò)的選擇。但從MXNet的發(fā)展上來(lái)書,去Amazon是最好選擇之一。自己挖的坑,總是要自己填的。所以我以兼職的身份去了Amazon,領(lǐng)著一幫小弟做些MXNet開發(fā)和AWS上深度學(xué)習(xí)的應(yīng)用。

第五年:9/16-2/17

早在15年初Alex就表示我可以畢業(yè)了,但作為拖延晚期患者,遲遲沒開始準(zhǔn)備。這時(shí)候感覺不能再拖了,于是窩在灣區(qū)寫畢業(yè)論文。Alex覺得畢業(yè)論文應(yīng)該好好寫,但我對(duì)把前面都做完的東西再搗鼓寫寫實(shí)在是沒興趣,尤其是加州太陽(yáng)那么好,大部分時(shí)間我都是躺在后院曬太陽(yáng)。此時(shí)B站已經(jīng)完全被小學(xué)生占領(lǐng),這邊買書也不方便,無(wú)聊之余刷了很多起點(diǎn)。然后還寫了篇煉丹文。

CMU要求答辯委員會(huì)需要有三個(gè)CMU老師和一個(gè)學(xué)校外的。除了兩個(gè)導(dǎo)師外,我找了Jeff Dean和剛加入CMU的Ruslan Salakhutdinov. 結(jié)果Russ隨后就加入了Apple,整個(gè)委員會(huì)的人都在灣區(qū)了。Jeff開玩笑說可以來(lái)Google答辯??上Ц鶦MU爭(zhēng)吵了好多次,還是不允許在校外答辯,而且必須要三個(gè)人委員會(huì)成員在場(chǎng)。這些限制導(dǎo)致答辯一拖再拖,而且臨時(shí)加了Barnabas Poczos來(lái)湊人數(shù)。最后是Jeff的助理快刀斬亂麻的協(xié)調(diào)好了時(shí)間把所有東西定好了。沒有她估計(jì)我還可以拖幾個(gè)月。

答辯的時(shí)候是一個(gè)比較奇異的狀態(tài),委員會(huì)里有Google, Amazon, Apple的AI負(fù)責(zé)人,剩下兩個(gè)和我又分別在這三家公司兼職。這個(gè)反應(yīng)了當(dāng)下AI領(lǐng)域?qū)W術(shù)界紛紛跑去工業(yè)界的趨勢(shì)。

不過答辯這個(gè)事情倒是挺簡(jiǎn)單,跟平常做個(gè)報(bào)告沒什么太多區(qū)別。一片祥和,即使Russ問了MXNet和TensorFlow哪家強(qiáng)這個(gè)問題也沒有打起來(lái)。

答辯后我問委員會(huì)說,我在考慮找個(gè)學(xué)術(shù)界的工作,有什么建議沒。大家介紹了一大堆經(jīng)驗(yàn),不過大家都強(qiáng)調(diào)的一個(gè)重點(diǎn)是:學(xué)術(shù)界好忙好忙,而且好窮好窮,工業(yè)界的薪水(就差指自己臉了)分分鐘秒掉CMU校長(zhǎng)。你要好好想。

總結(jié)

答辯前一天的晚上,我想了兩個(gè)問題,一個(gè)是“博士收獲最大的是什么”,另一個(gè)是“如果可以重來(lái)會(huì)怎么辦”。對(duì)于第一個(gè)問題,這五年時(shí)間自然學(xué)到了很多東西,例如系統(tǒng)的學(xué)習(xí)了分布式系統(tǒng),緊跟了機(jī)器學(xué)習(xí)這五年的發(fā)展,寫文章做幻燈片做報(bào)告水平有提升,代碼能力也加強(qiáng)了些。自信上有所提高,覺得既可以做一流的研究,也可以寫跟大團(tuán)隊(duì)PK的代碼。只要努力,對(duì)手沒什么可怕的。

但更重要的是博士的五年的時(shí)間可以專注的把一些事情從技術(shù)上做到最好,做出新的突破,這個(gè)氛圍沒有其他地方能給予。

第二個(gè)問題的一個(gè)選項(xiàng)是當(dāng)年留在國(guó)內(nèi)會(huì)怎么樣? 當(dāng)年百度的伙伴們多數(shù)現(xiàn)在都做得很好,都在引領(lǐng)這一波AI的潮流,甚至有好幾個(gè)創(chuàng)造了上億價(jià)值的公司。所以從金錢或者影響力角度來(lái)看,一直在工業(yè)界也不差,說不定現(xiàn)在已經(jīng)是土豪了。

不過我覺得還是會(huì)選擇讀博。賺錢以后還有大把時(shí)間可以,但是能花幾年時(shí)間在某個(gè)領(lǐng)域從入門到精通甚至到推動(dòng)這個(gè)領(lǐng)域發(fā)展的機(jī)會(huì)就一次。站在這個(gè)領(lǐng)域的高點(diǎn)會(huì)發(fā)現(xiàn)世界雖然很大,但其實(shí)其他領(lǐng)域也使用差不多的技術(shù),有著同樣的發(fā)展規(guī)律。博士期間領(lǐng)悟到的學(xué)習(xí)的方法可以在各個(gè)方向上都會(huì)大有作為。

更重要的是理想和情懷。人一生要工作五十年,為什么不花五年來(lái)追求下理想和情懷呢?
  • 澳際QQ群:610247479
  • 澳際QQ群:445186879
  • 澳際QQ群:414525537