孫潤鑫 馬龍軒 張偉男 劉 挺
(哈爾濱工業大學社會計算與信息檢索研究中心 哈爾濱 150001)
近年來,隨著大數據的發展以及深度學習技術的興起,對話系統這一研究領域已經取得了長足的進步.由于Seq2Seq(sequence-to-sequence)模型[1]的出現,許多模型采用了端到端的方式并基于大規模的人類對話語料進行訓練,已經收到了一定的效果.然而,這些模型的問題在于其總是傾向于生成較為通用的回復[2],這也是目前該領域面臨的一大挑戰.
事實上,通過引入外部知識使得模型生成信息更加豐富的回復,正逐漸成為這一問題可能且可行的方法之一.并且到目前為止,已經出現了一些富有建設性的成果.Ghazvininejad等人[3]是對一組候選事實進行檢索,然后將其結果與對話信息相結合.Zhang等人[4]借助說話人的個人資料,使得模型可以生成一致性更好且更吸引人的對話.而Mem2Seq[5]則通過引入外部知識庫的方式,以提升回復內容的豐富度.但是,這些工作大多是將現有的事實類知識整合到對話系統中,而此類知識的構建過程費時費力,且具有較大的局限性,從而在一定程度上制約了大規模數據的使用,以及現有系統的應用和落地.
基于文檔的對話是一項在討論特定文檔的內容時,生成較自然對話回復的任務.與以往基于知識的對話不同,該任務采用文檔作為知識源,因此能夠使用較為廣泛的知識,且無需對其預先進行構建.并且其與基于文檔的問答也有所不同,相較于后者此時不僅需要考慮對話與文檔之間的關系,同時還應考慮對話內部的聯系以對其充分理解.針對這一任務,我們應主要從3個方面進行考慮:1)理解對話中各句之間的關系;2)理解對話與文檔之間的關系;3)根據對話上下文,從文檔中篩選有關信息以生成相應回復.
在本文中,我們提出了一種新穎的基于Trans-former[6]的模型,用于更好地構建對話上下文,并利用其進行信息篩選從而生成更有意義的回復.主要思想是將信息篩選分為利用歷史和忽略歷史2種情況進行討論:當忽略歷史時,只需以當前對話為依據,對文檔信息進行相應篩選;而當考慮歷史時,應先利用其對上下文進行重新建模,然后以所得結果為依據,進行文檔信息的篩選.注意到對話歷史事實上并不總是與語境相關,因此在完成上述過程后我們需要對其與當前對話的相關程度進行度量,并以此為依據進行語義向量的整合,以避免引入不相關的信息作為噪聲.實驗結果表明,與現有的基線模型相比,我們的模型能生成語義更加連貫、知識更為豐富的回復.
本文的主要貢獻可總結為3點:
1)提出了一種辯證看待對話歷史的方法,用于文檔信息的篩選以及上下文信息的構建.在編碼過程中,以分支的方式同時進行利用歷史和忽略歷史的信息篩選,并根據當前語境判斷各分支的重要程度.
2)提出了一種新的信息匯總的方式,通過判斷當前對話與歷史之間的相關程度,來對各分支所得到的信息進行整合,以得到在解碼過程中所使用的語義向量.
3)在CMU-DoG數據集[7]上進行了模型的驗證,并取得了當前已知的最好效果.同時借助消融實驗,也顯示出模型各個部分在語義向量建模過程中的有效性.
目前,基于文檔的對話已被證明在解決通用回復、改善回復質量方面能夠取得不錯的效果[7-9].就現有工作而言,我們可以將其大致分為2類:基于抽取的方法和基于生成的方法.
基于抽取的方法最初在機器閱讀理解(machine reading comprehension,MRC)中被提出[10],其是在一篇給定的文檔中抽取特定的片段,以回答所給問題的任務.Vinyals等人[11]提出了一種名為指針網絡(pointer networks,Ptr-Nets)的結構,其使用注意力機制[12]從輸入序列中選取元素作為輸出.Seo等人[13]提出了BiDAF模型,其使用雙向注意力流以獲得問題感知的上下文表征.Wang等人[14]提出了R-Net模型,其使用一種自匹配注意力機制來對較長段落的表示進行完善.然而,這種方法實際上并不適合基于文檔的對話.其原因主要有2點:1)在該任務中,事實上并沒有一個明確的問題,這需要在充分理解對話內容的前提下,自行決定回復句的主題;2)由于方法本身的限制,只從原文中進行抽取使得對話的流利度難以得到保證[15].
至于基于生成的方法,目前絕大多數模型還是基于經典的Seq2Seq結構[1].Lian等人[16]利用后驗知識來進一步指導知識的篩選過程.Liu等人[17]引入知識圖譜作為又一知識源,從而與非結構化的文檔相結合起到互為增強的效果.Li等人[18]提出了一種增量式Transformer編碼器來對多輪對話及其相關文檔進行聯合建模,同時應用2階段的推敲解碼器以進一步增強對話的連貫性和信息的豐富性.
但是,之前的工作并沒有深入研究對話歷史與當前對話之間的關系.考慮真實的對話場景,由于對話過程中往往會出現主題的轉換,且由于開放域對話的隨意性,后續的主題并不一定總是與歷史相關.在這種情況下,歷史便成為了一種噪聲,從而對知識的挑選以及后續對話的生成起到了負面作用.但當主題較為明晰、對話內容較為集中時,歷史信息可以幫助我們更好地理解當前語境.由此便可生成內容更加豐富、語義更為連貫的回復.出于以上2點考慮,本文提出了一種辯證看待對話歷史的方法,通過判斷其與當前對話之間的相關程度,以更好地利用對話歷史并避免引入不必要的噪聲.


