苑 浩,王 泳
(1. 中國(guó)科學(xué)院大學(xué) 工程科學(xué)學(xué)院,北京 100049;2. 中國(guó)科學(xué)院大學(xué) 人工智能學(xué)院,北京 100049)
多輪對(duì)話的開(kāi)放域響應(yīng)生成[1-2]目標(biāo)是根據(jù)人類用戶的話語(yǔ)生成有意義且有趣的響應(yīng)。神經(jīng)網(wǎng)絡(luò)模型可以使用網(wǎng)絡(luò)上的大量數(shù)據(jù)集,從而在該任務(wù)中引起了廣泛關(guān)注。目前大多數(shù)神經(jīng)對(duì)話生成模型都采用編碼器-解碼器(Encoder-Decoder)的結(jié)構(gòu),直接建立從輸入查詢到輸出響應(yīng)的映射,該映射統(tǒng)一處理所有查詢-響應(yīng)對(duì)并優(yōu)化最大似然估計(jì)。但是,當(dāng)模型收斂時(shí),它們傾向于輸出乏味和通用的響應(yīng),例如,“嗯”“好”“我不知道”等響應(yīng)[3]。
針對(duì)這個(gè)問(wèn)題,研究人員提出了很多方法改進(jìn)Encoder-Decoder模型,從而生成更好的響應(yīng)。改進(jìn)主要可以分為下三類: ①第一種改進(jìn)認(rèn)為對(duì)話歷史只是決定響應(yīng)的因素之一,應(yīng)該引入更加豐富及有用的信息,生成更加具體的響應(yīng)[4-6]。②第二種改進(jìn)不改變Encoder-Decoder的結(jié)構(gòu),只是改變解碼的策略或者在Encoder-Decoder結(jié)構(gòu)上添加更多組件。例如,添加和改進(jìn)集束搜索(Beam Search) 解碼策略[7-8]以及添加對(duì)抗生成網(wǎng)絡(luò)(GAN)[9]等組件。③第三種改進(jìn)不同于將最大似然估計(jì)(MLE)作為優(yōu)化目標(biāo),而是引入條件變分自動(dòng)編碼器(CVAE)[10-11],它使連續(xù)潛在變量上的條件對(duì)數(shù)似然性的下限最大化。
但是現(xiàn)有的生成模型都存在一個(gè)共同的缺點(diǎn),它們?cè)谔幚砩舷挛恼Z(yǔ)句與源語(yǔ)句時(shí),將上下文語(yǔ)句和源語(yǔ)句直接拼接作為整個(gè)對(duì)話歷史處理,忽視了上下文語(yǔ)句和源語(yǔ)句在生成響應(yīng)時(shí)的不同作用。將多輪對(duì)話分為當(dāng)前輪的上下文和當(dāng)前輪的源語(yǔ)句以及當(dāng)前輪的響應(yīng)三部分時(shí),源語(yǔ)句決定了響應(yīng)的重點(diǎn),上下文負(fù)責(zé)填充響應(yīng)的細(xì)節(jié)。例如,下面的例子,兩段對(duì)話具有相同的上下文語(yǔ)句,可以發(fā)現(xiàn)不同的源語(yǔ)句對(duì)于響應(yīng)生成具有重要的指導(dǎo)作用,上下文語(yǔ)句決定了響應(yīng)都是在談?wù)撎岬降匿摴P話題,但是第一個(gè)源語(yǔ)句關(guān)注的是正品問(wèn)題,而第二個(gè)源語(yǔ)句關(guān)注的是價(jià)格問(wèn)題。
Context: lamy鋼筆怎么樣
確實(shí)流暢好寫(xiě)
你在哪個(gè)網(wǎng)站上買(mǎi)的
我在淘寶上買(mǎi)過(guò)一個(gè)
Source1: 我擔(dān)心買(mǎi)到的不是正品
Response1: 這牌子很少有人仿,基本都是正品
Source2: 價(jià)格貴不貴?
Response2: 和專柜的一樣,不怎么貴
因此在響應(yīng)生成中,上下文語(yǔ)句和源語(yǔ)句的作用是不同的,之前的方法將上下文與源語(yǔ)句直接進(jìn)行拼接,無(wú)法解決這個(gè)問(wèn)題,從而導(dǎo)致生成的響應(yīng)中缺失重要指導(dǎo)信息,響應(yīng)表現(xiàn)為通用、枯燥、多樣性差。
為了解決這個(gè)問(wèn)題,本文提出了一個(gè)分離Context機(jī)制與CVAE的Transformer[12]對(duì)話模型(STC-CVAE),模型將上下文語(yǔ)句與源語(yǔ)句進(jìn)行分開(kāi)編碼,控制兩部分信息在產(chǎn)生響應(yīng)時(shí)具有不同的信息比重。同時(shí),為了進(jìn)一步增強(qiáng)產(chǎn)生響應(yīng)的多樣性,模型使用Transformer改進(jìn)的CVAE結(jié)構(gòu)來(lái)產(chǎn)生隱變量。CVAE通常假設(shè)潛在變量遵循具有對(duì)角協(xié)方差矩陣的多元高斯分布,該變量可以捕獲所有有效響應(yīng)上的潛在分布,進(jìn)而可以從學(xué)習(xí)到的分布中進(jìn)行采樣來(lái)生成各種響應(yīng)?,F(xiàn)有的CVAE結(jié)構(gòu)都是基于LSTM或GRU,對(duì)于多輪對(duì)話中較長(zhǎng)依賴關(guān)系的提取能力較弱,使用Transformer進(jìn)行改進(jìn),可以增強(qiáng)隱變量建模的語(yǔ)義信息。
本文在兩個(gè)“豆瓣”多輪對(duì)話數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn),所提出的模型大大優(yōu)于現(xiàn)有的方法。自動(dòng)評(píng)估和具體例子都表明,本文提出的模型生成了具有更好多樣性和相關(guān)性的響應(yīng)。本文主要有以下兩點(diǎn)貢獻(xiàn):
(1) 提出了一種基于分離Context機(jī)制與CVAE的Transformer對(duì)話模型,充分考慮了上下文語(yǔ)句和源語(yǔ)句對(duì)于生成響應(yīng)的不同影響程度,提高了生成響應(yīng)的相關(guān)性和多樣性。
(2) 實(shí)驗(yàn)結(jié)果中的自動(dòng)評(píng)估和具體例子都表明本文提出的模型優(yōu)于現(xiàn)有模型,可以生成多樣性更強(qiáng)、相關(guān)性更好的響應(yīng)。
自神經(jīng)網(wǎng)絡(luò)模型應(yīng)用于對(duì)話領(lǐng)域以來(lái),響應(yīng)的多樣性一直是研究的熱點(diǎn)問(wèn)題。理想狀態(tài)下,神經(jīng)對(duì)話模型的響應(yīng)應(yīng)該是自然連貫和多樣化的,但是現(xiàn)有大部分模型生成的響應(yīng)都是安全響應(yīng)和枯燥響應(yīng)。為了解決這個(gè)問(wèn)題,一些研究人員認(rèn)為對(duì)話歷史攜帶的信息只是部分信息,需要考慮更多的額外信息。如Li等人[4]通過(guò)將背景信息和說(shuō)話風(fēng)格編碼到分布式Embedding中來(lái)捕捉說(shuō)話人的特征,這些特征被用來(lái)對(duì)編碼器-解碼器生成的響應(yīng)重新排序。Xing等人[5]基于會(huì)話潛在的狄利克雷分布(LDA),保持主題編碼,來(lái)鼓勵(lì)模型生成更多的主題相關(guān)的響應(yīng)。
另一方面,一些研究人員在Encoder-Decoder模型的基礎(chǔ)上,添加更加豐富的組件或者改變解碼的策略。Li等人[7]提出最大化輸入和輸出之間的互信息來(lái)優(yōu)化編碼器-解碼器,從而減少一般的響應(yīng)。這種方法無(wú)條件地懲罰高頻響應(yīng),并在給定輸入的情況下優(yōu)先考慮條件概率高的響應(yīng)。Wiseman和Rush[13]通過(guò)減少訓(xùn)練和測(cè)試之間的偏差來(lái)改進(jìn)解碼網(wǎng)絡(luò)。他們引入了一種基于搜索的loss,可以直接優(yōu)化解碼網(wǎng)絡(luò)的集束搜索。Li等人[14]用MLE目標(biāo)和強(qiáng)化學(xué)習(xí)來(lái)初始化一個(gè)編碼器解碼器模型,通過(guò)優(yōu)化三個(gè)啟發(fā)式獎(jiǎng)勵(lì)函數(shù)來(lái)優(yōu)化模型: 信息性、一致性和回答的便利性。Xu等人[15]提出將GAN應(yīng)用于對(duì)話中,引入了一個(gè)近似嵌入層,以解決由Seq2Seq生成模型中基于采樣的輸出解碼過(guò)程引起的不可微分問(wèn)題。Zhang等人[9]采用對(duì)抗學(xué)習(xí)方法直接優(yōu)化模型訓(xùn)練中互信息(MMI)目標(biāo)的下界。
由于早期的對(duì)話模型都是單輪模型,無(wú)法捕捉到會(huì)話轉(zhuǎn)變中的長(zhǎng)期依賴性,因此無(wú)法應(yīng)用到多輪對(duì)話中。Serban等人[16]提出HRED,同時(shí)對(duì)句子和對(duì)話語(yǔ)境(上下文)進(jìn)行建模,來(lái)實(shí)現(xiàn)多輪對(duì)話。然而,隨著時(shí)間的流逝,反向傳播存在梯度消失問(wèn)題,因此遞歸架構(gòu)限制了訓(xùn)練過(guò)程中使用的最大輪數(shù)和每輪中的單詞數(shù)量。隨著Transformer的提出,使用Transformer作為編碼器和解碼器能很好地避免這個(gè)問(wèn)題。Oluwatobi等人[17]提出將多個(gè)Transformer decoder構(gòu)成GPT-2的結(jié)構(gòu)應(yīng)用于對(duì)話模型上,提升了對(duì)話質(zhì)量。
在圖像領(lǐng)域,一些工作將變分自動(dòng)編碼器(VAE)用于圖像生成[18],并且取得了不錯(cuò)的結(jié)果。受VAECVAE應(yīng)用于圖像生成任務(wù)上的啟發(fā),一些研究人員也將變分推理和潛在變量引入對(duì)話任務(wù)。Bowman等人[19]將VAE與基于LSTM的識(shí)別和解碼器網(wǎng)絡(luò)結(jié)合使用,以潛在的高斯變量生成句子。Serban等人[3]應(yīng)用了潛在變量分層編碼器-解碼器對(duì)話模型來(lái)引入話語(yǔ)級(jí)別的變化,并促進(jìn)生成更長(zhǎng)的響應(yīng)。Zhao等人[10]使用CVAE捕獲了編碼器中的話語(yǔ)級(jí)別多樣性,使用潛在變量來(lái)學(xué)習(xí)潛在會(huì)話意圖的分布。Gu等人[20]提出轉(zhuǎn)換上下文相關(guān)的隨機(jī)噪聲,以高斯混合先驗(yàn)網(wǎng)絡(luò)來(lái)豐富潛在空間。Shen等人[11]提出了一個(gè)允許基于特定屬性生成條件響應(yīng)的變分框架,根據(jù)指定的屬性生成有意義的響應(yīng)。Gao等人[21]引入了具有明確語(yǔ)義的離散潛在變量,以改善短文本對(duì)話中的CVAE模型。Shen等人[22]提出了一種層次的VAE來(lái)生成長(zhǎng)文本,在詞匯和句子兩個(gè)層次對(duì)語(yǔ)義建模,生成兩個(gè)層次的潛變量,潛變量可被更多的信息表示。Wang等人[23]提出了基于Transformer的CVAE用于故事生成,取得了不錯(cuò)的效果。為了提升產(chǎn)生響應(yīng)的多樣性,本文提出了分離Context機(jī)制與CVAE的Transformer對(duì)話模型,改進(jìn)后的模型更適應(yīng)于多輪對(duì)話任務(wù),同時(shí)增加了分離上下文語(yǔ)句的編碼機(jī)制,每個(gè)潛在變量考慮了上下文語(yǔ)句和源語(yǔ)句對(duì)生成響應(yīng)的影響程度。
本節(jié)將按照模型結(jié)構(gòu)先介紹模型的輸入表示,然后介紹分離上下文編碼,最后描述CVAE結(jié)構(gòu)產(chǎn)生隱變量與最終狀態(tài)組合進(jìn)行解碼。STC-CVAE模型整體結(jié)構(gòu)如圖1所示。
圖1 STC-CVAE模型整體結(jié)構(gòu)
給定單詞的輸入表示定義為由單詞、段和位置嵌入連接構(gòu)成,見(jiàn)圖1中Input部分所示。
(1)
一般的對(duì)話響應(yīng)生成模型將上下文語(yǔ)句和源語(yǔ)句進(jìn)行拼接,作為整個(gè)上下文輸入到Encoder中。這樣的做法將源語(yǔ)句視為上下文語(yǔ)句的一部分,處理起來(lái)較為便捷,但是這種處理方式忽略了在對(duì)話場(chǎng)景中源語(yǔ)句和上下文語(yǔ)句對(duì)響應(yīng)的影響力是不同的。
為了更好地捕捉上下文語(yǔ)句和源語(yǔ)句對(duì)響應(yīng)的影響程度,根據(jù)之前的描述,本文使用了分離上下文語(yǔ)句的方式,將上下文語(yǔ)句和源語(yǔ)句分開(kāi)編碼,編碼后的輸出通過(guò)門(mén)控機(jī)制來(lái)調(diào)節(jié)生成響應(yīng)時(shí)兩者的信息重要程度。
遵循Vaswani等人[12]提出的公式和符號(hào),將注意力的查詢、鍵和值表示為Q、K和V,將多頭注意力表示為Multi-Head(Q、K、V),前饋網(wǎng)絡(luò)表示為FFN(x),層歸一化表示為L(zhǎng)ayerNorm(x)。
對(duì)于Encoder,Multi-head Self-attention的輸入與原始的Transformer相同,源語(yǔ)句和上下文語(yǔ)句經(jīng)過(guò)L個(gè)如下編碼的Block:
其中,WG是可學(xué)習(xí)的參數(shù)矩陣,G為門(mén)控的權(quán)重,R為門(mén)控和,WG∈2dmodel×1。
R作為編碼器的最終輸出,輸入到解碼器中,解碼與原始的Transformer解碼器結(jié)構(gòu)一致,都采用了Mask機(jī)制,確保對(duì)位置j的預(yù)測(cè)值只取決于j之前的單詞。
由于在z上的積分難以得到,因此遵循Zhao等人[10]的做法,本文使用變分推論并優(yōu)化響應(yīng)的變分下界ELBO,如式(8)所示。
(8)
其中,q(z|x,y) 為后驗(yàn)網(wǎng)絡(luò)(即識(shí)別網(wǎng)絡(luò)),近似潛在變量z的真實(shí)后驗(yàn)分布,DKL(||)為KL散度,假設(shè)z服從對(duì)角協(xié)方差矩陣的多元高斯分布。
設(shè)z服從多元高斯分布q(z|x,y)~N(μ,σ2I),如式(9)、式(10)所示。
其中,R是解碼器的輸出,作為查詢向量。R表示編碼器將x和y同時(shí)作為輸入時(shí)的門(mén)控的最終輸出。Wq∈demb×dz和bq∈dz是參數(shù),dz是隱向量的維數(shù)。
先驗(yàn)網(wǎng)絡(luò)僅編碼給定的對(duì)話上下文x。同樣地,q(z|x)~N(μ′,σ′2I),如式(11)、式(12)所示。
其中,MLPp是一個(gè)多層感知器,R′是編碼器僅將x作為輸入時(shí)的門(mén)控的最終輸出。
與基于LSTM或GRU的CVAE模型不同,受Wang等人[23]的啟發(fā),SCT-CVAE模型不使用潛在變量z來(lái)初始化解碼器的狀態(tài),通過(guò)一個(gè)組合層將其合并到解碼狀態(tài)。潛在變量z從獲得分布中采樣得到,如式(13)~式(15)所示。
其中,Wc∈dmodel×dmodel是參數(shù)矩陣,Mout為解碼器的輸入,Ct是組合層在時(shí)間步長(zhǎng)t處的輸出,并進(jìn)一步反饋給線性變換和Softmax層,得到最終的概率分布。
以下是SCT-CVAE算法流程,Θ為解碼得到的概率分布。
算法: SCT-CVAE Training AlgorithmInput: {C,S,R}Output: Θ1. for each {C,S,R} do:2. for X=[S,R] and X=R do:3. 編碼C,X 為 EC,EX;4. D←EC,EX經(jīng)過(guò)注意力機(jī)制5. D和 EX 經(jīng)過(guò)門(mén)控得到R6. R作為 Q, D作為K, V輸入MulitHead7. end for8. {C,S,R},{C,S} 經(jīng)過(guò)步驟3,4,5,6得到h,h'9. 計(jì)算由MLP(h) 和 Linear(h')得到兩個(gè)分布的KL loss10. 從q(z|C,S,R)的分布中采樣潛在向量z11. 將z與解碼狀態(tài)組合進(jìn)行解碼12. 計(jì)算輸出與響應(yīng)的loss13. 根據(jù)兩個(gè)loss之和更新梯度end for
模型訓(xùn)練目標(biāo)包括兩部分,一部分是最大化重建響應(yīng)y的概率,這可以使后驗(yàn)網(wǎng)絡(luò)和響應(yīng)生成器所做的預(yù)測(cè)更接近于真實(shí)響應(yīng);另一部分是最小化z的后驗(yàn)分布和先驗(yàn)分布之間的KL散度,這可以在測(cè)試階段沒(méi)有響應(yīng)y時(shí)使先驗(yàn)網(wǎng)絡(luò)產(chǎn)生合理的概率分布。在訓(xùn)練過(guò)程中對(duì)KL部分使用退火,這會(huì)使KL項(xiàng)的權(quán)重從0逐漸增加到1,緩解隱變量消失的問(wèn)題。
實(shí)驗(yàn)數(shù)據(jù)采用“豆瓣”多輪對(duì)話數(shù)據(jù)集1[24]和豆瓣多輪對(duì)話數(shù)據(jù)集2[25],前者相較于后者具有更多的樣本,每個(gè)對(duì)話樣本中具有更多的對(duì)話輪數(shù)。數(shù)據(jù)集被劃分為三元組{C,S,R},上下文語(yǔ)句與源語(yǔ)句和響應(yīng)的拼接處理為同樣大小長(zhǎng)度的序列,長(zhǎng)度為60。兩個(gè)語(yǔ)料分別劃分為250k1.8k16k,190k5k5k來(lái)進(jìn)行訓(xùn)練驗(yàn)證測(cè)試,使用的詞匯量為45 000個(gè)單詞,覆蓋了數(shù)據(jù)集中99.90%的單詞。其他單詞被替換為
超參數(shù)設(shè)置如下,dmodel設(shè)置為512,demb設(shè)置為300。對(duì)于Transformer模型,注意頭H設(shè)置為8,Transformer塊L的數(shù)量設(shè)置為6。LSTM層的數(shù)量設(shè)置為2。對(duì)于VAE模型,dz設(shè)置為64,退火步長(zhǎng)設(shè)置為20 000。本文將Dropout應(yīng)用于Transformer塊中每個(gè)子層的輸出。對(duì)于所有模型,使用比率Pdrop=0.15。使用Adam優(yōu)化器,其初始學(xué)習(xí)率為0.000 1,動(dòng)量β1=0.9,β12=0.99,權(quán)重衰減為ε=10-9。批量大小設(shè)置為64。所有模型都使用貪婪搜索,并使用300維GloVe詞向量。
對(duì)比實(shí)驗(yàn)將使用以下5個(gè)模型。
Seq2Seq: 具有雙向LSTM和軟注意力機(jī)制的Seq2Seq作為baseline。
HRED: 對(duì)話由分層LSTM進(jìn)行編碼[16],word-level LSTM編碼每個(gè)句子,context-level LSTM編碼整個(gè)對(duì)話狀態(tài)。
VHRED: 在HRED的基礎(chǔ)上,增加高斯隨機(jī)噪聲[3]。
CVAE: 基于LSTM的CVAE模型[10],其中解碼器的初始狀態(tài)是潛變量和編碼器的最后隱藏狀態(tài)的組合。
Transformer: 使用原始的基于Transformer的Seq2Seq模型作為對(duì)話模型[12],此模型的輸入與本文的輸入表示相同。
為了評(píng)估所有比較方法生成的響應(yīng),在測(cè)試集上計(jì)算以下自動(dòng)指標(biāo):
BLEU: BLEU-n反映了一個(gè)候選響應(yīng)的平均N-gram準(zhǔn)確度,實(shí)驗(yàn)中使用了BLEU-n,n=1,2,3,4。
Distinct-1 and Distinct-2: 通過(guò)計(jì)算生成響應(yīng)中不同的Uni-gram和Bi-gram數(shù)量來(lái)除以測(cè)試集響應(yīng)中的Uni-gram和Bi-gram數(shù)量,結(jié)果作為評(píng)估生成結(jié)果多樣性的指標(biāo)。
表1列出了針對(duì)不同模型在兩個(gè)數(shù)據(jù)集上自動(dòng)評(píng)估的指標(biāo),可以看到,本文提出的模型結(jié)果明顯好于其他對(duì)比模型。
表1 各模型在不同數(shù)據(jù)集結(jié)果比較
本文提出的STC-CVAE模型在大多數(shù)指標(biāo)上達(dá)到了最佳的分?jǐn)?shù),表示該模型可以產(chǎn)生質(zhì)量更好、多樣性更高的響應(yīng)。Transformer模型在所有的對(duì)比baseline模型中并不完全是最好的,說(shuō)明直接使用Transformer作為Seq2Seq對(duì)話模型并不是一個(gè)很好的選擇。在兩個(gè)數(shù)據(jù)集上,HRED和VHRED兩個(gè)模型在BLEU-1和BLEU-2的值明顯好于其他對(duì)比的baseline模型,通過(guò)分析例子,本文發(fā)現(xiàn)這兩個(gè)模型更傾向于輸入大量重復(fù)和安全的詞匯,因此在BLEU-1和BLEU-2上得分高于其他模型,但是在Distinct-1/2上表現(xiàn)不好,說(shuō)明這兩個(gè)模型并沒(méi)有明顯地提高生成響應(yīng)的多樣性。CVAE模型在不使用Transformer的模型中表現(xiàn)是最好的,在BLEU和Distinct指標(biāo)上始終可以得到更好的分?jǐn)?shù),這表明,潛變量可以進(jìn)一步提升結(jié)果的質(zhì)量。因此,在STC-CVAE模型中引入CVAE是正確且有效的,后續(xù)的消融實(shí)驗(yàn)也證明了這一點(diǎn)。
消融實(shí)驗(yàn)用來(lái)驗(yàn)證模型中不同部分的有效性。表2為消融實(shí)驗(yàn)的結(jié)果。在不分離上下文語(yǔ)句編碼,即上下文語(yǔ)句和源語(yǔ)句拼接在一起做輸入時(shí),模型(SCT-CVAE Without DC)在BLEU-4上下降0.328,在Distinct-1上下降0.19,在Distinct-2上下降0.21,這表明分離上下文編碼對(duì)提升響應(yīng)的質(zhì)量是有效的。當(dāng)刪除CVAE結(jié)構(gòu)不生成潛變量時(shí),這些數(shù)值同樣下降,但是在Distinct上下降得更多,證明使用CVAE生成的潛變量對(duì)響應(yīng)的多樣性可以帶來(lái)提高。
表2 去除各組件后模型的評(píng)價(jià)結(jié)果
表3顯示了兩個(gè)例子以及所有比較方法產(chǎn)生的響應(yīng),第二個(gè)例子顯示兩個(gè)同樣的上下文語(yǔ)句但是具有不同的源語(yǔ)句產(chǎn)生響應(yīng)的情況。
Seq2Seq模型更傾向于生成簡(jiǎn)短且信息較少的響應(yīng)。HRED和VHRED雖然生成的響應(yīng)更長(zhǎng),但是響應(yīng)中更多包含了很多重復(fù)和安全的詞匯,如“哈哈”等,使回答顯得枯燥且信息少。CVAE相較于前三個(gè)模型,生成的信息較多且相關(guān)性更大。對(duì)比表3中的例子得以發(fā)現(xiàn),在對(duì)話上下文對(duì)的序列長(zhǎng)度沒(méi)有很長(zhǎng)時(shí),各個(gè)模型的表現(xiàn)優(yōu)劣并不是很明顯。在對(duì)話上下文序列很長(zhǎng)的情況下,基于Transformer的模型和STC-CAVE模型的表現(xiàn)會(huì)更好。同時(shí),基于Transformer的模型和STC-CAVE模型更容易捕捉對(duì)話上下文的一些重要詞匯,如前面例子中的“迪卡儂”和后面例子中的“文身”等詞匯。
本文還對(duì)具有同樣上下文、不同源語(yǔ)句的情況進(jìn)行對(duì)比,見(jiàn)表3中的后一個(gè)例子。第一種情況中,源語(yǔ)句的核心是“鎖骨”和“低領(lǐng)衣服”,STC-CVAE產(chǎn)生的響應(yīng)成功地捕捉到了這兩個(gè)重要的信息,而第二種情況,源語(yǔ)句的核心是“煩”和“擔(dān)心”,STC-CAVE捕捉到了“煩”這個(gè)重要指導(dǎo)詞匯,并在響應(yīng)中產(chǎn)生出“心煩”詞匯。圖2顯示了源語(yǔ)句和響應(yīng)語(yǔ)句的Attention可視化情況,響應(yīng)的重要詞匯和源語(yǔ)句中的詞匯是密切相關(guān)的,證明了源語(yǔ)句對(duì)生成響應(yīng)的重要指導(dǎo)作用。但是可以發(fā)現(xiàn),所有模型無(wú)論是自然程度還是流暢性以及生成響應(yīng)的長(zhǎng)度上,都不及人類的回答,證明在對(duì)話響應(yīng)生成上,現(xiàn)有研究還有很大的提升空間。
表3 不同模型產(chǎn)生響應(yīng)結(jié)果比較
圖2 源語(yǔ)句與響應(yīng)語(yǔ)句中attention的可視化
針對(duì)多輪對(duì)話生成響應(yīng)多樣性差的問(wèn)題,本文提出了SCT-CVAE模型。該模型將Transformer與CVAE結(jié)合,通過(guò)引入潛在變量和分離上下文的編碼機(jī)制,學(xué)習(xí)到了對(duì)話的多樣性分布,挖掘出了上下文和源語(yǔ)句對(duì)生成響應(yīng)的影響程度。實(shí)驗(yàn)結(jié)果表明,新模型比其他模型具有明顯的優(yōu)勢(shì),可以生成具有更高多樣性和相關(guān)性的響應(yīng)。