下周一我就要開始在 Facebook 上班了。趁入職之前,我想寫一寫我博士生涯的感悟;再不寫就要涼啦。

  從 2010 年 8 月到 2018 年 10 月,我把我最好的青春年華都獻給了卡內基梅隆大學(CMU)的語言技術研究所(LTI)。其中前兩年是碩士,但由於 LTI 的碩士生活跟博士並沒有太大區別,都要做研究,所以說是八年博士也並不過分吧。單從長度就能看出,我的博士生涯並不是一帆風順的;之所以讀了這麼久,主要原因是換了兩次研究項目。這三個研究項目,各自給了我不同的體驗和感悟。

  從入學到 2012 年春天,我跟隨金琴教授研究說話人識別。在這將近兩年的時間裡,我用 Matlab 語言親自實現了十幾種語音特徵的提取,以及基於 GMM、GMM-UBM、SVM、JFA 等技術的多種說話人識別系統。然而,我在這段時間裡的研究進展十分緩慢,最終並沒有追上當時的前沿;我的研究結果也並沒能寫成論文發表出來,而只是形成了一篇技術報告。這裡面的原因,大概是因為我還沒能從「學習者」的心態轉換成「研究者」的心態。我總是想著把基礎打紮實,從而在理解和復現已有的技術上花了太多的時間 —— 2011 年的夏天,我曾經花了一個多星期來推導 JFA 里那些複雜的矩陣運算。在實驗設計上,我也沒能做到「抓大放小」,而是曾經拘泥於一些小細節,比如訓練數據和測試數據的劃分。這些原因,導致我還沒來得及走到「創新」這一步,研究項目就結束了。

  金琴教授於 2012 年春天調到了中國人民大學

