search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

使用深度學習打造智能聊天機器人

基於檢索技術的聊天機器人則走的是類似搜索引擎的路線,事先存儲好對話庫並建立索引,根據用戶問句,在對話庫中進行模糊匹配找到最合適的應答內容。

基於機器翻譯技術的聊天機器人把聊天過程比擬成機器翻譯過程,就是說將用戶輸入聊天信息Message,翻譯成聊天機器人應答Response的過程類似於把英語翻譯成漢語。基於這種假設,就完全可以將統計機器翻譯領域相對成熟的技術直接應用到聊天機器人開發中來。

基於深度學習的聊天機器人技術是本文後續內容主要介紹的技術路線,總體而言,絕大多數技術都是在Encoder-Decoder(或者稱作Sequence to Sequence)深度學習技術框架下改進的。使用深度學習技術來開發聊天機器人相對傳統方法來說,整體思路非常簡單並可擴展。

利用深度學習構建聊天機器人

如上所述,目前對於開放領域生成式聊天機器人技術而言,多數採用了Encoder-Decoder框架,所以這裡首先描述Encoder-Decoder框架技術原理。然後分別針對聊天機器人研究領域需要特殊考慮的主要問題及其對應的解決方案進行講解,這些主要問題分別是:多輪會話中的上下文機制、「安全回答」以及個性信息一致性問題。

Encoder-Decoder框架

Encoder-Decoder框架可以看作一種文本處理領域的研究模式,應用場景異常廣泛,不僅可用在對話機器人領域,還可以應用在機器翻譯、文本摘要、句法分析等各種場合。圖1是文本處理領域裡常用的Encoder-Decoder框架最抽象的一種表示。Encoder-Decoder框架可以直觀地理解為適合處理由一個句子(或篇章)生成另外一個句子(或篇章)的通用處理模型。對於句子對(X,Y),我們的目標是給定輸入句子X,期待通過Encoder-Decoder框架來生成目標句子Y。X和Y可以是同一種語言,也可以是兩種不同的語言。而X和Y分別由各自的單詞序列構成:

Encoder顧名思義就是對輸入句子X進行編碼,將輸入句子通過非線性變換轉化為中間語義表示C:

對於解碼器Decoder來說,其任務是根據句子X的中間語義表示C和之前已經生成的歷史信息y1,y2……yi-1來生成i時刻要生成的單詞yi:

圖1 抽象的Encoder-Decoder框架

每個yi都依次這麼產生,那麼看起來就是整個系統根據輸入句子X生成了目標句子Y。

對於聊天機器人來說,完全可以使用上述的Encoder-Decoder框架來解決技術問題。具體而言,對應的

多輪會話中的上下文問題

利用上述Encoder-Decoder框架,聊天機器人可以根據用戶當前輸入Message自動生成應答Response,形成了一個有效的對話系統。但是一般人們聊天並不是單純的一問一答,回答的內容常常要參考上下文信息Context,也就是在用戶當前輸入問句Message之前兩者的對話信息。因為存在多輪的一問一答,這種情形一般稱為多輪會話。

深度學習解決多輪會話的關鍵是如何將上下文聊天信息Context引入到Encoder-Decoder模型中。Context應該引入到Encoder中,因為這是除了當前輸入Message的額外信息,有助於Decoder生成更好的應答Response。目前不同的研究主體思路都是這樣,無非如何將Context信息在Encoder端建立模型或者說具體的融入模型有些不同。

表1 聊天機器人聊天效果示例

在上文所述的Encoder-Decoder框架中,很容易想到一種直觀地將Context信息融入Encoder的思路:無上下文信息的Encoder-Decoder模型的輸入僅僅包含Message,只需要把上下文信息Context和信息Message拼接形成一個長的輸入提供給Encoder,這樣就把上下文信息融入模型中了。這個直覺本身沒有什麼問題,但是對於採用RNN模型的Encoder來說,這種方式使得有時候輸入非常長,而對於RNN模型來說,輸入的線型序列長度越長,模型效果越差。所以簡單地拼接Context和Message的策略不會產生太好的聊天效果。