(1)

模型基于經典的Transformer結構,各組成模塊如圖1所示.可以看出,其主要由3部分構成:

Fig.1 Composition modules of our model圖1 本文模型的各構成模塊
1)自注意編碼器(self-attentive encoder,SA).SA是經典Transformer模型[6]中所使用的編碼器,其負責將對話信息和文檔信息分別預先進行編碼.
2)篩選式Transformer編碼器(selective transformer encoder,STE).STE是一種用于進行信息篩選的Transformer編碼器,它通過注意力機制[6]對編碼后的對話歷史和文檔信息分別進行篩選,以得到更為符合當前語境的向量表示,用于后續語義信息的構建.
3)推敲解碼器(deliberation decoder,DD).DD是一個2階段的Transformer解碼器,用于生成語義更為連貫的回復[18].在第1階段,其將經SA編碼后的當前對話u(k)和整合后的語義向量作為輸入,借助對話上下文來生成回復.而第2階段則是將經SA編碼后的前一階段輸出和相關文檔d(k+1)作為輸入,使用文檔知識進一步完善回復.
接下來我們對模型中的各個環節進行詳細介紹.
2.2.1 輸入信息的編碼


(2)

(3)

如圖1(a)所示,自注意編碼器由Nx個相同的層堆疊而成,每層都有2個子層.第1個子層是多頭自注意力子層,而第2個子層則是簡單的、位置完全連接的前饋網絡(feed-forward network,FFN).同時每個子層也都采用了殘差連接和標準化機制[6],因此子層的輸出實際為LayerNorm(x+Sublayer(x)),其中Sublayer(x)是由子層本身所實現的功能,為了表述簡潔這里故將其省略.下面給出該過程的公式表示:

(4)
D(1)=FFN(A(1)),
(5)
FFN(x)=max(0,xW1+b1)W2+b2,
(6)
其中,A(1)是經第1個自注意力子層計算出的隱層狀態,而D(1)則是第1層最終得到的文檔表示.對每層而言,重復這一過程,從而我們有:

(7)
其中,b(k+1)是文檔信息d(k+1)的最終表示,而SAdoc(·)表示上述編碼的完整過程.
2.2.2 文檔信息的篩選
為了借助注意力機制進行高效地信息篩選,我們使用了一種結構簡單的篩選式Transformer編碼器.由圖1(b)可知,其與2.2.1節中敘述的結構最主要的區別就是增加了一個用于進行信息篩選的注意力子層.在這一子層,輸入不再滿足Q=K=V這一特征,而是令K=V且Q≠K,通過利用投影后Q與K之間的相似關系,來從V(也即是K)中進行信息的抽取.
出于辯證看待對話歷史的考慮,在編碼階段,我們分利用歷史和忽略歷史2種情況討論文檔信息的篩選,整體結構如圖2所示.先從忽略歷史開始,容易想到,只需將編碼后的當前對話c(k)作為下層輸入,而將編碼后的文檔表示b(k+1)作為上層輸入即可,公式表述為
tright=STEdoc(c(k),b(k+1),b(k+1)),
(8)

