Joaquin Quiñonero Candela談機器學習

機器之心發表於2016-03-19

Joaquin Quiñonero Candela是Facebook 機器學習應用團隊的負責人。他曾在微軟劍橋研究院工作,還是微軟Bing團隊的一員。Joaquin Quiñonero Candela 在Facebook的主要工作是與Facebook 的人工智慧實驗室、各產品部門緊密合作,將機器學習、語言技術,計算機視覺等技術運用到Facebook的各個產品中,並將產品反饋納入接下來的研究中。可以說,Joaquin Quiñonero Candela的團隊Facebook人工智慧從實驗室到產品的關鍵。作為橫跨學術界和產業界的機器學習大拿,Candela 在Quora上回答了諸多問題,如何看待機器學習發展的現狀、機器學習如何在Facebook變得如此流行以及該如何學習機器學習,這些問題都將在本文中得到解答。

Facebook的機器學習團隊都在做什麼?

機器學習應用團隊是Facebook應用研究團隊的一員。我們的核心工作是機器學習、計算機視覺、計算影像以及語言技術。我們和公司的人工智慧研究團隊緊密合作,不過相對來說我們的工作更關注應用層面。接下來,我將簡單介紹一些我們團隊所做的有趣事情,當然,這並非一個完整名單,也並非只是我們一個團隊能完成的事情,我們也需要和人工智慧團隊、核心資料科學團隊以及眾多產品團隊並肩作戰。 

在計算機視覺方面,我們有一套能夠處理使用者上傳的每張照片和每個影片的系統,每天的處理總量超過100萬張(個)。利用這套系統,我們可以預測出這張照片的內容,這個用處非常大。比如幫助盲人「看到」圖片、自動偵測圖片上的敏感資訊、提升使用者搜尋多媒體資訊時的準確性等等。我們採用包含數十億節點的深度卷積網路。這個模型最有趣的地方就是可普遍適用的特性。最近,Facebook的Connectivity實驗室和核心資料科學團隊透過這些特性,分析了海量的衛星圖片,創造了一張高解析度的世界人口密度地圖。 這個團隊還有很多有趣的研究,也釋出了一些論文:多工學習、強化學習形成的通用視覺模型(論文)、採用Elastic SGD與時空卷積網路訓練的大規模分散式系統對影片的分析(論文)、級連演算法在視覺模型的應用(論文)。 

在語言技術方面,我們正在努力做的一件事情是消除Facebook上的語言壁壘。為了實現這個目標,我們每天處理超過20億個帖子的翻譯需求,超過40個語言的翻譯,翻譯方向(比如英翻中、中翻英)超過1800個。過去我們採用微軟bing的翻譯產品,後來我們自己開發或部署相關產品。現在,我們正在講深度學習納入到翻譯產品中,希望透過神經網路,達到人類翻譯的水準。 

在機器學習和新領域,我們主要聚焦研發和使用一些大規模、實時的機器學習或人工智慧演算法,用到一些大型機器學習應用程式中。無論使用者何時登陸Facebook,這些系統都會用來評估使用者時間線上的狀態更新(目前的數字為:平均每天超過10億使用者,每個使用者1500個狀態)、廣告和搜尋結果(每天的搜尋請求超過10億)、熱門趨勢資訊、拍朋友推薦資訊甚至也會評估使用者收到的各種提醒以及別人的評論資訊。機器學習團隊同樣利用深度學習打造了一系列「優雅」理解文字的演算法。這些演算法整合到我們打造的機器學習平臺裡,用於加快推進和大規模實現從訓練到部署的過程。Facebook所有采用機器學習的產品都會使用這個機器學習平臺。如果你想理解機器學習在Facebook有多流行,我舉個簡單例子吧,超過20%Facebook工程師(甚至非工程師)都是這個平臺的活躍使用者。我們現在研究的方向包括用於預測事件的深度學習模型、用於稀疏模型、深度學習的分散式複習系統、透過卷積和遞迴網路進行文字理解的表徵學習以及透過多工學習的模型壓縮。

關於學習:你學習機器學習的途徑是什麼?在學習機器學習時,你最喜歡哪一本書?

我最初接觸機器學習,是在我作為一位電信工程本科生學習高等非線性訊號處理的時候。那是在1995至2000年。我非常幸運地擁有一位很讚的導師,他在個人資訊在 Prof. Anibal Figueiras-Vidal這網站上。他解釋到你可以怎樣使用神經網路構建自適應的、受訓於觀察到的資料的非線性過濾器。於是,我就入坑了! 

