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