JDDC大賽右核,全稱:JD Dialog Challenge, 全球首屆任務導向型對話系統(tǒng)挑戰(zhàn)賽半哟。這個比賽從2018年4月30號開始,歷經(jīng)初賽镜廉、決賽弄诲、人工測評、現(xiàn)場答辯四個環(huán)節(jié),在2018年10月18日正式結束齐遵,耗時4個多月寂玲。以下是我們團隊的成績單:
團隊名稱: | feel free |
---|---|
最終成績: | 季軍 |
決賽排名: | 4 |
決賽成績: | 0.744771 |
初賽排名: | 17 |
初賽成績: | 0.254222 |
代碼地址(如果感覺有幫助,請star): https://github.com/zengbin93/jddc_solution_4th
對于我們團隊的解決方案梗摇,任何疑問拓哟,歡迎交流。郵箱:zeng_bin8888@163.com
初賽階段思路及算法模型
初賽采用的是基于TFIDF的檢索式算法伶授。TF-IDF (Term Frequency-Inverse Document Frequency)表示詞頻和逆文檔頻率的乘積断序,代表了單詞對文章的重要程度。TF-IDF是深度學習應用于NLP之前的經(jīng)典表示方法糜烹。我們將TF-IDF作為檢索的第一步操作违诗,即檢索出top10 的候選集結果,再對候選集進行重新排序疮蹦。
我們對數(shù)據(jù)進行了一些預處理诸迟,主要包括:1)刪除輪次低于3的會話;2)將同一角色連續(xù)說的話合并成單句愕乎;3)將每個對話整理成Q1A1Q2A2Q3+A3的形式亮蒋,刪除多余輪次的對話記錄。
針對tfidf檢索式方案的優(yōu)化妆毕,主要有兩個方面:1)文本特征提取中加入了tri-grams;2)結果生成方式改成top10重排序贮尖,重排序準則為A的長度笛粘。
在初賽階段,我們還嘗試了多種不同的檢索方案湿硝,主要有:1)BM25薪前;2)使用word2vec創(chuàng)建詞向量,構建句子向量后計算余弦相似性关斜;3)LSI等示括。這些方案的最終得分都沒能超越經(jīng)過優(yōu)化的tfidf基線。
決賽階段思路及算法模型
決賽剛開始階段痢畜,我們順延初賽的思路垛膝,繼續(xù)嘗試了一些檢索式方法,如:BM25丁稀、TFIDF等吼拥,最終發(fā)現(xiàn),檢索式方法效果是比較差的线衫,測評得分徘徊在0.3凿可。進而,我們開始采用生成式方法授账。生成式模型方面枯跑,我們主要嘗試了兩個算法惨驶,分別是seq2seq和Transformer,這兩個算法都是端到端的模型敛助。從測評的結果來看粗卜,seq2seq+attention+dropout+beam search方案的測評得分在0.56~0.6之間;transformer+beam search方案得分能夠超過0.7辜腺。
由于決賽中包含多輪測評休建,因此,一個合理的context信息引入方案是十分重要的评疗。經(jīng)過分析测砂、討論以及實踐,我們最終的context引入方案是:“僅使用用戶上一輪次說的內(nèi)容作為當前輪次的context”百匆。這個方案在比賽中被證實為有效砌些,正是這個方案的引入,使得我們可以使用一個模型同時完成單輪和多輪評測加匈〈媪В基于這個方案,數(shù)據(jù)集中的每一個歷史對話都被處理成Qn-1Qn+An形式的QA對雕拼。同時纵东,為了兼顧模型的單輪評測效果,選擇了部分(約10%)歷史對話僅按照Q2Q3+A3方式構造QA對啥寇,這種數(shù)據(jù)劃分處理方案是確保單一模型同時完成單輪和多輪測評的關鍵之一偎球。同時,在開發(fā)過程中發(fā)現(xiàn)數(shù)據(jù)集中部分QA對中A的長度過長辑甜,影響到模型的整體性能衰絮,因此,我們僅保留A的長度在[3,
200]范圍內(nèi)的QA對磷醋。
我們的最終方案是transformer+beam search猫牡。Transformer 最初被用在機器翻譯上,在文章發(fā)表時取得了state-of-the-art 的翻譯結果邓线,其網(wǎng)絡結構如下圖所示:
上圖左邊為Encoder模塊淌友,右邊為Decoder模塊。Encoder模塊包括6層堆疊褂痰,每一層都具有相同的結構:Multi-Head Attention層和Feed Forward Neural Network層亩进,同時,使用residual connection和layer normalization進行正則化缩歪,為了讓正則計算方便归薛,所有sub-layer的輸出維度都定義為512。Decoder模塊也是6層堆疊,每層除了包括Multi-Head Attention層和Feed Forward Neural Network層外主籍,還有一個Masked Multi-Head Attention層习贫,同樣的使用了residual connection和layer normalization作為正則。由于Attention無法捕捉文本順序信息千元,Transformer在input embedding和output embedding后面都加入了positional encoding苫昌。
Transformer 模型沒有使用CNNs或者RNNs的序列編碼方式,僅基于attention機制做編碼和解碼操作幸海,提供了一個非常好的解決思路祟身。作為Transformer的實現(xiàn)之一,Tensor2Tensor工具簡單易用物独,但是目前缺乏詳細的使用文檔袜硫。我們隊使用了Tensor2Tensor工具包來進行模型訓練。訓練Transformer模型挡篓,大約使用了450萬個QA對婉陷。在評測中,對beam search的size參數(shù)進行了優(yōu)化官研,默認為4秽澳,調(diào)整到6的時候,評測得分大約有0.01的提升戏羽。
模型調(diào)優(yōu)心得担神、踩過哪些坑、對數(shù)據(jù)和任務的理解等
初賽
初賽任務要求每個選手根據(jù)Q1A1Q2A2Q3信息給出對應的A3始花,其中Q表示用戶說的話杏瞻,A表示客服的回復,腳標為對應的輪次衙荐。初賽提供了約11萬個歷史對話,每個對話中都有完整的用戶與客服的對話記錄浮创。
由于初賽任務相對而言較為簡單忧吟,可以認為是單輪QA,并且提供了足夠多的對話歷史記錄斩披。我們隊經(jīng)過商議溜族,決定采用檢索式的方案,將初賽任務轉(zhuǎn)換成一個從所有歷史對話記錄中檢索與Q1A1Q2A2Q3最相似對話的問題垦沉,并選取最相似對話對應的A3作為測試答案煌抒。
基于TFIDF檢索式方案,生成結果的方式默認是直接選擇最相似的對話的A3作為結果輸出厕倍,這樣做的問題是選擇范圍過于狹小寡壮。事實上,根據(jù)我們的觀察,相似性top10的對話其實都比較接近况既,難以評判哪一個是最相似这溅,因此,我們認為在top10相似對話的所有A3中產(chǎn)生結果更為合理棒仍。
隨之而來的問題是悲靴,如何在10個候選結果中找出最好的結果,使得deltaBleu得分最高莫其?最開始癞尚,我們采用強化學習中的DQN方法來進行選擇,直接采用bleu得分作為獎勵乱陡,但是并沒有帶來有效的提升浇揩,甚至得分下降。針對這種情況蛋褥,我們分析的結論是:DQN的目標是優(yōu)化長期獎勵临燃,不適用這種僅有一個回合的場景。使用強化學習的方案遇挫烙心,我們不得不重新回到數(shù)據(jù)上尋找答案膜廊。在逐個觀察了約100個用戶與客服的完整對話記錄之后,我們發(fā)現(xiàn)淫茵,客服的回復通常傾向于比用戶說的話更長爪瓜,這個現(xiàn)象帶來的啟發(fā)是:在10個候選答案中選擇最長的。經(jīng)測試匙瘪,top10選最長的方案铆铆,大幅提升了deltaBleu評測得分,甚至一度沖上初賽排行榜第2名丹喻。
初賽階段還嘗試了一些其他模型碍论,但是最終得分都沒有超越經(jīng)過優(yōu)化的tfidf_baseline谅猾。由此可見,針對baseline的優(yōu)化是非常有價值的鳍悠。
決賽
決賽任務相比于初賽要難不少税娜,主要難點在于多輪評測的加入。由于多輪評測的加入藏研,需要額外考慮context敬矩,否則對話難以進行。我們認為蠢挡,context的處理方式是決賽中最為關鍵的一步弧岳。如果不能為每一個輪次引入合適的context信息凳忙,再優(yōu)秀的模型也難以給出一個令人滿意的回答。數(shù)據(jù)集方面缩筛,決賽提供的數(shù)據(jù)集與初賽類似消略,不過,對話記錄的數(shù)量大幅增加瞎抛,大約有100萬個用戶與客服的對話艺演。雖然數(shù)據(jù)集類似,但無法完全照搬初賽的數(shù)據(jù)預處理方案桐臊。
決賽測評中包含150條與初賽一致的單輪測評數(shù)據(jù)胎撤,另外有15個完全的多輪評測數(shù)據(jù)。在決賽剛開始的階段断凶,我們隊一直在考慮一個問題:150條單輪測評有沒有單獨采用一個模型的必要伤提?經(jīng)過再三討論,我們得出以下結論:只要引入的context足夠好认烁,單輪測評完全可以作為多輪的一個特例肿男,即直接產(chǎn)生A3,沒有單獨創(chuàng)建模型的必要却嗡。
在context處理方面舶沛,我們的摸索過程如下:
首先,最容易想到的一個方案就是把當前輪次之前的所有用戶和客服對話的內(nèi)容作為當前輪次的context窗价,稱之為“方案A”如庭;這個方案看起來挺合理阳惹,但是存在的重大缺陷是蕊退,隨著對話的進行,輪次不斷加深蛾派,context會快速的增大帝牡,而過大的context往往意味著無效信息增多往毡,因此直接放棄。
接著靶溜,在“方案A”的基礎上卖擅,我們想到了一個改善方案:把當前輪次之前的所有用戶說的內(nèi)容作為當前輪次的context,不考慮客服回復內(nèi)容墨技,稱之為“方案B”;提出這個方案挎狸,我們基于兩點考量:1)客服的工作主要是解決用戶的問題扣汪,因此,理解用戶的問題是最關鍵的锨匆;2)客服之前回復用戶的內(nèi)容本身無法為當前輪次回復帶來幫助崭别。依據(jù)“方案B”冬筒,我們開始實施,遇到的一個問題是:隨著輪次的加深茅主,累計的用戶內(nèi)容越來越多舞痰,context顯得有些雜亂,模型無法找準關鍵詞诀姚,以至于出現(xiàn)在第4輪對話中回復用戶第3輪提出的問題的情況响牛。迫于無奈,“方案B”也只能放棄赫段。
“方案B”實施過程中出現(xiàn)的問題是我們沒有預想到的呀打,這讓我們一度感到十分被動。最后糯笙,再一次的贬丛,我們開始逐一觀察每一個對話記錄,發(fā)現(xiàn)用戶當前輪次說的內(nèi)容與上一個輪次的內(nèi)容往往有一定的銜接给涕,但是與更前面的輪次之間沒有太大的銜接豺憔。因此,我們提出“方案C”:僅采用用戶上一輪次說的內(nèi)容作為當前輪次的context够庙。實踐證明恭应,這個方案很好的解決了“方案B”中出現(xiàn)的問題,并且在單輪評測中也有優(yōu)異的表現(xiàn)首启。
表 1:三種context引入方案
方案 | 描述 | 采用 |
---|---|---|
A | 將當前輪次之前的用戶和客服所有對話的內(nèi)容作為當前輪次的context | 否 |
B | 將當前輪次之前的用戶說的所有內(nèi)容作為當前輪次的context | 否 |
C | 僅使用用戶上一輪次說的內(nèi)容作為當前輪次的context | 是 |
確定了context引入方案之后暮屡,我們按照“方案C”進行了數(shù)據(jù)集的構建工作。值的一提的是毅桃,為了提高模型對單輪評測的性能褒纲,構建數(shù)據(jù)集的時候,選擇了一部分對話數(shù)據(jù)僅按照單輪評測的模式構建數(shù)據(jù)钥飞,即Q2Q3+A3莺掠。這種處理方式在評測中被證明為有效。
決賽任務中读宙,模型的選擇方面我們主要做了以下嘗試:1)seq2seq彻秆;2)transformer,3)檢索式方法:BM25结闸、TFIDF等唇兑。由于決賽數(shù)據(jù)集較大,我們根據(jù)不同的模型桦锄,對數(shù)據(jù)集進行了一定的裁剪扎附。
由于初賽采用的是檢索式方法,決賽剛開始结耀,我們先嘗試了幾個檢索方法留夜,得分在0.3上下波動匙铡。同期排行榜上,采用生成式方案的隊伍最高分已經(jīng)超過0.6碍粥。這是一個決策上的失誤鳖眼,主辦方一再鼓勵使用生成式的方法,看來是有原因的嚼摩。
說到生成式的方法钦讳,首先想到的就是seq2seq,我們采用與文獻Sequence to Sequence Learning with Neural Networks中類似的超參進行訓練低斋,初次提交蜂厅,得分就上了0.5,效果顯著膊畴。針對seq2seq的調(diào)參工作大約持續(xù)了5天掘猿,但并沒有帶來令人興奮的提升,反而是針對數(shù)據(jù)集的一個小改動(將用戶內(nèi)容分詞后進行翻轉(zhuǎn))唇跨,帶來了較大的提升稠通,分數(shù)上漲到0.56。由此可見买猖,期望通過調(diào)參大幅提升性能是不現(xiàn)實的改橘。針對seq2seq的調(diào)參經(jīng)驗讓我意識到,當模型的參數(shù)達到一個還不錯的性能時玉控,調(diào)整數(shù)據(jù)集也許能夠帶來更大的性能提升飞主。不過,還有一點需要明確的是高诺,算法本身其實已經(jīng)決定了性能的瓶頸在哪碌识。
seq2seq用于對話生成領域,其核心思想是把用戶和客服說的內(nèi)容作為兩種“語言”虱而,并在這兩種語言之間構建一個“翻譯器”筏餐。由此,我認為機器翻譯領域的其他算法也可以應用在對話生成領域牡拇。Transformer是谷歌在2017年提出的一個機器翻譯算法魁瞪,在WMT開放數(shù)據(jù)集的評測上實現(xiàn)了對seq2seq算法的超越。
seq2seq性能遇阻后惠呼,我們切換到Transformer算法导俘。由于Transformer算法相比于seq2seq更為復雜,因此剔蹋,適當?shù)募哟罅薗A對的數(shù)量旅薄。Transformer的參數(shù),我們首先采用的是與文獻Attention Is All You Need中base model一致的方案滩租,使用的QA對數(shù)量大約是120萬條赋秀,訓練后,評測得分提升至0.61律想,效果不錯猎莲。然后,我們使用更多的QA對(約450萬條)技即,并采用與文獻Attention Is All You Need中big model一致的Transformer參數(shù)和超參進行訓練著洼,評測得分提升至0.69。最后而叼,我們逐一評測Transformer模型最近20個checkpoints的線下評測得分身笤,選取得分最高的5個checkpoints所對應的模型進行average操作,得分提升至0.73葵陵,調(diào)整beam size參數(shù)后液荸,得分提升至0.74。
總結
總結一下此次參賽的經(jīng)驗教訓脱篙,大致有這么幾點:
1)重視baseline及其優(yōu)化娇钱,而不是盲目的嘗試各種模型;
2)引入多輪對話中的context信息應該盡可能簡單绊困,而不是復雜文搂,復雜往往意味著無效;
3)調(diào)參是個無底洞秤朗,當性能達到一個還不錯的狀態(tài)時煤蹭,期望通過調(diào)參來繼續(xù)提升性能是不現(xiàn)實的;
4)針對數(shù)據(jù)集的一些調(diào)整取视,也許會有意想不到的性能提升硝皂;
5)機器翻譯的一些算法遷移到對話系統(tǒng)領域也會有不錯的結果;
6)選取幾個效果最好的checkpoint進行average贫途,也是提高模型性能的一個有效思路吧彪。
我們對多輪對話的認識和未來的發(fā)展趨勢
對于任務導向型多輪對話而言,目前學術界的研究集中在End-to-End模型上丢早,基于Seq2Seq框架姨裸,大家都在不斷提出fancy的新模型解決對話狀態(tài)管理,數(shù)據(jù)庫查詢操作和回復生成等問題怨酝。然而End-to-End模型也具有不可控的缺點傀缩,因此對于工業(yè)界而言,傳統(tǒng)Pipeline 形式 (NLU-DM-NLG) 的多輪對話是非常常用的解決方案农猬。
目前NLP的研究還沒有真正理解語意赡艰,因此知識圖譜的加持將會對NLP的研究起到非常大的作用。人們在對話時斤葱,腦子里有知識的存在來支持慷垮。因此揖闸,除了實用的模型外,知識的融入同樣對多輪對話的發(fā)展起積極作用料身。比如:利用知識圖譜在推理上的優(yōu)勢用于輔助理解問題汤纸,輔助問答,基于NER和關系將實體正確地鏈接到知識庫芹血,圖譜知識表示為知識路徑贮泞,構造答案候選集,將問答任務轉(zhuǎn)化成與路徑的匹配程度計算等幔烛。
多輪對話的難點在于一句話中很難包含答案的所有限定條件啃擦、指代、以及省略饿悬,且存在場景切換令蛉、跨場景繼承等挑戰(zhàn),多輪對話通常是有問有答乡恕,在用戶提問內(nèi)容不夠清晰的時候言询,機器也可以主動向用戶詢問,并且會根據(jù)上下文來判斷該給出什么樣的答案或提出什么樣的問題傲宜。未來运杭,多輪對話會應用在獲取信息的各種渠道,對話模型需要有能力從與人的交互中主動學習函卒。
隨著物聯(lián)網(wǎng)和智能家居的發(fā)展辆憔,對話系統(tǒng)未來的發(fā)展前景可期。在親身體驗過各類智能音箱產(chǎn)品之后报嵌,我對語音作為系統(tǒng)操作的形式是比較認可的虱咧,也感受到了這種操作方式的便利。由于“人性是懶惰的”锚国,當一種更為便利的操作方式出現(xiàn)腕巡,并逐漸走向成熟之后,必然會成為一種趨勢血筑,這個現(xiàn)象在二維碼領域得到證實绘沉。作為語音操作的底層,對話系統(tǒng)的應用也會越來越廣泛豺总。
主要參考資料
http://www.wildml.com/2016/07/deep-learning-for-chatbots-2-retrieval-based-model-tensorflow/
GALLEY M, BROCKETT C, SORDONI A等. deltaBLEU: A Discriminative Metric for
Generation Tasks with Intrinsically Diverse Targets[J]. arXiv:1506.06863
[cs], 2015.VASWANI A, SHAZEER N, PARMAR N等. Attention Is All You Need[J].
arXiv:1706.03762 [cs], 2017.VASWANI A, BENGIO S, BREVDO E等. Tensor2Tensor for Neural Machine
Translation[J]. arXiv:1803.07416 [cs, stat], 2018.BORDES A, BOUREAU Y-L, WESTON J. Learning End-to-End Goal-Oriented
Dialog[J]. arXiv:1605.07683 [cs], 2016.SUTSKEVER I, VINYALS O, LE Q V. Sequence to Sequence Learning with Neural
Networks[J]. arXiv:1409.3215 [cs], 2014.QIU M, LI F-L, WANG S等. AliMe Chat: A Sequence to Sequence and Rerank based
Chatbot Engine[C]//Proceedings of the 55th Annual Meeting of the Association
for Computational Linguistics (Volume 2: Short Papers). Vancouver, Canada:
Association for Computational Linguistics, 2017: 498–503.