LinkedIn高階分析師王益:大資料時代的理想主義和現實主義(圖靈訪談)

盼盼姐發表於2014-04-16

王益,LinkedIn高階分析師。他曾在騰訊擔任廣告演算法和策略的技術總監,在此期間他發明了並行機器學習系統“孔雀”,它可以從數十億的使用者行為或文字資料中學習到上百萬的潛在主題,該系統被應用在騰訊可計算廣告業務中。在此之前,他在Google擔任軟體工程師,並開發了一個分散式機器學習工具,這個工具讓他獲得了2008年的“Google APAC 創新獎”。王益曾在清華大學和香港城市大學學習,並取得了清華大學機器學習和人工智慧的博士學位。此外,他還是IEEE的高階會員,著有《推薦系統實踐》

LinkedIn高階分析師王益:大資料時代的理想主義和現實主義(圖靈訪談)

不認輸

“再想想既然中學時能自學大學課程,當下好歹也該試著突破一下困境吧。於是從高中數學課本開始看,一直看到機器學習專業的教材。”

你從什麼時候開始程式設計的?

我看別人程式設計很早。自己動手是在小學五年級,那時候爸爸買了一臺中華學習機,也就是中科院對Apple II的克隆。長大之後才聽說當時臺灣巨集碁電腦公司也克隆了Apple II,取名叫“小教授”。當時我的四叔有一臺“筆記本”電腦,沒有顯示器,但是整合了一個肥皂盒那麼大的印表機——每輸入一行指令,就在紙帶上列印出來。這些都讓我好奇和著迷。

我迷戀程式設計是從初三畢業後的那個暑假:用6502組合語言和BASIC語言混合寫了一個在電視上顯示的“打獵”遊戲。其實那時候386都已經大行其道了,而家裡的電腦一直沒有更新。主要原因是媽媽擔心我用電腦玩遊戲。高一的寒假,在鄰居易金務伯伯(國防科技大學人文與社會科學學院教授)勸說下,爸媽給我買了一臺486。

其實體會過程式設計的樂趣的人,不容易沉迷於遊戲 ——因為前者是人設計規則,讓機器照著做;後者是人跟著機器的規則動,有點兒像圍欄裡的牛一樣——當然是前者更有意思。我從高一開始接觸和自學C++語言。在高中階段經常逃課,跑回家寫程式。好幾位老師很擔心,多次來家訪。我也很慚愧,但是抵不住程式設計的誘惑。

我高二的時候自學完了計算機本科專業課程,通過了“程式設計師”和“高階程式設計師”認證考試。這個經歷鍛鍊了我的自學能力,培養了自信,逐漸擺脫了“不如鄰居家孩子成績好”的心理壓力。

大學學的是什麼專業?

我在國防科技大學讀的本科,計算機專業。這裡是銀河和天河系列超級計算機的家——每一代機器都是當時的世界頂級水平;最近一次是2013年6月天河2號奪魁世界第一超級計算機。新生入校的思想教育就是參觀這些機器,絕對讓人振奮。

和其他學校相比,國防科大計算機系的軟硬體教育都很嚴格。比如本科計算機原理課程的大作業通常是用積體電路組裝一臺計算機,但是在國防科大基本沒有積體電路(只有一片很原始的8位ALU)。換句話說,需要學生自己設計CPU(包括指令集),並且用最基本的電路元器件實現出來。而那些電阻電容三極體故障率很高,所以構造電腦的過程中要嚴格測試,規劃迴避風險。另一個例子是編譯原理的大作業,清華課程要求是“修改PL/1語言的編譯器,增加一種語法”,國防科大的要求是“設計一種語言並且實現其編譯器”。當然清華的課程設定是有道理的——讓同學們用最合理的精力和時間付出取得最大的鍛鍊。而國防科大的課程設定的目的是——頂級計算技術的薪火相傳。給本科生上課的老師有很多是從1960年代就走在計算機研究最前沿的老教授。