我寫的碩士論文是關於稀疏的徑向基函式分類器。在那時,支援向量機風行一時,它似乎就像稀疏性是模型為了提高廣泛性而應該具備的合乎要求的性質。我還記得你總是會評估你根據UCI repository的資料集創造出的演算法。有趣的是在我們後來的學術生涯裡,我警告過不謹慎使用稀疏模型的缺點(見see the dangerous uses of sparse Gaussian Process priors),並且我曾在行業裡尋求一份gogn zuo,以能生成由機器學習應用程式產生的新的有趣資料。 如果我不得不指出一本非常有影響力的書,那就是 Chris Bishop’的第一本書: Neural Networks for Pattern Recognition (1995)。其中第十章「貝葉斯技術」真的很對我的胃口,也是我至今仍對貝葉斯傾注熱情的產物。然而正如我經常所說的,「一位真正的貝葉斯派不可能徹底是貝葉斯派:你需要優先保留一些餘地,因為有可能貝葉斯方法不是正確的。」 在我花了6個月時間拜訪丹麥科技大學時,我非常幸運地在2000年偶然碰上 Prof. Carl E. Rasmussen 。Carl是一位貝葉斯派,向我介紹了神經網路的貝葉斯處理方法和針對近似推理的蒙特卡洛馬爾科夫鏈抽樣方法。他也向我介紹了高斯過程,我寫的論文就是關於這個。我最後回到了丹麥,在Carl的指導下攻讀博士。 

這些天,我會猶豫要不要給人們指出特定的書(有太多傑出的書了)。我堅持建議人們觀看影片演講。如果你在YouTube上搜尋你想了解的任何主題,你將發現由頂尖學校的一流教授提供的豐富的影片演講。給你一個具體的例子:我最近需要掌握更多計算影像學知識,找到了Bill Freeman的很讚的入門介紹。我最近還想綜述自然語言處理的簡介,就找到了Dan Jurafsky 和 Chris Manning的很讚的入門級講座。 

如果你堅持讀下去,這裡是一本極大地激勵了我的書,是Jaynes的《機率論:科學的邏輯》(這裡是供你閱讀的pdf版本: pdf version)那本書提倡使用機率論作為科學推理的語言,在我們如何探討機率推理方面給人很大的啟發,也對機器學習非常重要,而且近來這些天當我們思考人工智慧的未來時,也會從這本書獲得相關聯的哲學啟發。 

我也會鼓勵人們立刻動手。如果你是Matlab使用者(我以前是!)或者使用Python(當然你會用的),有許多應用程式包基本上是實現所有事情。然而對於很多演算法而言,你可以編寫你自己的程式工具,那是你真正要學的。

團隊招人時,你看中的是什麼?

我看中的是技術實力和性格。尋找的人是這樣的:

  • 任務驅動型的。人們需要完全投入最終目標。

  • 適應不確定性。

  • 無私與合作。

  • ML駭客。

  • 強大的背景條件。

在應用機器學習中,什麼是更重要的:資料,基礎架構還是演算法?

首先讓我們確定目標:在應用機器學習中,成功意味著將機器學習系統對實際應用的影響最大化。例如,透過我們的廣告排名系統將拍賣的總額最大化,廣告排名系統是由機器學習系統驅動的,能預測廣告與受眾的關聯程度。拍賣價值將被兩件事積極影響:

  1. 預測的準確性。

  2. 候選廣告的數量。候選廣告能透過大多數精確的預測器(經典的是嚴格的延遲約束器,能更快的啟用級聯途徑,是透過更不精確的預測器精選候選廣告)來估價。

我們需要將精確度最大化,同時將在服務時間進行預測的計算工作量最小化。讓我們現在聚焦於最大化預測精確度。機器學習系統典型地有一個實驗元件,旨在設計和訓練模型。我們已經發現最重要的屬性是實驗速度。一個團隊能在單位時間內完成的實驗越多,他們就能取得更大的進步,建立更好的模型。我們努力應用機器學習,一直以來遵循「每週揚帆前行」的口號,做出了偉大的成果。為了每週至少能給特定應用輸送一個生產模型,你需要管理幾十個現場實驗,每週執行成百上千的線下試驗。極佳的基礎架構、平臺和工具對應用機器學習是必不可少的,既要最大化實驗速度,又要最小化在服務時間的預測成本。 

現在,讓我們轉向資料和演算法問題。我們的哲學理念將問題分出了輕重緩急,下面是按重要性從高到低排列:

  1. 資料:盡你所能地得到大量資料,確保這些資料是最高質量的。就我們的經驗而言,資料會以出乎意料的、不同尋常的方式變得雜亂。我最喜歡的一個故事是,快速重複點選以增加impression(譯者注:impression是網站分析的最基本度量之一),這偶然不會起作用,因為存在一個假設是點選被報告給處理impressions的同樣的資料中心。

  2. 特徵工程:做大量的和它有關的事。提取你的資料,濃縮為有最大化預測力的訊號。構建儘可能自動化的工具(自動化特徵選擇時常在後臺運作,保持CPU的效用最大化)。我必須強調深度學習的來臨正改變者遊戲:當使用更簡單的演算法特徵工程是關鍵的時,深度學習的承諾是它允許自動化地學習表徵(例如特徵)和你能饋送給它原始資料。一些明顯的例子是DeepMind的令人驚訝的工作,也就是純粹基於螢幕上的畫素學習翫耍經典的街機遊戲,而沒有做任何特徵工程。深度學習透過自動學習表徵也已經引發了計算時間和語言技術的革命。還是那樣,在實際應用中,依賴機器學習的產品團隊定期透過特徵工程仍有重大收穫

  3. 演算法:一旦你擁有了針對特徵工程的最棒的資料和工具,就要保持提升你的演算法能力(同時要保證這些演算法是廣泛推廣的)。在Facebook,我們定期輸送新的具備更大生產能力的模型,但是值得注意的是,只有當訓練資料的數量一路增長,而且表現力(包括訓練和在服務時間的預測)沒有退化得太多以致於抵消了增長的精確度帶來的益處時,這才有意義。我們總是將來自更復雜模型的精度收益與在做預測時增加的CPU成本相比較。這意味著我們經常使用最簡單的可以完成工作的模型(從計算效率角度來說)。

