天天看點

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

http://www.csdn.net/article/2015-12-04/2826388

大資料 深度學習 自然語言處理 自然語言對話 NRM allowtransparency="true" frame scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2015-12-04%2F2826388&type=3&count=&appkey=&title=%E6%9C%AC%E6%96%87%E9%92%88%E5%AF%B9%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%AF%B9%E8%AF%9D%E4%BB%BB%E5%8A%A1%E5%92%8C%E7%9B%B8%E5%85%B3%E6%8A%80%E6%9C%AF%E8%BF%9B%E8%A1%8C%E5%88%86%E7%B1%BB%EF%BC%8C%E5%88%97%E4%B8%BE%E4%B8%BB%E8%A6%81%E6%8A%80%E6%9C%AF%E6%8C%91%E6%88%98%EF%BC%8C%E8%A7%A3%E6%9E%90%E5%A6%82%E4%BD%95%E6%9E%84%E5%BB%BA%E5%9F%BA%E4%BA%8E%E6%95%B0%E6%8D%AE%E7%9A%84%E5%AF%B9%E8%AF%9D%E7%B3%BB%E7%BB%9F%EF%BC%8C%E5%B9%B6%E8%AF%A6%E7%BB%86%E4%BB%8B%E7%BB%8D%E6%9C%80%E6%96%B0%E7%9A%84%E5%9F%BA%E4%BA%8E%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9A%84%E5%AF%B9%E8%AF%9D%E6%8A%80%E6%9C%AF%E3%80%82%E5%90%8C%E6%97%B6%E8%BF%98%E4%BB%8B%E7%BB%8D%E4%BA%86%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E5%9C%A8%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E8%A1%A8%E7%A4%BA%E5%AD%A6%E4%B9%A0%E4%B8%AD%E7%9A%84%E6%9C%80%E6%96%B0%E6%88%90%E6%9E%9C%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1449213429763" width="22" height="16"> 摘要:本文針對自然語言對話任務和相關技術進行分類,列舉主要技術挑戰,解析如何建構基于資料的對話系統,并詳細介紹最新的基于深度學習的對話技術。同時還介紹了深度學習在自然語言表示學習中的最新成果。

前言

我們在日常生活中經常使用自然語言對話系統,比如蘋果Siri。現在的對話系統多數隻能做單輪對話,可以幫助使用者完成一些簡單的任務,如問天氣,查股票(如果做多輪對話,也是在單輪對話的基礎上加一些簡單處理)。實作這些自然語言對話系統的基本技術可以分為兩大類,基于規則的和基于資料的。你也許想知道對話系統的基本原理是怎樣的?特别是如何用資料驅動的方式建構一個對話系統?

最近基于資料的自然語言對話技術取得了突破性的進展。我們發現,利用深度學習和大資料,可以很容易地建構一個單輪對話系統,自動生成對話,并且取得驚人的好效果。比如,用5百萬微網誌資料可以建構一個系統,使用者給出一句話,這個系統可以自動生成一句回答。使用者輸入“我想買一部三星手機”,系統回答“還是支援一下國産的吧”,等等。你也許想知道這是如何實作的?能達到什麼樣的水準?

本文試圖系統地回答以上問題。首先指出,自然語言對話将是人們資訊通路的主要手段,資訊檢索領域的主要研究範式。之後,定義自然語言對話任務,對相關技術進行分類,列舉主要技術挑戰。接着,詳細介紹如何建構基于資料的對話系統。最後,詳細介紹最新的基于深度學習的對話技術。當中也介紹深度學習在自然語言表示學習中的最新成果。

資訊檢索領域的範式轉移

“科學的發展依賴于間斷性、革命性的變化”,這是科學哲學與科學史學家托馬斯·庫恩(Thomas Kuhn)的名言。庫恩認為科學的每個領域都有不同的“範式” (paradigm),它們有着不同的研究對象、基本概念、解決問題的手段,甚至不同的研究者群體,比如,在實體學領域,量子力學與牛頓力學就屬于不同的範式。科學的發展不是連續的,而是間斷的,量子力學并不是在牛頓力學基礎上發展起來的。當一個領域發生革命性的變化的時候,一定有新的範式産生,庫恩稱之為範式轉移(paradigm shift)[1]。

