本文轉載,原文地址。
在轉載過程中,資源和開放數據有更新,不代表原作者觀點。
智能聊天機器人作為自然語言處理的一個重要分支,是目前最火熱也最具挑戰的研究方向,它對於促進人機互動方式的發展有著重要的意義。本文首先簡要介紹了智能聊天機器人的分類和研究背景,對國內外研究現狀進行比較,對生成和檢索兩種主流的實現技術進行優缺點分析,並分別列舉了幾項使用該技術手段實現的聊天機器人。然後,介紹了目前較為常用的生成型聊天機器人的模型以及評估方法,其中,對作為很多模型基礎的Encoder-decoder模型做了詳細介紹和分析,以及在此基礎上完成的幾個優化模型系統。最後,給出了一些參考的開源框架以及可使用的數據以供讀者使用。
目前市面上主要的智能聊天機器人可以分為如下兩類:目標驅動型聊天機器人和無目標驅動型聊天機器人。目標驅動機器人是指機器人的服務目標或服務對象是明確的,是可以提供特殊服務的問答系統,處理特定領域的問題,即定領域的聊天機器人,比如客服機器人,訂票機器人等。無目標驅動機器人是指機器人的服務對象和聊天範圍不明確,可以處理的問題多種多樣,解決問題時需要依賴於宇宙中的各種信息和本體,即開放領域的聊天機器人,比如娛樂聊天機器人等。
智能聊天機器人實際上是為了應對信息爆炸的今天存在的信息過載問題。具體來說,其來源是因為人們對於簡單的搜尋引擎僅僅返回一個網頁集合的不滿,而通常用戶更想獲得的體驗是在向智能對話系統用自然語言提出一個問題之後,且智能對話系統也能夠自然又通順地回答問題,且回答內容與問題緊湊相關又答案精準。為使用者們節約了更多的時間,無需逐個瀏覽和仔細閱讀搜尋引擎返回的每個連結網址中的信息,再剔除冗餘信息後才能得到期望的答案。
有關於對話機器人的研究可以被追溯到20世紀50年代,當Alan M. Turing提出了「機器可以思考嗎?」的圖靈測試問題來衡量人工智慧發展的程度,該領域接下來就變成了人工智慧領域中一個十分有趣又具有挑戰性的研究問題。
隨著各種網際網路公司的蓬勃發展以及各類移動終端和應用小軟體的爆炸式普及,如Twitter和微博等,很多大網際網路公司都在投入重金完成此領域技術的研究並陸續推出此類應用產品,比如蘋果Siri,微軟Cortana,臉書Messenger,谷歌Assistant等,這些產品都讓用戶們在移動終端更加方便地獲得需要的信息和服務,從而獲得更好的用戶體驗。因而,人們發現智慧機器人可以應用的領域十分廣泛,它可以被應用到很多人機互動的領域中,比如技術問答系統,洽談協商,電子商務,家教輔導,娛樂閒聊等。
不得不說,由於人們對於智能聊天機器人不斷增長的渴望和需求,人工智慧在自然語言處理領域的應用變成了不論國內國外都非常熱門的一個研究方向。在信息技術飛速發展,以及移動終端逐漸普及的今天,研究聊天機器人相關的技術,對於促進人工智慧以及人機互動方式的發展有著十分重大的意義。
在人工智慧領域,智能聊天機器人的研究已經有了很長的歷史,它們都試圖吸引用戶不斷繼續聊天,通常表現為使用主導談話的主題的手段,從而掌控談話內容及談話進度。但由於最初的研究受限於計算能力和知識庫,導致了所有有關人工智慧的實驗規模都比較狹小,因此設計者們還會將談話的內容局限在某一個特定的專家系統領域以此降低難度。
但隨著1995信息檢索技術的發展,Baidu,Google等搜尋引擎公司計算能力的飛速提升,以及2005年網際網路業的蓬勃發展和移動終端的迅速普及,在這三方面的共同作用下,智能聊天機器人,或者說智能問答系統一下子被推到風口浪尖,研究進展也非常值得關注。
由於國外在人工智慧聊天機器人及問答系統方向的研究起步較早,因而也產生了一系列比較成熟的聊天系統以供用戶使用,比如蘋果Siri,微軟Cortana,臉書Messenger,谷歌Assistant等。
這些跨平臺型人工智慧機器人,都藉助著本公司在大數據、自然語義分析、機器學習和深度神經網絡方面的技術積累,精鍊形成自己的真實有趣的語料庫,在不斷訓練的過程中通過理解對話數據中的語義和語境信息,從而實現超越一般簡單人機問答的自然智能交互,為用戶帶來方便與樂趣。
相比國外,我國國內在智能聊天領域的投入規模和研究水平上都有著不小的差距,研究成果也並不顯著。但是還是有一系列高校在此領域成績顯著,位於前列的主要有清華大學、中科院計算所、香港大學、香港中文大學和哈工大(benben)等。其中,高校在此領域的研究主要集中於對於自然語言處理的工具開發,比如哈爾濱工業大學的HIT工具(中文詞法分析、句法分析和語法分析)以及臺灣國防大學的CQAS中文問答系統(側重於命名實體及其關係的處理)等。
系統需要在訓練過程中不斷整合物理語境和語言語境來生成較為明智的回覆。結合語言環境最普遍的例子就是在長對話中,人們會記錄已經說過的話以及以及和對方交換過的信息。其中最普遍的方法就是將對話嵌入一個向量中,此向量還可能需要整合其它類型的語境數據,例如日期/時間、位置或者用戶信息等。
對於語義相同或者類似的輸入,不論在何時輸入,我們希望智慧機器人會有相同的回答,比如「你叫什麼名字?」和「你多大了?」等問題。這個目標看似十分容易達成,但是實際上要將固定的知識或者人格整合到模型中去是一個十分困難的研究難題。目前許多的智能聊天機器人系統可以做出語義較為合理的回答,但是卻沒有被進一步訓練生成在語義上同樣一致的回覆。這一般是由於為了實驗效果的增加,訓練模型的數據可能來源於不同的用戶而導致的。
目前普遍的智能問答系統經常會生成「我不知道」或者「太好了」這樣的可以適用於大部分輸入問題的答案。例如,Google的Smart Reply早期版本常常用「我愛你」回復一切不確定的問題。由於生成系統,特別在開放領域,沒有被訓練成特定意圖,只是根據數據和實際訓練目標或算法訓練的結果,不具備一個令人滿意的智能聊天機器人應該有的多樣性。
目前該領域該方向的實現技術手段主要集中於基於規則或基於學習的方法。因此,相對應的,智能聊天機器人的實現技術手段目前也分為兩種:基於檢索的方式和基於生成的方式。
檢索式聊天機器人是指使用了預定義回復庫和某種啟發方式來根據輸入和語境做出合適的回覆,這種啟發方式既可以像基於規則的表達式匹配一樣簡單,也可以像機器學習分類器一樣複雜。換一句話說,在這種模式下,機器人回復的內容都處於一個對話語料庫中,當其收到用戶輸入的句子序列後,聊天系統會在對話語料庫中進行搜索匹配並提取響應的回答內容,進行輸出。
該系統不要求生成任何新的文本,只是從固定的集合中挑選一種回復而已,因而這種方式要求語料庫的信息儘可能的大和豐富,這樣才能夠更加精準地匹配用戶內容,並且輸出也較為高質量,因為語料庫中的既定語句序列相對於生成的序列而言更加自然和真實。
該模式下的機器人使用基於規則的方式進行模型的構造,因此我們只需要完成一個模式或者樣板,這樣當機器人從用戶端獲得的問題句子在已有的模板中時,該模型就可以向用戶返回一個已有的模板。理論上,任何人都可以照此方法實現一個簡單的聊天機器人,但是該機器人不可能回答比較複雜的問題,其模式匹配意識是十分薄弱的。除此之外,人工地完成這些規則和模式的制定是十分耗時和耗力的。
目前,在基於規則方面的一個非常流行的智慧機器人是CleverBot,該網站提供了一個可以直接進行與機器人進行聊天的網頁。
生成式聊天機器人在接受到用戶輸入後,會採用其它技術生成一句回復,作為聊天系統的輸出。這種方式並不要求非常大和精準的語料庫,因為它不依賴於預定義的回覆庫,但生成的回覆可能會出現語法錯誤或語句不通順等缺點。
該模式下的機器人使用基於學習的方法進行對於對話數據和規律的學習,很好地彌補基於規則模式下實現的智慧機器人的缺點,因此我們可以建造一個機器人,並讓它不斷地從已經存在的人與人之間的對話數據中自主得學習對話規律,並在每次收到用戶問題時,自主地組織詞語回答問題,這是一種十分智能的實現方法,也是目前更為火熱的研究方向。
使用生成式方式並且結合機器學習的方法的優點是十分明顯的:得到相較於檢索式而言更加有趣多樣的回答,賦有多樣性,避免沉悶和無聊;端到端End-to-end神經網絡模型的參與可以減少對於人為制定規則的依賴,提升模型在長對話數據中的性能;深度學習的應用使得模型的可擴展性較強,模型本身可以和訓練數據的語言互相剝離,不需要針對不同語言的數據進行數據預處理工作;可以通過擴大數據的方式持續提升模型的效果。
在以往的研究中,我們會發現實際上智能對話系統問題可以被很好地應用到的自然語言的機器翻譯框架中,我們可以將用戶提出的問題作文輸入機器翻譯模型的源序列,系統返回的答案則可以作為翻譯模型的目標序列。因此,機器翻譯領域相對成熟的技術與問答系統所需要的框架模型有了很好的可比性,Ritter等人借鑑了統計機器翻譯的手段,使用Twitter上的未被結構化的對話數據集,提出了一個問答生成模型的框架。
Encoder-decoder框架目前發展較為成熟,在文本處理領域已經成為一種研究模式,可應用場景十分廣泛。它除了在已有的文本摘要提取、機器翻譯、詞句法分析方面有很大的貢獻之外,在本課題中,也可以被應用到人機對話和智能問答領域。
圖1將Encoder-Decoder框架在自然語言處理領域的應用抽象為一個通用處理模型,即一個序列(或文章)轉換為另外一個序列(或文章)。對於句子序列對 ,Encoder-Decoder框架在輸入源序列X的情況下,生成目標序列Y,並不斷改變模型參數提升這種可能性。在實際的應用中,序列X和序列Y分別由各自的單詞序列構成,可以是一樣或者不一樣的語言:
圖1. 加解密模塊實現的端到端模型
模型中神經網絡(如RNN或LSTM)將按照如下步驟計算此條件概率:首先,輸入序列 (𝑥1,𝑥2,⋯,𝑥𝑇) 通過加密模型中的層層LSTM神經單元,由最後的隱藏層狀態獲得一個固定維度的向量表示v;然後,根據標準的LSTM-LM公式,計算輸出序列 (𝑦1,𝑦2,⋯,𝑦𝑇′) 的概率,該LSTM的最初的隱藏層狀態為輸入序列 (𝑥1,𝑥2,⋯,𝑥𝑇) 的向量表示v:
在這個等式中,每個概率分布 都用對於詞典中的所有單詞的softmax函數模型來表示。並且,我們要求,所有的句子都以一個特殊的句子終結符「 」來表示,這可以使得模型定義了一個關於輸出序列的所有可能長度的概率分布。
Google利用該理念實現的神經翻譯系統模型,結合LSTM神經網絡結構,實現了端到端的語言模型 ,是現在十分主流的使用深度學習實現的智能對話系統,並提供了開源的參考架構。史丹福大學使用該端到端模型,並在解密模型中添加注意力機制,實現了一個綜合性的神經網絡機器人。
目前研究中經常使用Seq2seq端到端的方式實現問答系統,但模型常常會有可能產生與問題毫不相關,意義不明,表達不準確甚至是毫無意義的安全回復,例如「我不知道」,「好的」或「我愛你」這樣的答案。
對於此類問題的出現,Bengio等人提出的一種更加複雜的模型結構——分級卷積加解密(Hierarchiacal Recurrent Encoder-Decoder)的端到端模型可以很好的解決問題。HRED模型通過使用第二個加密模塊來從之前的問句中獲得更加直觀的信息,從而當前輸出對於之前信息的依賴性可以得到保障。
在模擬對話時,我們認為HRED模型比標準的RNN模型更好是因為:上下文RNN會在用戶之間使用一個分布式的向量來表達對話主題和內容,這對於建立一個有效的對話系統來說是非常重要的;由於在序列傳遞過程中的計算步驟被減少,這使得於模型參數有關的目標函數的計算會更加穩定,並且有助於傳播優化方法的訓練信號。
雙向HRED模型的加密模塊中使用一個雙向的RNN模型,一條前向傳遞語句序列,另一條通過導致輸入序列反向傳遞。前向傳遞時n位置處的隱藏層狀態包含了n位置處之前的信息,而反向傳遞時的隱藏層狀態總結了n位置處之後的信息。為了仍然得到一個固定維度表示的上下文向量,我們可以將前後向傳遞的最後隱藏層狀態通過直接前後相連或通過L2池化後相連。此種雙向結構可以有效地解決短時依賴的問題,並且在其他相似的結構中也被證明是有效的。
詞嵌入(Word embedding)又被稱為詞表示(Word representation),每個單詞套用該模型後可以轉換為一個實數,且每個實數對應詞典中的一個特定單詞。它是一種用於在低維的詞向量空間中用來學習深層的單詞表示的技術,通過對詞彙量的擴大,可以很大地提升訓練速度,因為會通過在詞嵌入空間中非常相近的單詞來共享一些信息。常用的詞嵌入模型有Word2Vec,該模型是由包含了由一千多億單詞組成的Google新聞數據訓練的,並且被證明該模型在一個非常廣泛的數據集上展現出了強有力的信息。
Attention結構的核心優點就是通過在模型「decoder」階段對相關的源內容給予「關注」,從而可以在目標句子和源句子之間建立直接又簡短的連接,解決機器人模型和用戶之間的信息斷層問題。注意力機制如今作為一種事實標準,已經被有效地應用到很多其他的領域中,比如圖片捕獲生成,語音識別以及文字摘要等。
在傳統seq2seq模型的解碼過程中,「encoder」加密器的源序列的最後狀態會被作為輸入,直接傳遞到「decoder」解碼器。直接傳遞固定且單一維度的隱藏狀態到解碼器的方法,對於簡短句或中句會有較為可觀的效果,卻會成為較長的序列的信息瓶頸。然而,不像在RNN模型中將計算出來的隱藏層狀態全部丟棄,注意力機制為我們提供了一種方法,可以使解碼器對於源序列中的信息選擇重點後進行動態記憶。也就是說,通過注意力機制,長句子的翻譯質量也可以得到大幅度的提升。
注意力在每一個解碼的時間步時都會進行計算,隱藏最初的embedding詞嵌入操作和最終的projection投影操作後,主要包含了如下四個步驟,如圖2所示:
圖2. 注意力機制的計算流程
注意力權重是通過當前的目標隱藏層狀態和所有的源序列的狀態互相比較得出的,公式(1)表示該計算過程。
在該公式中,score函數會逐一比較每一個源序列的隱藏層狀態 ℎ⎯⎯s 和目標序列的隱藏層狀態 ℎt ,得到的結果將被標準化,產生一個關於源位置的分布,即attention weights。關於score函數的選擇有很多,它們主要的不同就在於。乘法和加法形式是目前比較流行的評分函數,如公式(2)所示:
2) context vector上下文向量的計算
根據公式(2)中計算得到的注意力權重,源序列狀態的權重均值(即上下文向量)的計算過程可由公式(3)表示。
最終的注意力向量需要將上下文向量和當前目標序列的隱藏層狀態互相結合生成,公式(4)可以表示該計算過程。
使用公式(4)中得到的注意力向量,作為下一個時間步時初始狀態輸入到模型中,並用於得到模型的歸一化邏輯輸出和損失值。該過程與原始的seq2seq模型中最後一層的隱藏層狀態十分相似。
通常情況下,用戶評判一個智能聊天機器人或者問答系統的性能是否理想時,都會將該系統是否準確地完成了用戶的任務作為首要的參考條件,例如,在給定的對話中是否解決客戶支持問題,但是在智能問答領域並沒有一個合適的標準來衡量模型的性能,一般被經常使用的用於反映對話質量的方式主要有如下幾種。
使用檢索方式實現智慧機器人,可以採用常用的檢索型標準recall@k,表示讓這個模型從10個候選響應中挑出k個最好的響應,候選的響應中包含1個真實響應和9個幹擾項噪聲響應。如果模型選擇出的k項回答中包含對應的正確響應,則該測試樣本的結果將被標記為正確。自然,k越大,那麼這個任務就會更加簡單。
儘管我們知道一個對於回答多分類任務的語言模型的優化並不一定能作為一個好的語言回復生成模型的好的參考標準,但是我們認為一個模型的分類能力的優化一定最終會帶來生成任務的提升。
另一個常用於估測語言模型準確率的評估方法是perplexity困惑度,它被定義為每個單詞的平均負對數概率的指數 ,如公式(1)所示。
網址:https://dialogflow.cloud.google.com/
類型:聊天機器人平臺
機構/作者:Google
流行程度:24,600,000
簡介:Google收購的一家AI公司,和wit.ai類似。提供了一個AI的框架,可以自己定義模板,參數,多輪對話,很方便的就可以定義一個自己的特定任務的聊天機器人。
網址:https://cloud.tencent.com/product/tbp
類型:聊天機器人平臺
機構/作者:騰訊
流行程度: 1,000,000
簡介:全面開放騰訊對話系統核心技術,為大型企業客戶、開發者和生態合作夥伴提供開發平臺和機器人中間件能力,實現便捷、低成本構建人機對話體驗和高效、多樣化賦能行業。
網址:https://bot.chatopera.com
類型:聊天機器人平臺
機構/作者:Chatopera
流行程度:120,000
簡介:Chatopera 機器人平臺包括知識庫、多輪對話、意圖識別和語音識別等組件,標準化聊天機器人開發,支持企業OA智能問答、HR智能問答、智能客服和網絡營銷等場景。
網址:https://www.luis.ai/
類型:聊天機器人平臺
機構/作者:Microsoft
流行程度:8,020,000
簡介:和wit.ai,api.ai類似,是微軟在這方面的一個產品。
網址:https://dev.botframework.com/
類型:聊天機器人平臺
機構/作者:Microsoft
流行程度:532,000
簡介:這是一個應用層的框架,裡面用到的技術是luis.ai和微軟的其他人工智慧技術。
網址:http://www.alicebot.org/
類型:開源
機構/作者:Dr. Richard S. Wallace
流行程度:283,000
簡介:這是一個自定義的AI語言,是XML語言的擴展,支持語言規約,開源了解析器,支持主流的所有程式語言。
網址:https://gitee.com/chatopera/clause
類型:開源
機構/作者:Chatopera
流行程度:206,000
簡介:Clause 是 Chatopera 團隊自主研發及使用其他商業友好的開源軟體的方式實現的,Clause 為實現企業聊天機器人提供強大的大腦,包括客服、智能問答和自動流程服務。Clause 利用深度學習,自然語言處理和搜尋引擎技術,讓機器更加理解人。
網址:https://github.com/plison/opendial
類型:開源
機構/作者:Lison, P.
流行程度:147,000
簡介:有較好的澄清機制,基於規則的系統,沒有太多的機器學習和深度學習技術,在參數調節部分用到了機器學習技術。
Ubuntu對話語料庫(Ubuntu Dialog Corpus),UDC是目前最大的公共對話資料庫之一,它以一個公共IRC網絡上的Ubuntu頻道為基礎,該頻道允許大量參與者的實時交談。該資料庫可以作為訓練對話系統神經網絡的重要數據是由於它具備的一下四種特徵:
雙向對話,適用於多參與者聊天,並且是最好是人–人間對話。
具備大量的對話集:105~106在人工智慧的其他領域的神經網絡學習是一個比較合適和典型的數據量。
許多具備多個輪迴的對話(大於3個輪迴)。
數據具備特定領域的目標,而不是開放的聊天機器人系統。
UDC數據集可以在官方網址進行下載,進行NLTK預處理後的訓練數據由1,000,000個多輪迴對話樣本構成,共由7,000,000句話語和100,000,000個單詞組成,其中50%是積極地(標籤為1,表示該話語是對這個語境的真實響應),50%是消極的(標籤為0,表示該話語不是對這個語境的真實響應)。每個樣本都由一個語境(context),一個話語(utterance)和一個語境的響應(response)構成的。
Cornell電影對話(Cornell Movie-Dialogs)數據集可以在Cornell大學CS專業的官網上進行下載,使用前需要對原始的文件進行預處理工作,通過快速搜索某些特定的模式來清理該數據集。
該語料庫是從原始的電影腳本中提取出來的大量虛構的原數據對話集合,共包含了在10,292對電影角色之間進行的220,579次會話交流,涉及617部電影中的9,035個角色,合計總共304,713條話語。其中,每一個電影原數據都包含了:所屬流派,發布年份,IMDB (Internet Movie Database網際網路電影資料庫)評級,IMDB票數以及IMDB評級。
心理諮詢問答語料庫(以下也稱為「數據集」,「語料庫」)是為應用人工智慧技術於心理諮詢領域製作的語料。據我們所知,這是心理諮詢領域首個開放的 QA 語料庫,包括 20,000 條心理諮詢數據,也是公開的最大的中文心理諮詢對話語料。數據集內容豐富,不但具備多輪對話內容,也有分類等信息,製作過程耗費大量時間和精力,比如標註過程是面向多輪對話,平均每條標記耗時 1 分鐘。
數據集由史丹福大學,UCLA 和臺灣輔仁大學臨床心理學等心理學專業人士參與建設,並由 Chatopera 和諸多志願者合作完成。
https://github.com/chatopera/efaqa-corpus-zh
本文對常用的檢索型和生成性兩種方式進行了詳細介紹和對比,總結如表2和表3所示,並列舉了一部分使用該方法生成的實例。在實際條件和資源允許的情況下,也常常會使用檢索和生成互相結合的方式來實現,以追求更良好的表現性能。
表1. ESL場景對話語料庫
表2. 檢索型與生成型聊天機器人優點對比
表3. 檢索型與生成型聊天機器人優缺點對比
首先,關於主流的實現智能聊天機器人所採取的生成型技術框架,本文主要介紹了高度抽象的Sequence-to-sequence端到端的模型,它可以對中間的詞法分析,句法分析可以省略,並減少了對於序列的過多假設和猜想,十分高效。實現時一般使用Encoder-decoder加解密模型,並結合RNN或LSTM等神經元網絡實現,其餘模型都在該模型的基礎上進行變種修改,如添加Word embedding詞嵌入模型和Attention注意力機制等,側重於解決信息傳遞,人格一致和回答多樣性等問題。
Encoder框架,即「加密」模塊,就是使用幾層神經元細胞構成的網絡,按照特定的規則,對源序列X進行非線性編碼,並轉化為中間語義表示 ,由於該語義表示C包含了之前輸入的問句中的基本信息,因而又可以被稱為思考向量。Decoder框架,即「解密」模塊,該模塊基於中間語義表示C和已生成的歷史單詞信息,生成i時刻單詞 ,依次產生每個 ,那麼整個系統從宏觀的輸入和輸出上而言,就是根據輸入的句子序列X,產生了目標句子序列Y,即問與答。
其次,本文還對模型訓練時使用的訓練數據及評估方法進行介紹。智能問答領域不同於其他使用機器學習實現的自然語言處理問題,最為準確的評估方式應當是人的判斷,但由於時間和經濟條件的限制不被經常採納。通常情況下可以用的自動模型評估方式較少,常用的為基於檢索型的Recall@k和基於生成的Perplexity。
最後,本文介紹了可參考和利用的五個開源模型,分別使用了不同的檢索和生成型方式,並提供了可連結的網址進行學習,讀者可以使用本文中提供的資料庫進行訓練,或根據自己的要求定義和生成聊天機器人。
戴怡琳, 劉功申. 智能聊天機器人的技術綜述[J]. 計算機科學與應用, 2018, 8(6): 918-929.
https://doi.org/10.12677/CSA.2018.86102