考慮到RNN對長度敏感的問題,文獻3提出了針對聊天機器人場景優化的Encoder-Decoder模型,核心思想是將Encoder用多層前向神經網路來代替RNN模型,神經網路的輸出代表上下文信息Context和當前輸入Message的中間語義表示,而Decoder依據這個中間表示來生成對話Response。這樣做既能夠將上下文信息Context和當前輸入語句Message通過多層前向神經網路編碼成Encoder-Decoder模型的中間語義表達,又避免了RNN對於過長輸入敏感的問題。圖2和圖3是論文中提出的兩種不同的融合方法,方法1對Context和Message不做明顯區分,直接拼接成一個輸入;而方法2則明確區分了Context和Message,在前向神經網路的第一層分別對其進行編碼,拼接結果作為深層網路後續隱層的輸入,核心思想是強調Message的作用,因為畢竟Response是針對Message的應答,Context只是提供了背景信息,所以應該突出Message的作用。

當然,除了Encoder從RNN替換為深層前向神經網路外,文獻3與傳統Encoder-Decoder還有一個顯著區別,就是Decoder的RNN模型每個時刻t在輸出當前字元的時候,不僅僅依賴t-1時刻的隱層狀態和當前輸入,還顯示地將Encoder的中間語義

編碼直接作為t時刻RNN節點的輸入,而不是像經典Encoder-Decoder模型那樣把中間語義編碼當做Decoder中RNN的最初輸入。其出發點也很直觀,就是在生成每個輸出字元時反覆強化中間語義編碼的作用,這對於輸出應答Response較長的情況是有幫助的。

文獻4給出了解決多輪會話上下文問題的另外一種思路(如圖4所示),稱作層級神經網路(Hierarchical Neural Network,簡稱HNN)。HNN本質上也是Encoder-Decoder框架,主要區別在於Encoder採用了二級結構,上下文Context中每個句子首先用「句子RNN(Sentence RNN)」對每個單詞進行編碼形成每個句子的中間表示,而第二級的RNN則將第一級句子RNN的中間表示結果按照上下文中句子出現先後順序序列進行編碼,這級RNN模型可稱作「上下文RNN(Context RNN)」,其尾節點處隱層節點狀態信息就是所有上下文Context以及當前輸入Message的語義編碼,以這個信息作為Decoder產生每個單詞的輸入之一,這樣就可以在生成應答Response時把上下文信息考慮進來。

綜上所述,深度學習解決多輪會話的上下文信息問題時大致思路相同,都是在Encoder階段把上下文信息Context及當前輸入Message同時編碼,從而可以參考上下文信息生成應答Response。

解決「安全回答」(Safe Response)問題

如果採用經典的Encoder-Decoder模型構建開放領域生成式聊天機器人系統,一個比較容易產生的嚴重問題就是「安全回答」。就是說不論用戶說什麼內容,聊天機器人都用少數非常常見的句子進行應答,比如英文的「I don』t know」、「Come on」、「I』 m OK」,中文的「是嗎」、「呵呵」等。雖然很多種情況下這麼回答也不能說是錯誤的,但可以想象,如果用戶遇到這樣一位聊天對象會有多抓狂。

這個現象產生的主要原因是聊天訓練數據中確實有很多這種寬泛而無意義的應答,所以機器人通過Encoder-Decoder模型學會這種常見應答模式。如何解決聊天機器人「安全回答」問題,讓機器產生多樣化的應答是個重要的課題。

圖2 融合方法1

圖3 融合方法2

圖4 層級神經網路

文獻5即在Sequence-to-Sequence框架下來解決「安全回答」問題。在聊天場景下,使用Sequence-to-Sequence框架來進行模型訓練時,傳統的優化目標基本上是最大似然法(MLE),就是說給定用戶輸入Message,通過訓練來最大化生成應答Response的概率:

其中M代表message,R代表Response。