總結:在應用機器學習中基礎加工是至關重要的。然後,你應該聚焦於擁有儘可能是最好的資料,做大量的特徵工程和使用最簡單的能完成工作的演算法。

深度學習如何影響 Facebook 今天的產品?

2012年基於深度神經網路的方法在 ImageNet 分類比賽中獲勝之後,深度學習引起了很大的反響。神經網路已經在機器學習中應用了相當一段時間,但具備更大容量和遠遠更多資料的深度神經網路帶來了變革並顯著擊敗了其它較淺的模型。這一運動開始於計算機視覺,並快速擴張到了文字理解、機器翻譯和語音識別領域。 

Facebook 擁有一個單一的使命:創造一個更加開放和互聯的世界。隨著我們開發出讓人們可以分享更多的工具和產品,理解使用者的內容並向他們提供最大的價值就變得越來越重要。這意味著,高準確度(精度和回撥)、低延遲和更快速的創新。深度學習在所有這些方面影響我們的產品。它被用於文字、音訊、照片、影片甚至互動的內容理解中。嵌入式的深度學習被無縫整合到許多產品組中,這使得他們能更專注於核心產品,同時又指望我們團隊(機器學習應用產品組)提供可用於多種任務的可能最好的嵌入產品。 

除了提供嵌入產品,深度學習也在被應用在一些端到端產品中,如用於影片字幕的自動語音識別、為盲人配音的核心視覺識別引擎、讓你可以將數百種語言翻譯成英語的機器翻譯。

為什麼 Facebook 要投資(大量)人工智慧/機器學習?

沒有人工智慧/機器學習,Facebook 就不能存在。 人工智慧是 Facebook 已有的工程工作的自然延伸,這是向我們的社群提供好體驗的關鍵部分。每天,這個世界都在產生越來越多的資料——文字、圖片、影片等等。為了做到有用,我們需要幫助你梳理所有這些資訊,這樣你就可以看到你想看到的內容,並更高效地和他人交流。 

回答這一問題以及有關人工智慧和機器學習領域更多具體應用研究工作,請見:What are the most interesting things Facebook is doing in ML research?

你怎麼看待當前深度學習上的炒作?

我不認為這是炒作。 

人們已經在它上面進行了幾十年堅持不懈的努力,但有有意義的先驗的非常龐大而複雜的神經網路釋放了表徵學習(RL:representation learning)的力量,得到的結果極其優於那些透過手動輸入特徵和傳統演算法的結果。正如Yoshua Bengio 和 Yann LeCun 在他們最近的 NIPS 2015 教程中解釋的那樣,算力與訓練資料的數量和質量的急劇增長是表徵學習和深度學習成功的關鍵。 

回到表徵學習上,它是真實的。過去幾年這方面已有許多最新的突破性進展可以歸功於表徵學習。這些都已經在計算機視覺、語音識別、自然語言處理等領域實現。所有這些領域都擁有一個特徵:輸入訊號是感測器訊號。表徵學習使用深度神經網路(DNN)架構學習這些感測訊號的分層特徵表徵。這些表徵最後表現得比人類施工的和高度精製的功能好非常多。那並不是關鍵,但這樣的架構遠遠地近似於人類大腦中學習和執行認知任務的方式。 

比如在Facebook,我的朋友和同事 Ahmad Abdulkader 與我們的廣告團隊合作開發了能夠自動檢測出違反我們政策(例如包含暴力、酒精或武器)的有圖片廣告。在這一任務上使用深度學習在精度上帶來了顯著的提高,並最終保護了Facebook 社群免受潛在的不良內容的影響。我們的計算機視覺團隊已經開發了一個供幾十個團隊使用的自助服務平臺,以幫助他們在透過使用深度學習學到的影像和影片的表徵的基礎上訓練專門的預測模型。Manohar Paluri 可以告訴你更多有關 Facebook 用於計算機視覺的深度學習應用。 

表徵學習也還有一些尚未取得突破的領域,尤其是那些輸入不是感測訊號的領域。它是否還能取得那樣的突破,尚有待觀察。 說到這麼多,學術界、業界和媒體需要謹慎對待誇大的結果、對可能帶給機器的「智慧」式未來的過度解讀、以及機器是否以某種方式取代人類的嚴重後果的警告。這更接近科幻而不是現實 :)

為大型公司製作可通用機器學習框架所帶來的重要經驗有哪些?

打造通用機器學習框架很艱難。機器學習與人工智慧如今進展層出不窮。這讓任何通用機器學習框架不停地處在測試之下,甚至許多都已經廢棄。另外,靈活性與規模以及靈活性和可用性與之間一直有著強烈的壓力。這些都是一個總體框架所有需要考慮的重要權衡。 