,於是我就轉到了同一個實驗室的 Florian Metze 教授名下讀博士。Florian 是一位高高胖胖的德國教授,在中文語境里,我通常稱他為「花哥」。我在花哥手下做的第一個項目叫 Babel,其任務是在多種小語種語音里檢索關鍵詞。與之前的我一個人做的說話人識別項目不同,Babel 項目是由全美國乃至全世界許多大學和公司共同參與的。若干個大學或公司通過合作關係結成隊伍,而隊伍與隊伍之間則是競爭關係。我在這個項目中的體驗,與其說是像科研,不如說是像工作,因為項目前期的主要任務,是要先搭建出一個還能用的系統,之後才能在此基礎上慢慢地創新。一個關鍵詞檢索系統通常由兩個模塊組成:前端模塊是語音識別,負責給出多種可能的識別結果;後端模塊是檢索,負責在識別結果中搜索關鍵詞並對其可靠性打分。我在這個項目中承擔了很多工程性的工作:整個後端模塊基本上都由我來維護;我還開發了一些可視化工具,用來分析系統犯的錯誤。但是,從科研的角度來講,我的工作的科技含量並不高:檢索模塊使用的技術,說白了只是一個倒排索引而已。直到 2014 年,我們實驗室才脫離純工程性的開發,開始研究一些有科研價值的問題,比如如何更準確地給檢索到的每個關鍵詞的可靠性打分,以盡量減少漏報和誤報;比如如何檢索像專有名詞這樣詞典里並沒有的關鍵詞。然而,2014 年 6 月,當我在韓國臨津閣的觀光隊伍中排隊的時候,我從 Facebook 上收到了實驗室的同學發來的噩耗:由於 CMU 所在的隊伍開發的系統在年度測評中表現不佳,我們的隊伍被淘汰了。到此時為止,我只發出了一篇一作論文;另一篇一作論文在此後經歷了五次拒稿,終於被我塵封。知乎上有一個這樣的問題:博士第三年還沒有發論文是一種怎樣的體驗?我想我是適合回答的,但終究沒有勇氣回答。

  2014 年的下半年,算是我博士生涯的一段過渡期,這段時間我沒有什麼科研產出,而是把精力用在了給自己充電上。憑藉著唯一的一篇一作論文,我參加了 2014 年 9 月在新加坡舉行的 Interspeech 會議。在會上,我嗅到了深度學習正在崛起的信號。整個秋季學期,我閱讀了會議上的近百篇論文,還在 Coursera 上學習了 Geoffrey Hinton 的深度學習課程。這讓我的博士生涯柳暗花明又一村。

  關於博士生涯最終的研究課題,花哥當時給了我三個選擇。我已經不記得另外兩個選擇是什麼了;我選擇了「事件檢測」,只是因為它有去 Facebook 實習的機會。我在 2015 年 1 月至 4 月在 Facebook 進行了一次實習,這也是我唯一一次實習。由於版權的限制,我在 Facebook 並沒能使用 CMU 的數據真正進行「事件檢測」的研究,而只是改進了 Facebook 原有的語音/噪音分辨系統。從科研上來說,這次實習只是我對深度學習的一次練手;但它讓我在灣區交到了好多朋友,讓我覺得灣區是個好地方,從而產生了去 Facebook 工作的理想。這個理想,現在就要實現了。

  回到 CMU 以後,我才真正開始研究「事件檢測」。在研究的初期,我對「事件」還沒有明確的定義,既想檢測比較底層的事件,比如貓叫、狗叫、開門、關門,又想檢測比較高層的事件,比如球賽、婚禮、聚會等等。這些高層事件的檢測,是當時 CMU 正在參與的另一個研究項目 Aladdin 的目標;直到 2016 年 Aladdin 項目漸漸收尾,我才把研究的焦點集中到底層事件的檢測上來。之所以選擇研究底層事件,是因為它們是檢測高層事件的基礎,在還檢測不了底層事件時就去檢測高層事件,步子就邁得有點兒太大了。而隨著深度學慣用於語音識別的最後一滴水漸漸被榨乾,人們自然會開始嘗試把深度學慣用於別的東西的識別,底層事件檢測的研究條件已經成熟了:在 2016 年 3 月的 ICASSP 會議上,芬蘭 Tempere 理工大學的研究組與我同時發表了用深度學習做底層事件檢測的論文。

  2016 年,我的研究一直被一個困難所困擾,就是數據太少。我使用的數據,是實驗室里的工作人員手工標註的,總共只有十幾個小時,根本無法用於深度學習。2017 年 3 月,Google 發布了 Audio Set 數據集,它拯救了我的研究,讓我畢業的事情終於有了眉目。Audio Set 這個數據集的特點首先就是「大」。它含有 200 萬條長度為 10 秒的 YouTube 視頻選段,我光是下載這些數據就用了整整一個月。這樣的大數據,正適合深度學習。但 Audio Set 還有一個重要的特點,就是「弱標註」:它沒有標註每一個事件的起止時間,而只標註了每段音頻中的事件種類。這種標註,直接帶火了一個研究領域 ——「弱標註下的音頻事件檢測」,這也幾乎就是我的博士論文標題。從此,我的博士論文課題就明確了:爭取在已有的、利用弱標註做事件檢測的方法的基礎上進行創新,做到比已有方法更好。

  剩下的事情,就是與預期的博士畢業時間爭分奪秒了。這段時間過得十分刺激。我原定於 2017 年 9 月博士開題,實際開題時間是 10 月 9 日,還算勉強趕上。今年 2、3 月的時候,我又一次鑽進了一個細節的牛角尖(PyTorch 與 Theano 的性能差距),浪費了兩個月的時間。到了 4 月份,我注意到英國 Surrey 大學的 @孔秋強 同學已經做出了一種基於注意力機制的、利用弱標註做事件檢測的新方法。這讓我幡然醒悟,跳出牛角尖,回到研究的主線上來。我的論文中最重要的兩章之一,就是比較了若干種利用弱標註做事件檢測的方法的優劣,並深入剖析性能差距產生的原因。這一章是 2018 年 6 月底完成的,與計劃的時間完全一致;而另一章的核心問題,則是 8 月 16 號在散步時才想出解決辦法的。9 月,我一邊繼續跑著一點兒本該在 8 月就跑完的實驗,一邊撰寫畢業論文的文本;而 10 月 5 號答辯用的幻燈片,則是 9 月 30 號才做完初稿的。這場賽跑,直到 10 月 26 日晚上,我把畢業論文最終定稿、把代碼整理好才結束。而此時,距離我爸媽來美國看我已經只剩 5 天了。

  縱覽八年的博士生涯,不難發現,我由於自身及外界的各種因素,走了不少彎路。在三個研究項目中,只有最後一個,才有博士研究的樣子。偶爾,我也會想:如果從一開始就做第三個項目就好了,這樣我就可以在四年之內畢業了。但我不會沉浸在這種情緒中。正如吃完第三個包子飽了不代表前兩個包子就白吃了一樣,我並不覺得我在 CMU 的前四年是荒廢了的。整整八年的學習,讓我對語音識別、深度學習等各個領域的理論基礎有了紮實的掌握。花哥開了一門語音識別課,其中說話人識別那一講固定由我來講,學生們紛紛反饋說我講得比花哥清楚多了。同時,正是因為我涉獵過多個研究項目,我對與語音相關的多個研究領域都有了解並抱有興趣。開學術會議的時候,我總能挑出許多想聽的報告,馬不停蹄地輾轉於各個會場之間。而這種深度與廣度,則是不付出時間不可兼得的。


推薦閱讀:
查看原文 >>
相关文章