文獻X提出了改進的優化目標函數:最大化互信息(MMI),其目標函數如下:

可以從公式差異中看出,MMI的優化目標除了最大化從Message生成應答Response的概率,同時加入了反向優化目標,即最大化應答Response產生Message的概率(即log p(M|R)部分),是控制兩者哪個更重要的調節超參數。通過其名稱「互信息」以及具體公式可以看出,這個優化目標函數要求應答Response和Message內容密切相關而不僅僅是考慮哪個Response以更高概率出現,從而降低了那些非常常見的回答的生成概率,使得應答Response更多樣化且跟Message語義更相關。

採用MMI作為目標函數明顯解決了很多「安全回答」問題,表2是兩個不同優化目標函數產生的應答Response的示例,其中Message列代表用戶輸入語句Message,S2S Response代表MLE優化目標產生的應答,MMI Response代表MMI優化目標產生的應答。

表2 S2S與MMI產生的應答

個性信息一致性問題

對於聊天助手等應用來說,聊天機器人往往會被用戶當做一個具有個性的虛擬人,比如經常會問「你多大了」、「你的愛好是什麼」、「你是哪裡人啊」等問題。如果將聊天助手當做一個虛擬人,那麼這位虛擬人相關的年齡、性別、愛好、語言風格等個性特徵信息應該維護回答的一致性。利用經典的Sequence-to-Sequence模型訓練出的聊天助手往往很難保持這種個性信息的一致性(不一致的例子請參考圖5),這是因為Sequence-to-Sequence模型訓練的都是單句Message對單句Response的映射關係,內在並沒有統一維護聊天助手個性信息的場所,所以並不能保證相同的問題每次能夠產生完全相同的應答。另外,對於海量用戶來說,可能不同的用戶會喜歡不同聊天風格或者不同身份的聊天助手,所以聊天機器人應該能夠提供不同身份和個性信息的聊天助手,不同類型用戶可以採用相應類型的聊天助手來聊天,當然,在聊天過程中要盡量保持身份和個性信息的一致性。

那麼如何在Sequence-to-Sequence框架下採用技術手段維護聊天助手的個性信息一致性呢?文獻6給出了一種比較典型的解決方案,我們可以改造出一個能夠實現不同身份個性特徵的聊天助手思路。圖6是其示意圖(注意:本文敘述的並非文獻6中的原始場景,而是本文作者參照文獻稍作修正的技術方案)。

其基本思路如下:聊天機器人系統可以定義不同身份、個性及語言風格的聊天助理,個性化信息通過Word Embedding的表達方式來體現,在維護聊天助手個性或身份一致性的時候,可以根據聊天對象選擇某種風格、身份的聊天助手。整體技術框架仍然採用Sequence-to-Sequence架構,其實現思路是把聊天助手的個性信息導入到Decoder的輸出過程中,就是說在採用RNN的Decoder生成應答Response的時候,每個t時刻,神經網路節點除了RNN標準的輸入外,也將選定身份的個性化Word Embedding信息一併作為輸入。這樣就可以引導系統在輸出時傾向於輸出符合身份特徵的個性化信息。

上述是一種深度學習框架下維護聊天助手個性一致的技術框架,很明顯還可以衍生出很多種其他方案,但是技術思路應該是類似的,核心思想是把聊天助手的個性信息在Decoder階段能夠體現出來,以達到維護個性一致的目的。

小結

上述內容介紹了使用深度學習構建聊天機器人採用的主體技術框架以及面臨的一些獨特問題及相應的解決方案。此外,還有一些問題值得探討,比如如何使得聊天機器人有主動引導話題的能力,因為一般聊天機器人都比較被動,話題往往都是由用戶發起和引導,聊天機器人只是作為應答方,很少主動引導新話題,而這很容易導致聊天冷場,所以如何主動引導話題也是聊天機器人應該具備的能力之一,文獻7提出了一種技術方案,此處不贅述,感興趣的讀者可自行參考。