在下面我會分享一些我們在製作Flow的時候的學習經驗——也就是我們的通用的機器學習系統。工程師利用Flow去製作機器學習通道,以訓練深度學習模型、大規模邏輯迴歸、決策樹等等。Facebook的所有這些模型每週都會從實驗環境部署到生產環境進行數次,並且被Facebook的很多團隊呼叫。

深入理解你的應用場景:許多通用機器學習框架經常會突出強調某一個場景。在Flow,我們理解我們有兩個主要的觀眾。其中一個寫出新的通道,另一個透過新增新資料來消耗它們。我們確定了我們為這些場景中的每一個都提供了良好的體驗。打造多層平臺:良好的平臺會從「use it all」和「lose it all」等場景中保護它們的使用者,好的假期會提供很多抽象層。最外層提供最好的經驗,但是如果使用者不知道他們到底想要什麼,他們應該降低階別去達到想要的。

速度,速度,速度!對於企業中的機器學習研究,讓你設計的想法得到支援和許可都必須在保證速度的前提下。資料經常會很巨大,並帶來降低創新的瓶頸。

預設可重用:無論何時工程師在Flow寫了新的東西,都可以被公司裡的其他人所重新利用。這意味著工程師有著超越以前的指數式增長的創新力。

準備寫第二個版本吧:如果這是你的平臺第一個版本,準備好去重新寫一個吧,因為這裡面隱藏著許多錯誤和壞的概念。不停地探索直至你認為這是個正確的時機去進行重寫,但是在這之前要確保你進行了足夠的討論和探索,比如要達到更好的架構。

避免過早推廣:在你嘗試將產品通用化之前,確保你有2到3個具體的重度使用場景。如果你在未成熟的時候就通用化,你也許會失去一些重要的價值,減慢發展速度。記住,如果這是你的第一個版本,你總會需要重寫的,因此千萬不要提前通用化。

做一個演算法不可知論者:機器學習經常會著眼於一個或另一個機器學習演算法。在Flow,我們決定在這個平臺上「歡迎所有的演算法」。我們支援並創造了幾個可用於Facebook的演算法。但是平臺是對所有演算法公開的,因此可幫助Flow通用於任何出現的新演算法。

統一帶來的好處:演算法的多樣性是極度有利的。也就是說,一個統一連線這些演算法的系統會非常強大。比如你研發了一個演算法,且這個演算法對於廣告和搜尋結果展示具有神奇的效果, 接著你可以執行一個Flow的有著標準化介面的演算法運算元(廣告和搜尋排行通道都呼叫了這個運算元),結果是它會變得更好。再比如你已經研發了這個演算法更強力的版本,不需做太多改變,你就可以用所有通道上的新演算法進行實驗,呼叫運算元並方便地使用它。由此,我們的應用研究員可以將它們的影響力迅速擴大至整個公司。

如果你的餘生只能夠用一個機器學習演算法,你會選擇哪一個?

我真希望我身在能夠回答這個問題的時候!解決機器學習的問題仍然需要人類在整個程式中絕對的參與:制定機器學習任務、定義度量以進行最佳化、預測數量、評估可用資料和收集附加資料,選擇適合於手頭的預測任務的模型池中的模型。當然,然後還會有計算有效性的考慮。如果模型需要作為機器學習的一部分在生產中執行,邊際計算複雜度所附加的任何精確性都必須超過附加成本的消耗。換句話說,精確度不僅僅是唯一的標準:計算成本也是重要的一個。 我在劍橋大學的朋友與前同事所做出的一個令人振奮的努力正是我希望機器學習所前進的方向。他們的想法是自動化資料分析。另一個激動人心的方向則是ICML2015工作室所激發的「Auto ML」趨勢,後者旨在儘可能自動化人類在機器學習中的參與。 沒有任何理由能夠說明,我們不能創造一個基於模型和預測任務的自動化資料分析和機器學習的人工智慧。 

在一個更有趣的發現中,我逐漸開始使用許多模型中的高斯法和貝葉斯法,如果後期和預測分佈難以實現時,這些方法可以利用MCMC以獲得近似推理。我的興趣仍然在於利用這些模型以及推理方法。儘管這並沒有讓它們成為我會在餘生中唯一使用的演算法,但是它們一定是很有趣的演算法,並且回饋以大量的智力樂趣。

產業領域裡的機器學習研究和學術領域的機器學習研究,有什麼不同?

產業和學術領域的機器學習研究,很多相同點和不同點。我近十年來都在產業領域工作,因此,接下來的觀點將更多地受到產業觀點影響(多過學術領域)。不過,需要注意的是,我和學術領域保持著密切聯絡,也欣賞我們團隊發表的論文,熱衷組織和參與研討會和會議。 

現在談觀點: 

資料:產業領域接觸到的資料通常比學術領域多得多。不過,隨著網際網路的發展,這種差異在日益減少,但還是有一定差距。這也意味著學術機構的研究側重於小規模的資料集,無法反映產業需要的解決問題。不過硬幣的另一面則是,這些小資料集可以更方便迭代,從而幫助學術機構更快地獲取研究靈感。 工具和基礎設施:企業能夠投入更多資源構建工具,能夠保證在應對大規模需求時還能快速進行原型設計。在企業裡,你可以更方便低於工程師和機基礎設施專家合作,他們將幫助你搭建一個更堅固的研究基礎平臺。大量穩定的工具也可以保證你的研究可以快速移植。 