這裡有我的恩師李思昆教授——三界“銀河功臣”、文職一級(相當於武職的中將)。國防科大有一個“優異生”制度——選擇基礎好的本科生當研究生培養。我從大二開始成為優異生,進了教研室跟李老師學習計算機圖形學(computer graphics)。這比初中時那個“打獵”遊戲有意思多了。當時我開發了一個瀏覽器外掛,可以在網頁裡嵌入可程式設計的三維圖形效果,並且可程式設計可配置性比當時各種VRML外掛更高。可惜當時不知道怎麼產業化,要不然說不定可以和後來人盡皆知的可程式設計二維圖形技術Flash較量一下。

在大學的學習過程中有什麼有趣的學習經歷嗎?

因為中學時已經自學了本科專業課程,所以那時我經常藉口“教研室有任務”逃課,一天到晚泡在實驗室裡寫程式。長沙夏天的傍晚常有暴雨。有一次我專注程式設計沒關窗,直到飄進來的雨點把螢幕和眼鏡都打溼到看不清了,才意識到。

國防科大是一所軍校,體育課都是軍體專案:投手榴彈、5000米跑、三級跳、單雙槓三動作到六動作。我小時候體弱多病,一開始不適應。我的同學們給了我很多幫助,後來還把我拉進了我們學員隊的排球隊做候補。我們學員隊長陳傳寶(江湖人稱“寶哥”)是八一體工隊的專業運動員,也給了我很多鼓勵。感謝他們幫我養成了鍛鍊身體的習慣。現在公司和家之間有一條biking trail,我經常下午抽一個小時在上面跑8公里;另外每天騎自行車上下班,往返共一個小時。

你在香港城市大學和清華大學都從事過機器學習方面的學習和研究,你覺得兩所大學的學術環境和風格有什麼不同?你在兩所大學的收穫是什麼?

香港的大學的發展歷程更像歐美大學,大陸大學的建設深受蘇聯影響,這是主要區別。前人之述備矣。對我個人而言,清華百年老校,有溫和敦厚的長者氣質;城大始建於上世紀80年代,有青春活潑的氛圍。這可以從我的一段經歷講起:

我從小數學不好。在計算機領域選了圖形學,是因為我以為這裡數學簡單。我的博士導師周立柱老師是資料庫方面的專家,但是他“因材施教”,推薦我去微軟亞洲研究院圖形學組實習。但是和研究院匯聚的全國高校精英同學們比起來,我腦子反應慢,研究工作做的不夠好,所以跟周老師又要了一個去城市大學學“有道理的”機器學習的機會。不料去了以後才發現身邊的同學都是數學“童子功”,他們嘴裡蹦出來的詞兒我都聞所未聞。午飯時大家順便聊點兒科學問題,我完全聽不懂。於是陷入深深的自卑感裡了,沒有勇氣面對困難,每天混吃等死。

我在城大的導師劉志強教授一生經歷過很多風浪,為人剛毅果敢。見我一副不可救藥的樣子,於是決斷“你這樣不能白拿每個月一萬多港元的助研工資,你還是回去吧。”但是實際上他和周老師商量,把我放在清華深圳研究生院,託付給當時任資訊學部主任的鐘玉琢老師照顧,他倆每隔一段時間來深圳看我。可我那時候不知道這些,心理壓力叫一個大。雖然自由選擇研究方向,可是在微軟和香港都沒有做出成績。博士讀到第四年,一篇論文也沒發表過。一時間心灰意冷,考慮輟學。

可是認輸又覺得對不起周老師給的那麼多研究機會。再想想既然中學時能自學大學課程,當下好歹也該試著突破一下困境吧。於是從高中數學課本開始看,一直看到機器學習專業的教材。然後能看懂論文,瞭解最新的研究成果。隨後自己找了一個把機器學習和圖形學結合起來的研究方向——用多個攝像頭採集人的動作,讓機器學習這些動作資料,從而能自動合成三維動畫。全力投入一年半之後,我重新自學了數學課,而且在這個方向上發表了10篇論文。雖然今天完全看不上當時論文的水平了,但是劉老師很高興邀我二進香港。