圖5 個性信息不一致問題(這是利用Twitter 2500萬訓練數據經過Sequence-to-Sequence模型訓練后產生的結果)

圖6 一種Sequence-to-Sequence框架下維護聊天助手個性信息一致性的方案

深度學習聊天機器人的優點與需要改進的方向

相對基於檢索類或者機器翻譯類傳統技術而言,基於Encoder-Decoder深度學習框架的聊天機器人具有如下明顯優點:

構建過程是端到端(End-to-End)數據驅動的,只要給定訓練數據即可訓練出效果還不錯的聊天系統,省去了很多特徵抽取以及各種複雜中間步驟的處理,比如省去句法分析與語義分析等傳統NLP繞不開的工作,使得系統開發效率大幅提高。

語言無關,可擴展性強。對於開發不同語言的聊天機器人來說,如果採用Encoder-Decoder技術框架,只需要使用不同語言的聊天數據進行訓練即可,不需要專門針對某種語言做相關的特定優化措施,這使得系統可擴展性大大加強。

訓練數據擴大有助於持續提升系統效果。對於Encoder-Decoder深度學習模型來說,一般通過不斷增加訓練數據就能夠帶來持續的效果提升。

當然,開發出具備像人一樣能夠自然交流的聊天機器人目前還面臨著各種技術難題,具體到使用深度學習技術來構建聊天機器人來說,目前在以下幾個方面還需大力加強:

聊天機器人的評價標準。聊天機器人效果質量的評價標準對於持續提升系統是至關重要的,因為只有這樣才能有針對性地設計技術方案進行改進。聊天機器人在評價標準方面還有待深入研究,目前常用的標準包括機器翻譯的評價指標BLEU、語言模型評價標準困惑度等,還有很多工作是通過人工來進行效果評價,還沒有特別合適的專用於聊天機器人的評價標準,這是阻礙聊天機器人技術持續發展的一個障礙。

缺乏標準化的大規模訓練數據。就像上述深度學習模型優點所述,訓練數據的不斷增加一般能夠帶來性能的持續提升。但是目前來說,標準化的特大規模人與人對話數據相對缺乏,很多研究都是通過Twitter或者微博評論等高成本的採集方式來收集對話訓練數據,或者使用電影字幕等比較間接的方式來積累訓練數據。如果能夠有大規模的標準聊天數據,很明顯將能夠極大促進技術進步。

技術仍處於發展初期。很明顯採用深度學習來構建聊天機器人的技術研發還處於非常初期的階段,技術手段也好,實際系統效果也好,都有非常大的進步空間。

參考文獻:

[1]Lifeng Shang, Zhengdong Lu, and Hang Li.2015. Neural responding machine for short-text conversation. In ACL-IJCNLP, pages 1577–1586.

[2] Oriol Vinyals and Quoc Le. 2015. A neural conversational model. In Proc. of ICML Deep Learning Workshop.

[3] Alessandro Sordoni, Michel Galley, Michael Auli, ChrisBrockett, Yangfeng Ji, Meg Mitchell,Jian-Yun Nie,Jianfeng Gao, and Bill Dolan. 2015.A neural network approach to context-sensitive generation of conversational responses. In Proc. of NAACL-HLT.

[4] Iulian V Serban, Alessandro Sordoni, Yoshua Bengio,Aaron Courville, and Joelle Pineau. 2015. Building end-to-end dialogue systems using generative hierarchical neural network models. In Proc. of AAAI.

[5]Jiwei Li, Michel Galley, Chris Brockett, Jianfeng Gao,and Bill Dolan. 2015. A diversity-promoting objective function for neural conversation models. arXiv preprint arXiv:15

[6] Jiwei Li, Michel Galley, Chris Brockett, Jianfeng Gao and Bill Dolan. A Persona-Based Neural Conversation Model. arXiv preprint arXiv:16

[7] Xiang Li,Lili Mou,Rui Yan and Ming Zhang. StalemateBreaker: A Proactive Content-Introducing Approach to Automatic Human-Computer Conversation.IJCAI 2016.



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