速度:對產業領域來說,時間就是金錢,因此速度非常重要。這裡的工程師和研究人員通常會優先考慮速度和產品部署的頻率,因為一個產品的目標就是一段時間內,在總體上最大化產品的影響。更快的迭代可以讓你探索更多新的可能性並忽略一些沒有承諾的開發方向。 

目標驅動力:產業研究有著非常明確的目標驅動力。這就是透過實現研究的商業化,來進一步推動產業對於研究的投入。在可落地實施的範圍而後,綜合考慮成本以及如何與現有產品體驗的融合,是產業對於創新和研究投入的重要考量點。這裡必須要提到一點,研究機構在創新方面的重要作用,由於產業傾向於一些短期技術的研究,研究機構承擔了大量顛覆性技術的研發和創新。 

簡單:在學術界,發表論文是主要的衡量成功的方式。論文作為一種強制作用,以一種結構化方式幫助新觀點產生效果,也鼓勵了那些在實踐中執行良好的新奇事物。產業界往往在簡單的一面犯錯,因為大規模操控複雜系統是花費不菲的。 

對上述事情持非黑即白的觀點總是錯誤的,因為在產業領域有一些讓人驚羨的研究者,在學術界也有令人佩服的工程師,這使得不同領域的重大突破成為可能。理想的化學組合是產業和學術共同合作,取其所長,推進領域發展。

你如何在工作日程中安排長跑?

我每年跑幾次馬拉松和超級馬拉松。也喜歡和朋友跑步。 

這些天我平均一週跑50多英里,讓跑步和工作安排不衝突的方法就是很早起來跑步。幾乎每天,我都是在日出左右開始跑步,有時從家裡開始,有時和一些愛跑步和喜歡早期的同事從單位開始跑。我們在工作地點淋浴,而且我喜歡跑步後在公司吃早餐。 

清晨跑步,首先對我來說是有利的,完全清理了我的內心,這有點像冥想,然後我以寧靜、安詳的狀態開始這一天。許多問題在前天晚上看上去似乎很可怕,跑完後,似乎完全在掌控中。

對勵志在產業領域從事ML/CV研究的PhD候選人,給予一些指導。

為產業研究職位做準備的一條最佳方法是,當一次或更多次的暑期實習生。這會讓你走出只需要做論文研究的學校氛圍,進入這樣一個環境,其中,影響力、快速成型和與其他團隊深入交往不僅普遍而且重要。 

產業實習生允許你與其他有經驗的導師工作,得到廣泛經驗,學到更多技術。有時,實習經歷只會寫入你未來的出版物中,但是,有時你將對一個重要的新功能或能力做出貢獻。提前詢問實習機會,這對你很重要。 

在實習期間,還有在學術研究期間,你會在紮實的軟體工程實踐中變得熟練。一條途徑是使用和貢獻開源軟體。你的同輩將給你反饋你的程式碼質量和可用性如何。試著在團隊中做一些你的研究。產業研究很少獨立完成,因為有太多外部因素需要團結合作去創造真正的影響力(例如:輸送新效能或產品)。試著做一些專案,所以你能得以擴充你的科技知識。最後,就你的工作向大量聽眾舉辦大量演講,一些聽眾可能不是你專長領域內的人。但能推銷你的工作給非專業領域內的人(包括非專業領域的導師),對你成功的產業研究至關重要。 如果你打算追求學術生涯(終身教授職位),那麼在某個主題上非常專業且在某個理論上很善長,而不是精通動手操作和實驗,這是非常好的,但這對於大多數產業研究職位而言,並非特別有用。

你如何看待開放人工智慧?

我們歡迎他們來到這一社群,期待看到研究進展以及它們的最終回饋。 

不過,我會補充說,我們取得的人工智慧進展,現在已經是一個非常公開的過程。科學研究力求研究者的交流促進。互動社群越大,進步也就越快。 

在Facebook,我們想要讓人工智慧研究者更容易分享方法和技術。我們有一個大體上支援開源軟體和硬體的文化,而且FAIR(Facebook人工智慧研究)和AML(應用機器學習)已經繼續兌這一文化承諾:以學術論文的形式發表他們的發現,開放網站上可免費獲取。我們絕大多數的專案程式碼成為開放資源,最近也開放了一個人工智慧硬體設計。

對機器學習非常陌生的工程師/學生而言,什麼才是最關鍵的?

機器學習包含非常廣(且深的)科學和工程學科子集。所以想通透了解該領域就要花費點時間,需要常年累月持續學習,特別是當新演算法和想法正不斷被研究時。 

在某種程度上,機器學習類似於統計資料,試圖從大量資料中推斷出結論或者模式。但另一方面,它更像電腦科學,需求高效的演算法和表達方式。 

我個人最喜歡的是Chris Bishop的《 Pattern Neural Networks for Pattern Recognition 》。當然,還有一些其他很棒的書,包括來自Coursera, Udacity, edX等的線上課程。但是,如果自己不做很多實驗,幾乎不可能學會機器學習。 

