论文浅尝 | 基于图注意力的常识对话生成
OpenKG 祝各位讀者新春快樂,豬年吉祥!
來源:IJCAI 2018.
論文下載地址:https://www.ijcai.org/proceedings/2018/0643.pdf
項目源碼地址:https://github.com/tuxchow/ccm
動機
在以前的工作中,對話生成的信息源是文本與對話記錄。但是這樣一來,如果遇到OOV 的詞,模型往往難以生成合適的、有信息量的回復,而會產生一些低質量的、模棱兩可的回復,這種回復往往質量不高。
為了解決這個問題,有一些利用常識知識圖譜生成對話的模型被陸續提出。當使用常識性知識圖譜時,由于具備背景知識,模型更加可能理解用戶的輸入,這樣就能生成更加合適的回復。但是,這些結合了文本、對話記錄、常識知識圖譜的方法,往往只使用了單一三元組,而忽略了一個子圖的整體語義,會導致得到的信息不夠豐富。
為了解決這些問題,文章提出了一種基于常識知識圖譜的對話模型(commonsense knowledge aware conversational model,CCM)來理解對話,并且產生信息豐富且合適的回復。本文提出的方法,利用了大規模的常識性知識圖譜。首先是理解用戶請求,找到可能相關的知識圖譜子圖;再利用靜態圖注意力(static graphattention)機制,結合子圖來理解用戶請求;最后使用動態圖注意力(dynamic graph attention)機制來讀取子圖,并產生合適的回復。
通過這樣的方法,本文提出的模型可以生成合適的、有豐富信息的對話,提高對話系統的質量。
貢獻
文章的貢獻有:
(1)首次嘗試使用大規模常識性知識圖譜來處理對話生成問題;
(2)對知識圖譜子圖,提出了靜態/動態圖注意力機制來吸收常識知識,利于理解用戶請求與生成對話;
(3)對比于其他系統,目前的模型生成的回復是最合適的、語法最正確的、信息最豐富的。
方法
⒈ Encoder-Decoder 模型
經典的Encoder-Decoder模型是基于sequence-to-sequence(seq2seq)的。encoder模型將用戶輸入(user post)X=x_1 x_2…x_n 用隱狀態 H=h_1 h_2…h_n 來表示。而decoder模型使用另一個GRU來循環生成每一個階段的隱狀態,即 。在解碼過程中利用了注意力機制。
當decoder模型根據概率分布生成了輸出狀態后,可以由這個狀態經過softmax操作得到最終的輸出:。可以看到,在這個經典的encoder-decoder模型中,并沒有圖的參與。
?
⒉模型框架
如下圖1所示為本文提出的CCM模型框架。
圖1 CCM模型框架
如圖1所示,基于n個詞輸入,會輸出n個詞作為回復,模型的目的就是預估這么一個概率分布:,即將圖信息 G 加入到概率分布的計算中。在信息讀取時,根據每個輸入的詞x,找到常識知識圖譜中對應的子圖(若沒有對應的子圖,則會生成一個特殊的圖Not_A_Fact),每個子圖又包含若干三元組。
⒊知識編譯模塊
如圖2所示,為如何利用圖信息編譯post的示意圖。
圖2 知識編譯模塊
????? 如圖所示,當編譯到“rays”時,會把這個詞在知識圖譜中相關的子圖得到(圖2最上的黃色高兩部分),并生成子圖的向量。每一個子圖都包含了key entity(即這里的rays),以及這個“rays”的鄰居實體和相連關系。對于詞“of”,由于無法找到對應的子圖,所以就采用特殊子圖Not_A_Fact來編譯。之后,采用基于靜態注意力機制,CCM會將子圖映射為向量,然后把詞向量 w(x_t) 和 g_i 拼接為,并將這個替換傳統encoder-decoder中的 e(x_t) 進行GRU計算。
對于靜態圖注意力機制,CCM是將子圖中所有的三元組都考慮進來,而不是只計算一個三元組,這也是該模型的一個創新點。
⒋知識生成模塊
如下圖3所示,為如何利用圖信息生成回復的示意圖。
圖3 知識生成模塊
在生成時,不同于靜態圖注意力機制,模型會讀取所有相關的子圖,而不是當前詞對應的子圖,而在讀取時,讀取注意力最大的就是圖中粉色高亮的部分。生成時,會根據計算結果,來選擇是生成通用字(generic word)還是子圖中的實體。
⒌損失函數
損失函數為預期輸出與實際輸出的交叉熵,除此之外,為了監控選擇通用詞還是實體的概率,又增加了一個交叉熵。
實驗
⑴ 實驗相關細節
常識性知識圖譜選用了ConceptNet,對話數據集選用了reddit的一千萬條數據集,如果一個post-response不能以一個三元組表示(一個實體出現于post,另一個出現于response),就將這個數據去除。然后對剩下的對話數據,分為四類,一類是高頻詞,即每一個post的每一個詞,都是最高頻的25%的詞;一類是中頻詞,即25%-75%的詞;一類是低頻詞,即75%-100%的詞;最后一類是OOV詞,每一個post包含了OOV的詞。
而基線系統選擇了如下三個:只從對話數據中生成response的seq2seq模型、存儲了以TransE形式表示知識圖譜的MemNet模型、從三元組中copy一個詞或生成通用詞的CopyNet模型。
而選用metric的時候,采用了刻畫回復內容是否語法正確且貼近主題的perplexity,以及有多少個知識圖譜實體被生成的entity score。
⑵ 實驗結果
如下圖4所示,為根據perplexity和entity score進行的性能比較,可見CCM的perplexity最低,且選取entity的數量最多。并且,在低頻詞時,選用的entity更多。這表示在訓練時比較罕見的詞(實體)會需要更多的背景知識來生成答復。
圖4 CCM與基線系統對比結果
另外,作者還采用眾包的方式,來人為審核response的質量,并采用了兩種度量值appropriateness(內容是否語法正確,是否與主題相關,是否有邏輯)與informativeness(內容是否提供了post之外的新信息)。如下圖5所示,為基于眾包的性能比較結果。
圖5 CCM與基線系統基于眾包的對比結果
從圖5中可見,CCM對于三個基線系統來說,都有將近60%的回復是更優的。并且,在OOV的數據集上,CCM比seq2seq高出很多,這是由于CCM對于這些低頻詞或未登錄詞,可以用知識圖譜去補全,而seq2seq沒有這樣的知識來源。
如下圖6所示,當在post中遇到未登錄詞“breakable”時,seq2seq和MemNet都只能輸出一些通用的、模棱兩可的、毫無信息量的回復。CopyNet能夠利用知識圖譜輸出一些東西,但是并不合適。而CCM卻可以輸出一個合理的回復。
圖6 case study
總結
本文提出了一種結合知識圖譜信息的encoder-decoder方法,引入靜態/動態圖注意力機制有效地改善了對話系統中response的質量。通過自動的和基于眾包的形式進行性能對比,CCM模型都是優于基線系統的。
?
論文筆記整理:花云程,東南大學博士,研究方向為知識圖譜問答、自然語言處理。
OpenKG.CN
中文開放知識圖譜(簡稱OpenKG.CN)旨在促進中文知識圖譜數據的開放與互聯,促進知識圖譜和語義技術的普及和廣泛應用。
點擊閱讀原文,進入 OpenKG 博客。
總結
以上是生活随笔為你收集整理的论文浅尝 | 基于图注意力的常识对话生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文浅尝 | 基于知识图谱嵌入的 Boo
- 下一篇: 论文浅尝 | 基于动态记忆的原型网络进行