資訊檢索是計算機科學的一個分支,研究和開發計算機幫助使用者管理、通路、使用資訊的技術。縱觀資訊檢索幾十年來的發展曆程,可以看到它已經曆了兩個主要範式:圖書館搜尋和網際網路搜尋。七十年代研究的重點是如何幫助使用者在圖書館快速地查找文獻資料,有不少該領域基本技術被開發出來,比如向量空間模型。九十年代研究的重點是如何幫助使用者在網際網路上迅速地通路想通路的網頁,有許多創新,連結分析、排序學習、語義比對、日志分析等技術被開發出來。

2011年蘋果公司釋出了語音助手系統Siri,标志着一個新的時代的開啟。自然語言對話成了人們通路資訊的一個新的手段。現在,移動裝置成為個人計算的主流,越來越多的使用者通過移動裝置通路資訊。在移動裝置上,自然語言對話是人機互動最自然的,最有效的方式。另一方面,自然語言對話的技術,雖然達到了一定可用的水準,但還不成熟,不能很好了解使用者的意圖,不能充分滿足使用者的需求。這就意味着,圍繞自然語言對話有很多待解決的具有挑戰性的問題,它自然成為資訊檢索領域研究的一個新的重點,一個新的範式。

自然語言對話

自然語言對話可以形式化為以下問題。有一個計算機系統(對話系統),一個使用者。使用者通過自然語言,如中文、英文,與對話系統進行多輪交談,系統幫助使用者完成一個任務,特别是通路資訊的任務。

自然語言對話,即計算機和人通過人類的語言進行互動,是實作人工智能的标志,其研究與開發有着很長的曆史。迄今為止,有許多自然語言對話系統被開發出來,在受限的條件下,可以與使用者進行一定的對話,幫助使用者完成簡單的任務。

現在的對話系統大多隻做單輪對話,如果做多輪對話,也是在單輪對話的基礎上做一些簡單的處理。技術主要包括基于手寫規則的,和基于資料驅動的。比如,六十年代就有著名的Eliza系統問世,基于手寫規則,能與使用者進行簡單的對話,使許多使用者感覺到好像是在跟真人進行交流。Siri之後,有許多對話産品出現,包括谷歌Now,微軟Cortana。國内有許多聊天機器人釋出,如微軟Xiaobing,受到廣泛矚目。據我們所知,大部分的對話系統都是基于規則,或者基于資料的。

自然語言對話的研究與開發,雖然取得了一定的進展,但離實作人工智能的理想,甚至離實作在複雜場景下的實用化還有很大距離。自然語言對話有許多應用場景。比如,如果使用者能夠通過對話在智能手機上完成訂酒店之類的複雜任務,那麼手機就會真正成為使用者的得力助手。這裡的核心問題是如何“了解”使用者的語言,幫助使用者完成任務。現在的語音助手還不能做到這一點。再比如,許多公司有呼叫中心,在電話上回答使用者提出的各種問題。如果能夠實作自動呼叫中心,機器來回答使用者的問題,就能大大提高服務的效率和品質。這裡的核心問題也是自然語言對話。

必須指出,重要的是需要将自然語言對話作為科學問題研究,而不能停留在工程的技巧上。作為科學問題研究,應該有幾個特點:首先是建立數學模型解決問題,其次是實驗結果能夠再現,還有複雜的問題被還原成簡單的問題解決。

基于資料的對話系統

大資料時代為自然語言對話研究提供了一個新的機會,大量的對話資料可以從實際的場景獲得。一個重要的研究問題是,我們是否可以利用大資料,建構一個資料驅動的自然語言對話系統。比如,記錄呼叫中心話務員與客戶的對話,用這些資料,是否可以建構一個自動的呼叫中心。

計算機了解人的語言還是非常困難的,即使是不可能的。一個克服這個挑戰的方法就是用資料驅動的方式建構對話系統。搜尋技術的成功給我們的一個啟示,盡量避開自然語言了解,用資料驅動的方式解決問題,是人工智能技術實用化的一個有效途徑。我們可以把對話系統的主要部分用資料驅動的方式建構,另一方面,隻實作輕量級的知識使用、推理、對話管理。

