Facebook的AML和FAIR團(tuán)隊(duì)合作進(jìn)行自然語言處理對自然語言理解進(jìn)行著合作研究。在2017年4月19日舉辦的F8開發(fā)者大會(huì)上,F(xiàn)acebook向公眾介紹了他們的研究進(jìn)展、自然語言理解在Facebook產(chǎn)品中的應(yīng)用,并且介紹了平民化的自然語言理解平臺(tái)CLUE,希望依靠大家的力量,繼續(xù)豐富自然語言理解的應(yīng)用。
演講者:Facebook工程主管Benoit Dumoulin,技術(shù)項(xiàng)目主管Aparna Lakshmiratan。雷鋒網(wǎng)AI科技評論聽譯。
(首先上臺(tái)的是Benoit)大家好,我是Benoit,我是Facebook自然語言理解團(tuán)隊(duì)的負(fù)責(zé)人。
我們團(tuán)隊(duì)隸屬于AML(applied machine learning,機(jī)器學(xué)習(xí)應(yīng)用小組)。今天我想給大家講講幾個(gè)我們團(tuán)隊(duì)最近的工作成果,講講我們正在研究什么,同時(shí)也會(huì)講到我們遇到、并且正在努力解決的問題和挑戰(zhàn)。等一下我還會(huì)請一個(gè)同事上臺(tái)來介紹一個(gè)有意思的產(chǎn)品,其中就用到了我們團(tuán)隊(duì)開發(fā)的技術(shù)。
Facebook為什么需要自然語言理解?
進(jìn)入正題,當(dāng)你打開Facebook之后,你肯定會(huì)用到文字。文字是重要的溝通方式,F(xiàn)acebook的每個(gè)產(chǎn)品里面都能看到文字,Instagram,Messenger,Whatsapp等等,文字真的到處都是。而你每天在Facebook看到的或者寫下的文字,是沒有任何要求,任何人都可以隨意發(fā)揮的,不需要戲劇化或者怎樣。所以如果我們能夠理解這些文字,那我們就肯定可以讓每個(gè)用戶的使用感受都得到提升。
理由是這樣的,拿我自己舉例吧,其實(shí)我是法國裔加拿大人,在蒙特利爾長大的(觀眾喝彩),(笑)。那我呢,工作是科學(xué)家,業(yè)余時(shí)間喜歡冰球,所以當(dāng)我每天打開Facebook的時(shí)候,我想看到我朋友們的新動(dòng)向、想跟他們聊天;我也想知道最新的冰球比賽結(jié)果如何,你看現(xiàn)在就有一場,我挺關(guān)心我喜歡的俱樂部怎么樣了——不告訴你們叫什么(笑)。同時(shí)呢,除了看這些新聞,我還需要關(guān)注機(jī)器學(xué)習(xí)方面的動(dòng)向,我得知道下一場會(huì)議在什么時(shí)候、都有誰會(huì)去、我的朋友們?nèi)ゲ蝗?、是誰組織的、有沒有什么優(yōu)秀論文等等,各種各樣的事情。為了達(dá)到這樣的目的呢,我們就需要想辦法理解這些文字內(nèi)容,然后根據(jù)我的興趣進(jìn)行匹配。
我們經(jīng)常提到“自然語言理解”和“內(nèi)容識別”,要表達(dá)什么意思呢?簡單說就是能給別人解釋——一段文字經(jīng)過算法處理以后,我們能夠做出結(jié)論或者進(jìn)行引申。在我們能做的事情里面,最基本的之一就是給文字分類。
比如(右邊)這段內(nèi)容是我發(fā)的,把它輸?shù)綑C(jī)器里,就能訓(xùn)練它如何把內(nèi)容分類成為話題,然后就能跟別人解釋了,“哦,這段內(nèi)容是關(guān)于廚藝的。” (左邊)還有一段關(guān)于籃球的內(nèi)容是我的朋友Jole發(fā)的,不過如果你仔細(xì)看一下文字的話,你就會(huì)發(fā)現(xiàn)它也是關(guān)于廚藝的,只是不那么明顯。不過不用擔(dān)心,我們訓(xùn)練的機(jī)器也可以處理這樣的內(nèi)容。
我們當(dāng)然還能做更棒的,更深入地理解一段話,區(qū)分出其中的實(shí)體。這是另一個(gè)朋友的動(dòng)態(tài),要去看演出,這個(gè)樂隊(duì)我沒怎么聽說過。當(dāng)你仔細(xì)看一下文字部分就會(huì)發(fā)現(xiàn),名字挺逗, 樂隊(duì)名字是“Muckbucket Sunshine”,演出地點(diǎn)是“BOM BOM ROOM”。那如果這種時(shí)候我們能區(qū)分出實(shí)體,知道了是哪個(gè)樂隊(duì)、在哪個(gè)場館演出,然后就可以把它匹配給喜歡音樂的人;然后呢,我們不需要把所有音樂相關(guān)的信息都推薦給他們,只需要推薦跟這個(gè)樂隊(duì)或者這個(gè)場館相關(guān)的就可以了。我們所講的“內(nèi)容識別”大概就是這樣。
對于Messenger,你們在聽過昨天的演講、參加一些活動(dòng)以后就會(huì)知道,一旦能夠理解文字內(nèi)容了,就可以做一些很有趣的事情。比如這段對話,我和我的兩個(gè)朋友打算一起出去喝酒。區(qū)分一下實(shí)體的話,就是我們要去palo alto,時(shí)間也能看得出來。這里我想強(qiáng)調(diào)一下,人類可以很容易地理解這段對話,實(shí)際上我們3個(gè)人用了3種不同的方式來表達(dá)時(shí)間。
Facebook的目標(biāo)和方法
所以我們的目標(biāo)就是設(shè)計(jì)和訓(xùn)練人工智能,讓它們對文字內(nèi)容的理解準(zhǔn)確度達(dá)到人類水平,確實(shí)是這樣。這個(gè)目標(biāo)其實(shí)挺難達(dá)到的,我試著跟你們解釋一下,F(xiàn)acebook上面的文字完全是自由地書寫的,沒有任何限制,用戶們想怎么寫就怎么寫,對不對。
我們打算怎樣達(dá)到這個(gè)目標(biāo)呢,不是什么秘密,我們用了深度學(xué)習(xí)的方法。我們最重要的方法之一是來自這篇論文的。它的名字叫《從零開始進(jìn)行文本理解》(《Text understanding from scratch》),是幾年前公開的,其中介紹了可以用深度學(xué)習(xí),就是只需一個(gè)標(biāo)準(zhǔn)的網(wǎng)絡(luò)模型就能進(jìn)行語言識別,并且解決大多數(shù)在其中遇到的問題。我們跟Facebook的研究團(tuán)隊(duì)一起研究了這篇論文,然后我們就決定建立一個(gè)能夠支持論文中這樣的算法的平臺(tái)。
這是我們在Facebook建的這個(gè)平臺(tái)建好以后的樣子,我們把它叫做Deep Text,是幫我們達(dá)成文本識別方面目標(biāo)的秘密武器。我們把這個(gè)平臺(tái)建立得可以靈活切換,還可以升級拓展。我們每天會(huì)拿很多文本給它訓(xùn)練或者處理。它需要支持多種語言,如果你參與了之前的演講,你一定明白我們有很多用其它語言的用戶,他們同樣會(huì)用不同的語言創(chuàng)造很多內(nèi)容,我們也需要理解。還有,這個(gè)方面有許許多多的問題需要解決,我們希望這個(gè)平臺(tái)能夠以無縫的方式解決許多種不同的問題。
我剛才解釋過的內(nèi)容分類、實(shí)體識別和區(qū)分只是眾多待解決問題中的幾個(gè),我們還可以做很多別的事情。我等下還會(huì)說一個(gè)叫做“文本相似性”的,也是能夠很自然地用這樣的平臺(tái)解決的?,F(xiàn)在我們回過頭來再講一下Deep Text,看看它是怎么解決文本分類的問題的。
剛才說過Deep Text用到了深度學(xué)習(xí),其中很有意思的一點(diǎn)就是單詞是以向量的形式表示的。我們在向量空間里表示這些詞,這樣一來,語義學(xué)上相似的詞也就會(huì)處在更接近的位置上;不怎么相似的詞就會(huì)離得很遠(yuǎn)。這里是一張這種表示方法的示意圖,里面的藍(lán)色和粉色點(diǎn)就是單詞??梢钥吹剑瑤讉€(gè)球類運(yùn)動(dòng)的名稱挨得比較近,其它概念性的詞雖然也跟運(yùn)動(dòng)相關(guān),但是離得就要遠(yuǎn)一些。
我們實(shí)際的措施,基本上是基于卷積網(wǎng)絡(luò)的,這是一種很自然的吸收組合上下文的方法。這里的“上下文”是指,如果你單獨(dú)拿一個(gè)詞出來,它可能會(huì)有好多種含義,但是當(dāng)這個(gè)詞在句子中、有上下文的時(shí)候,那這個(gè)詞的意思就會(huì)變得明確得多。這就是我們這種方法可以很自然地做到這件事的原因。基本上你也自己能做一個(gè)話題或者分類識別器,就用這樣的網(wǎng)絡(luò)。
剛才我提到了文本相似性,它可以很好地說明我們這個(gè)平臺(tái)的靈活性。關(guān)于文本相似性,我們就拿上一頁的那種網(wǎng)絡(luò),然后把它拓展成了一個(gè)復(fù)雜得多的模型,像這樣。在這里我們要做的是,用一側(cè)的網(wǎng)絡(luò)對一份文本內(nèi)容進(jìn)行分析建模,我們把這種模型叫做“雙塔模型”,如果你是業(yè)內(nèi)人士的話,你肯定明白我是什么意思。所以你用一側(cè)的網(wǎng)絡(luò)對一條文本進(jìn)行建模,用另一側(cè)的網(wǎng)絡(luò)對另一條文本進(jìn)行建模,然后再用一個(gè)函數(shù)對語義區(qū)別大的進(jìn)行懲罰。
有了這樣的方法,我們就可以做很厲害的事情了。比如這個(gè),我不是喜歡冰球嘛,那么有了這樣的模型,如果有一個(gè)我喜歡的動(dòng)態(tài),那這個(gè)模型就可以學(xué)會(huì)找到更多的語義類似的動(dòng)態(tài),然后我就可以看到更多自己喜歡的東西。這個(gè)模型挺厲害的,我們在很多Facebook的產(chǎn)品中都用到了這個(gè)模型。
這是我們當(dāng)前所做的,對于未來,我們想要做得更好。這是我們在通往與人類類似的文本識別準(zhǔn)確率路上的小目標(biāo)之一,我們可以把文字和圖片或者視頻進(jìn)行聯(lián)合識別。還是回到我朋友Jole的這個(gè)動(dòng)態(tài),文字部分是很隱晦的,但是這張圖片非常好理解。所以如果把兩者加以結(jié)合,讓圖片和文字里面的信息都發(fā)揮作用,建立一個(gè)聯(lián)合識別的模型,就肯定會(huì)對這份內(nèi)容有很好的理解。
以上就是我們最近在做的事情,我們也一直努力做出更好的成果。那么我就講到這里,下面我會(huì)邀請我的同事上臺(tái),她會(huì)繼續(xù)給大家講一些的實(shí)際產(chǎn)品,其中就用到了我們團(tuán)隊(duì)開發(fā)的技術(shù)。
(Benoit走下講臺(tái),觀眾鼓掌,Aparna走上講臺(tái))
謝謝Benoit,我是Aparna,我來跟大家講講目前Deep Text是如何運(yùn)用在真實(shí)的Facebook產(chǎn)品中的。我不知道大家有沒有想過,實(shí)際上人們會(huì)用Facebook的群組做各種各樣的事情,尤其是用它來買賣東西。
自然語言理解已經(jīng)在改善用戶體驗(yàn)
大概一年之前,群組的商務(wù)團(tuán)隊(duì)找到我們,讓我們幫忙看看有沒有辦法知道一個(gè)動(dòng)態(tài)是不是關(guān)于賣東西的;如果真的要賣東西,我們能不能幫用戶更好地達(dá)成他的目標(biāo),來給用戶更好的使用體驗(yàn)。這其中的難點(diǎn)是,當(dāng)用戶想要賣東西的時(shí)候,我們不想給用戶發(fā)動(dòng)態(tài)的方式加上任何束縛,我們還是希望用戶用自然語言、自由地表達(dá),但是我們還是要能夠識別出用戶想要賣東西的意愿。當(dāng)我們有了Deep Text以后,我們就可以做一個(gè)高精確度的分類器,它可以閱讀用戶的動(dòng)態(tài),看看用戶有沒有賣東西的打算。而且它還可以識別得更深,就像剛才Benoit說的那樣,識別文本中的實(shí)體,在這個(gè)場景下就可以是產(chǎn)品名稱、價(jià)格、主要特性,然后我們就可以給用戶提供很有吸引力的使用體驗(yàn)。
再舉一個(gè)例子,社交推薦,我在自己的Facebook上都經(jīng)常會(huì)使用這個(gè)功能。借助Deep Text,我們可以觀察用戶的動(dòng)態(tài),如果你在讓你朋友幫忙推薦東西的,比如好吃的飯館、好玩的活動(dòng),又比如這個(gè)例子里,想找一個(gè)靠譜的理發(fā)店。我們能做的就是,用Deep Text判斷用戶想要做什么樣的事情,一旦判斷出來,接下來的事情會(huì)給用戶很棒的體驗(yàn),當(dāng)你的朋友給出建議以后,評論會(huì)分類,找出其中的實(shí)體,更重要的是把找到的實(shí)體鏈接到Facebook的地址簿里,然后展示成美觀的地圖,方便用戶互動(dòng),最終達(dá)成自己的目標(biāo)。
最后再說一個(gè)應(yīng)用的話,你們可能在昨天的演講里已經(jīng)聽過了,那就是Messenger中的M建議。當(dāng)M覺得它能夠幫助你做什么的時(shí)候,它就會(huì)自動(dòng)在你的聊天中跳出來。它吸引人的地方,就是縮短了從“想做”到“做成”之間的距離。所以M可以幫忙做很多你想要做的事情。比如,當(dāng)M發(fā)現(xiàn)你要去哪里的時(shí)候,它可以幫你叫一輛車,看你喜歡Uber還是lift,而且可以不用離開Messenger界面就叫到車。現(xiàn)在這段視頻就演示了當(dāng)M發(fā)現(xiàn)用戶打算叫外賣,只要點(diǎn)一下,就可以用一種新的體驗(yàn)叫到外賣。
而且你還會(huì)發(fā)現(xiàn)這種體驗(yàn)是共享化的,對話里的每個(gè)人都可以參與這個(gè)點(diǎn)餐的過程。點(diǎn)好以后仍然通過M就可以完成付款。所以這些事情都可以不用離開Messenger界面就可以搞定,而隨著M變得越來越智能,我們也希望有更多類似這樣的建議可以給更多的用戶意愿帶來方便。
接下來我想講講,當(dāng)我們在研發(fā)這些產(chǎn)品的時(shí)候都遇到了一些什么樣的困難。
第一個(gè)困難是,很難批量復(fù)制機(jī)器學(xué)習(xí)所需要的專家。大多數(shù)時(shí)候,我們團(tuán)隊(duì)的機(jī)器學(xué)習(xí)專家和產(chǎn)品團(tuán)隊(duì)的工程師一起合作,做出這些非常高準(zhǔn)確度的分類器。但是你會(huì)注意到,在我提到的這些應(yīng)用例子里,我們還想給很多很多別的用戶意愿做出分類器,還有很多很多的實(shí)體我們想要識別提取,但是很明顯,我們沒辦法像批量化建立功能一樣地讓機(jī)器專家們也批量化。
第二個(gè)問題是重復(fù)使用性,我們AML團(tuán)隊(duì)很看重這件事。回想一下前面我舉的兩個(gè)例子,其中有一個(gè)提取地址的功能,我們會(huì)覺得這個(gè)功能既要用在Messenger的M建議功能里,也要用在社交推薦里是很自然的事情。所以我們也在想如何才能建立一個(gè)平臺(tái),讓不同的程序都能共享和重復(fù)使用這個(gè)平臺(tái)的模型、特性以及數(shù)據(jù),這樣它們就都可以找到突破口,避免開發(fā)的時(shí)候要每次重復(fù)做類似的工作。
第三個(gè)難點(diǎn)你們應(yīng)該都理解,機(jī)器學(xué)習(xí)的關(guān)鍵是數(shù)據(jù),高質(zhì)量的有標(biāo)簽數(shù)據(jù);要獲得這樣的數(shù)據(jù),大家可能都知道,不僅僅是難,而且還很費(fèi)錢。所以我們也在想如何優(yōu)化標(biāo)簽,讓我們在訓(xùn)練這些分類器和提取器的時(shí)候盡可能提高標(biāo)簽的使用效率。
介紹一個(gè)平臺(tái)給你認(rèn)識一下吧,它叫做CLUE
這幾點(diǎn)就把我們引向了CLUE。CLUE是一個(gè)語言識別引擎,是一個(gè)自助式的平臺(tái)。
而CLUE做的事情,是讓機(jī)器學(xué)習(xí)變得民主化,它用優(yōu)秀的人工智能和漂亮的用戶界面吸引著人們進(jìn)入,這樣Facebook的每個(gè)用戶,不一定非要是機(jī)器學(xué)習(xí)專家,都可以到CLUE里面用最先進(jìn)的自然語言理解技術(shù)建立一個(gè)實(shí)體提取器和內(nèi)容分類器。這樣,當(dāng)任何的新應(yīng)用需要的時(shí)候,都可以由CLUE這個(gè)統(tǒng)一的入口來建立提取器和分類器。
第二個(gè)方面是,CLUE是建立于Deep Text和Facebook的AI開發(fā)平臺(tái)FB LearnerFlow2和Caffe2之上的,相信你們今天已經(jīng)聽說過它們了。對Facebook整體來說,這些怕平臺(tái)極大地提高了靈活性,讓人們可以共享和重復(fù)使用模型、數(shù)據(jù)和特性。
第三個(gè)方面是對標(biāo)簽效率的提升。CLUE使用了“主動(dòng)學(xué)習(xí)”功能,這個(gè)功能在機(jī)器學(xué)習(xí)社區(qū)經(jīng)??梢砸姷?,讓它可以為獲取到的標(biāo)簽做出優(yōu)化,讓分類器只學(xué)習(xí)它還需要學(xué)習(xí)的、還沒有弄明白的標(biāo)簽。
接下來,我會(huì)站在一個(gè)想要運(yùn)用CLUE的工程師的角度,利用它自助式的設(shè)計(jì),建立一個(gè)分類器,就比如叫外賣的吧。那么你首先需要做的事情是收集一些數(shù)據(jù),你需要先給分類器一些正確的樣本,比如能表現(xiàn)出叫外賣意愿的短語或者句子。你可以看到,CLUE提供了一個(gè)非常平易近人的用戶界面,帶有一些關(guān)鍵詞搜索來提示你,方便你輸入帶有這種意愿的語句。
在這個(gè)例子里,“我想吃賽百味或者漢堡王”就帶有叫外賣的意愿,算是一個(gè)不錯(cuò)的開始。你可以添加許多這樣的確實(shí)具有意愿的句子,來達(dá)成你的目標(biāo)。正確和不正確的樣本都行,當(dāng)你開始收集以后,你需要做的就是給他們加標(biāo)簽。
同樣地,CLUE有一個(gè)美觀的用戶界面來讓你做這件事。你不僅可以標(biāo)出哪些有意愿,哪些沒意愿,而像Benoit前面說的那樣,還可以給實(shí)體加標(biāo)簽。對我們這個(gè)例子來講,“賽百味”和“漢堡王”都是值得加標(biāo)簽的內(nèi)容,可以幫助你達(dá)成你的目標(biāo)。
當(dāng)你添加好標(biāo)簽以后,CLUE就會(huì)自動(dòng)地在后臺(tái)訓(xùn)練出一個(gè)分類器。在你添加標(biāo)簽的過程中,你就已經(jīng)得到了一個(gè)可以使用的分類器了。如果你才剛剛開始的話,效果可能還不是很好,但是畢竟有一個(gè)了。然后你就可以看看分類器運(yùn)行的狀況如何。
CLUE支持多種可視化方式,比如召回率曲線、AUC曲線等等,很多種圖形供你選擇?,F(xiàn)在你還可以監(jiān)控你的分類器運(yùn)行狀況如何,來看看你計(jì)劃的任務(wù)完成得如何。
你還可以用CLUE做一件厲害的事情,就是你可以用這種初始狀態(tài)的分類器去分類真實(shí)的Facebook信息流,看看結(jié)果如何。我來演示一下要怎么做,在用這個(gè)分類器對真實(shí)的信息流分類以后,可能很多東西已經(jīng)分類對了,但是更重要的是,能看到有哪些東西分類錯(cuò)了。
在這個(gè)例子里,CLUE就告訴你,你的分類器好像有點(diǎn)弄混了,分不清“能送上門嗎”和“我們端著面條說吧”。這就可以提示你如何改進(jìn)數(shù)據(jù)和標(biāo)簽,給分類器更正這些錯(cuò)誤,給怎樣得到越來越好的結(jié)果指明了方向。
這就是我前面提到過的主動(dòng)學(xué)習(xí)循環(huán)。隨著你調(diào)整好了你的模型,當(dāng)你對結(jié)果滿意的時(shí)候,就可以點(diǎn)一下CLUE里面的“部署”按鈕,就這么簡單。點(diǎn)一下按鈕,你的分類器就可以部署到所有的數(shù)據(jù)中心里,這樣,只要有需要的Facebook產(chǎn)品團(tuán)隊(duì)都可以到其中選擇、并把你的分類器應(yīng)用到他們的程序中。
算上Deep Text和CLUE,我們使用在Facebook產(chǎn)品里面的模型已經(jīng)超過了200個(gè)。這里面很厲害的事情是,不僅機(jī)器學(xué)習(xí)的專家們使用這些模型,F(xiàn)acebook里不同產(chǎn)品團(tuán)隊(duì)的科學(xué)家和工程師也在用這些模型。
在這場演講的開頭,Benoit說我們真正的目標(biāo)是通過各種各樣的應(yīng)用,借助數(shù)百萬計(jì)的內(nèi)容把人和人連接起來。今天的Facebook已經(jīng)做得很好的事情,是通過利用社交信息流,借助你朋友們所說的話、所做的事把你和內(nèi)容連接起來。我們很想要拓展這件事情,想要把你和這世界中你感興趣的數(shù)百萬計(jì)的內(nèi)容也連接起來。即便今天說了這么多,其實(shí)我們也只是剛剛開始,為了讓AI能夠達(dá)到這些目標(biāo)、提供這些新的用戶體驗(yàn),還有很多的事情等待我們?nèi)プ?。謝謝大家!