讀懂智慧對話系統(2)聊天機器人
京東資料團隊曾經出了一片關於對話系統的論文《A Survey on Dialogue Systems:Recent Advances and New Frontiers(智慧對話系統調查:前沿與進展)》,全文引用了124篇論文,是一篇綜合全面的介紹對話系統的文章。
論文原文地址:
https://www.kdd.org/exploration_files/19-2-Article3.pdf
公眾號“機器學習演算法全棧工程師”對這篇論文的內容進行了解讀,主要概述了對話系統,尤其是對話系統在深度學習方面的進展,還討論了可能的研究方向。以下是主要架構:
奇點機智對這篇文章進行了進一步的拆解,分成四篇文章來介紹智慧對話系統。
讀懂智慧對話系統(1)任務導向型對話系統
讀懂智慧對話系統(2)聊天機器人
讀懂智慧對話系統(3)對話系統的未來發展
非任務導向系統(chatbot,聊天機器人)
不同於任務導向型對話系統,它的目標是為使用者完成特定的任務,而非任務導向的對話系統(也稱為聊天機器人)專注於在開放的領域與人交談。一般來說,聊天機器人是通過生成方法或基於檢索的方法實現的。
生成模型能夠生成更合適的回覆,而這些回覆可能從來沒有出現在語料庫中,而基於檢索的模型則具有信息充裕和響應流暢的優勢。
1. 神經生成模型(Neural Generative Models)
深度學習在機器翻譯中的成功應用,即神經機器翻譯,激發了人們對神經生成對話研究的熱情。目前神經生成模型的熱門研究課題大概有如下幾個方面。
1.1 Sequence-to-Sequence Models
給定包含 個詞語的輸入序列(message)
Line"/>
和長度為T的目標序列(response)
模型最大化Y在X下的條件概率:
具體來說,Seq2Seq模型是在encoder-decoder結構中,下圖是這種結構的示意:
編碼器將X逐字讀入,並通過遞迴神經網路(RNN)將其表示為上下文向量c, 然後解碼器將c 作為輸入估計Y 的生成概率。
Encoder :
Encoder過程很簡單,直接使用RNN(一般用LSTM)進行語義向量生成:
其中f 是非線性函式,例如LSTM,GRU,
是上一隱節點輸出, 是當前時刻的輸入。向量c 通常為RNN中的最後一個隱節點
(h, Hidden state),或者是多個隱節點的加權和。
Decoder :
模型的decoder過程是使用另一個RNN通過當前隱狀態 來預測當前的輸出符號 ,這裡的 和 都與其前一個隱狀態和輸出有關,Seq2Seq的目標函式定義為:
1.2. 對話上下文(Dialogue Context)
考慮對話的上下文資訊的是構建對話系統的關鍵所在,它可以使對話保持連貫和增進使用者體驗。使用層次化的RNN模型,捕捉個體語句的意義,然後將其整合為完整的對話。
同時,分別用字級別和句子級別的注意力方法擴充套件層次化的結構。
試驗證明:
-
層次化 RNNs的表現通常優於非層次化的RNNs;
-
在考慮上下文相關的資訊後,神經網路趨向於產生更長的、更有意義和多樣性的回覆。
在上圖中,作者通過代表整個對話歷史(包括當前的資訊),用連續的表示或嵌入單詞和短語來解決上下文敏感回覆生成的這一難題。
在上圖的結構中作者引入兩個層次的Attention機制,讓模型能夠自動的學到詞語與句子級別的重要度資訊,從而更好的生成新一輪的對話。
作者在句子級別的資訊中,是反向學習的,即認為下一句的資訊中更能夠包含上一句的資訊,所以從總體上來看,其對於對話的學習是逆向使用每一輪對話的內容的。
1.3 回覆多樣性(Response Diversity)
在當前Seq2Seq對話系統中,一個具有挑戰性的問題是,它們傾向於產生無關緊要的或不明確的、普通的、幾乎沒有意義的回覆,而這些回覆常常涉及到一些諸如“I don't know”,“I am OK”這樣的無意義回覆。
解決這類問題的一個很有效的方法是找到並設定一個更好的目標函式。除此之外,解決此類問題的一個方法是增加模型的複雜度。下圖這篇論文《Building End-To-End Dialogue Systems
Using Generative Hierarchical Neural Network Models》使用了 latent variable 來解決無意義回覆這個問題。
1.4 主題和個性化(Topic and Personality)
明確對話的內在屬性是提高對話多樣性和保證一致性的另一種方法。在不同的屬性中,主題和個性被廣泛地進行研究探討。
在下圖的模型中,作者注意到人們經常把他們的對話與主題相關的概念聯絡起來,並根據這些概念做出他們的回覆。他們使用Twitter LDA模型來獲取輸入的主題,將主題資訊和輸入表示輸入到一個聯合注意模組中,並生成與主題相關的響應。
下圖的模型提出了一種兩階段的訓練方法,使用大規模資料對模型進行初始化,然後對模型進行微調,生成個性化響應。
1.5 外部知識庫(Outside Knowledge Base)
人類對話與對話系統之間的一個重要區別是它是否與現實相結合。結合外部知識庫(KB)是一種很有前途的方法,可以彌補背景知識之間的差距,即對話系統和人之間的差距。
記憶網路(Memory Network)是一種以知識庫處理問題的經典方法。因此,它非常直接的別用於在對話生成中。實際研究表明,所提出的模型能夠通過參考知識庫中的事實來生成對問題的自然和正確答案。
上圖是作者提出的完全資料驅動的帶有知識的對話模型。其中的 World Facts是一個集合,收集一些經過權威認證過的句子或者不準確的句子,作為知識庫。
當個定一個輸入S和歷史,需要在 Fact 集合裡面檢索相關的facts,這裡採用的IR引擎進行檢索,然後經過 Fact Encoder 進行 fact injection。
上圖的模型提出了一種全新的、完全由資料驅動的、基於知識的神經對話模型,目的是在沒有槽位的情況下產生更多的內容。作者歸納了廣泛使用的SEQ2SEQ方法,通過對會話歷史和外部“事實”的響應
1.6 評價
評價生成回覆的質量是對話系統的一個重要方面。任務導向型的對話系統可以基於人工生成的監督訊號進行評估,例如任務完成測試或使用者滿意度評分等,
然而,由於高回覆的多樣性,自動評估非任務導向的對話系統所產生的響應的質量仍然是一個懸而未決的問題。目前的方法有以下幾種:
-
計算 BLEU 值,也就是直接計算 word overlap、ground truth和你生成的回覆。由於一句話可能存在多種回覆,因此從某些方面來看,BLEU 可能不太適用於對話評測。
-
計算 embedding的距離,這類方法分三種情況:直接相加求平均、先取絕對值再求平均和貪婪匹配。
-
衡量多樣性,主要取決於 distinct-ngram 的數量和 entropy 值的大小。
-
進行圖靈測試,用 retrieval 的 discriminator 來評價回覆生成。
2. 基於檢索的方法
基於檢索的方法從候選回覆中選擇回覆。檢索方法的關鍵是訊息-回覆匹配,匹配演算法必須克服訊息和回覆之間的語義鴻溝。
2.1 單輪迴復匹配
檢索聊天機器人的早期研究主要集中在反應選擇單輪的談話,只有訊息用於選擇一個合適的回覆。
目前比較新的方法如下圖,利用深度卷積神經網路體系結構改進模型,學習訊息和響應的表示,或直接學習兩個句子的相互作用表示,然後用多層感知器來計算匹配的分數。
2.2 多輪迴復匹配
近年來,基於檢索的多輪會話越來越受到人們的關注,在多輪迴答選擇中,將當前的訊息和先前的話語作為輸入。
模型選擇一個自然的、與整個上下文相關的響應。重要的是要在之前的話語中找出重要的資訊,並恰當地模仿話語的關係,以確保談話的連貫性。
多輪對話的難點在於不僅要考慮當前的問題,也要考慮前幾輪的對話情景。多輪對話的難點主要有兩點:
-
如何明確上下文的關鍵資訊(關鍵詞,關鍵短語或關鍵句);
-
在上下文中如何模擬多輪對話間的關係。
現有檢索模型的缺陷:在上下文中容易丟失重要資訊,因為它們首先將整個上下文表示為向量,然後將該上下文向量與響應sentence向量進行匹配。
下圖的方法通過RNN/LSTM的結構將上下文(所有之前的話語和當前訊息的連線)和候選響應分別編碼到上下文向量和回覆向量中,然後根據這兩個向量計算出匹配度分數。
目前關於檢索模型的閒聊還停留在單輪對話中,下面這篇論文提出了基於檢索的多輪對話閒聊。論文提出了一個基於檢索的多輪閒聊架構,進一步改進了話語關係和上下文資訊的利用,通過將上下文中的語句與卷積神經網路的不同層級進行匹配,然後通過一個遞迴的神經網路在時間序列中堆積這些向量,以建立對話之間的關係。
2.3 混合的方法(Hybrid Methods)
將生成和檢索方法結合起來能對系統性能起到顯著的提升作用。基於檢索的系統通常給出精確但是較為生硬的答案,而基於生成的系統則傾向於給出流暢但卻是毫無意義的回答。
將生成和檢索方法結合起來能對系統性能起到顯著的提升作用。基於檢索的系統通常給出精確但是較為生硬的答案,而基於生成的系統則傾向於給出流暢但卻是毫無意義的回答。
在整合模型中,被抽取的候選物件和原始訊息一起被輸入到基於RNN的回覆生成器中。這種方法結合了檢索和生成模型的優點,這在效能上具備很大的優勢。