嘗試書本或者講座上佈置的練習,花些時間。貌似投入很多,但是,如果你想長期呆在這個領域,你需要積累很多知識和直覺,知道適合每個問題的技巧和方法。你也要持續學習,因此,獲取學習新材料才能然後吸收之並付諸實踐會非常重要。 

變得精通合適的實驗和證實方法。在某些工程領域,你可以遵循指導手冊或者透過非形式推理驗證正確性。在機器學習中,「正確答案」往往很少。因為你所做的就是從不完全資訊中做出最好的推斷(打趣地說法就是「做出最好的猜想」)。你不僅要設計出綜合資料的單元測試,挑出程式碼中明顯的bug,還要在更大的資料集中不斷測試。這是一個非常大的挑戰,因為得到正確答案非常的難(這叫做標記資料)。  

最後,緊跟最新研究,積極參加這個領域的年會。如果你剛步入這一領域,這是一種非常棒的方法瞭解這一領域的研究和技術深度。(年會往往會有很好的導師會議)如果你有經驗,你可以藉此建立與研究人員和從業者的社交網路,從而瞭解最新的技術和科研成果。

Facebook機器學習團隊不招非PhD?

不,並非如此。雖然在多數情況下,PhD能幫助你學習如何做研究。Facebook的每個團隊都有非PhD的人做機器學習,方向都不同。 

我們想知道,諸如Facebook有先進的機器學習演算法的地方,是否還需要一些更加簡單的演算法? 

在Facebook中,我們儘可能用最簡單的演算法完成工作。如果預測精度有效,簡單的演算法就意味著更低的計算成本和更簡單的除錯。同時,創造性的簡單演算法也可能驚人的準確。在我們有關廣告資料實驗的論文中,我們對這些結果做過解釋。 

就像我的朋友艾哈邁德·阿卜杜爾卡達爾(Ahmad Abdulkader)說的,「總有對更簡單演算法的需求。」事實上,更加簡單演算法比複雜演算法更受人推崇。複雜演算法總是要靠準確性的大幅度提升予以合理化。 

也有一些領域,更簡單的演算法也受到歡迎,即使它們的準確性不如複雜演算法。比如,較之複雜演算法,在很多機器上分佈一個LR學習演算法要容易地多。結果,LR勝出。 

簡單的說,我們在需要時才用複雜演算法:一些例項應用的領域,比如計算機視覺、機器翻譯、文字理解和語言認知等。在這些領域,深度神經網路在預測準確性上有大步提升,所以使用它們無可厚非。

在Facebook,有哪些不明顯使用機器學習的地方?

在《What are the most interesting things Facebook is doing in ML research?》中,我曾經給出過幾個明顯或不明顯使用機器學習的例子。 我分享一個可能不那麼明顯的使用機器學習的例子。 

Facebook的 Accessibility team已經運作四年了,最初是專注於讓Facebook已有產品讓每個人都能使用。但是現在,它專注於為殘障人士打造新產品。這個團隊關注的一個物件就是盲人和視力喪失群體。因為Facebook是一種視覺上的體驗(如同大部分網際網路),我們需要儘可能的在創新上做投資,讓Facebook的體驗更好。我們在AI領域,以及諸如物體識別這些計算機視覺特定領域的投資,能夠讓更多人接觸到科技。

你的生活平衡地很好,如何做到的?

哇,這個問題的前提假設是我已經很好地平衡了我的生活!:-) 我不斷地嘗試平衡我的生活。有三件是對我很重要:

  • 我的家庭

  • 我的工作

  • 保持身體上的健康

我覺得關鍵詞是效率。依靠「習慣的力量」讓我變得有效率。每天早晨我都會按固定路線跑步,有時會和朋友一起跑。同樣的跑步習慣(時間、地點)讓我們不需要花費時間做計劃。在家裡,我和妻子會提前協調好家庭與工作時間,避免突發事件。 

最後,我認為抽時間做計劃是很重要的。為了看到更遠的場景,後退一步是有必要的。你想要什麼?什麼事你會高興的拒絕?(為了得到重要的一些東西,對很多事你都要說no。)

你會怎麼描述Facebook文化?

我在這裡工作最喜歡的就是Facebook的文化。我經常把我們的文化和價值觀分享給新職員。 