周劉二位導師,一位溫和敦厚,讓我廣泛涉獵,一位剛毅決斷,激發我的潛力。他們並不替我選題和指導我在頂級會議和期刊上發表論文,而是鍛鍊了我給自己出題的能力。這對一個博士生來說比解題更重要。我對他們敬佩和感激終身不忘。

在IBM和微軟這樣的公司實習後,你為什麼從此開始了網際網路之路?

香港的經歷勾起了我對數學和機器學習的興趣。於是我主動推遲一年畢業,學習機器學習的主要應用——資料探勘。資料探勘得有資料;IBM是老牌大廠,資料應該積累豐厚,於是我投奔了清華的一位師姐劉世霞,去做實習。在IBM發表的論文,將就能讓我畢業後腆著臉去敲Google的門。

但是真正值得挖掘的資料不在IBM和微軟這樣的軟體和諮詢公司,而是在網際網路行業。讓我意識到這一點的是我的一位師兄郭奇。他對學術研究興趣不大,在搜狗兼職,而且兼得很凶——是搜狗輸入法的首創者,也是當時搜狗搜尋引擎工程架構的負責人。“輸入法的語言模型訓練不就是從大家的輸入中總結人類語言的規律嗎?”這句話引導了我後來的工作方向——從大眾行為資料中歸納人類智慧。在郭奇啟發了我6年之後,出現了一個熱詞“大資料” 。

大資料時代的理想主義和現實主義

“在大資料時代,先得成為出色的工程師,才能成為了不起的研究員。”

在Google的時候,你參與開發了一個分散式機器學習的工具,這個工具獲得了APAC創新獎,並部署在多個Google的產品中。你在開發這個產品中的角色是什麼?有什麼樣的收穫?

Google在亞太地區就一個研究團隊,全職做研究的就兩個人——張棟和我。張棟後來去百度,隨後創業。他的故事很多人都瞭解了。當時我們倆各自做一些研究。最終獲獎的是團隊成果的集合。這個團隊除了我們倆,還有好幾位加州大學、清華、北大、MIT、浙大的實習生,以及幾位非常出色的Google工程師。我負責的一項主要工作是主體模型的分散式機器學習技術。這個研究是張棟做起來的。他換了研究方向後,我換了一種技術思路接著做。這一做就是7年,跨越了我在Google和騰訊的職業歷程,也影響到我目前的工作。

要說收穫的話,有兩點體會:(1)各種網際網路服務收集了大量使用者行為資料,這些大資料都是長尾分佈的;但是研究領域總體仍然專注在基於指數分佈構造的機器學習模型。這樣的模型計算方便,但忽視了資料中長尾的部分,也就忽視了大資料中最重要的部分。 (2) 每一種有價值的演算法,都值得擁有獨到的平行計算架構。做分散式機器學習的人不可迷信特定框架,比如MapReduce、MPI或者Spark,不要試圖套用這些架構來描述各種演算法,而要有能力開發自己演算法適用的框架。在大資料時代,先得成為出色的工程師,才能成為了不起的研究員。

這些可能都算是比較新鮮的想法,不一定大家都認同,但是沒關係,我把我親身經歷的很多大資料研究工作,簡要描述在《分散式機器學習的故事》這一系列部落格裡了。讀者自有體會。

在研究之外,我的很多工作在四處出差,把研究成果應用到產品裡。為此我拜訪過Google分佈在全球很多地方的產品團隊。俗話說“是騾子是馬,拉出來溜溜”。去了之後,先拿產品資料做出實際效果,給產品團隊展示之後,才有機會說服他們使用。這樣的工作,也是我們獲獎的一個原因。

您致力於把純研究和業界的需求結合起來,這樣做的原因是什麼?業界缺乏對於這方面的關注嗎?