Fig.2 Overall architecture of the encoding part of our model圖2 本文模型編碼部分的整體架構
其中STEdoc是用于進行文檔信息篩選的編碼器.然后我們將tright,也即忽略歷史進行信息篩選的輸出作為右支最終的語義向量.


(9)
從而考慮對話歷史的篩選過程可以表示為

(10)
tleft=STEdoc(h,b(k+1),b(k+1)),
(11)
其中STEutt是用于進行對話信息篩選的編碼器.同樣地,我們將最終得到的結果作為左支也即借助歷史的語義向量.
2.2.3 語義向量的整合
在得到了左右支的語義向量之后,一個關鍵的步驟便是如何將二者進行整合,以得到最終的語義表示.Sankar等人[19]指出,當前對話u(k)在回復生成的過程中起著決定性的作用.因此這里我們需要保留右支得到的信息,并根據對話歷史與當前對話的相關程度,確定最終表示中是否包含左支信息及其所占的比重.
我們可以通過注意力機制[12]并結合最大池化(max pooling)的方式,來計算當前對話中的各詞與對話歷史之間的相關程度[20]:

(12)
α=sigmoid(maxcol(S)).
(13)
基于Zheng等人[21]所給出的形式進行左右支信息的整合:
ttotal=α⊙tleft+(1-α)⊙tright+tright,
(14)
此時ttotal即為最終用于進行回復生成的語義表示.
2.2.4 解碼與回復生成
受現實世界中人類認知過程的啟發,Li等人[18]設計了一種2階段的推敲解碼器,以提高知識的相關性和上下文的連貫性,這里我們同樣使用這一結構.在第1階段,其將編碼后的當前對話c(k)和整合后的語義向量ttotal作為輸入,以學習生成上下文連貫的回復.而第2階段則是將編碼后的前一階段輸出和相關文檔b(k+1)作為輸入,試圖將文檔知識進一步注入到生成回復中.
如圖1(c)所示,推敲解碼器由第1和第2階段解碼器構成.2個解碼器具有相同的架構,但子層的輸入不同.同樣地,其也由Ny個相同的層堆疊而成,每層都有4個子層.這里僅以第1階段為例,對相應流程進行詳細說明.首先第1個子層同樣是多頭自注意力子層:

(15)


(16)
其中ttotal即為式(14)所得的整合后的語義表示.第3個子層是多頭對話注意力層:

(17)
其中c(k)即為編碼后的當前對話.值得一提的是,式(16)(17)分別將文檔信息和對話信息融入到生成回復中,以求在生成信息更加豐富的回復時,不失其連貫性.第4個子層是全連接的前饋網絡:

(18)
在Ny層之后,我們使用softmax函數獲得第1階段解碼出的單詞的概率分布:

(19)

按照Li等人[18]所給出的方法,這里我們摒棄了原始推敲解碼器所采用的較為復雜的訓練算法,其是一種基于蒙特卡洛思想的聯合學習框架[22].而是出于連貫性的考慮,選擇對解碼器的2個階段分別計算損失,并采用加和的方式同時進行訓練[23],其公式為
Lmle=Lmle1+Lmle2,
(20)

(21)
(22)
其中N是參與訓練的樣本總數,而I是參考回復的長度.
我們使用基于文檔的對話數據集(CMU-DoG)[7]來進行模型的評估.該數據集共包含基于120篇文檔的4 112段對話,平均每段對話的輪數為21.43.文檔內容取自維基百科中有關熱門電影的文章,而對話內容不僅可以基于文檔,也可以是隨意閑聊的.需要注意的是,這里我們將同一個人的連續對話視為一整句,并忽略每段對話起始部分的問候語.每個樣例包含一段與回復相關的、平均詞數為200的文檔,最近3句作為上下文的對話和1句參考回復.數據集的統計信息詳見表1,更多細節請查閱文獻[7],在此不再贅述.