我們的價值觀很好的體現到了我們的文化:

  • 建立社會價值觀:我們是一家任務非常明確的公司。我們每天早上來到這裡工作不只是為了讓這個世界更加的開放與連線,而是為了在人類生活中創造價值。在Facebook中有個團體叫「Go 365!」我就是這個幫助、鼓勵跑步新手的團體中的一員。我加入兩年了,總能見到隊員對馬拉松新手的鼓勵和支援。

  • 快速行動:我們是建造者(builder)文化。我們會嘗試、會思索。我們也會犯錯誤,事實上我們也鼓勵犯錯。你如何進步?我看到很多很棒的系統在快速力量驅動下成長起來。如果它們值得構建,我們會重點檢視缺陷之處,往最佳的方向改善。

  • 大膽:「最大的危險是不冒危險。」有一個有趣的不對稱現象,我們人類傾向於高估我們不瞭解的現狀。這是棘手的,因為我們周圍的世界變化得太快,而且我們目前的解決方案、產品或系統可能在新環境中不再有關聯或是最適宜的。引用一個我欣賞的例子,Amazon的幾年前做出大膽舉動,大舉投資Kindle。這個產品直接地攻擊了他們既有的商業模式。

  • 保持開放:這可能是我最愛的價值觀。保持開放幫助我們利用集體智慧,因為沒有人有所有的答案。它也幫助減少意外,增加信任(記住,「意外是信任的敵人」)。最後,一個開放的反饋式的文化幫助每個人得到提升,變得更好。

  • 關注影響力:總是有很多事情要去關注,但是就像大自然教給我們的一樣的,將我們投入的大量精力的影響力最大化,非常重要。在Facebook,我們努力建立自下而上的文化,每個人都感到有責任理解圍繞他們的影響力在哪裡,並將自己的工作朝向它。

最後,在Facebook,我們有一種「傳播愛(ship love)」的文化,這是一種方式,說出我們在這裡服務於15億依賴我們構建工具和產品的社群。如果我們不愛這些人,我們不可能為他們服務。

有了H2O.ai(用於商業引擎的人工智慧)、Azure機器學習、資料機器人,你如何看待機器學習大眾化浪潮?

許多研究表明,機器學習工程師/研究員供需存在巨大缺口。一些人甚至預期這個缺口將繼續擴大直到2019年。結果,機器學習「大眾化」的努力可能造成巨大的影響,而且對這些工具而言,也可能意味著巨大商機。 

現有的成套工具似乎早已意欲達到這樣的平民化。他們傾向於將重點放在幫助資料科學家達到他們的目標,主要是在企業環境裡。 

在Facebook,我們在 AutoML這個方向做出了認真的努力。AutoML也是在許多機器學習領域(ICML,CodaLab等)獲得了大量關注。這似乎是更有前途的方向,而且我的朋友和同事Ahmad Abductkader正積極地與我們的一些產品小組合作,致力於讓國內機器學習大眾化,尤其是幫助新的小型團隊落地機器學習。

Facebook 的各種應用中使用了怎樣的神經網路拓撲結構:有多少層,等等?

在Facebook,我們的目標是用最好的人工智慧技術驅動產品。最好的有時候就是已經存在的,很多時候都是我們內部為 Facebook 量身定製的。有時候我所在團隊(機器學習應用組,我們的應用研究機構)和 Facebook 的人工智慧研究組(FAIR)肩並肩合作,我們也與我們的產品團隊有密切的合作。 

我們使用的神經網路拓撲結構和我們在各自領域首次展示中所釋出的類似。它們根據應用的不同存在差異,基本上都是深度卷積網路、全連線網路和遞迴神經網路。在基於文字、照片和影片、語音等應用上,我們也使用它們的組合。 我們的這些團隊必須解決許多有趣的挑戰。比如,我們通常將我們的資料視作一種流,而不是將其看作是幾百萬個樣本的靜態資料集。這讓我們能夠隨時間學習更大的模型,拓撲結構也隨之不斷進化。另一個有趣的挑戰是可能最好的模型也許並不是大規模執行時可行的模型。所以,我們總是會在模型的容量和計算與精度之間進行權衡。 

我們已經公佈了各種研究結果,並且我們對組成鏈式或樹狀的多個模型的拓撲結構非常感興趣,在這樣的結構中,更快但精度更低的模型先執行,然後再給更慢但更精確的評估資料的子集的模型讓路。這是一個正在進行中的研究課題,也是一個我們因為我們的資料規模而必須要解決的重要問題。另一個例子是影片,在這一應用中,可以應用基於影像的模型,我們可以使用一個連續的模型融合來自影片幀的資訊,或我們可以慢慢地使用空間-時間卷積融合時間和空間資訊。 

我們發表了使用這樣的網路的學習功能上的發現,並展示了其通用化的能力。總之,隨著我們研究越來越多並嘗試找到精度、速度和記憶體之間的平衡,我們的拓撲結構也一直在不停變化;而我們也將積極公佈這些發現。

畢業之後有哪些好的機器學習課程可以參加?

http://videolectures.net/是一個很讚的資源,上面有很多關於「機器學習」、「人工智慧」、「大資料」、「計算機視覺」、「自然語言處理」以及更多與機器學習相近的主題。 

Udacity 和 Coursera 提供了完整成熟的課程,一個人可以以有限的知識開始一個領域的學習並在課程結束後取得相當的進步。我個人很喜歡吳恩達、Jeff Hinton 和 Daphne Koller 教授的課程,但我確信隨著深度學習和機器學習在業界變得越來越重要,這些課程設定也在不斷進化,資源也在不斷增長。我問了問我們團隊其他人最喜歡的課程,我的朋友和同事 Manohar Paluri 向我指出,比如說,喬治亞理工大學線上課程Pushkar Kolhe 和 Charles Isbell 與 Udacity 聯合教授覆蓋了機器學習的基礎知識。 

