A Knowledge-Grounded Neural Conversation Model

原文:https://arxiv.org/pdf/1702.01932.pdf
原論文的主要內容翻譯與總結

摘要

Neural network 模型已經可以進行很自然的對話交互了。但目前來看,這些模型在基於任務的對話中並沒有通過吸取其他形式的真實信息或背景實體(entity-grounded)觀點來增強它們的服務水平。該論文就提出來一種新穎的,完全有數據驅動的,並且基於背景知識(knowledge-grounded)的神經對話模型。該論文意在沒有槽位填充下產生內容更加豐富的迴應。論文實驗中以對話記錄和外部的“事實”爲條件,通過常見的seq2seq方法使模型在開放領域的設置中變的通用和可行。在人工測評中,論文的方法相比傳統的seq2seq能輸出更加豐富的信息。

概述

從(Ritter et al., 2011; Sordoni et al.,2015; Shang et al., 2015; Vinyals and Le, 2015)開始,前輩們的工作向我們展示了訓練一個全數據驅動的端到端對話模型是可行的。但這樣的全數據系統缺乏現實中的場景,而且不能訪問任何額外的知識。這就使他很難產生實質性的回覆。
該論文從全數據驅動和場外知識背景的相關研究中汲取經驗。在對話中聯繫到其他數據是很關鍵的,因爲那些存儲在非對話的知識(如百科,書評和旅店評論等)對於對話來說是非常有用的。在對話中,agent通過上百萬的對話記錄學習到人們交流的主幹後,我們再通過非對話的知識來豐富內容。需說明的是該論文的研究是以更加有意義的對話爲目的。先前的全數據驅動對話模型已經應用在閒聊機器人,本研究通過額外的數據可以幫助用戶做出更好的決策(例如推薦或QA系統)或完成特殊的任務(例如task-completion agents)。
該方法是在一般seq2seq框架基礎上,在多任務的學習中結合對話和非對話數據。該方法的核心思想是在回覆時不僅以對話記錄作爲條件,也吸收了相關的額外事實信息。我們的思想是只需要使用一種方法(例如簡單的命名實體匹配等)在對話上下文中引入額外信息,這就提高了該模型在開放域中的多樣性和可適用性。

構建

當前構建全數據驅動的對話模型所面臨的的挑戰是在已存在的對話數據庫中,沒有一個可以包括世界的所有知識。儘管這些數據庫近年在不斷的豐富,但和百科,評論或其他形式的數據相比還遠遠不夠。
爲了吸收爲了向回覆中灌輸和對話上下文相關的事實信息,我們提出了一種知識場模型(如下圖)。首先我們有一個可用的world facts,這是一個每行爲一條詞目的集合(例如百科,評論),並以命名實體作爲關鍵詞進行索引。然後在給定的source sequence S中,識別S的“focus”(即特徵詞)。這些foucs可以被用於關鍵詞匹配或更先進的方法中,例如實體鏈(entity linking)或命名實體識別。這樣query就可以檢索到所有上下文相關的facts: F = {f1, f2, f3, ….., fk}。最後將對話對和相關的facts都喂到神經架構中去訓練。下面章節裏我們將會詳細介紹。
這裏寫圖片描述

相比傳統的seq2seq響應生成方法,這種知識場方法更具有綜合性,因爲它使我們關心的那些具有差異的實體不用去學相同的對話模型。在實際中,即使給出一個在訓練中沒有出現過的實體(也就意味着在詞典中也沒有該實體),在這種情況下,我們的方法也能夠依賴相關的facts來生成一個適當的響應。這也說明我們能夠在不用重新訓練整個模型的情況下通過facts來豐富我們的系統。
我們通過多任務併發式的學習方法(Luong et al., 2015)將對話數據和場數據及少量的非正式交換(例如對“hi, how are you”的迴應)自然的聯繫起來。其中的兩種類型任務是我們多任務中最具特點的:
(1)一個純粹的會話任務,該任務使用無fact encoder的(S,R)獲得模型。其中S表示對話記錄,R表示響應;
(2)另外一個任務使用({f1,….,fk,S},R)訓練樣例來獲得最終的模型。
這種去耦合的兩種訓練條件有以下幾種優勢:首先,它允許我們先使用對話庫來做預訓練,再以預訓練獲得的模型爲基礎做多任務訓練。再個,它能給我們靈活性的揭露不同類型的會話數據。最後,一個有趣的觀點是可以在任務(2)中使用facts中的一條fact(R=fi)來替換響應,這就使得任務(2)更像一個自編碼器(autoencoder),可以幫助模型產生更具豐富的內容。在第4部分我們將會做更詳細的討論。

對話的編碼與解碼

對話的編碼與解碼組成一個Seq2Seq模型。如下圖所示:
這裏寫圖片描述

Facts Encoder

圖3中的Facts Encoder與(Weston et al., 2014; Sukhbaatar et al., 2015)首次提出的記憶網絡模型相似。它使用組合記憶來塑造和一個指定問題相關的facts。在我們案例中,當一個實體在對話中被提到,那麼就會基於用戶輸入和對話歷史對facts進行檢索和加權並最終生成一個答案。記憶網絡模型被廣泛應用到QA中,通過保存在記憶中的事實來做推斷。
在我們的適應性 記憶網絡中,我們使用了一個RNN encoder將輸入的sequence轉化爲一個向量,而不是使用之前記憶網絡中使用的詞袋錶示法。這能夠使我們在輸入的不同部分之間能夠更好的利用詞間的依賴性(inter lexical dependencies),並且能夠使記憶網絡模型(facts encoder)更加直接的適應Seq2Seq模型。

形象化說明

我們給出一個sentence集合S={s1,s2,s3,…..,sn}和一個fact集合F={f1,f2,…..,fk}。fact集合是和對話記錄(即S)相關的。RNN encoder按token依次讀入一條sequence,並更新它的隱藏狀態(hidden state)。讀入整條sequence後,RNN encoder的隱藏狀態 u就是這條sequence的概要。通過使用一個RNN encoder, 我們可以獲得源sequence更豐富的表示。
我們首先假設u是一個d維的向量,ri是fi的v維詞袋錶示。基於(Sukhbaatar et al., 2015),我們有:
這裏寫圖片描述
(公式1,2,3是求解相關fact條目i的向量,公式4將所有相關facts向量整合,公式5是將相關的facts向量與encoder向量整合)
其中 A,C是記憶網絡的參數。然後,不同於原來版本的記憶網絡,我們使用了一個善於生成響應的RNN decoder。RNN的隱藏態使用這裏寫圖片描述來初始化,而這裏寫圖片描述整合了輸入sequence和相關知識場,最後通過該隱藏態來預測響應sequence的逐詞生成。
爲了替代公式5中的求和方式,我們也實驗了串聯方式,但求和方式的效果更好一些。(Weston et al., 2014)的記憶網絡模型可以看做是一個多層結構。在該任務中,我們只用到了一層,因爲不需要多層次的歸納。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章