直接原因是我第一份工作在Google,Google是一個工程師文化極強的公司——這裡的老牌研究員個個都是頂級工程師。而搜尋引擎這樣的產品的使用者體驗主要是技術水平決定的。Google因為有最強大的平行計算技術,所以能索引全球網頁和支援精準匹配,所以使用者體驗第一。對技術水平的孜孜以求,不僅弱化了傳統產品經理的角色,也模糊了工程師和研究員的界限——每一個追求技術突破的工程師,都自然會去讀論文,追蹤技術前沿,也就成了研究員。那麼研究員也就別自高自大地指望自己設計了演算法交給工程師去實現了。因為這個原因,Google裡雖然有研究員,但是沒有研究院,而且研究員的考核成績與論文專利沒有關係,主要看對產品的貢獻。

騰訊的情況和Google的比較類似,都是利用一個平臺支撐起很多業務,這樣產品線都很豐富。Google的搜尋技術在Gmail、Map、Youtube、Google Now等產品裡都有體現;騰訊用QQ匯聚使用者,支援了網站、遊戲、社交、無線等很多業務。豐富的產品線會收集到海量的使用者行為;而資料探勘研究的目標就是從資料中歸納使用者行為模式,讓產品體驗更便捷。但是處理大資料對硬體和軟體都有需求—— 大部分大學和研究院沒有足夠的計算資源來處理大資料;並且很多研究員也並不擅長設計適合於自己研發的演算法的平行計算架構,於是往往套用現有架構,容易造成系統效能、容錯或者可擴充套件性方面的限制。

為了幫助學術界和工業界融合,我一方面分享我自己做大規模機器學習的經驗,拋磚引玉;也歡迎教授來公司做訪問研究,同學們來做實習;同時也和騰訊的同事們一起為國際資料探勘大賽出題,比如KDD Cup 2012和ICME Grand Challenge 2014——這些比賽題目都是基於真實的業界資料和真實的業界問題。希望能幫助學界瞭解業界。網際網路行業裡有一些學界業界交融好榜樣,比如卡內基梅隆大學的Alexander Smola教授。他在Yahoo!有豐富的業界經驗。在成為Principle Scientist之後,去卡內基梅隆任教,傳授業界積累的大資料探勘知識。同時在Google做訪問研究,保持研究水平的領先。我相信將來會有更多研究人員像這樣兩條胳膊都擼起袖子。

離開Google加入騰訊的原因什麼?

這裡原因很多。總體來說和Google在中國的業務發展勢頭不強有關。另外,作為一個“土博士”,我要是不瞭解中國網際網路行業,會被人笑話浪費機會的。而要了解中國網際網路,騰訊是最好的學校。這幾年我們津津樂道Facebook以及它支援起的Zynga這樣的遊戲公司。但是在此之前很多年,騰訊就成功的經營了世界上最大的社交網路QQ,並且依託它成就了網站、遊戲、社交等很多業務群。其中社交業務群下的QZone這一個產品擁有的使用者數量就和Facebook同量級。今天,在無線網際網路上,微信又在強力支援遊戲、移動支付、和O2O。

Google讓我見識和實踐了世界一流的大資料技術,騰訊給了我瞭解網際網路業務的機會。這是兩家很偉大的公司。

在騰訊的時候,你創造了孔雀這個成功的並行機器學習系統。可以向我們介紹一下這個系統嗎?

孔雀是一個主題模型的並行訓練系統。主題模型是一種機器學習方法,它從文字中歸納“語義”,每個“語義”是一組表達同樣意思的詞。這個歸納過程通常比較耗費機器和時間;但是一旦歸納結束,得到了主題模型,那麼機器就可以在幾毫秒之內理解任何一段文字(搜尋詞、廣告、商品描述或者網頁內容)表達的語義,從而在語義空間裡比較使用者意圖(搜尋詞)和廣告、商品、網頁的相關性。而相關性是現代搜尋引擎、推薦系統、廣告系統的核心要素之一。主體模型除了用在文字資料上,也可以用在使用者行為資料上——此時它就是一個先進的協同過濾推薦系統。

孔雀系統應用在搜尋廣告、情境廣告和目前比較火的廣點通系統裡。在前兩個產品中,孔雀被用於分析文字資料,歸納自然語言的語義,從而更好地匹配query和廣告,以及頁面內容和廣告。在廣點通中,孔雀被使用者理解使用者行為資料,從中歸納使用者興趣,從而計算廣告和使用者興趣的相關性。