我們可以把自然語言對話分成單輪對話和多輪對話進行研究。單輪對話是基礎,也應該是研究的第一個重點。單輪對話可以是基于規則的,或基于資料的。基于資料的方法又可以分成基于檢索的方式和基于生成的方式。下面作一簡單介紹。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖1 基于檢索的對話系統

圖1是基于檢索的單輪對話系統。大量的單輪對話資料存儲在索引裡,每一個執行個體包括一個資訊和一個回複。使用者輸入一個資訊,檢索子產品從索引中檢索相對相關的資訊和回複,并将最适合的回複返給使用者,形成一輪對話。而檢索系統本身是通過機器學習建構的。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖2 基于生成的對話系統

圖2是基于生成的單輪對話系統。學習子產品利用大量對話資料建構生成子產品。當使用者給定一個資訊時,生成子產品針對該資訊自動生成一個回複。

深度學習與語義表示學習

最近深度學習技術有了突飛猛進的發展,為語音識别、圖像識别、自然語言處理(包括自然語言對話),提供了強大的工具,為這些領域今後的快速發展提供了新的契機。事實上,若幹個基于深度學習的對話系統已被開發出來,受到了廣泛矚目。

深度學習為自然語言處理帶來的本質突破是語句的語義表示學習,也是基于深度學習的對話技術的基礎,這裡做一簡要介紹。

在自然語言處理領域,一個普遍使用的技術是用實數值向量來表示單詞的語義,其基本假設是單詞的語義可以由與其共現的其他單詞來決定。比如,統計每一個單詞與其它單詞在一個資料集的共現頻率,并将其表示為向量,這些向量能夠很好地表示單詞的語義相似性,兩個單詞向量的餘弦相似度越大,兩個單詞的語義就越相近。

最近自然語言處理與深度學習的一個新發現是,我們可以通過深度學習用實數值向量來表示語句的語義。如圖3所示,兩句話“John loves Mary”和“Mary is loved by John”的語義向量就相近,而這兩句話的語義向量就與“Mary loves John”的語義向量相遠。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖3  語句的語義可以由向量空間中的實數值向量表示

下面具體地講述四個深度學習方法:單詞嵌入(word embedding)、循環神經網絡(Recurrent Neural Network)、卷積神經網絡(Convolutional Neural Network)、遞歸神經網絡(Recursive Neural Network)的原理,它們是語句語義學習的強有力工具。

第一個工具是單詞嵌入,其中最常用的是稱為Word2Vec的工具[2]。如果僅僅基于一個單詞和其他單詞的共現資訊建構該單詞的語義表示向量,那麼就會得到一個高維稀疏的向量。這種高維的向量不适合用于語句語義表示的學習,因為它有過多的參數。我們的問題是如何将高維的單詞向量壓縮成為低維的單詞向量。Word2Vec提供了一個有效的方法,它對應着以下的非監督學習方法[3]。

假設在一個資料集上獲得單詞在不同上下文出現的互資訊可以由一個矩陣來表示,每一行對應着一個單詞,每一列對應着一個上下文,每一個元素表示相應的單詞與上下文的互資訊,表示該單詞與上下文共同出現的可能性大小。因為這個矩陣是稀疏的,可以對其進行矩陣分解,即将原來的矩陣近似地表示為兩個矩陣的乘積的形式。這時得到的左矩陣就可以作為單詞嵌入使用。它是一個低維稠密矩陣,每一行對應着一個單詞,每一列對應着一個話題。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖4  循環神經網絡

第二個工具是循環神經網絡(RNN)[4]。RNN把一句話看成單詞的序列,每個單詞由一個向量表示,每一個位置上有一個中間表示,由向量組成,表示從句首到這個位置的語義。這裡假設,每一個位置的中間表示由目前位置的單詞向量以及前一個位置的中間表示決定,通過一個神經網絡模型化。RNN把句末的中間表示當作整個句子的語義表示。參照圖4。RNN與隐馬爾可夫模型有相似的結構,但具有更強的表達能力,中間表示沒有馬爾可夫假設,而且模型是非線性的。加入長短期記憶(Long Short Term Memory,LSTM)機制, RNN可以處理遠距離依存關系,能夠更好地表示整句的語義。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖5  卷積神經網絡