爽的是大多數/所有這些資源都是免費的!在學習這些影片時,另外還很重要的是要親自動手鼓搗程式碼,看這些東西是如何運作的。鑑於Torch、Caffe、Theano、TensorFlow這些工具已經可供下載,而且同時支援GPU和CPU,實驗就是很簡單的事情了。深入到這些程式碼中始終是快速學習的好方法。

你怎麼看待對話引擎(conversational engine)的未來?

對於對話和口語介面來說,現在是一個激動人心的時刻。但還仍然非常早期。Siri 和 Cortana 這樣的個人助手提供了簡單的任務完成和搜尋引擎和自然介面。對於 Facebook,我們相信大機會在人們與 Facebook 本身的互動之中。如果你想想人們使用 Facebook 的方式,這裡每天都發生著數百萬計的多路對話。使用對話理解和會話技術,Facebook 自己可能就能參與到這些對話中,而不只是被動地協助他們;我們還希望透過挖掘儲存在 Facebook 圖片庫中的海量知識來增加價值。 如果你對 Facebook 的對話引擎和語言技術感興趣,你可以在 Quora 上關注我的朋友和同事 Alan Packer.

Facebook 目前怎麼使用計算機視覺,又計劃在未來怎麼使用它?

最近幾年 Facebook 上的媒體內容分享和消費出現了巨大的增長。人們從文字轉向了照片,而且從照片轉向影片的過程正在進行,而且我們已經看見了虛擬現實/擴增實境的影子。過渡到照片標誌著計算機視覺作為一種重要工具的出現,而且隨著我們轉向影片和虛擬現實/擴增實境,計算機視覺的發展動力還在不斷快速增長。計算機視覺將在理解這些內容的公司中扮演至關重要的角色。它將不只能幫助理解,還能提供更加豐富和更具創造力的方式來分享你的經歷(影片防抖、實時美顏等)。 

目前,有許多產品組使用了由計算機視覺系統提供的技術。這項技術被用於更好的搜尋、用於輔助的影像字幕、打擊垃圾和不良內容、篩選出違反我們政策的廣告給人工稽核、製作人口密度圖、確定 Instagram 趨勢、檢測紀念日和重要時刻相似的照片等。每一個接觸照片、影片和虛擬現實/擴增實境的產品組都會利用來自計算機視覺組的訊號。 

計算機視覺未來也將在 Facebook 及其各種產品的使用中發揮巨大的作用。想象一個簡單的例子:我們向部分人開放了影片直播並已經取得了良好的使用。當我們將其開放給我們網路上的十多億人時,將會出現數百萬個並行的頻道。這種資訊爆炸意味著讓使用者能在相似的頻道間切換和基於文字搜尋直播影片等是非常重要的。 

Facebook 的本地搜尋由人們的經歷驅動,我們可以很出色地完成給出旅行、餐廳和周邊事物的個性化建議的工作。圍繞這一工作的大部分內容都是照片和影片。下一代虛擬現實可以使用由內而外的跟蹤,這是計算機視覺的核心問題。隨著計算機視覺越來越好,隨著我們瞭解照片和影片中內容並開發出強大的視覺表徵,我們將有能力推動目前甚至還沒在 Facebook 平臺上出現的新領域。 

如果你想詢問關於計算機視覺及其在 Facebook 應用的具體問題,可以試試在 Quora 上向我的朋友兼同事 Manohar Paluri 提問! 

我們以前使用的是微軟必應翻譯服務,但最近我們已經使用我們自己的資料訓練的自己的機器翻譯技術進行了替代。我們這麼做的主要原因是我們發現 Facebook 帖子和評論的語言與其它網路都不同:它非常俚語化,非常區域化,是非正式的人與人之間的交流而非檔案或專業寫作。所以,調整這項技術適應 Facebook 的語言並訓練我們自己的資料讓我們可以開發出更為精準的機器翻譯。

Facebook 怎麼識別照片中的人?

當你將照片上傳到 Facebook 時,我們專門的面部識別伺服器會將其選出進行處理。 

第一步是定點陣圖像中所有的臉(也被稱作人臉檢測)。這一步的結果是一組線條框將每張臉圈了起來,非常類似於我們網站上作為標記體驗的一部分的標記框。現在我們知道了影像中所有臉的具體位置,我們繼續第 2 步——識別。 對每一張臉我們執行專門為這一任務訓練的機器學習神經網路。這一網路會為每張臉輸出一個數字表示。一種思考這種表示的好方法是將其作為高維空間中的一個點(座標列表)。一個好的表示方法可以將同一個人的不同面部照片對映到這一空間中的同一區域,同時還能保持這些區域(其中每一個都代表不同的個體)之間很遠的間隔。我們實際上為每一個人都建立了一個專門的模型,這樣我們可以快速確定一張給出的新面部照片是該位於這個區域之內還是之外。 

最後一步是收集你和你朋友所有可用的面部識別模型,然後將上傳的照片中每一張臉的上述表示和這些模型進行比較,然後選出最佳匹配的候選標籤作為你的標記建議。所有這些處理在上傳後很快就完成了,足夠及時讓你在寫你的帖子時看到這些標記建議。 如果你想了解更多關於 Facebook 的面部識別的資訊和我們接下來的開發計劃,可以試試在 Quora 上向我的朋友兼同事 Tommer Leyvand 提問。

相關文章