學術界對主題模型的研究從1990年開始。目前可以從數百萬文字中歸納數千語義。但是2006年開始,Google的Rephil系統就可以從好幾個數量級大的文字資料中歸納幾十萬語義,從而奠定了Google AdSense廣告系統的相關性的基石,最終幫助AdSense成為Google收入的半壁江山。

據說對於這個系統,你醞釀了好多年,是什麼樣的起因?這中間的設計有過什麼樣的變化?

最開始我對Rephil很感興趣,但是因為種種原因,陰差陽錯得沒能加入那個團隊。同時我感覺自己一直在跟進的一個學術研究方向,有可能發展出一套新的,規模甚於Rephil的主體模型系統。所以漸漸有“彼可取而代也”的想法。只是驗證這個想法,用了四年時間,分成了幾個階段。

最初的想法在Google工作時形成。走的時候,學術界正在研究很火的LDA模型(和Rephil的模型不同);並行化方法是MapReduce,這是Google裡最有名的並行化框架。後來發下MapReduce在計算任務安排和分散式檔案系統I/O上耗時比實際計算可能還要多,於是嘗試使用傳統的MPI。但是MPI不能很好地支援自動錯誤恢復。於是又改用Google Pregel。Pregel基於一種稱為BSP的並行化思路,幾乎和MPI一樣久遠。BSP雖然考慮了容錯,但是容錯需要cache所有程式的通訊記錄,往往導致記憶體不夠。從這時起,我漸漸意識到通用的平行計算框架,很難滿足主題模型的需要。同時,我也注意到Google裡很多成功的大規模機器學習系統都用自己獨特的平行計算框架。

我到騰訊工作之後,仍然想繼續這樣的研究。但是當時剛去的時候就一個人,而騰訊的搜尋和廣告業務在初起階段,一時之間很難有對基礎研究的大規模投入。於是我放下了這個研究想法,和志同道合的同事們一起專心做了兩年多廣告業務。直到業務趨於穩定,我自己也被提升為負責廣告演算法和策略的技術總監之後,才又開始嘗試。

2012年的國慶假期,我用Go語言寫了一個嘗試性版本。叫嘗試性,是因為這次我換了模型。新的模型基於一種叫hierarchical Dirichlet process(HDP)的數學方法。有此考慮是因為之前的研究經驗讓我意識到LDA和其他很多主體模型(包括pLSA、RBM、NMF、SVD等)都不能描述長尾資料,而是專注於從高頻資料中歸納語義,得到的自然是“主流”語義。可是網際網路的精髓在於服務使用者的“長尾”需求。 LDA即便並行化做得很成功,能歸納很多語義,但是去掉重複語義之後,結果往往就幾百個主流語義。 Rephil的模型可以近似描述長尾,但是複製就成了抄襲。HDP也能描述長尾,但是平行計算非常複雜,很難通過減少程式間的互動,切斷資料依賴。而切斷資料依賴是大規模平行計算的基礎。所以我們對HDP做了修改,讓它計算起來像LDA那麼簡單。此外,對平行計算方法也做了很大的改進。Go語言的開發效率比C++和Java都高很多,讓我能在七天假期裡嘗試新模型和新的並行化方法。嘗試結果從實驗效果上看很有潛力,於是我決定開始真正開發一個大規模系統。

當時我負責的團隊有幾十位工程師,能使用近千臺伺服器,而且我的上級領導對這個專案非常支援。但是考慮到我們團隊要承擔KPI壓力,所以實際上除了我,只有另外兩位很年輕的工程師(趙學敏和孫振龍)志願全職投入,不到團隊總人數的十分之一。當時每天的工作時間主要花在團隊管理上,程式設計的時間都在八點鐘下班之後。這樣的經歷持續了大半年,直到在400臺計算機上的並行訓練試驗效果初見成效後,有更多同事熱情兼職加入。大家優化了訓練系統,也做了很多將研究工作應用於實際業務的工作。

