本文作者田淵棟,2005 年及 2008 年獲上海交通大學電子資訊及電氣工程電腦系學士學位及碩士學位,2013 年獲卡內基.美隆大學機器人系博士學位,主要研究方向為電腦視覺、機器學習及最優化方法,在頂級會議上發表過多篇會議及雜誌論文,曾獲 2011 年微軟博士研究獎學金,獲 2013 年國際電腦視覺會議(ICCV)最佳論文提名獎。
現供職於 Google X 實驗室(Google X Lab)無人駕駛汽車(Google driverless car)研究組,任研究員 / 軟體工程師職位。本文寫於 2014 年 1 月。
到 Google 無人車組全職工作已經有四個月了。寫一下感想。
鑒於項目的高度機密性,很多話不能說,我唯一能透露的,就是兩條:同事們都很能幹,然後都非常努力。老闆不怎麼主動管,但大家都明白如果事情做不完就得加班,因為一個一個小發表(release)的最後期限(deadline)擺在那裡。節奏很快,不像是在大公司裡工作,反倒更像是在一個新創團隊裡忙碌。
- 在 Google 四個月我發現「軟硬整合」絕對是趨勢!而我們要想盡辦法做出最完美的結合
這四個月感覺下來,Google[x] 實驗室有幾個很有趣的特點。其一是軟硬體結合極其緊密,這一點從已有的報導裡可以看出,不論是無人車(Self-driving car)、眼鏡(Google Glass)還是最近公佈的氣球無線網路(Loon)及能測血糖的隱形眼鏡(Iris),都是軟硬結合的產品。這直接導致的結果,就是我們每天面對的問題和之前在學術圈時思考的完全不同。
在學術圈,問題的已知條件和資料集都是給定的,我們要做的就是像解數學題一樣,鑽進去找到更好的解法,並在已知的資料集上和前人對比證明其有效性。但在 Google[x] 則完全不同,大專案(比如說開發無人車)擺在這裡,但已知條件,解決方案,使用何種硬體,如何分配資源,都是不確定的;唯一確定的,是要以最快的方式和最小的成本把它實現出來——讓一輛車能安全地自行其道,同時生產成本又最少。
在這樣的特定背景下,碰到一個難題,首先想的不是如何把它不計成本地解出來,而是問自己有沒有必要解它,能不能繞開它而實現目標?事實證明,在這樣高自由度的空間裡尋找一個特定的解決方案,幾乎總是能繞過學術界的難題,找到簡單易行的實用方法。這就像要發明能在道路上移動的機器人,不是絞盡腦汁去研究人類兩足的機理,而是用容易控制又廉價的輪子代替;要設計飛機,不去模仿鳥類形態優美卻機理複雜的撲翼,而是使用固定機翼加噴氣動力。
- 在這裡最重要的是「解決問題」,每個人都必須身兼多職又當研究員、又當工程師
其二是幾乎沒有專職的研究職位。所有人既是研究員(Researcher),又是軟體工程師(Software Engineer)。基本上每個人負責一個具體的方向,對這個方向自主地分析現存的問題,並不斷通過和同事討論提出新方案,最後評估方案的效果。就算是組裡的管理人(Manager),甚至是老闆的老闆,也要寫代碼查錯誤完成具體工作,唯一的不同點,是他們對系統有更整體的理解,遇到問題能幫忙找到下屬找不到的角度。碰到許多工同時需要完成的時候,能分清主次,丟卒保車,確保整個組的大方向正確。
對於從來沒有碰到過的新問題,思考新思路和寫代碼開發是同時進行的,C++ 代碼寫完就直接上產品去測試看效果如何,不行就分析研究再換一種,如此快速反覆運算直到找到好方案為止,如果一兩周裡找不到好方案,那就認為這個問題是困難的,於是就要退一步思考,想辦法繞開它。
因為這個原因,諸如「寫代碼和做研究的時間比例是多少」之類的問題就沒有什麼意義,因為完全看需要解決的是什麼問題,寫很多格式漂亮架構清晰的代碼卻不能解決問題沒有意義,天馬行空地思考不在實際資料上跑也沒有意義,最重要的只是「解決問題」這四個字。
這種思路決定了研究風格是「具體問題具體分析」式的,有額外條件和額外資訊就儘量用上,不會花時間思考一般情況;是「崇尚簡單方案快速出結果」式的,而不會使用精巧複雜卻不太直觀的數學理論,也不會花幾個月賭一個萬能演算法。這種研究方式的缺點顯而易見,就是沒有辦法產生深遠及本質的成果,但是既然目標是利用人類現有的技術,去完成一個舉世矚目的新系統和新產品,我想不出來有其它更好的推動方式了。
- 在 Google 合作很重要!因為他可以更快的解決問題
其三是組內資訊交流的極端重要性。學術界強調鑽研問題,獨立工作和原創性成果;業界強調合作,共同解決問題。一個人,特別是剛進來的新人,對整個系統的組成沒有深刻理解,也不去詢問同事,老闆給一個問題就按自己的想法一意孤行,結果發現三分之一工作和無人車目前急需解決的難點無關,三分之一工作已有人做出過類似工具,還有三分之一工作聽起來很有道理,自成一說,但是在實際資料上一跑,效果卻很差。這些情況是完全可能的。按學術界的思路,這些工作都可以成為不同風格的學術文章,但在我們這裡,全都是沒有用的。
而充分交流討論就能避免這類情況。有越多來自別人的資訊,就越能明確目標直入主題;越知道系統的優劣和目前的可用工具,就越能借風使力,提高效率。有時候跨組間不經意的一兩句對話,少則抵得上幾小時或者幾天的辛勤勞作,多則改變整個組的行進方向。無人車組裡說中文的人非常非常少,因此英語的地位相應提高,實在是需要在業餘時間多加訓練才好。
對於這樣一個開創性項目,雖然已經取得了重要的進展,但還是有很多棘手的具體問題需要解決,每一個細節都決定成敗。並且,越接近最終目標就越為艱難,有時候為了有百分之一的效果提升,是不惜從頭再來,將原來的工作全部推翻的。所以說這個項目最後是否成功,還要看全體同事的聰明才智和勤奮努力,及一點點捉摸不定的運氣。
希望運氣在我們這邊。
COMMENT