對話Facebook機器學習專家Joaquin Quiñonero Candela
2016-03-23 20:31:55 來源:黃曉雯 評論:0 點擊:
Writing Sessions是Quora推出的與各領域專家、學者對話的板塊。從去年年初開始,該板塊開展了一個機器學習系列,迄今已邀請了百度首席科學家Andrew Ng、《The Master Algorithm》作者Pedro Domingos、Quora技術副總裁Xavier Amatriain等十多位該領域專家對熱點問題進行解答。
近日,Quora邀請了Joaquin Quiñonero Candela與網友進行問答。Joaquin Quiñonero先后在普朗克研究所(Max Planck Institute in Tübingen)、柏林工業大學(Technical University of Berlin)和微軟研究院擔任研究員,之后進入Bing帶領工程團隊,目前是Facebook公司Applied ML(AML)團隊的主管。本次對話共有26個問答,問題主要圍繞Facebook在機器學習領域的實踐、學術界與產業界的異同、機器學習實踐中的經驗教訓、團隊協作與人才招聘、如何平衡工作與生活等方面。InfoQ精選以下5個問答,一同了解Joaquin Quiñonero的觀點。
問題1:Facebook在機器學習領域做的最有趣的研究是什么?
我所在的Applied ML團隊是Facebook的應用研究部門。我們進行核心機器學習[core ML]、計算機視覺、計算攝影和語言處理方面的研究。我們與AI Research(FAIR)團隊密切合作,他們推動該領域的理論發展,我們則在應用方面進行補充。我想介紹幾個近期讓我感到非常興奮的研究。當然這不是一個完整的列表,同時這些研究是我們與FAIR團隊、Core Data Science(CDS)團隊以及許多產品團隊共同進行的。
在計算機視覺領域,我們有一個系統用于處理上傳到Facebook的每一張圖片和每一段視頻,每天大約處理十億數據。我們會預測圖片內容,這一技術有很多應用場景,例如為盲人生成圖片說明、自動檢測并刪除冒犯性的內容、優化多媒體檢索結果、自動產生視覺驗證碼。我們使用的深度卷積網絡帶有數十億參數。這個模型的有趣之處在于特征的普遍性。最近,Connectivity Lab和CDS團隊利用這一功能來創建基于衛星圖像的高分辨率人口密度圖(查看相關視頻)。
還有一些我們正在進行的很有意思的研究,包括:使用多任務學習的通用視覺模型、表征學習(相關文獻)、使用Elastic SGD進行大規模分布式訓練、用于視頻的時空卷積網絡(相關文獻)、用于構建更快更好的視覺模型的級聯網絡[cascade of networks for faster and better vision models]、基于視頻的物體識別(相關文獻)。
在語言處理方面,我們一直致力于消除Facebook上的語言障礙。為此,我們每天大約翻譯二十億條帖文,提供超過40種語言、1800多個語言方向。我們使用過一段時間Bing翻譯,后來改用自己研發的翻譯技術。目前我們正在評估深度學習用于翻譯的效果,希望能利用神經網絡獲得更人性化的翻譯結果。
在核心機器學習方面,我們專注于研究大規模實時機器學習、人工智能算法,并將其運用在一些全世界規模最大的應用上。無論用戶何時登錄Facebook,這些模型都在用于排序信息流中的故事(每日約十億登錄用戶,平均每位用戶1500多條推送)、廣告、搜索結果(每天超過十億次請求)、熱門新聞、好友推薦,以及用戶收到的通知、帖文下的評論。Core ML團隊設計了先進的基于深度學習的文本理解算法。這些算法已經集成到我們構建的機器學習平臺上。每個在產品里使用機器學習的團隊都在使用這個平臺。有超過20%的Facebook工程師(甚至有些人不是工程師)在使用這個平臺,可見機器學習在Facebook有多流行。現在我們的研究方向有基于深度學習模型的事件預測、分布式稀疏建模和深度學習、基于卷積網絡和循環網絡的文本理解表征學習、基于多任務學習的模型壓縮。
問題2:數據、算法、架構,哪個更重要?
首先要明確,在機器學習實踐中,成功意味著最大化機器學習系統對實際應用的影響。例如通過機器學習系統預測廣告與用戶的相關性,從而最大化廣告競價總額。競價與兩個因素正相關:
-
預測準確度;
-
可以用準確度最高的預測器進行評估的廣告數量(通常,嚴格的延遲限制會促使在級聯方法中使用準確度較低的預測器精簡候選集來提升運算速度)。
我們需要在最大化準確度的同時最小化預測所需的計算工作量。
先考慮最大化預測準確度。機器學習系統通常有實驗階段,目的是設計和訓練模型。我們發現最重要的是實驗速度。一個團隊在單位時間內進行的實驗次數越多,他們在優化模型上就能取得更多進展。在AML,我們奉行每周更新算法的準則,取得了很好的效果。為了能在一個特定應用上每周上線至少一個模型,我們需要執行幾十次線上實驗和成百上千次線下實驗。優良的架構、平臺和工具是機器學習實踐的基礎,它們都可以在最大化實驗速度的同時最小化線上的預測開銷。
讓我們回到最初的問題。這三個元素按重要性從高到低的排序是:
-
數據:獲取盡可能多的數據并確保數據質量。根據我們的經驗,數據噪音總是會通過意想不到和不尋常的方式產生。我最喜歡的一個案例是,有段時間在引入用戶點擊廣告數據時經常會失敗,因為我們假設用戶點擊數據會發送到存儲該廣告的數據中心,然而實際情況并非如此。一旦解決了這個bug,團隊關心的指標立刻有了極大的提升。
-
特征工程:做大量特征工程。將你的數據提煉成有最大預測性的信號。盡量多地構建自動化工具(在后臺不間斷運行的自動化特征選擇可以最大限度地利用CPU)。我必須要強調深度學習的出現多少改變了游戲規則:深度學習可以自動化學習表征(例如特征),因此你可以提供原始數據。例如DeepMind研發的學習玩經典街機游戲的項目,該項目純粹基于屏幕像素,沒有做任何特征工程。通過自動化學習表征,深度學習也徹底改變了計算機視覺和語言處理。不過,使用機器學習的產品團隊仍然能不斷從特性工程中獲益。
-
算法:一旦你獲得了良好的數據和工具,接下來要做的就是不斷提升算法性能(但要保證算法通用性)。在Facebook,我們會定期上線性能有很大提升的模型。但需要注意的是,這只有在訓練數據量增長且性能(包括訓練和線上預測用時)沒有降低很多的情況下才有意義,否則性能的降低會抵消精度提高帶來的好處。我們通常會將復雜模型帶來的準確度提升情況和預測時CPU功耗的增加程度進行比較。這意味著我們通常會使用能完成任務的(在計算效率方面)最簡模型。
總結:在機器學習應用中,架構是基礎。然后你應致力于獲取盡可能高質量的數據、開發大量特征工程以及使用能完成任務的最簡算法。
問題3:在構建通用機器學習平臺時有哪些經驗教訓?
構建通用機器學習平臺是困難的。機器學習和人工智能不斷在發展變化,這使得任何通用框架要不斷接受考驗,而有些很快就過時了。另外,在靈活性和規模之間、靈活性和可用性之間都存在沖突,如何權衡也是構建框架時需要考慮的。
我將分享一些我們在構建Flow系統時的經驗教訓。Flow是一個通用機器學習管道系統。工程師們利用Flow構建機器學習管道,以訓練深度學習模型、大規模羅杰斯特回歸、決策樹等模型。每周,所有這些模型都會經歷數次從實驗階段進入生產環境的過程,并被幾十個團隊使用。
理解使用場景:有很多機器學習框架都過分強調了單一的使用場景。對于Flow,我們認為主要有兩類用戶:一類搭建新管道,另一類提供數據以使用管道。我們確保能為這兩種場景都提供良好的體驗。
構建多層平臺:優秀的平臺應避免用戶陷入全贏或全輸的局面。一個優秀的平臺應該提供多層抽象。最外層提供最好的體驗,如果用戶無法在最外層找到他們需要的,他們應該能進入下一層。
速度,速度,速度:對于產業界的機器學習研究,應該設計支持高速計算的抽象。因為平臺處理的數據量往往很大,容易形成瓶頸降低研發速度。
可重用:任何時候,工程師在Flow里編寫新管道,公司里其他人都可以重用。這意味著工程師的創新速度與過去相比有了指數級的增長。
做好重寫的準備:如果這是平臺的第一個版本,你要做好重寫的準備,因為會有很多錯誤產生,設計時糟糕的理念也會慢慢浮現。先忍耐直到你認為重寫的合適時機已經到來,同時要確保在此之前你已經探討、研究過一個更好的架構是什么樣的。
避免過早推廣:在推廣平臺前確保你已經有2到3個具體的、影響度高的場景。如果過早推廣,可能會錯過關鍵點而進展緩慢。記住,如果這是你的第一個版本,無論如何你都會重寫它,所以不要過早地推廣。
算法無關:通常,機器學習平臺會執行許多不同的機器學習算法。在Flow里,我們的宗旨是平臺歡迎任何算法。我們支持并構建了大部分Facebook工程師都需要的一些算法,但平臺也對其它算法開放。這幫助Flow在新算法出現時仍可以得到推廣。
統一接口:算法多樣性是非常有益的。也就是說,一個將這些算法連接起來的統一的管道系統是非常強大的。假設你開發了一個算法,用于廣告排名和搜索結果排序時非常有效。然后你只需在Flow里用標準接口實現一次算法執行器,廣告排名和搜索結果排序管道都可以使用這個執行器。之后算法改進了,你只需進行很少的改動,就可以在所有使用該算法執行器的管道上試驗和部署新算法。這使得我們的應用研究人員可以在整個公司快速擴大他們的影響力。
問題4:學術界和產業界有哪些區別?
產業界和學術界有很多相似之處也存在很多差異。過去十年我都在產業界,所以我的觀點受產業界影響更深。但我仍然和學術界保持緊密聯系,我喜歡發表團隊研究成果,熱衷于組織和參加學術研討會議。
數據:通常產業界會比學術界獲得更多數據。互聯網正在慢慢縮小這種差異,但差距依然巨大。這意味著,有時學術界使用的數據集并不能代表產業界面臨的問題。但另一方面,在學術界,很多想法產生自較小的數據集,這有助于快速迭代新想法。
工具和架構:產業界擁有更多資源可用于構建工具。在產業界,你更容易與工程師和架構專家合作,他們可以幫助你為你的研究打造堅實的基礎。這些性能穩定的工具能讓你更快取得進展。
速度:在時間就是金錢的產業界,速度相當重要。產業界的工程師和研究員通常會優先考慮產品開發的速度和頻率,因為我們的目標是最大化一段時期內產品的總體影響。更快的迭代也有助于探索新想法并忽略沒有前景的方向。
目標驅動:產業界的研究是目標驅動的。我們的重點是實現業務的影響力,不斷朝著公司的使命投入和推動相關研究。產業界通常會關注實踐中創新和投資的規模、成本、邊界情況處理和用戶體驗等方面。需要重點指出的是,學術界在基礎研究上扮演了重要的角色。因為產業界傳統上更看重短期效益,因此很多有重大變革意義的突破已經、并將持續在學術界產生。
簡單性:在學術界,發表的論文和研究成果是衡量成功的主要標準。發表論文可以以結構化的方式驗證新想法,但也會因為鼓勵創新而忽略了有很好實踐效果的想法。產業界寧可簡單一些,因為處理大規模的復雜系統是很大的開銷。
我們不應對事物抱有非黑即白的看法。在產業界有很多優秀的研究員,同樣在學術界也有很多杰出的工程師,他們使得各領域產生突破成為可能。理想的情況是產業界和學術界一起努力,集二者之所長,共同推動該領域進步。
問題5:招聘時你看重什么?
我看重技術實力和性格。我尋找的同事應具有以下特征:
-
任務驅動 在研發過程中會遇到很多困難、意想不到的阻礙,會出現沒有人能勝任的工作。而任務驅動型的人會憑借決心、激情、智謀和應變能力,不惜一切代價來完成項目。
-
輕松面對不確定性 在進行巨大變革的同時也要承擔技術風險。通往成功的道路總是充滿未知的挑戰,團隊成員不應對此感到不適應。優秀的人能夠散發出自信,幫助周圍的工程師——尤其是資歷尚欠的那些——去輕松面對不確定性。這樣的人也能在前進的過程中做出正確的假設和判斷。一個不完美的計劃勝過沒有計劃。
-
無私且樂于合作 人很難不自我,但面對足夠有挑戰的任務時,人們會傾向于幫助周圍的人一起獲得成功。我相信,無私源自于明白靠一己之力無法取得更大成功的成熟,和無需掙扎于獲得短期認同感的自信。
-
機器學習駭客 對于AML團隊,曾經將AI或ML應用于解決真實世界問題的人,正是我在尋找的人才。我喜歡雇傭實現過多種算法的人,因為他們具有一種直覺,認為簡單優于花哨。
-
強大的技術背景 對于研究員,有強大的科研文獻發表記錄,最好還在Github等開源社區分享過代碼,這會是候選者巨大的優勢。
Joaquin Quiñonero還分享了他進入機器學習領域的經歷,以及他在平衡工作、家庭方面的心得。Joaquin Quiñonero還是一名長跑愛好者,每周晨跑50多英里,“跑步有助于清空思緒,有點像冥想,讓我可以以非常冷靜沉著的狀態開始新的一天”。
請訪問Quora查看完整的問答記錄。Quora的機器學習系列后續還將邀請更多專家、學者,查看日程安排了解該系列最新動向,也可訪問鏈接回顧往期對話。
感謝杜小芳對本文的審校。
給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們。
相關熱詞搜索:Facebook Writing Sessions 架構 & 設計 語言 & 開發 Facebook 社交網絡 機器學習
