ACL 2019 收錄論文分享:《Proactive Human-Machine Coversation with Explicit Conversation Goals》。
一、動機
人機對話是人工智慧的一項基本挑戰,涉及語言理解、對話控制和語言生成等關鍵技術,受到了學術界和工業界的廣泛關注。但目前的人機對話普遍存在以下問題:
機器大多是被動對話形式,即機器的回覆是用於響應用戶的輸入,無法像人一樣進行充分的信息交互機器的對話漫無目的,缺乏像人一樣的自主意識因此,我們提出了主動對話任務:
給機器設定對話目標讓機器根據給定的知識圖譜信息主動引領對話進程,完成對話目標達到信息充分交互,實現機器具備自主意識的目的 二、主動對話任務設置
我們給機器設置的對話目標是從當前話題跳轉到目標話題上,由於目標話題和當前話題存在相關和不相關兩種情況,因此我們在對話目標設定上同時考慮這兩種情況,如圖1左下所示,首先讓機器從當前話題(Start)跳轉到任意目標話題A(紅海行動),然後進一步跳轉到和話題A相關的另一目標話題B(林超賢)上。
如圖1左上部分所示,給機器提供的知識圖譜信息是目標話題A和B相關的子圖信息。圖1右側為主動對話示例,機器主動發起對話,根據知識圖譜信息主動引領對話進程,自然流暢的實現話題的遷移目標。
三、數據集建設
目前已有的對話數據集不適用於我們提出的主動對話任務,因此我們通過人工標註方式在電影和娛樂人物領域建設了一個新的對話數據集(DuConv),用於主動對話技術的研究。整個數據集建設經過了知識挖掘、圖譜建設、對話目標設定和語料眾包標註四個階段。
1、知識挖掘
我們在時光網(www.mtime.com)上挖掘了電影和娛樂人物相關的結構化和非結構化知識信息,如電影的票房、導演、評論,相關人物的祖籍、代表作和評論等。我們根據網上挖掘的這些靜態知識進一步計算出動態知識以豐富知識內容,比如根據票房信息計算出電影之間的票房排行,根據評分信息離散化得到電影或人物的口碑信息等。經過數據清洗後總共得到約14萬實體360萬條知識的數據,每條知識以三元組<實體,屬性,值>的形式組織,經過抽樣評估,我們挖掘的知識準確率為97%。
2、圖譜建設
類似於傳統的圖譜建設,我們以挖據的三元組知識中的實體和值為節點,屬性為邊建立一階圖譜關係,除此之外,我們對有相同屬性和值的兩個實體建立二階關係,如「紅海行動」和「湄公河行動」的導演都是林超賢,這兩個實體則存在二階關聯關係。
3、對話目標設定
如圖1所示,每組對話都有對話目標和關聯的知識信息,我們從圖譜中提取任意兩個關聯的實體作為對話目標中的目標話題A和B,包括一階關係和二階關係的關聯實體。然後進一步提取關聯實體所在的知識子圖作為目標話題A和B的附加知識信息。
4、語料眾包標註
不同於self-play一人扮演對話雙方的標註方式,我們在眾包平臺test.baidu.com上隨機挑選兩個標註人員模擬真實對話的雙方標註出每組對話數據。為保證至少有兩個標註人員同時進入對話標註任務,我們安排多個外包團隊進入標註平臺開展對話標註。標註時,每組對話隨機挑選兩個標註人員標註,其中之一扮演機器角色根據提供的知識子圖信息主動引領對話進程完成設定的對話目標,另一個標註人員扮演真實用戶角色響應機器角色的對話即可。由此共標註了約3萬組含有27萬對話句子的語料,詳細統計信息如下:
四、基線模型建設
目前人機對話任務主要有檢索和生成兩種主流的技術方向,我們在這兩個方向上都建立了主動對話的基線模型。
1、檢索模型
檢索模型借鑑信息檢索的方法從對話語料庫中檢索候選回復,然後使用排序模型對候選回復進行排序,再選取高相關性的回覆進行輸出,如圖3左側所示。
我們的候選回復是從訓練集中相同對話目標類型(如「Start」->[Movie]->[Person], 「Start」->[Movie]->[Movie]等)相同輪次的機器回覆中隨機選取的,並對候選回覆中的知識根據屬性名稱替換成當前對話的相應知識,減少知識衝突現象。
排序階段,使用二分類方法判斷每個候選回復Y屬於正確回復的概率,如圖3右側所示,首先將候選回復Y和對話歷史X(包括當前輪的用戶輸入)使用分隔符拼接成一串字符序列,然後使用Transformer方法進行編碼表示,再聯合attention方法選取的相關知識信息通過softmax層進行二分類判斷。為了簡便,該方法中將對話目標Goal作為知識信息的一部分使用。
2、生成模型
生成模型借鑑最早用於機器翻譯的Seq2Seq模型,將輸入的對話歷史X使用encoder編碼表示,然後使用decoder逐步解碼出回復的每個字符。如圖4所示,我們在Seq2Seq框架基礎上使用Memory Network方法表示知識信息,通過attention方式選擇輸出回復需要使用的知識信息,並引入decoder中。我們發現:通過輸出回復的loss信息再經decoder的長距離梯度回傳很難有效指導模型進行知識選擇。
因此我們提出了一種新的解決方法(使用該方法的模型稱為後驗生成模型):
在訓練階段使用標準回復Y中的後驗知識信息指導模型進行先驗知識選擇,即讓先驗知識分布p(ki|x)擬合後驗知識分布p(ki|x,y),訓練時將這兩個分布向量的KL散度作為Loss的一部分。KL散度計算方法如下:
為避免在計算後驗知識分布時存在嚴重信息損失,借鑑自編碼的思想,訓練階段讓標準回復計算的後驗知識分布能解碼出標準回複本身,即用後驗分布預測標準回復的每個詞,預測結果的BOW Loss也作為整體Loss的一部分,BOW Loss計算如下:
該方法中對話目標Goal作為輸入信息的一部分共同參與知識信息的選擇和回復的解碼。
五、實驗及結果
實驗中使用的模型除了上文介紹的檢索模型(retrieval)和後驗生成模型(generation)外,增加了Seq2Seq模型進行對比,該模型只有encoder和decoder,語料中的對話歷史、知識信息和對話目標拼接成一個字符串作為模型的輸入。
我們使用百度的深度學習平臺飛槳(PaddlePaddle)實現所有的基線模型,每個模型都使用預訓練的word2vec詞表進行熱啟動,詞表大小為3萬,隱層維度為300,訓練階段使用Adam方式對模型進行優化,生成模型中使用大小為10的beamsize進行解碼。
由於對話的開放性,對話效果的自動評估仍然是一個難題,因此我們在自動評估的基礎上進一步使用人工評估的方式來衡量對話的效果。
1、自動評估
由於無法自動生成用戶的回覆,因此自動評估只能進行單輪評估,即給定對話歷史(包括當前用戶輸入)時,評估系統輸出的機器回復。評估指標上既有檢索相關的指標Hits@k又有生成相關的PPL、F1、BLEU和DISTINCT指標,同時使用準確召回指標衡量回覆中的知識使用情況。評估估結果如下:
結論:
(1)為了觀察知識的作用,每個模型都做了引入知識(w/)和不引入知識(w/o)的對比,從實驗結果中可以看出引入知識能有效提升系統的效果,尤其是生成模型。
(2)由於知識本身具有稀疏性,尤其是知識中的實體名稱,因此我們進一步對知識進行了歸一化處理(normalization,簡寫成norm),將語料中的實體名稱槽位化,回復輸出前再將槽位替換為相應的實體名稱,從實驗結果可以看到三個模型做了知識歸一化處理後可以有效提升模型的泛化能力,效果提升非常顯著。
(3)從表中還可以看到後驗生成模型要顯著優於Seq2Seq模型,可見後驗信息能夠有效指導模型進行知識選擇。
(4)通過自動評估指標很難判斷檢索模型和生成模型的優劣,檢索模型在檢索指標上Hits@k要顯著優於生成模型,而生成模型在生成指標F1/BLEU上要顯著優於檢索模型,推測這和兩種模型各自的優化指標有關。知識使用上兩種模型無顯著區別。
2、人工評估
我們進一步對自動評估中效果最好的三個norm模型進行人工評估,分別從單輪或多輪兩個層級進行評估。多輪評估時使用類似於數據標註的方法先生成多輪評估數據,不同的是將數據標註時扮演機器角色的標註專員替換成候選模型。每個模型生成100組評估數據,然後使用三個評估專員共同評估。多輪評估指標有Goal完成度和多輪一致性coherence兩個維度。Goal完成度有三檔,評估標準如下:
(1)0檔,表示Goal未完成,即沒有按Goal設定完成話題遷移目標。
(2)1檔,表示Goal完成,但沒有充分利用知識信息,整個多輪對話中使用的知識信息少於3條。
(3)2檔,表示Goal完成,而且充分利用知識信息,整個多輪對話中使用的知識信息大於等於3條。
Coherence是根據多輪對話中每個機器回復是否存在句內流暢性和句間一致性問題統計的,每個句內問題記0.5分,每個句間問題記1分,然後根據整體計分將coherence劃分為四檔:>2分表示存在大量的問題,為0檔;[1.5, 2]為1檔;[0.5, 1]為2檔;0分表示沒有任何問題,標記為第3檔。多輪的評估結果如圖6:
結論:
(1)從人工評估指標可以看出生成模型要優於檢索模型,結合圖7的case可以發現,這主要是由於檢索模型檢索出的回覆雖然經過了歸一化處理,但仍然存在殘餘知識信息與當前對話中的知識信息衝突的情況。
(2)單輪指標上Seq2Seq模型在流暢性(fluency)和上下文一致性(coherence)要優於後驗生成模型,但是在信息豐富度上(informativeness)要遠遠差於後驗生成模型,這與Seq2Seq的安全回復問題有關,從圖7中的case可以發現Seq2Seq傾向於安全的不含知識信息的回覆,因此在衡量是否能主動提及新知識的主動性(proactivity)指標上也略遜於後驗生成模型。
(3)多輪指標上後驗生成模型在Goal完成度上明顯好於Seq2Seq模型,因為後驗生成模型能更加充分利用知識信息完成Goal設定的話題轉移,而且能保持句子的流暢性和上下文一致性(coherence)。從Goal完成度和coherence目前的效果可以看出主動對話模型還有很大的提升空間。
六、開源
我們建設的數據集DuConv以及相應的基線系統已經在PaddleNLP開源:
(1) 數據集:
http://ai.baidu.com/broad/subordinate?dataset=dureader
(2)基線系統:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/Research/ACL2019-DuConv
PaddleNLP(nlp.baidu.com/homepage/nlptools/)是基於飛槳(PaddlePaddle)深度學習框架打造的領先、全面、易用的NLP開源工具集與預訓練模型集。PaddleNLP開源內容覆蓋了工業應用和學術研究;為開發者提供了多種業內效果領先的NLP應任務模型和前沿的論文、代碼、數據,讓開發者能以超低門檻獲取多種頂尖NLP能力;為研究者提供百度NLP前沿研究成果的代碼與數據等,讓研究者們可以快速復現實驗,並據此開展新的研究。
PaddleNLP-研究版:開源了NLP領域最新研究成果的代碼及數據,包括領域權威會議ACL、NAACL、IJCAI等,權威競賽MRQA、SemEval等,可以幫助研究者快速了解百度NLP的前瞻研究成果,並在此基礎上開展研究。
七、競賽
為了鼓勵更多的研究人員參與主動人機對話技術的研究,我們使用建設的數據集DuConv在中國計算機學會、中國中文信息學會和百度公司聯合舉辦的「2019語言與智能技術競賽」上設立了知識驅動對話競賽任務,目前競賽已經結束,共收到了1536支隊伍報名,其中有178支隊伍提交了結果。競賽分為三階段:
第一階段通過自動評估指標在小測試集上自由打榜進行模型優化,歷時一個半月;
第二階段通過自動評估指標在最終測試集上正式打榜進行效果排名,歷時一周;
第三階段通過人工評估方法對上階段Top10隊伍的模型進行多輪評估確立獲獎名單,多輪評估的方法和指標同上文介紹的Goal完成度和Coherence一致,歷時一周。
最終的榜單如圖8所示,效果最好的模型相比於基線系統相對提升了37%。詳細信息參見比賽官網:http://lic2019.ccf.org.cn/talk
為了供研究人員持續打榜,我們在數據集開放頁面上也設置了榜單:
https://ai.baidu.com/broad/leaderboard?dataset=duconv
八、總結
我們針對目前人機對話中普遍存在的無意識被動對話問題,提出了主動對話任務,給機器設定了對話目標,讓機器根據提供的知識圖譜信息主動引領對話進程完成對話目標,使機器具備有自主意識的對話能力。為此我們建設了一個有3萬組對話27萬個句子的對話語料DuConv以及兩個主動對話基線模型,並已經開放數據集、開源基線模型。同時為鼓勵更多研究人員參與主動對話技術的研究,使用DuConv數據集開展了一屆對話競賽任務,影響廣泛,效果提升也明顯。目前的主動對話技術還有很大的提升空間,期待更多的研究人員共同參與研究。
至此,《Proactive Human-Machine Coversation with Explicit Conversation Goals》論文的分享到此結束,敬請期待2019百度被ACL收錄的其他論文。