第三個工具是卷積神經網絡(CNN)[5,6]。CNN對句子進行掃描,抽取特征,選擇特征,最後組合成句子的語義表示。首先從左到右用一個滑動視窗對句子進行掃描,每個滑動視窗内有多個單詞,每個單詞由一個向量表示。在滑動視窗内,通過卷積(convolution)操作,進行特征抽取。這樣,在各個位置上得到一系列特征。之後再通過最大池化(max pooling)操作,對特征進行選擇。重複以上操作多次,得到多個向量表示,将這些向量連接配接起來得到整個句子的語義表示。參照圖5。同一卷積層内參數是共享的,也就是同一層的卷積操作是相同的,這也就保證了在局部領域進行相同的特征抽取。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖 6 遞歸神經網絡

第四個工具是遞歸神經網絡(ReNN)[7]。ReNN假設對語句進行句法分析,得到句法樹。句法樹的每個節點上有一個向量中間表示。父節點的表示由其子節點的表示決定,通過神經網絡模型化。而根節點的表示就是整個句子的語義表示。參照圖6。句法樹上的中間表示可以在句法分析的過程中得到,比如在最大間隔分析(max margin parsing)。

基于深度學習的自然語言對話系統

華為諾亞方舟實驗室是最早用深度學習技術開發自然語言對話系統的研究機構之一,提出了若幹個具有代表性的模型,這裡做一簡單介紹。我們開發了基于檢索的單輪對話系統和基于生成的對話系統。

如圖1所示,基于檢索的方式将對話看作搜尋問題。系統索引大量對話資料,每一個執行個體由單輪對話中的一對資訊與回複組成。給定一個資訊,系統從索引中找出相關的資訊與回複對,計算輸入資訊與檢索到的回複之間的比對度,基于比對度對回複進行排序,并将排在最前的回複傳回。輸入資訊與每一個回複之間的比對度計算,由事先學好的多個比對模型完成。回複的排序由事先學好的排序模型決定。這裡的關鍵問題是如何實作不同的比對模型。我們提出了兩個基于深度學習的比對模型。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖7  比對模型Deep Match CNN

第一個比對模型稱為Deep Match CNN [5],如圖7所示。這個模型可以判斷給定的兩句話和是否可以成為一次單輪對話中的資訊和回複。将兩句話輸入到CNN模型,可以得到它們的語義表示(實數值向量)和。之後,再将這兩個語義表示輸入到一個多層神經網絡,判斷兩句話語義的比對程度。這就是Deep Match CNN模型的基本想法。如果有大量的資訊和回複對的資料,那麼就可以訓練這個模型。這裡介紹的是最基本的模型,還可以對它進行擴充,這裡不予介紹,詳見[5]。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖8 比對模型Deep Match Tree

第二個比對模型稱為Deep Match Tree [8],如圖8所示。這個模型,基于句法分析結果,判斷兩句話是不是可以形成一輪對話中的資訊和回複。先對兩句話和進行句法分析,得到兩個句法樹和,再看兩個句法樹的子樹是否滿足各種比對模式。比如“how do you think about Hong Kong”與“the food in Hong Kong is great”就滿足比對模式“how do you think about X”與“the Y in X is great”。之後将比對結果輸入到一個多層的神經網絡,這個神經網絡的輸入層的每個神經元對應一個比對模式。比對模式事先從資料中挖掘出來,有上百萬個。如果輸入的兩句話能夠滿足某一模式,其對應的神經元取值為一,否則取值為零。神經網絡最後判斷兩句話的比對程度。如果兩句話能夠滿足許多配模模式,那麼這兩句話最終形成一輪對話的可能性就會很高。Deep Match Tree模型也可以通過大量資訊與回複對的資料訓練得到。

如圖2所示,基于生成的方式将對話看作基于資訊産生回複的問題。系統利用大量對話資料建構生成模型,給定一個資訊,系統自動生成一個回複。這裡的關鍵問題是如何實作這個生成模型。我們提出了一個基于深度學習的生成模型。

基于大資料與深度學習的自然語言對話 http://www.csdn.net/article/2015-12-04/2826388

圖9 生成模型Neural Responding Machine