做完這個專案你有什麼體會?

從這段經歷可見大資料技術推進的不易 ——數學模型的改變和平行計算方法改進密切相關,沒法拆開,一部分給學術界,一部分給工業界。而學術界距離業務比較遠,不容易接觸到真實的大資料,也很難找到數百臺機器,只能在工業界做。而在工業界勢必要平衡業務壓力和基礎研究兩者之間資源分配。先進的研究往往尚未被大部分人理解,又需要比較長的時間——要在此期間獲得團隊(包括研究、工程、產品、銷售)的理解和支援,是對專案主持者的全面考驗,需要主持者之前的聲譽和擼起袖子來的實幹精神,給團隊注入信心。這其中領導的支援當然也非常重要。一年前我們的團隊經歷了一次重組,新任領導也是搜尋和廣告業務的行家,對我們的技術研究仍然非常支援。

春節前有一次聚會,席間我回顧了這段經歷。在座的百度的餘凱老師表示理解,總結說:“今日中國是極端的理想主義和極端的現實主義的結合”。我甚感共鳴,其實古往今來莫非如此。

孔雀之外,把研究成果和業界需求結合後的產品有哪些?

因為我一直在公司裡工作,研究都是衝著產品和實用做的。在Google工作的時候,除了自己努力往Google Orkut、生活搜尋、音樂搜尋等產品裡推廣,同時也有其他產品(Reader、News)的同事主動嘗試。此外,有些結果在開源屆有應用。比如北大的實習生李浩源主導的一個分散式頻繁專案挖掘的工作,後來被Apache Mahout系統採用。我和工程師白紅傑開源的pLDA專案也有很多使用者。後來幾位實習生同學進一步改進,成了pLDA+。pLDA和pLDA+一共被200多項後來的工作引用。

在騰訊的時候,你發明了很多新的機器學習和資料探勘的演算法,這些有沒有反過來在學術研究界產生貢獻?

在騰訊的工作和業界結合更緊密。因為工作比較忙,沒有時間仔細寫論文,所以暫時沒有論文發表。但是有一些學術會議上的分享和幾個開源軟體,包括我用C++寫的一個MapReduce的實現http://code.google.com/mapreduce-lite,以及在此基礎上開發的一個並行logistic regression 訓練系統 http://github.com/wangkuiyi/lasso

成長的祕密

“因為大家都敢於創業,所以避免了寡頭壟斷;而不是因為沒有寡頭壟斷,所以更容易創業成功。”

國內大型網際網路企業(如騰訊)和矽谷的網際網路企業在管理機制上有什麼大差別?

現代網際網路企業之間有很多交流和學習,在管理經驗和機制上其實大同小異。當年Google中國的同事在能力上和美國的同事沒有什麼區別;騰訊同事的技術水平也和LinkedIn的同事沒有什麼區別。如果說有差異,更多是在文化上的。

在國內,人多資源少。幾百年來中國的文化就強調競爭,流傳下來的口號也很多,比如“吃得苦中苦,方為人上人”。為什麼要做“人上人”呢?很大程度上是為了多吃多佔吧。當代的中國孩子也是從小就被迫和鄰居家孩子比成績。長大之後,習慣性地和同事比較年終獎、晉級晉等。可是太過計較小節,就容易忽視了大方向。而且自己人之間的惡性競爭,削弱民族凝聚力。

資源競爭也體現在高額的房價上。房價束縛了很多年輕人——為了攢錢首付,為了能穩定的還貸,在工作中謹小慎微,不敢直言直諫,接受很多苟且和無奈,放棄了成就業務和完備自己的機會。這和二戰後的日本以及我出差時見到的今日印度很像。

在美國,地多人少。即使在矽谷,由於最近幾年大量中國和印度移民湧入,房價提升。但是換算到每平米單價,仍然在北京上海廣州深圳之下很多。再加上平均工資水平相對較高,在這裡留學和工作的年輕人買房時是不需要老父母幫助湊首付的。在國內普遍三十年還貸,在這裡一般是十年之內。

