機器學習產品開發的漫漫長路

若萱發表於2012-05-21

原帖地址:What it takes to build great machine learning products

第一次翻譯,而且人工智慧也不是我的專業方向,對專業詞彙有什麼翻譯的不到位的地方,歡迎指正。

優秀的機器學習產品來自有豐富經驗和淵博知識的開發小組。

機器學習(Machine learning),搭著“大資料(big data)”的順風車,正成為風靡一時的話題。同其他被炒作的技術方向一樣,宣傳的熱度遠遠超過實際實現的產品。可以說,自從上世紀90年代至千禧年間谷歌的革命性創新之後,再沒有哪一項演算法技術的創新能催生出一個可以如此深刻影響大眾文化的產品了。並不是說那之後機器學習就沒有任何成就,只是沒有哪個能有如此深遠的影響力,也沒有哪個是真正演算法級的改進。
Netflix也許在使用推薦技術,但是用與不用,Netflix還是Netflix,並不影響什麼。然而,如果沒有Page和Brin等人發明利用網路的圖形結構和連結文字(anchor text)提高搜尋效率的演算法,就沒有今天的谷歌。

那麼,為什麼會這樣呢?
缺乏嘗試?不是的。回想一下,有多少創業者志在將自然語言處理應用於大眾卻在產品真正推出後逐漸被遺忘?
構建優秀的機器學習產品的挑戰性不僅僅在於對基礎理論的理解,更需要的是對這個領域和課題有足夠了解,這樣才能根據想法設計出可操作的模型。好的課題不會有現成的解決方案。機器學習的主要應用領域(例如自然語言處理 NLP)的發展主要源於對這些課題的獨到見解而不是泛泛的機器學習理論。一般來說,對一個課題的獨到見解加上細緻的模型設計就決定了一個產品/系統的成敗。

本文的目的並不是為了嚇退開發者,對開發以機器學習為核心的美妙產品敬而遠之,而是要明確其困難所在。

機器學習的發展

在過去的十年了,機器學習經歷了一個漫長的發展過程。
在我開始讀研之前,對諸如支援向量機(SVM)一類的大型邊緣分類器(large-margin classifier)的訓練都還是利用John Platt的序列最小優化演算法(SMO algorithm)來完成。那時,訓練時間與訓練資料量幾乎不成比例,編寫演算法本身不但要具有二次規劃(quadratic programming)的相關背景還要新增各種啟發訓練以選擇主動約束以及令人費解的引數調整。
現在,(相對)簡單的同步演算法(simple online algorithm [PDF])可以線上性時間內完成對效能相當的大型邊緣分類器的訓練。(基於概率的)圖形模型也取得了類似的進展:馬氏蒙特卡洛方法(Markov-chain Monte Carlo,MCMC)和變分法(variational methods)極大地便利了對任意複雜度的圖形模型的推斷 [注1]。
說句題外話,如果你看過這8年來計算機語言學協會(ACL)期刊上發表的論文,你會發現2011年的頂級論文比2003年的技術難度提升了無數倍。

在教育前沿,我們同樣經歷了很大的變更。
21世紀00年代,當時我還是史丹佛的本科生,我選修了Angrew Ng的機器學習課程Daphne Koller的概率圖模型課程,那是我在史丹佛選修過的最好的兩門課,尤其是Koller的,我從中還學到了很多教學的方法。在那個年代,那兩門課每年只能容納100名左右的學生,而現在,任何人都可以從網上課堂選修這些課程。

作為機器學習(尤其是自然語言處理方面)的應用者,這些發展極大地便利了科研的各個方面。然而,最核心的決策並不是我該選擇哪個抽象機器學習演算法,哪個損失函式,或者哪個學習目標,而是哪些功能哪些結構可以解決我的問題。而這一技能只能來源於實踐的積累。因此,越來越多的人瞭解認識機器學習這一領域固然很好,但這並不能解決開發構建智慧系統的關鍵難點。

好的課題沒有現成的解決方案

一個讓你感興趣並且真的想動手去做的課題的建模過程要遠遠複雜於抽象化那些經典的機器學習命題。
舉個例子:機器翻譯(machine translation,MT)。
乍一看去,機器翻譯類似於統計的分類問題(statistical classification problem)——根據輸入的非英語的短句預測出其對應的英文短句。問題是,英語的各種可能組合太多了,很難簡單的把機器翻譯看待為黑盒分類問題(black-box classification problem)。跟其他機器學習的應用類似,機器翻譯有大量的結構,而優秀的研究者的部分工作就是分解問題,把複雜問題分解成可定性學習和編碼的小問題。我認為,對於這一類的複雜命題,其下一步的發展主要在於如何分解和結構化這些問題的解空間,而不是所需的機器學習技術。

在過去的十年裡,機器翻譯取得了飛躍性進步。我覺得這些進步很大程度上(當然,不完全)取決於針對這一課題的深刻理解,而不是機器學習領域的普遍發展。
當代的統計機器翻譯起源於一篇很牛的論文——《統計機器翻譯中的數學》[PDF],這篇文章提出的容噪架構(noisy-channel architecture)將成為未來機器翻譯系統的基礎。
簡單來說,這個模型的工作原理是這樣的 [注2]:你可以把它理解為一個基於概率的詞典。每個非英語的單詞對應幾個候選的英語短語,包括那些沒有英語對應詞彙的無意義空字,這些候選短語重新排序生成一個貌似合理的英語翻譯。這裡忽略了很多錯綜複雜的細節,比如如何有效的從各種排列組合中得出候選的英語翻譯,比如選用哪個學習模型能系統地根據不同語言對短語進行重組,比如如何評定各候選英語翻譯的合理性(見語言模型 language model)。

