基於圖注意力的常識對話生成
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 部落格。