在資源競爭相對寬鬆的環境下,西方的教育也相對寬鬆。強調人格的培養,而不是知識的灌輸。中國有句古話“宰相肚裡能撐船”,就是有多大胸懷做多大事業的意思。相對寬鬆的環境,給人更大的揮灑空間,從而不計小節,就像平生慷慨的班都護和萬里間關的馬伏波——他們自己以及我們這些後人恐怕都不在意他們是行政幹部幾級。我理解這是矽谷裡很多人有更大的膽魄創業的重要原因——因為大家都敢於創業,所以避免了寡頭壟斷;而不是因為沒有寡頭壟斷,所以更容易創業成功。

從什麼時候開始從事管理工作?更喜歡純技術工作還是更傾向於技術管理工作?

我更願意做我喜歡做的事。如果這件事需要做技術,那就做技術;如果需要做管理,就做管理;如果需要二者兼顧,那麼就累一點兒,奮力兼顧一下。

在國內的科技行業,尤其是大公司,有一種說法“三十歲之後就幹不動技術了,要儘早轉管理”。其實我也見過很多很早轉管理,技術上不再長進,喪失了技術行業的核心競爭力,從而不得不留在大公司混派系的例子。

另一方面,我的同齡人裡有很多很出色的榜樣。比如最近在矽谷認識的一位朋友楊文傑——上海交大數學系本科。讀書期間就創業。畢業後,為了進一步開拓視野,先後在J.P. Morgan(香港)和Summit Partners(美國)工作。一邊工作一邊在史丹佛讀MBA以瞭解美國環境。做了多年準備後,現在又離開大公司在矽谷創業,用人工智慧技術支援商業擴充。他這樣在數學、計算機、金融、投資、管理等多個方面努力學習、融會貫通,功底是和紮實的。而為了做到這些,他每天的體能訓練也很紮實。並且為了保持精神狀態,每天洗冷水澡。

另一位在Google認識的大哥王欣宇,在總結自己的職業發展時有一個四字口訣“募投管退”——他選擇的職業發展路線,使得他在募集資金、選擇投資業務、管理團隊、和公司上市四個方面都有鍛鍊。

我見到不少朋友給自己打個標籤:技術人員或者管理人員,甚至區分工程師和研究員。其實這些標籤往往是一種束縛,而人的本性其實是追尋自由成長的空間的。

在程式語言上,你的選擇是什麼?都應用在了哪些專案上?

我接觸過的程式語言不少,因為對語言很好奇。隨意數數至少包括BASIC、LOGO、6502彙編、Fortran、Pascal、C、C++、80386保護模式彙編、COBOL、Tcl、Awk、Javascript、C#、LaTeX、Maxima、Maya、Emacs Lisp、Scheme、Common Lisp、Erlang、Radeon GPU彙編、Cg、Java、Python、Haskell、Objective-C、Go。其中對我影響最大的是Lisp,是我的同學王垠教我的,讓我接觸了一點計算的數學本質。在微軟圖形學組實習時學了GPU的組合語言,後來用GPU寫並行機器學習演算法的時候用過Cg。我工作中用的語言主要是C++。從寫Peacock開始用Go。簡單的分散式資料處理用bash+ssh+awk代替MapReduce。

你一路走來加入的都是一些業界閃耀的公司比如IBM,Google,騰訊,以及現在LinkedIn,這是你刻意的選擇嗎?你會給計算機相關專業的大學畢業生什麼樣的擇業建議?

我很珍惜我的同事們,他們給了我很多幫助和提示;但沒有刻意選擇加入大牌公司。畢竟如吳軍在《浪潮之巔》裡說的,閃耀的牌子都在一波波的浪潮中過去了——今天畢業入行的人記得Sun的不多了,知道DEC的基本沒有。

我在擇業時也有很多茫然不決的時候。但是我有個好榜樣,是原來Hulu.com的engineering VP張小沛。她對擇業的建議很簡練:“最重要的是知道自己要的是什麼”。


更多精彩,加入圖靈訪談微信!

相關文章