Table 1 Statistics of CMU-DoG Dataset表1 CMU-DoG數據集的統計信息
我們將所提出的模型與以下2類基線模型進行比較:基于RNN的模型和基于Transformer的模型.
1)基于RNN的模型
① S2S(Seq2Seq).S2S是一種經典的編碼器-解碼器模型[1].根據Zhou等人[7]給出的方法,這里我們將編碼得到的文檔知識,與上一時刻生成的詞拼接起來作為解碼器的輸入,以向生成回復中添加文檔信息.
② S2SIF(S2S with input feeding).S2SIF是一種Seq2Seq模型的變體[24].其是利用注意力機制來對編碼結果進行動態匯總,并將其輸入到下一時刻的解碼過程.這里我們對編碼得到的文檔表示進行這一操作.
2)基于Transformer的模型
① T-MemNet(transformer memory network).T-MemNet是一種將Transformer與Memory Network相結合的模型[9].首先利用注意力機制對知識進行預篩選,然后將其與對話信息拼接后送入編碼器中進行二次編碼.在這里由于相關知識已經給定,故省去篩選步驟.
② ITE-DD.ITE-DD是一種使用增量式Trans-former編碼器和2階段推敲解碼器的模型[18].增量式編碼器使用多頭注意力機制,將文檔信息和對話上下文合并到每句對話的編碼過程中.而推敲解碼器采用2階段的方式,分別利用對話上下文生成回復主干以及將文檔知識進一步注入回復之中.
我們使用OpenNMT-py[25]作為代碼框架.對于所有模型,隱層規模均設置為300.對基于RNN的模型,按照文獻[7]中的描述,我們使用2層的雙向LSTM作為編碼器,并使用1層單向的LSTM作為解碼器.對基于Transformer的模型,編碼器和解碼器的層數均設置為3.多頭注意力層中的注意力頭數為6,過濾器(filter)的規模為1 200.我們使用預訓練的詞向量,即在Google News語料庫上借助Word2Vec訓練得到的300維詞向量[26]對嵌入矩陣進行初始化.并且這一表示會被文檔、對話和回復所共享.我們使用Adam優化器[27]來對模型進行優化.在解碼階段,集束規模(beam size)被設置為5.
1)自動評價.我們使用BLEU,ROUGE-1,ROUGE-2,ROUGE-L作為生成回復的自動評價指標.Zheng等人[21]指出,由于文檔中真正有意義的詞往往出現頻率較小,較低的困惑度(perplexity,PPL)反而會使得模型傾向于生成通用回復,因此這里我們沒有使用這一指標.BLEU主要度量生成回復和參考回復之間的n元組(n-gram)重疊,而ROUGE則從召回角度來評測回復的語義完整度.
2)人工評價.我們隨機選取了100個測試樣例并邀請了4位評委,在給定之前3句對話和文檔信息的條件下,從3個方面對回復質量進行評判:①連貫性(coherence),回復是否符合當前語境,語義邏輯是否連貫;②信息性(informativeness),回復是否包含有用信息,是否與所給文檔相關而非通用回復;③自然性(naturalness),回復語義是否通順,是否符合語法規定和人類表述習慣.所有指標均被劃分為3個等級:0代表較差;1代表中等;2代表較好.
表2列出了所有模型在第3節設置下的自動評價和人工評價結果.

Table 2 Experimental Results of All Models on CMU-DoG Dataset表2 所有模型在CMU-DoG數據集上的實驗結果
在自動評價方面,我們的模型(CITE-DD)在所有的指標上都優于基線模型.其中在BLEU指標上模型取得了約30%(即(1.31-1.01)/1.01?30%)的性能提升,這也在一定程度上體現了其結果與參考回復具有更高的重合度,從而表明其能夠生成更有意義的回復.不僅如此,模型在ROUGE指標上也有不小的進步,由此便可以看出其結果對參考回復具有更高的覆蓋度,也即更為全面地表達了參考回復的內容.綜合來看,模型相較于基線模型,能夠生成質量更高的回復,其結構的有效性也得到了較為顯著的體現.
而在人工評價方面,我們的模型同樣表現不錯.值得一提的是,模型在信息性這一指標上相較于基線模型有著較為顯著的提升.從而可以反映出其能夠更好地篩選和利用文檔信息,而這也是基于文檔的對話任務中的一大關鍵.另外對于連貫性和自然性而言,模型也顯現出了一定的效果.不過在連貫性上,模型與ITE-DD相比區別不大,考慮主要是因為推敲解碼器已經大幅提升了生成回復的連貫性,若要在此基礎上取得新的進展,需要對其有針對性的改進,但本文的重點并不在于此.
為了驗證模型各部分的有效性,我們還設計并進行了消融實驗,結果如表3所示:

