1
本文作者: 亞萌 | 2016-12-26 22:03 |
編者按:12月18日,騰訊大數(shù)據(jù)峰會(huì)暨KDD China技術(shù)峰會(huì)在深圳舉行,華為諾亞方舟實(shí)驗(yàn)室主任李航博士在會(huì)上做了題為《自然語言處理中的深度學(xué)習(xí):過去、現(xiàn)在和未來》的演講,雷鋒網(wǎng)根據(jù)現(xiàn)場演講整理成本文。
深度學(xué)習(xí)在自然語言處理中的應(yīng)用,大概可以分成兩個(gè)階段。
第一個(gè)階段,主要是完全用深度學(xué)習(xí)的技術(shù)去做自然語言處理,是端到端的一個(gè)過程。
第二個(gè)階段,因?yàn)榇蠹铱吹搅松疃葘W(xué)習(xí)在做自然語言處理的優(yōu)勢和不足, 從而看到了新的機(jī)會(huì),把神經(jīng)處理和符號(hào)處理結(jié)合起來。
現(xiàn)在第一階段已經(jīng)基本結(jié)束,開始進(jìn)入第二個(gè)階段。所以,未來自然語言處理深度學(xué)習(xí)的發(fā)展趨勢應(yīng)該是一個(gè)神經(jīng)處理和符號(hào)處理的結(jié)合的混合模式。
我在闡述這個(gè)觀點(diǎn)的過程當(dāng)中,也會(huì)介紹一下華為諾亞方舟實(shí)驗(yàn)室做的一些工作。華為諾亞方舟實(shí)驗(yàn)室,在整個(gè)華為的戰(zhàn)略里,是肩負(fù)著人工智能、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘方面的研究任務(wù),既有偏長期的工作,也有偏短期的、產(chǎn)品化的工作,那么我今天主要是講一講,我們已經(jīng)進(jìn)行的基礎(chǔ)性長期性的工作。主要包括自動(dòng)問答、圖片檢索、機(jī)器翻譯、自然語言對(duì)話領(lǐng)域里,我們做了哪些模型,取得了什么樣的效果。
如今的自動(dòng)問答系統(tǒng)最簡單的實(shí)現(xiàn)方式就是檢索。
假設(shè)我們有一個(gè)問答庫,問答庫充滿了FAQ(常見問題),我們可以把它索引起來構(gòu)建一個(gè)檢索系統(tǒng)。那么如果來了一個(gè)新問題,我們可以用檢索的技術(shù),針對(duì)問題找到一系列答案候選,把候選答案與問題做匹配并做一個(gè)排序(把最相關(guān)的答案排在前面),最后把最合適的答案反饋給用戶。
這里面有兩個(gè)很重要的技術(shù),一個(gè)是匹配(Matching),一個(gè)就是排序(Ranking)。匹配和排序,往往是通過離線學(xué)習(xí)來完成的,其中要構(gòu)建很好的匹配模型和排序模型。
我們提出了這樣的一個(gè)匹配模型“Deep Match Model CNN”,在業(yè)界一定程度上被廣泛使用。其中最基本的想法就是,用卷積神經(jīng)網(wǎng)絡(luò)來去判斷,一個(gè)問句和一個(gè)答句二者是否可以匹配得很好。
這是一個(gè)二維模型(一個(gè)問句和一個(gè)答句),我們把每一句話看做是詞的序列,每個(gè)詞用向量來表示,那么每句話是“向量序列”。我們這個(gè)模型可以通過卷積和最大池化從兩個(gè)“向量序列”里抽取特征,從而根據(jù)特征來匹配。
圖片檢索,指的就是把圖片和文本相匹配,即給定一張圖片,對(duì)應(yīng)找到一個(gè)自然語言描述;或者反過來,給定一個(gè)自然語言描述,找到一張相關(guān)圖片。
在深度學(xué)習(xí)出來之前,類似“圖片檢索”這樣的事往往是不能做的?,F(xiàn)在我們可以用卷積神經(jīng)網(wǎng)絡(luò)來做圖片和文本的匹配。我們這里有兩個(gè)CNN,左邊的CNN抽取圖片的特征,右邊的CNN抽取文本的特征,二者的特征做匹配。我們基于大量的這種“成對(duì)”的數(shù)據(jù)來訓(xùn)練模型。
下面我給大家做一個(gè)演示,這是我們基于30萬對(duì)的文本和圖片,訓(xùn)練得到的一個(gè)匹配模型。比如,你輸入一個(gè)自然語言描述“跟朋友公園玩耍的照片”,便得到如下圖片檢索結(jié)果。
我們把從網(wǎng)上爬來的每張照片里,人為標(biāo)注了兩三句話的描述,有了這樣的標(biāo)注數(shù)據(jù)之后,我們構(gòu)建了剛才所講的匹配模型。除此之外,沒有對(duì)圖片和自然語言做任何其他的處理。我們在檢索結(jié)果里可以看到,頭10張圖片里往往都有兩三張非常相關(guān)的圖片,準(zhǔn)確率是相當(dāng)高了。
現(xiàn)在用神經(jīng)網(wǎng)絡(luò)去做機(jī)器翻譯的話,最典型的模型是基于循環(huán)神經(jīng)網(wǎng)絡(luò)RNN模型,也叫做“序列對(duì)序列學(xué)習(xí)”(Sequence to Sequence Learning)。如果現(xiàn)在我們把中文翻譯為英文,那么中文就是“源語言”,英文就是“目標(biāo)語言”。
前面我們提到,可以把自然語言描述轉(zhuǎn)變成“向量序列”。機(jī)器翻譯,實(shí)際上就是把中文(源語言)表示的“向量序列”轉(zhuǎn)換成英文(目標(biāo)語言)的"向量序列",然后進(jìn)行這種翻譯。
這個(gè)當(dāng)中有一個(gè)重要的機(jī)制,叫做Attention,將源語言序列和目標(biāo)語言序列動(dòng)態(tài)對(duì)應(yīng)在一起。比如現(xiàn)在要生成“Sitting”這個(gè)單詞,那么我們就要通過Attention機(jī)制,反向從源語言中找到跟“Sitting”最相關(guān)的單詞“坐”。
我們在已有的模型基礎(chǔ)上做了一個(gè)比較大的改進(jìn),在其中加入了一個(gè)覆蓋向量機(jī)制(Coverage Vetor)。為什么要引入這個(gè)機(jī)制呢?傳統(tǒng)的神經(jīng)翻譯機(jī)器模型,會(huì)產(chǎn)生過翻譯(重復(fù)翻譯)或少翻譯的現(xiàn)象,那么Coverage Vetor機(jī)制,就用來記憶到目前為止,我們到底翻譯了多少內(nèi)容,并據(jù)此動(dòng)態(tài)地去調(diào)整Attention機(jī)制。
比如在英文里面我們要產(chǎn)生"The"這樣虛詞的時(shí)候,它受到源語言的影響比較少,因?yàn)檫@是英文自己的語言特性決定要用“The”這樣的詞,所以這時(shí)就需要我們的Attention弱一些。所以我們需要?jiǎng)討B(tài)地去調(diào)整Attention機(jī)制,從而大幅度提高機(jī)器翻譯的準(zhǔn)確率。
下面看一看我們的模型運(yùn)行的效果。比如,我們到互聯(lián)網(wǎng)上隨便找一句話:
“據(jù)韓國媒體報(bào)道,因?yàn)榇罅恐袊慰腿∠A(yù)約,正在韓國大邱居心搞的‘炸雞啤酒節(jié)’一項(xiàng)核心活動(dòng)告吹?!?/p>
以下分別是諾亞方舟的神經(jīng)模型和網(wǎng)上某個(gè)在線翻譯系統(tǒng)給出的結(jié)果,大家可以對(duì)比來看。
需要提到的一點(diǎn)是,我們的這個(gè)模型是最基本的狀態(tài),并沒有做其它工程上的事情。粗略來看的話,我們用這個(gè)深度學(xué)習(xí)做出的翻譯結(jié)果更加流暢,當(dāng)然也有一些問題,就是有些詞它還沒有翻譯出來。
那么我們這個(gè)系統(tǒng)跟其他業(yè)界相比,是個(gè)什么水平呢?
在同一個(gè)測試題上,我們跟谷歌的NMT神經(jīng)系統(tǒng)相比,還是有點(diǎn)差距(大約差3-4個(gè)百分點(diǎn)),因?yàn)樗麄冇懈蟮挠?xùn)練庫和更強(qiáng)的計(jì)算架構(gòu)。但我們這個(gè)非常初級(jí)的模型,相比于互聯(lián)網(wǎng)的一般的搜索引擎里面提供的機(jī)器翻譯功能,效果已經(jīng)好很多了。
在自然語言對(duì)話這塊,我們提出了一個(gè)叫做“Neural Responding Machine”的模型,這是業(yè)界第一個(gè)完全基于深度學(xué)習(xí)的模型去做的單輪對(duì)話系統(tǒng)。
剛才我們談到的幾點(diǎn),包括自動(dòng)問答、機(jī)器翻譯,都是基于“檢索”的,那么對(duì)話系統(tǒng)的特點(diǎn),就是基于“生成”的。
當(dāng)你輸入一句話到這個(gè)系統(tǒng)里,這個(gè)系統(tǒng)會(huì)自動(dòng)產(chǎn)生一個(gè)回復(fù),這個(gè)模型是通過大量的數(shù)據(jù)訓(xùn)練出來的,也是一個(gè)“序列對(duì)序列學(xué)習(xí)”的模型。那么下面,我們可以看一下演示。
這個(gè)系統(tǒng)是我們根據(jù)微博400萬份數(shù)據(jù)訓(xùn)練而成的,比如當(dāng)你輸入“我想買一部三星手機(jī)”,系統(tǒng)會(huì)自動(dòng)生成回答“還是支持一下國產(chǎn)吧”。
這句生成的話,不是我們教它說的,而是它自己產(chǎn)生出來。我們來看第二個(gè)例子。
問:華為手機(jī)怎么樣?
答:用了都說好。
(臺(tái)下爆發(fā)一陣笑聲)第二個(gè)例子實(shí)際上是開玩笑的,如果多次讓系統(tǒng)看到這樣的對(duì)話,它就會(huì)這樣去說了。
所以這個(gè)模型是有記憶功能的,但卻不是死記。在經(jīng)過大量數(shù)據(jù)訓(xùn)練之后,它能夠在96%的情況下產(chǎn)生自然的回復(fù),這個(gè)是非常令人吃驚的。并且在76%的情況下,可以形成一個(gè)單輪的對(duì)話。其實(shí)自然語言對(duì)話還是非常難的,剛才看到這樣的簡單機(jī)制還是很難幫我們真正地去實(shí)現(xiàn)自然語言對(duì)話系統(tǒng),這是需要大概上億參數(shù)、幾百萬的神經(jīng)元,把對(duì)話的模式(Pattern)記憶下來,從而產(chǎn)生回復(fù)。
剛剛的幾個(gè)例子里,用大數(shù)據(jù)、深度模型完成一些端到端的任務(wù),而且準(zhǔn)確率還不錯(cuò)。特別是圖片搜索和機(jī)器翻譯方面,有的甚至可以接近和達(dá)到實(shí)用水平。同時(shí),我們也明顯看到深度學(xué)習(xí)在自然語言處理方面的一些局限,它針對(duì)長尾現(xiàn)象比較弱,很難結(jié)合人類的知識(shí)。在實(shí)際應(yīng)用中,我們希望將類似人類的一般知識(shí)放到機(jī)器系統(tǒng)里,讓這個(gè)系統(tǒng)能夠跟我們?nèi)艘粯?,使用這些知識(shí)。如果純粹使用神經(jīng)網(wǎng)絡(luò)模型往往是比較困難的,所以未來的自然語言處理的發(fā)展方向,應(yīng)該是深度學(xué)習(xí)(神經(jīng)處理)與符號(hào)處理的結(jié)合。
所以我們面臨很多挑戰(zhàn)性的任務(wù),但我們已經(jīng)開始在這方面做一些嘗試。
下面介紹幾個(gè)例子,一個(gè)是在自動(dòng)問答領(lǐng)域,我們提出一個(gè)名為“Neural Enquirer”的模型,當(dāng)然我們現(xiàn)在還在不斷改進(jìn)這個(gè)模型。這個(gè)模型最基本的想法就是結(jié)合符號(hào)處理和神經(jīng)處理。比如,我們有一個(gè)包含大量“奧林匹克運(yùn)動(dòng)會(huì)”問答關(guān)系的數(shù)據(jù)庫。來了一個(gè)問詢語句,比如:
Which city hosted the longest Olympic game before the game in Beijing?
這樣一個(gè)長句對(duì)應(yīng)著一個(gè)非常復(fù)雜的命令,我們用神經(jīng)網(wǎng)絡(luò)將其轉(zhuǎn)換成向量表示,與數(shù)據(jù)庫里的向量表示做匹配,經(jīng)過多次匹配來真正找到復(fù)雜的邏輯關(guān)系,最后找到答案。
我們另外在做的一個(gè)事情,也是問答系統(tǒng),跟剛才所講到的相似但不完全一樣。我們用到了一個(gè)包含知識(shí)圖譜的知識(shí)庫,包括“三元組”(圖中所示為 Learning System、Knowledge Graph和Question Answering System),據(jù)此提出了一個(gè)名為“GenQA”的模型,它可以結(jié)合符號(hào)處理和神經(jīng)處理,既用符號(hào)又用分布式表達(dá)做檢索,通過神經(jīng)網(wǎng)絡(luò)產(chǎn)生答案。因?yàn)闀r(shí)間關(guān)系,這個(gè)模型的具體細(xì)節(jié)我不詳細(xì)介紹了。
我們還在做的一件事情,就是將神經(jīng)機(jī)器翻譯(NMT)和統(tǒng)計(jì)機(jī)器翻譯(SMT)結(jié)合起來。其基本想法就是,傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯有很多優(yōu)勢,那么當(dāng)我們在使用神經(jīng)機(jī)器翻譯的時(shí)候,用統(tǒng)計(jì)機(jī)器翻譯來輔助。因?yàn)镹MT嚴(yán)重依賴于大數(shù)據(jù),如果數(shù)據(jù)不足,往往還不如你用傳統(tǒng)的SMT方法來的好。這種結(jié)合,能夠提升解決實(shí)際問題的能力,比如翻譯不當(dāng)或?qū)τ谖吹侨朐~的翻譯問題。
我們剛才談到“序列對(duì)序列學(xué)習(xí)”可以幫助我們?nèi)プ鰴C(jī)器翻譯,也就是說NMT靠自己來決定產(chǎn)生哪些詞,那么在新模型里,SMT也會(huì)對(duì)詞的產(chǎn)生造成影響,這兩者結(jié)合起來,判斷最終應(yīng)該產(chǎn)生什么樣的詞。這樣可以在一定程度上,提升翻譯的準(zhǔn)確度。
剛剛我們提到單輪對(duì)話做到了76%的準(zhǔn)確率,我們希望能夠把準(zhǔn)確率再進(jìn)一步提升。不知大家有沒有觀察到這么一個(gè)現(xiàn)象,那就是我們在跟別人聊天的時(shí)候,往往會(huì)去重復(fù)一些對(duì)方已經(jīng)說過的詞組。比如說會(huì)發(fā)生這樣的對(duì)話:
-My Name is Harry Potter.
-Hi, Harry Potter.
這樣的一個(gè)對(duì)話是蠻自然的。所以一個(gè)可能重要的機(jī)制就是,把問句里的一部分復(fù)制到我們答句里,使得單輪對(duì)話的效果更好、更順暢。我們可以考慮這樣的一個(gè)叫做“CopyNet”的模型,其效果是非常好的。前面我們提到,單輪對(duì)話也是“序列對(duì)序列學(xué)習(xí)”,那么當(dāng)我們產(chǎn)生組成答句的各個(gè)詞匯時(shí),就需要決定在某個(gè)位置產(chǎn)生特定的詞,所以每個(gè)位置都面臨一個(gè)動(dòng)態(tài)的選擇:是生成新的詞,還是從輸入語句里復(fù)制一些詞過來。
以上就是我們?nèi)A為諾亞方舟實(shí)驗(yàn)室大致進(jìn)行的工作,總的來說就是:深度學(xué)習(xí)確實(shí)給自然語言處理帶來了一些突破性進(jìn)展,主要體現(xiàn)在能夠端到端地訓(xùn)練模型以完成不同的任務(wù),包括自動(dòng)問答、機(jī)器翻譯和圖片檢索等,但是它仍然有一定的局限性。當(dāng)自然語言處理牽涉到更高層次的推理、知識(shí)等方面內(nèi)容時(shí),這種局限性就很容易凸顯出來。所以我們現(xiàn)在采取的方法就是將深度學(xué)習(xí)和符號(hào)處理結(jié)合起來,這也就是自然語言處理未來的發(fā)展方向。
PS:關(guān)注雷鋒網(wǎng)(微信公眾號(hào):雷鋒網(wǎng))
相關(guān)文章:
語音交互的痛點(diǎn),為什么扎克伯格精心打造的AI“賈維斯”還會(huì)出糗?
AI 初學(xué)者入門指南:深度學(xué)習(xí)的五級(jí)分類
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。