0
本文作者: 夏睿 | 2017-02-23 09:15 |
雷鋒網(wǎng)按:本文為AML實驗室負責人Joaquin Candela在@Scale大會上發(fā)表了的關于如何將AI技術應用于Facebook各個領域的下半部分演講內容。此篇中,Joaquin Candela和大家講解了AI技術在視頻理解平臺、文本理解、語音識別、視頻風格變換多個領域的應用,并配以實際案例幫助大家理解。上篇內容及演講視頻請看雷鋒網(wǎng)報道《Facebook AML實驗室負責人:將AI技術落地的N種方法(上)》。以下為雷鋒網(wǎng)編譯。
圖像視頻理解:Lumos平臺
Lumos的故事很有意思,它最初誕生于FAIR實驗室,最初只是一個實驗性的項目,當時有人提出,我們要不建一個可以理解所有Facebook上面圖片的系統(tǒng)?這個項目開始的時候,看起來似乎不可能完成。后來這個項目的成員轉來了AML,成了如今CV團隊里的種子成員,接著我們跟FAIR實驗室一起合作開發(fā)了新的Lumos平臺。
在應用方面,Lumos如今每天都要對Facebook上的每張圖片進行分析,處理的數(shù)量高達數(shù)十億。要處理很多任務,比如:
為盲人描述圖片
重現(xiàn)重要回憶
提供更好地圖片和視頻搜索結果
保護人們不受有害內容的侵擾
一件很酷的事情就是,我們有一個共享的訓練庫,Lumos上已經(jīng)有超過一億訓練樣本,并且這一數(shù)據(jù)還在增長。
去年,我們升級了Lumos的核心模型,不出意料,是的,更新成為了一個Deep Residual Network(Deep ResNet)。當我們啟動新模型時,那感覺就像是,潮水升起,帶著船只也升高。也就是說,F(xiàn)acebook公司內所有依賴Lumos的模型,一下子準確度都提高了。但是,有一個問題,從無到有訓練這些模型,然后轉移到新的架構里,是需要重新訓練的,而這會花費很長時間。還有就是,有很多的任務需要這樣的模型,如果我們用專用的ResNet為每一個應用工作,當你整個公司有數(shù)百個應用的時候,你很快就會無法忍耐計算量和數(shù)據(jù)集的局限。
現(xiàn)在這兩個問題,我們都一次解決了。我們解決問題的方式,比較像是一個多層蛋糕。
現(xiàn)在,你有一個大型主模型(master model),這個模型是用你所有的數(shù)據(jù)來訓練的,并且解決了數(shù)千個不同的預測任務。這個模型定期更新,隨著你處理越來越多的任務,那么之后,當你處理一個新任務時,并不需要從頭開始做。ResNet已經(jīng)學習的特征是非常有用的,所以你的出發(fā)點可以換到更高一層,而不是從原始的像素開始。
但是,這當中有一個需要尋找“平衡點”(trade off)的過程,如果你在靠近輸出層(output layer)的地方開始,那么就不需要重復訓練每一層的模型,這樣的結果是,你很快就可以得到的一個新任務模型,但是就會犧牲一些準確性。相反的,如果你不采用這種方法,而是在靠近輸入層(input layer)的地方開始,輸入層特征更加通用,但是你要接下來訓練很多層模型,這會花費你很多的精力。
所以要知道最好的“平衡點”是什么。所以,我來跟大家展示,一個新的任務團隊來使用Lumos的時候,會是一個怎樣的體驗,記住,“易用性”是里面最關鍵的地方。
比如,我們要建立一個全新的模型,來分辨出“人騎馬”的圖片。那么最一開始,我們需要什么呢,當然是訓練數(shù)據(jù)。然后用一些關鍵詞,比如“人”、“馬”等,從Facebook和Instagram的公開照片里,檢索出關鍵詞的圖片。
當我們得到這些圖片時,一個很酷的事情就是Lumos平臺會做一些類別排序,你能夠快速檢索到特定類別的圖片,你可以為你所有的數(shù)據(jù)打上符合或不符合的標簽,制作成訓練集。然后你可以做一個我們稱為“現(xiàn)場預覽”(live preview),來看看它的運行狀況如何,糾正一些錯誤。你所訓練過的模型,F(xiàn)acebook的其他工程師在FBLearner Flow也可以重復利用。隨著其他人對它的訓練越來越多,這個模型也會變得越來越精確。
下面我跟大家展示另一個訓練模型例子,你可以看到它被訓練的效果很好。只要有了生產(chǎn)數(shù)據(jù),這個模型就能在你的產(chǎn)品上運行起來。這意味著什么呢?這意味著只需要幾分鐘,我們就獲得了一個新的模型,這個模型就有能力識別Facebook上發(fā)布的所有新照片。而我們每個人都可以在Facebook上用這個模型。就這么簡單。
看它的一個成果,這是我女兒,她正在騎馬。有趣的是,你可以在分類上看到“people riding on horse”,這說明Lumos起作用了。它識別出了horse,animal和people riding on horse。除此之外,它還有ranch(大牧場)標簽,這說明之前有人讓模型學習過“ranch”這個標簽對應的是什么圖形,同樣道理,下面還有outdoor,nature和has person。
現(xiàn)在我知道它已經(jīng)學會識別某些圖片了,但這還不夠。我還想知道它哪里有缺陷。
然后我就想,這里有沒有“sitting on chair”的模型。接下來我看到了Lumos呈現(xiàn)出來的這張人坐在椅子上的圖片。在這張圖片的分類里有people sitting,face, table,indoor,restaurant indoor等幾個標簽,這都很好。但并沒有chair這個標簽,這很不可思議。不過不用擔心,我已經(jīng)知道怎么修補這個缺陷了。只需要訓練這個模型幾分鐘,它就學會要在有chair的圖片里加上“chair”這個標簽了。
下面我給大家展示兩個其他研發(fā)團隊是如何應用Lumos平臺的。
圖片搜索。
現(xiàn)在,純粹的以圖搜圖技術已經(jīng)投入應用了。大家中場休息的時候可以用自己的手機試一下,點擊搜索引擎上的photo指令,用圖片搜索圖片。
我記得有一次我過生日的時候,我們沒點生日蛋糕,而是由我自己親手做了派拉(Paila,一種拉美菜)。我把和派拉的合照發(fā)布在了網(wǎng)上,但是上面并沒有出現(xiàn)任何關于這道菜的描述,但是當我再次搜索派拉圖片的時候,我看到了下面結果:
看,我的照片在搜索結果中,Lumos再次成功運行。這個過程很簡單并且效果還可以,不過我們要求的是精益求精。
所以圖片搜索的原理是什么呢?簡單來說,搜索圖片原理的關鍵之處就在于“概念”,即你搜索的內容和圖片顯示內容之間有共同的概念。搜索圖片就是讓Lumos對圖片的預測和對搜索內容的預測匹配起來。
下面這張圖片,看起來像是中央公園(central park)。
從圖片中可以提取出的概念有sky,cloud,city,park,grass,foliage和skyscraper等。
而在查詢(query)部分,我們用理解引擎把實體central park和要查詢文本“central park”聯(lián)系起來。因此,查詢機制從“central park”中提取出來的概念有l(wèi)ocation,park,place,attraction等等。現(xiàn)在,你有了兩組概念,接下來的事情就是尋找其中的關聯(lián)度。而你所做的,就是輸入查詢“central park”,最后得的到底是不是你想要的圖片,它們的概念匹配到底對不對。是的,它再一次成功運行了。
而接下來,我們?yōu)槭裁床荒苡眠@種方法做更多事呢?
我們希望用這種方法解決更多問題,因為它有很強的交互性(interactive)。我們上面說的認為挑選出來以訓練分類器的概念,其實事實上照片不知道它對應的是哪一部分。所以更好的辦法就是直接把圖像和查詢內容共同嵌入在共同潛在空間(common latent spaces)中,用減少排序損失(ranking loss)的方法進一步提高圖片搜索的精確度。
你的團隊可以用這種方法訓練分類器,看它的匹配性能強不強。在這個圖中你看到query出現(xiàn)了兩次,這表示這個研究團隊在選擇更合適的排序損失。他們會給同一個查詢內容,然后看哪個帶有標簽的知識更匹配你要查的內容,以確保你的嵌入的排序損失達到最小化。而結果表明,用這種方法進行圖片搜索,匹配度的確高了很多。
自動轉換文本
去年4月,我們公司上線了自動轉換文本(automatic alternative text,AAT)技術。用該技術,Facebook可以通過圖像識別認出用戶發(fā)布的圖片中包含的信息并讀出來,幫助盲人“看到”網(wǎng)站上的圖片。我們周圍的盲人有好幾億,所以解決幫盲人閱讀網(wǎng)絡上的圖片這個問題迫在眉睫。
Facebook從這三張圖中看到得分別是:左圖——披薩、食物,中圖——樹、天空、戶外、右圖——兩個人、微笑、太陽鏡、戶外、水。
而右圖除了有實物“兩個人”,還包含有人的動作“微笑”。我們發(fā)現(xiàn)Facebook可以讀出這里面有人,可以讀出來人在做什么。而對該技術的研發(fā)團隊來說,他們想做的就是希望告訴盲人“圖片中的對象在做什么”,這和僅告訴他們“圖片里面有什么”,有相當大的區(qū)別。
大家可以看下面一個例子:
Facebook用語音描述了一張圖片,“說”:Image may contain one person ,on stage and playing music al instrument(該圖片可能包含了一個在舞臺上彈樂器的人)。
而它聰明的地方在于,它并沒有給出像one person,person on stage,person are playing musical instrument這樣的描述。所以這是Facebook在進行自然語言處理(NLP)時,為了呈現(xiàn)出描述更符合自然語言所涉及到的另一個技術點。
進行圖片搜索時我們同時用到了兩項技術,一個是平臺上的文本理解技術,另一個是計算機視覺技術,即Lumos。
深度語義識別產(chǎn)品: Deep Text
而我們接下來講的是基于文本理解技術的另一個產(chǎn)品Deep Text。
就像做計算機視覺技術一樣,Deep Text所需要處理的數(shù)據(jù)量之大和大數(shù)據(jù)對系統(tǒng)的要求之高,是難以想象的。每天在Facebook上發(fā)布的翻譯帖子高達40億條。語言對文字內容的依賴程度非常強,因此想要精確地分析短語語義,尤其是用一種語言來解釋在另一種語言中原本不存在的現(xiàn)成說法。在這里我跟大家講一個關于語言翻譯的笑話,來說明語言真的非常難以理解。笑話是這樣的,說有一個人要進行中俄互譯,英譯俄的英語原句本來是是“Out of sight,out of mind(看不見了,也就忘了)”,而再把譯成的俄語反譯為英語的時候,句子則變成了“invisible idiot(看不見的傻子)”
Deep Text的一些應用
用于銷售
人們使用Facebook的范圍,已經(jīng)大大超出我們的想像,比如用它買賣產(chǎn)品,如下圖所示。
你希望人們能用母語在上面發(fā)布信息,你需要發(fā)現(xiàn)他發(fā)布的信息中蘊含有銷售意向,并且把帖子歸類為銷售帖,讓你能更快完成交易。
用于移動聊天工具
Deep Text另一個核心應用是在移動聊天工具上。比如你和一個朋友說“hey,我想搭個便車”, Deep Text就能識別出“需要坐車”,或者你發(fā)“我不需要搭便車”,那么它就不會出現(xiàn)任何提示,但你發(fā)“讓我們打車去那吧”,“我喜歡騎驢”,“打個的士”,“打個出租車”, “但是我需要打個的”,它都會出現(xiàn)“需要坐車”的提示。
用于社交推薦
還有一個是用在社交推薦上。如果有人在上面發(fā)帖子,請朋友推薦個餐廳、美容院之類的,Deep Text就能自動把朋友們的選擇推薦給你,并在地圖上標出實體所處的地理位置。
語音識別
我們平均每天轉錄約100萬個視頻文件,為其自動加字幕。這個功能對網(wǎng)站來說大有益處。很多地方性團體或企業(yè)都有網(wǎng)站,而用了我們這個功能之后,他們網(wǎng)頁的流量也會隨之增加。
除此之外,我們還做了一件非常棒的事——大開腦洞,把自動語音識別技術用在社交VR上,這個產(chǎn)品就是Social VR avatar。如果Social VR avatar發(fā)現(xiàn)有一個人正在說話,那么它不僅能較準確地還原出說話人講的內容,還能把他的動作,神情等都在虛擬任務上精確還原出來。
視頻風格變換
最后,我要介紹一下Facebook另一個超級炫酷的攝像功能。
它好玩的地方是,在你錄像的同時,相機可以為你的錄像內容實時添加你喜歡的藝術濾鏡。我們研究這個功能的時候發(fā)現(xiàn)它實時添加濾鏡的速度太慢了。一開始它處理一幀需要花十幾秒,但如果讓它在手機上實時添加濾鏡的話,我們要求它一秒鐘可以處理數(shù)十幀。在這里順便提一下,作為參考,其他同類可以實時添加濾鏡的應用都是在GPU服務器上跑的。這就是我們研究的時候遇到的困難。不過后來我們找到了更好的算法模型,在和FAIR實驗室同仁的共同努力下,解決了這個問題。
給大家展示下面三個視頻中。第一段視頻是研發(fā)團隊在騎自行車,你可以看到視頻時加過濾鏡的,并且是當時實時加上去的;第二個視頻錄的是美國某個城市的公交車;第三個視頻是一個很有趣的小應用,用戶的手移動時,手機上的小顆粒的狀態(tài)也會隨之有變化。
所以,我今天想和大家講的關鍵點就在于,我們想設計能在生活中廣泛應用的AI應用。讓鄉(xiāng)鎮(zhèn)也能用上我們的應用是我們要實現(xiàn)的大目標。為了實現(xiàn)這個目標,我們需要讓整個公司都更強大起來,我們需要專注于研發(fā)更多令人拍手稱贊的平臺,專注于產(chǎn)品的可用性,專注于建立更優(yōu)秀的研究團體。
我的演講就到這里,謝謝大家。
注:想知道facebook在@scale上更多精彩分享,請看雷鋒網(wǎng)此前報道《強化學習全解;Facebook 機器學習@Scale 2017 資料匯總 | 開發(fā)者日報》。雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。