Table 3 Experimental Results of Ablation Study表3 消融實驗的結果
在這里,-left branch表示將編碼部分的左支(式(10)(11)),也即利用歷史的部分去掉,此時模型便退化為基于文檔的單輪對話.顯然,完全忽略對話歷史會對回復的生成有著極大的影響,這也較為明顯地在表3指標中得以體現.考慮主要有2個原因:1)其包含了豐富的語義信息,利用其進行文檔信息的篩選可以得到更多、更準確的結果;2)其亦可對更好地理解當前對話起到一定的幫助作用.當然上面2點都建立在歷史信息與當前對話具有較強相關性的基礎之上.而-right branch則表示將編碼部分的右支,也即忽略歷史的部分去掉,此時模型便僅能從利用歷史的角度進行文檔信息的篩選以及語義信息的建模.可以看出,回復生成的質量也受到了部分影響,這也在一定程度上說明了當歷史信息與當前對話不相關時,忽略歷史的方法使得模型避免了不必要噪聲的引入,從而可以更為準確地理解當前對話和構建對話上下文.
另外,-integration表示將語義向量的整合部分去掉,這里采用直接加和的方式進行替換,此時模型便失去了辯證看待對話歷史的能力.注意在這種情況下,模型的性能反倒比只用左支時要差,由此便進一步印證了本文所提方法的有效性與合理性.
如圖3所示,這里我們將注意力矩陣進行可視化處理,并以此說明整合方式的合理性.在該例中,歷史信息為“i did!she really delivered a knockout in mean girls.what was your favorite scene in mean girls?i personally like the scene where cady met the plastics.〈SEP〉 i love the revenge plot the best i think”,而當前對話為“oh yeah!the plan of revenge against regina?that was awesome!did you know that mean girls was partially based on a book?”.
根據圖3中的結果,可以看出模型認為當前對話標出的部分與歷史信息較為相關,而事實也同樣如此.顯然,2段文字具有高度的重合性,這時左支得到的信息才可視為右支對應位置的補充而非噪聲.由此便可說明模型最終的效果與我們的預期相吻合,從而進一步印證了本文方法的有效性.

Fig.3 Visualization results of the attention matrix圖3 注意力矩陣的可視化結果
我們從測試集中選取了一個例子,以較為直觀地說明所提模型的有效性,內容詳如表4所示.可以看出,對話是一段典型的基于電影知識的閑聊:其沒有明確的問題引出下句,當前對話與歷史之間的關系也并不密切.在這種情況下,歷史信息如果不加篩選反而會成為一種噪聲,從而在一定程度上分散了回復句主題的確定.此時,已有的基線方法就不能很好地理解對話信息并從文檔中提取出相關知識,從而傾向于生成通用回復.然而,我們的模型卻可以很好地做到這一點,并利用文檔信息生成了正確且自然的回復,使得當前對話可以順利地延續下去.由此便可體現出辨證看待對話歷史的重要性.

Table 4 A Sample in the Test Set and Responses Generated by Each Model表4 測試集中的樣例及各模型的生成回復
本文提出了一種新穎的基于Transformer的模型,以辯證的觀點來看待對話歷史,同時充分發揮當前對話在上下文構建和信息篩選中的指導作用,以應用到基于文檔的對話任務.模型分為利用歷史和忽略歷史2種情況進行文檔信息的篩選,然后根據當前對話與歷史之間的相關程度,來決定最終是否包含利用歷史的信息及其所占的比重.在公開數據集上的實驗結果表明,與現有的基線模型相比,其可以更好地理解對話中的主題轉移,從而生成在相關性和信息性上質量更高的回復.
至于后續的研究方向,考慮到目前并沒有一種較好的方式,能夠在長文檔上對相關知識進行更為準確和精細的抽取.因此考慮文檔本身的結構信息,同時引入粒度的概念可能是一個有效的改進思路.