機器翻譯最重要的改進就是對這個模型的改進。
現在的機器翻譯不再糾結於學習單個單詞的翻譯概率,轉而研究將非英文短語翻譯為英文短語的模型。例如,德語單詞“abends”被意譯為英文的介詞短語“in the evening”。
在採用短語翻譯(phrase-based translation [PDF])前,逐字翻譯的模型只能將其翻譯為一個英文單詞,很難達到正確的英文翻譯 [注3]。而短語翻譯通常能更準確的翻譯出流利的慣用的英文釋義。當然,增加短語釋義在一定程度上增加了複雜度,包括對於沒遇到過的短語片段如何估計短語結果——誰也不知道“in the evening”能對應其他語言中的哪個短語。最出乎意料的是,並不是機器學習領域的發展促成了這些改進,恰恰是這種針對特定問題的模型設計造就了這些進步。在機器翻譯系統中的很多地方,人們可以並且已經使用了更精妙的機器學習技術,而這些也確實實現了一些改善,但遠不及一個良好的針對特定問題的研究結果產生的影響。

短語翻譯相關論文的原作者之一,Franz Och,後來受聘於谷歌併成為這個搜尋公司翻譯部門的核心人物。儘管谷歌的體系知識基礎可回溯到Och還是資訊科學院(Information Sciences Institute)的一名科研人員的時候(甚至更早,當他還是一名研究生的時候),除了短語翻譯的發現(以及最小錯誤率訓練,Och的另一創新),Och更多的貢獻在於將這些想法應用於網際網路而進行的大量軟體工作,這些軟體工作將重要的科研發現引入大規模語言模型以及自然語言處理的其他方面。值得一提的是,Och不僅是一位世界一流的科學家,更是一位傑出的黑客和開發者。正是他的這種難得的專業技能組合使得這些創意能夠從實驗室的一個專案演變為今天谷歌翻譯

問題的闡述

我覺得還有一個比精巧的模型設計和軟體開發技術更大的障礙,那就是如何詮釋我們要解決的問題。
以機器翻譯和語音識別為例,我們能很直觀且清晰地闡述我們在做的課題。然而,很多可能為下一個十年帶來革命性產品的自然語言處理的新技術卻都前途模糊。我們應如何,確切地說,能否將優秀的科研創新(如結構化的主題模型 structured topic models,話語處理 discourse processing,主觀態度分析 sentiment analysis 等等)轉化為一個大眾化的產品呢?

比如自動化摘要(summarization)。
我們都希望在某種程度上可以對內容進行總結和結構化。然而,出於計算和科研的原因,你需要對問題的範圍進行某些限定從而能夠建模、設計演算法並最終對其進行評估。
例如,在摘要法的著作中,多文件摘要(multi-document summarization)這一問題通常被定義為從文件中選取小部分語句並對其進行排序。這真的就是我們要解決的問題麼?從一篇文字中提取少量整句就是最好的摘要法麼?即使這樣的摘要是精確的,這種生拼硬湊的句子結構會不會讓使用者彷彿面對一個科學怪人(弗蘭克斯坦)呢?

再比如主觀態度分析。
人們會滿足於用一個粗略的“贊”或“踩”去評價一個東西或一件事麼?他們會不會需要更豐富的情緒表達方式,需要針對一個東西的某些細節進行評價呢(如,喜歡這裡的食物,討厭這裡的裝修風格,等等)?人們是更需要明確單個評論者的態度,還是更在意一份綜合評價分析?

通常,產品設計者下達這些決策再交由科研人員和工程師去實現。這一過程的問題在於,以機器學習為核心的產品很大程度上受制於當時的技術可實現性和演算法可實現性。根據我的個人經驗,對機器學習及其相關領域的技術有一定了解的人更容易想出新穎的產品創意,而對於沒有這些技術背景的人則幾乎沒有可能。舉一個泛泛的類比,就像建築一樣,搭建一座橋樑需要各種材料資源和物理知識,沒有相關背景的人怎麼可能能設計出一座橋呢?

說了這麼多,主要就是一句話:如果想開發一個優秀的機器學習產品,你需要一個優秀的產品+設計+科研+工程師團隊來解決各方面的細節問題:從機器學習理論到系統構建到專業領域知識到巨集觀產品思路到技術交流到圖形設計等等。最好他們各自在某一領域都是世界一流專家並對其他幾個領域也熟知一二。
擁有這些技術的小型智囊團可以更靈活的面對產品遠景及其模型設計過程中的不確定性。相比之下,大型公司裡研發人員和產品設計人員如果不能緊密合作反而更難解決這類難題。因此,未來的機器學習的優秀產品將出自一些擁有這些資源的小型創始團隊,也就是眾所周知的“車庫公司”。

注1: 儘管MCMC並不是什麼新的統計技術,但直到近期,它才得以廣泛應用於大規模機器學習的應用中。
注2: 模型是生成的,所以這裡是從演繹的角度進行描述的。模型的生成過程其實是相反的。
注3: IBM 模型3號引入了派生(fertility)的概念,允許從一個單詞生成多個獨立的目標單詞。儘管這樣有可能產生正確的翻譯,但是這種可能性非常低。

相關文章