這個生成模型稱為Neural Responding Machine(NRM)[9],如圖9所示。NRM的基本想法是這樣的。将輸入的一句話看作一個單詞表示的序列,通過編碼器,是一個RNN模型,将轉換成一個中間表示的序列,再通過解碼器,是另一個RNN模型,将轉換成一個單詞的系列,作為一句話輸出。NRM模型也可以通過大量資訊與回複對的資料訓練得到。

基于檢索的對話系統和基于生成的對話系統各有其特色。生成系統比檢索系統的準确率會高一些,在一個标準資料集上,檢索系統的準确率是70%,生成系統的準确率是76%。但檢索系統比生成系統會更安全一些,不會傳回文法不通的句子。這裡的準确率的定義是,人對傳回結果做評價,如果回複可以成為一輪對話,就認為是正确,否則是錯誤。如何對自然語言對話系統進行客觀評價,仍然是一個需要進一步深入研究的課題。

同時指出,基于深度學習的生成模型比傳統的基于機器翻譯的模型在準确率上有大幅度的提升,從26%提高到76%[9]。深度學習在圖像處理、語音處理等領域有許多大幅度提升性能的執行個體,在自然語言處理領域這樣的事例還不多,在機器翻譯等任務上的提升往往沒有這麼高。

令人驚訝的是,基于生成的對話系統可以傳回許多有趣的回複,超出想象。表1給出一些系統生成的例子。可以看出,在大部分情況下,系統能夠生成比較“自然”的句子,構成一個自然的對話。

生成系統産生的回複例如下:

輸入資訊 系統回複
持續面試是必須的習慣。 必須來支援!加油!
每天最重要的是就是思考用哪姿勢睡覺…… 每天都在思考這個問題
看韓寒的台灣經驗與驚豔alink 支援一下感覺挺不錯的
今晚又可以在海邊發呆了,舒暢啊。 好美的藍天,我喜歡
女人的名字決定性格!你的準嗎? 準,準,準,準,準
22歲上非誠勿擾是什麼心态? 挺好的,支援一下感覺挺不錯的

結束語

本文介紹了利用大資料與深度學習建構自然語言對話系統的技術。最近的深度學習對話的一些進展确實令人振奮。我們還不知道能沿着這條路,是否能達到完全實作、或者局部實作自然語言對話的目标,但是至少我們面前出現了不少可以嘗試的路徑,不少可以期待的機會。

參考文獻

  1. 托馬斯•庫恩, 《科學革命的結構》(The Structure of Scientific Revolutions)(1962),北京大學出版社,2003。
  2. Tomas Mikolov, Martin Karafiát, Lukas Burget, Jan Cernocký, and Sanjeev Khudanpur. Recurrent Neural Network based Language Model.  InterSpeech 2010.
  3. Omer Levy, Yoav Goldberg, and Ido Dagan. Improving Distributional Similarity with Lessons Learned from Word Embeddings.  TACL 2015 pp. 211-225.
  4. Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg S. Corrado, and Jeff Dean. Distributed Representations of Words and Phrases and Their Compositionality. NIPS 2013, pp. 3111-3119.
  5. Hu, B., Lu, Z., Li, H., & Chen, Q. Convolutional Neural Network Architectures for Matching Natural Language Sentences. NIPS 2014 (pp. 2042-2050).
  6. Blunsom, P., Grefenstette, E., & Kalchbrenner, N. (2014). A Convolutional neural network for modeling sentences. ACL 2014.
  7. Socher, Richard, John Bauer, Christopher D. Manning, and Andrew Y. Ng. "Parsing with compositional vector grammars." ACL 2013.
  8. Mingxuan Wang, Zhengdong Lu, Hang Li, Qun Liu. Syntax-based Deep Matching of Short Texts. IJCAI’15, 2015.
  9. Lifeng Shang, Zhengdong Lu, Hang Li. Neural Responding Machine for Short Text Conversation. ACL-IJCNLP'15, 2015. 

90+位講師,16大分論壇,Databricks公司聯合創始人、Apache Spark首席架構師辛湜,Hadoop、HBase和Thrift項目的PMC成員和Committer、Kudu的發明人Todd Lipcon等海外專家将親臨2015中國大資料技術大會。餘票已然不多,預購從速。 (責編/周建丁)

本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯系market#csdn.net(#換成@)

繼續閱讀