劉 家,盧永美,何 東,卜令梅,陳 黎,于中華
(四川大學(xué) 計(jì)算機(jī)學(xué)院,成都 610065)
E-mail:cl@scu.edu.cn
對話生成是自然語言處理中重要的研究領(lǐng)域之一,受到學(xué)術(shù)界和工業(yè)界的廣泛關(guān)注.目前,開放域?qū)υ捝傻难芯恐饕譃闄z索式[1-3]、生成式[4-7]和檢索-生成式[8-13].檢索式方法從問-答語料庫中檢索與當(dāng)前問題最匹配的語句作為回復(fù),得到的回復(fù)語義流暢、信息豐富但相關(guān)性較差.為了解決檢索式方法存在的問題,生成式方法將問題作為輸入,通過序列到序列(Seq2seq)模型生成相關(guān)性較好的回復(fù),但是容易生成較短且無意義的萬能回復(fù),例如“我也是”、“我不知道”等,降低了用戶的體驗(yàn)度.近年來,為了結(jié)合檢索式和生成式方法的優(yōu)點(diǎn),研究者提出了檢索-生成式方法,先從語料庫中檢索出與當(dāng)前問題最相關(guān)的回復(fù),將其作為輔助信息引入到生成過程,以此提高生成回復(fù)的質(zhì)量[8-13].例如,Song[8]、Wu[9]和Cai[10,11]等人利用問-答語料庫中最相關(guān)的一個檢索結(jié)果來生成對話.由于語料庫大小有限,無法覆蓋所有語言現(xiàn)象,所以這種做法不僅存在稀疏問題,而且嚴(yán)重依賴于單個檢索結(jié)果的質(zhì)量,當(dāng)檢索結(jié)果與問題相關(guān)性差或完全無關(guān)時,模型往往會產(chǎn)生錯誤或者無關(guān)的回復(fù)[13].因此,研究者開始探索如何將多個檢索結(jié)果融入到回復(fù)生成中,如Cai等人[10]嘗試了對多個回復(fù)骨架的嵌入表達(dá)拼接后用于回復(fù)的生成.Song等人[12]則將當(dāng)前問題的編碼與最相似的兩個回復(fù)的嵌入拼接后作為生成模型的輸入,提高了生成回復(fù)的質(zhì)量.為了利用到更多的檢索結(jié)果對同一類型的問題語義提取共同回復(fù)特征,Tian[13]等人提出聚類-生成方法.該方法利用K-均值算法對歷史問-答對中的問題進(jìn)行硬聚類,將問題-回復(fù)對分配到不同的問題-回復(fù)語義簇,根據(jù)當(dāng)前問題與問題語義簇的相似性,找到最相似的回復(fù)簇,并將回復(fù)簇中所有回復(fù)信息融入到生成過程,以此提高生成回復(fù)的質(zhì)量.
雖然對話生成研究取得了很大的進(jìn)步,特別是聚類-生成方法從每個問題簇所對應(yīng)的回答中學(xué)習(xí)該簇問題的回復(fù)模式,但是利用單個檢索結(jié)果的方法和聚類-生成方法都只考慮了問題的單個語義,忽略了問題的語義多樣性.如表1所示,問題中包含“孤單”和“麻煩”兩種語義,而現(xiàn)有檢索-生成方法傾向于產(chǎn)生回復(fù)1或回復(fù)2這類只包含一種語義信息的回復(fù),很明顯回復(fù)3才是更有效的回答,因?yàn)樗鼜膯栴}的多個語義方面來生成回復(fù).
表1 問題語義多樣性實(shí)例Table 1 Example of semantic multiplicity
為了解決上述挑戰(zhàn),本文對問題的語義多樣性建模,通過徑向基函數(shù)(Radial Basis Function,RBF)神經(jīng)網(wǎng)絡(luò)的軟聚類方式將訓(xùn)練集中的問題分配到多個語義簇,從而達(dá)到捕獲語義多樣性的目的.模型根據(jù)當(dāng)前問題與每個問題語義簇的隸屬度來融合問題簇對應(yīng)的回復(fù)簇信息,并用于對話生成.本文引入的RBF不僅能夠解決語義多樣性問題,同時由于它的可微性,使模型能夠進(jìn)行端到端的訓(xùn)練.本文在騰訊公開的大型中文單輪對話數(shù)據(jù)集Chat上進(jìn)行了一系列對比和消融實(shí)驗(yàn),結(jié)果表明,相比最好的聚類-生成模型,本文的模型在相關(guān)性、流暢性和信息性指標(biāo)上均有明顯的提升.
本文的主要貢獻(xiàn)如下:
1)提出了基于語義多樣性的對話生成模型,通過對歷史問題的語義多樣性建模,能夠生成更相關(guān)、信息更豐富的回復(fù).
2)引入了徑向基神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)訓(xùn)練集中的問題軟聚類來捕獲問題的不同語義,通過這種端到端可訓(xùn)練的軟聚類方式使得聚類和生成過程更加緊密耦合.
3)在公開的基準(zhǔn)數(shù)據(jù)集上進(jìn)行了一系列對比和消融實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,本文提出的方法在自動評價指標(biāo)和人工評價指標(biāo)上都明顯優(yōu)于目前已經(jīng)提出的對話生成方法.
現(xiàn)有的開放域?qū)υ捝煞椒ㄖ饕譃闄z索式、生成式以及二者結(jié)合的檢索-生成式方法.檢索式方法需要構(gòu)建大規(guī)模問-答對語料,對于給定的問題,根據(jù)當(dāng)前問題和歷史問題的相似性或者當(dāng)前問題與歷史回復(fù)之間的相關(guān)性從語料庫中選擇最合適的回復(fù).早期的檢索式方法主要使用傳統(tǒng)的信息檢索算法,如Ji[1]使用TF-IDF對問-答語句進(jìn)行編碼,但這種方法只考慮了字面的相似性而忽略了深層次的語義信息.為了解決傳統(tǒng)信息檢索的問題,同時受到深度學(xué)習(xí)的啟發(fā),研究者提出了一系列基于深度學(xué)習(xí)的方法建模問題和回復(fù)的語義表示[2-3,14-17].如Shen等[2]和Wan等[3]使用卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)來獲取問題和回復(fù)的語義嵌入.檢索式方法由于直接使用語料庫中的回復(fù)作為輸出,因此生成的回復(fù)流暢且信息豐富,但相關(guān)性較差,并且無法產(chǎn)生語料庫以外的回復(fù).
為了解決檢索式方法存在的問題,研究者提出了基于序列到序列的生成式方法,在編碼端對當(dāng)前問題進(jìn)行編碼,再通過解碼端生成回復(fù)[18].然而,生成式方法傾向于產(chǎn)生缺乏信息且無意義的通用回復(fù)[4],如“我不知道”等.為緩解該問題,Li等[4]利用最大互信息作為目標(biāo)函數(shù)來增強(qiáng)回復(fù)的信息性;Xing等[5]引入主題信息,并與當(dāng)前問題共同解碼,生成了更有意義的回答;Mou等[6]提出先預(yù)測關(guān)鍵詞,然后使解碼端生成的回復(fù)中包含該關(guān)鍵詞,以此減少通用回復(fù)的產(chǎn)生;Kong等[7]先解碼生成內(nèi)容詞,再用內(nèi)容詞與當(dāng)前問題來生成回復(fù),提高了回復(fù)的質(zhì)量.現(xiàn)有的基于生成的研究雖然提出了各種方法來提高生成回復(fù)的質(zhì)量,但模型仍然傾向于生成通用回復(fù)[8].
基于相似問題具有相似回答這一假設(shè),近年來,研究者結(jié)合檢索式和生成式方法的優(yōu)點(diǎn)提出了檢索-生成式方法.該方法根據(jù)當(dāng)前問題在問-答語料庫檢索得到的相似回復(fù)來指導(dǎo)對話生成.Song等[8]首次提出先利用檢索式方法得到語料庫中與問題最相關(guān)的回復(fù),然后將問題和檢索得到的回復(fù)編碼拼接后作為解碼器的輸入;Wu等[9]把檢索得到的最相關(guān)回復(fù)作為原型語句,基于當(dāng)前問題與相似問題的字面差異構(gòu)造編輯向量,利用編輯向量改寫原型語句來生成當(dāng)前問題的回復(fù);Cai等[10,11]對檢索回復(fù)提取相關(guān)詞語作為回復(fù)“骨架”,其中文獻(xiàn)[10]通過骨架抽取器得到檢索回復(fù)的骨架語義,文獻(xiàn)[11]則對檢索回復(fù)提取字符級別的骨架;為避免最終生成的回復(fù)與檢索回復(fù)過于相似導(dǎo)致相關(guān)性較差,Zhang等[19]先對當(dāng)前問題生成“草稿”回復(fù),并利用Transformer學(xué)習(xí)檢索得到回復(fù)中的語句信息對“草稿”回復(fù)進(jìn)一步修改,從而生成信息豐富且更加相關(guān)的回復(fù).然而上述方法僅利用到單個檢索結(jié)果,能獲取的額外信息有限,并且當(dāng)檢索結(jié)果與問題相關(guān)性較低時,模型往往生成無關(guān)或無意義的回復(fù).因此,如何利用更多的檢索回復(fù)以生成更高質(zhì)量的回復(fù)成了研究者們面臨的新問題.Cai[10]嘗試拼接多個“骨架”來生成對話,但由于多個不同的“骨架”無法出現(xiàn)在同一回復(fù)中,反而干擾了生成過程,最終效果比生成式方法更差.Song等[12]將檢索得到的最相關(guān)的兩個回復(fù)語句與問題語句分別編碼,拼接三者后解碼生成回復(fù).但這類方法僅能引入固定個數(shù)的檢索結(jié)果,難以擴(kuò)展.而Tian等[6]使用K-均值聚類算法將語料庫中問題聚為多個問題簇,提取每個問題簇所對應(yīng)的回復(fù)簇的信息生成回復(fù).但在實(shí)際應(yīng)用中,問題中往往包含多方面語義信息,使用硬聚類方式只能捕獲單方面的語義,忽略了問題的語義多樣性,降低了生成最終回復(fù)的質(zhì)量.
為了解決上述問題,本文提出了一個面向語義多樣性的對話生成模型,通過徑向基神經(jīng)網(wǎng)絡(luò)的軟聚類能力,將訓(xùn)練集中的問題劃分為多個語義簇來學(xué)習(xí)不同的語義表達(dá),并根據(jù)當(dāng)前問題與問題語義簇的隸屬度來融合不同語義簇的回復(fù)信息,以此來生成信息量更大、語義更豐富的回復(fù).
本文算法基于序列到序列模型,問題編碼層和回復(fù)自編碼層采用雙向LSTM[20]分別學(xué)習(xí)問題和回復(fù)的語義表達(dá),解碼層通過單向LSTM順序解碼生成回復(fù)中的每個詞.為了捕獲問題的多樣性語義,本文引入了徑向基神經(jīng)網(wǎng)絡(luò),將訓(xùn)練集中的問題分配到不同的語義簇.在順序生成每個詞時,通過兩個注意力機(jī)制分別聚焦當(dāng)前問題對回復(fù)產(chǎn)生重要作用的信息以及檢索回復(fù)對生成回復(fù)起重要作用的信息來指導(dǎo)對話的生成.本節(jié)先給出對話生成任務(wù)的形式化描述,然后介紹本文算法的方法細(xì)節(jié).
假定當(dāng)前問題q={q1,…,qi,…,qN},長度為N,qi表示問題中第i個詞,回復(fù)r={r1,…,ri,…,rM},長度為M,ri表示回復(fù)中第i個詞.對話生成任務(wù)可形式化定義為:
給定訓(xùn)練集D={},
,表示訓(xùn)練集中問題-回復(fù)對,其中r是問題q對應(yīng)的回復(fù),模型的目標(biāo)是最大化似然P(r|q,D).
本文提出面向語義多樣性的對話生成模型總體架構(gòu)如圖1所示.模型由4部分組成:問題編碼層、聚類層、解碼層和回復(fù)自編碼層.訓(xùn)練時,模型以對作為輸入,通過問題編碼層將輸入的問題q的詞序列通過雙向LSTM獲得問題的句子表達(dá),隨后送入到Q-聚類模塊的徑向基神經(jīng)網(wǎng)絡(luò)將訓(xùn)練集中的問題根據(jù)語義分配到多個語義簇,每個徑向基單元學(xué)習(xí)不同問題簇的語義向量.根據(jù)當(dāng)前問題和每個語義向量的隸屬度來融合問題簇對應(yīng)的回復(fù)簇的信息作為檢索的特征表達(dá),并送入到解碼器來生成最終回復(fù).回復(fù)自編碼器用于更新記憶模塊中回復(fù)的嵌入表達(dá),通過自編碼器的回復(fù)重建,能夠?qū)W到與問題更相關(guān)的回復(fù)的句子編碼.
圖1 模型示意圖Fig.1 Model architecture overview
3.2.1 問題編碼層
(1)
(2)
3.2.2 回復(fù)自編碼層
(3)
S′=MLP[hq;hr]
(4)
(5)
回復(fù)自編碼層損失如式(6)所示:
(6)
3.2.3 聚類層
在訓(xùn)練階段,聚類層的任務(wù)是捕獲問題的語義多樣性,因此,本文通過Q-聚類模塊的徑向基神經(jīng)網(wǎng)絡(luò)對訓(xùn)練集中的問題進(jìn)行軟聚類,并訓(xùn)練了K個不同的問題語義向量(簇中心).記憶模塊存儲了回復(fù)簇的語義信息,并根據(jù)當(dāng)前問題的隸屬度生成不同的檢索回復(fù)表達(dá),用于對話生成.
Q-聚類模塊對于當(dāng)前問題q,它的嵌入表達(dá)hq通過一個含有K個徑向基單元的網(wǎng)絡(luò)生成q的語義嵌入表達(dá)Q*,其中徑向基單元采用高斯核函數(shù).第j個隱藏單元的激活函數(shù)為:
(7)
其中,Qj為第j個徑向基單元的語義向量,即第j個問題簇的簇中心,σj為該徑向基單元的方差,二者均為可學(xué)習(xí)參數(shù).然后,獲取q在第j個問題簇的隸屬度αj,如式(8)所示,通過對各個簇的隸屬度的加權(quán)求和得到問題的語義嵌入表達(dá)Q*,如式(9)所示:
(8)
(9)
記憶模塊根據(jù)相似的問題有相似的回復(fù)這一假設(shè),將當(dāng)前問題在各個問題簇的隸屬度作為回復(fù)簇的隸屬度,即當(dāng)前問題對第j個回答簇的隸屬度αj作為對應(yīng)回復(fù)簇中回復(fù)的隸屬度,來計(jì)算對應(yīng)回復(fù)簇每個語義向量(簇中心),如式(10)所示.當(dāng)前問題對應(yīng)的回復(fù)語義表達(dá)是根據(jù)問題隸屬度分布α對所有的回復(fù)簇簇中心進(jìn)行加權(quán)求和,如式(11)所示:
(10)
(11)
徑向基單元的語義向量是用來描述問題語義的多樣性,模型希望各個問題簇的語義盡可能分離,本文使用如式(13)的正交損失.
Q=[Q1;Q2;…;QK]
(12)
(13)
3.2.4 解碼層
對話生成的解碼器基于單向LSTM,首先將q的語義表達(dá)Q*、句子表達(dá)hq以及回復(fù)的語義表達(dá)R*拼接后通過全連接網(wǎng)絡(luò)得到解碼器的初始狀態(tài)S0,如式(14)所示:
S0=MLP([Q*,hq,R*])
(14)
(15)
以St作為查詢向量,利用式(16)和式(17)計(jì)算問題中每個詞在第t時刻前后文注意力權(quán)重,根據(jù)注意力權(quán)重加權(quán)求和得到問題前后文表達(dá)Ct,如式(18)所示:
(16)
(17)
(18)
其中Wc是可學(xué)習(xí)的參數(shù),ut,i表示時刻解碼器隱藏狀態(tài)與q里第i個詞的注意力大小.
檢索嵌入表達(dá)Zt編碼了回復(fù)簇語義信息,有助于當(dāng)前問題的回復(fù)生成.本文將當(dāng)前問題和每個問題簇的隸屬度作為回復(fù)簇對目標(biāo)問題生成的回復(fù)的貢獻(xiàn)度.考慮在不同的t時刻,根據(jù)當(dāng)前隱藏狀態(tài)St,需要聚焦回復(fù)簇中不同的回復(fù)特征來生成檢索的表達(dá).同樣地,以St作為查詢向量,利用式(19)和式(20)計(jì)算不同語義的回復(fù)簇注意力,再根據(jù)注意力加權(quán)求和后得到t時刻Zt:
(19)
(20)
(21)
其中Wz為注意力矩陣,vi,j表示解碼器時刻隱藏層狀態(tài)St與記憶模塊中第j個回復(fù)簇Rj的注意力大小.
(22)
在回復(fù)生成中,使用負(fù)對數(shù)似然作為損失函數(shù):
(23)
其中,M為標(biāo)注回復(fù)長度,θ為模型所有參數(shù).
訓(xùn)練時,本文將對作為輸入,模型優(yōu)化的總損失函數(shù)由3部分構(gòu)成,如式(24)所示:
L=Lpre+λ1LQ+λ2LAE
(24)
其中,λ1和λ2為超參數(shù).訓(xùn)練時,在當(dāng)前epoch內(nèi)固定記憶模塊中的所有回復(fù)簇的語義向量并存儲所有歷史回復(fù)的嵌入表達(dá)hr及其在所有回復(fù)簇中的隸屬度分布α,當(dāng)前epoch結(jié)束后,根據(jù)式(10)更新所有回復(fù)簇特征信息.在測試階段,對于測試樣例,只有問題q送入模型,回復(fù)自編碼層將被去掉.
為驗(yàn)證算法性能,本文開展了以下3個方面的實(shí)驗(yàn):1)和現(xiàn)有對話生成的方法進(jìn)行對比,考察軟聚類的效果,以驗(yàn)證本文提出的算法的有效性;2)消融實(shí)驗(yàn),考察模型中各模塊的作用;3)考察徑向基單元的個數(shù)對模型性能的影響.
為了驗(yàn)證模型的有效性,本文在騰訊公開的大型中文單輪對話數(shù)據(jù)集Chat上進(jìn)行了一系列實(shí)驗(yàn).Chat數(shù)據(jù)集來源于微博和豆瓣論壇,相比來源于單個論壇的數(shù)據(jù)集,該數(shù)據(jù)集包含更多問題語義類型.經(jīng)預(yù)處理[19]后,本文的實(shí)驗(yàn)將其中550萬條數(shù)據(jù)用于訓(xùn)練,1000條用于驗(yàn)證,10000條用于測試,并使用了3類自動評價指標(biāo)來評估模型的性能:
1)Bleu 1-4[21]:Bleu N 反映生成回復(fù)與黃金標(biāo)準(zhǔn)之間N-gram的字面相似度,分?jǐn)?shù)越高,字面匹配程度越高.
2)Embedding Average(E-A),Embedding Greedy(E-G),Embedding Extrema(E-E)[22]:Embedding * 用來度量生成回復(fù)與標(biāo)注回復(fù)的語義相似度.E-A使用生成文本與黃金標(biāo)準(zhǔn)的詞向量均值的余弦相似度,E-G使用生成回復(fù)與黃金標(biāo)準(zhǔn)之間的最大詞-詞余弦相似度的平均作為二者相似度,E-E使用句子中所有詞的詞向量每一維極值作為句子向量,然后計(jì)算生成文本和黃金標(biāo)準(zhǔn)之間的余弦相似度.數(shù)值越大,表明生成文本與黃金標(biāo)準(zhǔn)語義越相似.
3)Dist-1/2:Dist-N反映生成回復(fù)的多樣性,計(jì)算生成回復(fù)集合中一元組或二元組占總數(shù)的百分比.數(shù)值越大,多樣性越好.
本文實(shí)驗(yàn)的所有模型是在相同數(shù)據(jù)集上進(jìn)行了5次實(shí)驗(yàn),后續(xù)小節(jié)報(bào)告的是5次的平均值.同時,本文從測試集中隨機(jī)抽取了100個問題,邀請了3名研究生對每個模型生成的回復(fù)從相關(guān)性、流暢性和信息性3方面進(jìn)行了人工評估.相關(guān)性是指是否與問題相關(guān);流暢性是指語義是否流暢,是否容易理解;信息性是指是否有意義,而非通用回復(fù).每個度量指標(biāo)用5級評分.以相關(guān)性為例,數(shù)字表示回復(fù)語句的相關(guān)程度,其中1表示與問題完全不相關(guān),5表示完全相關(guān).
本文實(shí)驗(yàn)基于PyTorch1.8.1,Python版本為3.8.5.服務(wù)器實(shí)驗(yàn)環(huán)境為Ubuntu 18.04.4 LTS,搭載的顯卡為NVIDIA GeForce RTX 3090.
根據(jù)Chat數(shù)據(jù)集特點(diǎn),模型設(shè)置詞表大小為20000,訓(xùn)練時使用Adam[23]優(yōu)化器,初始學(xué)習(xí)率為0.001,測試時束搜索大小為10,其余超參數(shù)如表2所示.
表2 超參數(shù)設(shè)置Table 2 Hyperparameters setting
為了驗(yàn)證本文算法考慮到問題的語義多樣性對生成回復(fù)質(zhì)量的影響,本文與以下5個基線方法進(jìn)行了對比:
Seq2seq[24]:帶有注意力的Seq2seq對話生成模型,僅以問題作為輸入生成回復(fù);
CVAE[25]:使用變分編碼器來增加回復(fù)多樣性的對話生成模型;
RP[19]:先通過當(dāng)前問題生成回復(fù),再利用檢索結(jié)果對回復(fù)進(jìn)一步潤色得到最終回復(fù);
Skeleton[11]:基于骨架生成回復(fù)的對話生成模型,先對檢索的回復(fù)提取骨架詞,然后將當(dāng)前問題與骨架詞融合來生成回復(fù);
Memory[13]:一種檢索-生成式對話生成模型,通過對歷史問題進(jìn)行硬聚類,將與當(dāng)前問題相似度最高的問題簇對應(yīng)的回復(fù)簇的特征信息融入到對話生成中.
為了驗(yàn)證本文模型的有效性,本文模型和現(xiàn)有的基線模型進(jìn)行了對比,自動評價結(jié)果如表3所示,人工評估的對比結(jié)果如圖2所示.從表3的實(shí)驗(yàn)結(jié)果可以看出,本文的模型在Blue 3、Blue 4和Dist-1上分別提高了18.6%、4.48%以及6.38%.同時Blue N中N越大能反映回復(fù)的流暢性,本文的模型在Blue 3和Blue 4指標(biāo)上性能提升顯著,這些結(jié)果也充分說明了,通過徑向基神經(jīng)網(wǎng)絡(luò)的軟聚類方式能夠捕獲問題的語義多樣性,提高生成結(jié)果的相關(guān)性、信息性和流暢性,從而得到了質(zhì)量更高的回復(fù).在生成回復(fù)的字面多樣性中,本文模型Dist-1遠(yuǎn)高于其他模型,而Dist-2低于Skeleton,但相比最新的聚類-生成模型Memory提升了0.55%.根據(jù)對生成回復(fù)的結(jié)果進(jìn)行分析發(fā)現(xiàn),本文模型傾向于產(chǎn)生通用句式的語句,如“××我也××”,“××哈哈,××”這類句式,其中,“××我也××”在訓(xùn)練集中占比為1.8%.而Skeleton先提取檢索結(jié)果的“骨架詞”,利用“骨架詞”的信息生成對話,傾向于生成與檢索結(jié)果相似的回復(fù),因此在Dist-2上性能較好,但相關(guān)性上較差.
圖2 人工評價的對比結(jié)果Fig.2 Comparative results of human evaluation
表3 本文模型和基準(zhǔn)模型的性能對比Table 3 Overall performance of our model and the baseline models
從圖2的人工評價對比結(jié)果中可以看出,檢索-生成式的方法由于利用到了額外的檢索結(jié)果,所以在信息性上要明顯優(yōu)于生成式的Seq2seq方法.而Memory與本文方法通過聚類方式將更多的檢索結(jié)果的特征信息融入到對話生成中,能夠進(jìn)一步提高生成回復(fù)的信息性.同時,由于本文使用軟聚類方式,獲取問題語句的多方面語義,因而能檢索得到更多的相關(guān)回復(fù)信息增強(qiáng)生成過程,不僅提高了信息性和相關(guān)性,同時還保持著較高的流暢性.
為驗(yàn)證模型中各模塊的有效性,本文對比了兩種消融實(shí)驗(yàn):
1) 本文算法w/o Mul:采用硬聚類方式,即認(rèn)為當(dāng)前問題語句只屬于一個問題語義簇,查詢記憶模塊時也只取相似度最高的問題語義簇對應(yīng)的回復(fù)特征;
2) 本文算法 w/o:去掉模型Q-聚類模塊中的正交損失.
表4列出了消融實(shí)驗(yàn)結(jié)果,從表中可以看出去除各模塊的消融實(shí)驗(yàn)性能都有所下降.首先,當(dāng)采用硬聚類方式時,模型只能捕捉問題語句單方面的語義,因此模型性能在各方面都略低于軟聚類的結(jié)果,從而表明考慮問題的語義多樣性有助于生成質(zhì)量更高的回復(fù).其次,去掉正交損失后,模型性能急劇下降,這是因?yàn)槿サ粽粨p失后,各個徑向基單元學(xué)習(xí)到的語義向量過于相似,無法充分表達(dá)訓(xùn)練集中多方面語義,極大地降低了模型性能.
表4 消融實(shí)驗(yàn)結(jié)果Table 4 Ablation experimental results
為了探究徑向基單元數(shù)K對模型性能的影響,本文使用不同的K在Chat數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),如圖3所示.
圖3 不同K下的性能Fig.3 Performances of different K
由圖3可以看出,隨著K的增加,性能在逐漸提升,而當(dāng)K>2000以后,模型的性能又開始緩慢下降.說明K如果太小,會導(dǎo)致訓(xùn)練集中問題的語義不能有效區(qū)分,而K太大則導(dǎo)致徑向基單元學(xué)習(xí)到的語義向量太過于相似,從而降低了最終回復(fù)的質(zhì)量,其中對回復(fù)的多樣性影響最大.
為了更深入了解本文提出的方法在開放域?qū)υ捴械男阅?,本小?jié)從問題語義的多樣性、軟聚類質(zhì)量以及生成回復(fù)的質(zhì)量3方面進(jìn)行了案例分析.
多樣性本文從訓(xùn)練集中選擇了兩個問題,分別包含了兩種語義信息,并對比了基線模型和本文模型的回復(fù)結(jié)果,如表5所示.從表5中可以看出,問題1和問題2都包含了兩個方面的語義:癥狀以及尋求解決方法.只利用了單個檢索結(jié)果生成回復(fù)的模型,如RP和Skeleton和利用多個檢索結(jié)果的Memory都只能捕獲問題單方面的語義,所以回復(fù)中只包含關(guān)于癥狀信息,而本文算法由于對問題進(jìn)行軟聚類后能夠捕獲問題多方面語義,所以生成的回復(fù)能夠關(guān)注到“過敏”或者“口腔潰瘍”同時還關(guān)注到了“怎么辦”兩種不同的語義.
表5 語義多樣性案例Table 5 Cases of semantic multiplicity
軟聚類本文首先從訓(xùn)練集中選擇8個問題,分別計(jì)算每個問題和問題簇的隸屬度,根據(jù)隸屬度最高的前10個簇.對8個問題隸屬的語義簇取交集后,如表6所示(為方便理解,人工為3個簇添加了語義標(biāo)簽并將問題中與簇相關(guān)的語義信息加粗表示).從表6中可以看出,這3個簇的語義差別比較大,說明每個簇的徑向基單元通過正交損失能夠?qū)W到不同的語義.同時,對于問題中包含多個語義的樣例,如Q3,Q5和Q6,其中Q3在簇1和簇2相似度很高,但在簇3的相似度很低.在這3個簇的語義向量的相似度都比較高.由此可以看出,用軟聚類的建模方式才能更好地捕捉問題語句的多樣性語義,檢索得到多方面相關(guān)回復(fù)信息,從而提高生成回復(fù)的質(zhì)量.
表6 軟聚類案例Table 6 Cases of soft clustering
回復(fù)質(zhì)量本文從測試集中隨機(jī)選擇了兩個問題,并對比了本文模型和基線模型產(chǎn)生的回復(fù)的質(zhì)量,結(jié)果如表7所示.從表7中可以看出,對問題1,Seq2seq和CVAE回復(fù)的相關(guān)性很低,而RP只是對問題做了一個陳述,Skeleton回復(fù)的流暢性較差,相比Memory的回復(fù),本文模型的回復(fù)的可讀性更好.問題2的本文的模型用“屈臣氏的燕窩面膜”來回答了問題,而其他模型的回復(fù)和問題的語義相關(guān)性比較差.
表7 回復(fù)質(zhì)量案例Table 7 Cases of response quality
針對現(xiàn)有檢索-生成式研究存在語義多樣性的挑戰(zhàn),本文提出面向語義多樣性的開放域?qū)υ捝赡P?,并設(shè)計(jì)了一個可學(xué)習(xí)的聚類網(wǎng)絡(luò)將訓(xùn)練集中的問題根據(jù)語義分配到多個語義簇,從而對語義多樣性建模.本文使用徑向基神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)軟聚類過程,由于徑向基的可微性,使得本文提出的模型對軟聚類和回復(fù)生成過程可以通過梯度下降端到端地訓(xùn)練,使得聚類和生成更加緊密耦合.本文通過一系列的對比實(shí)驗(yàn)、消融實(shí)驗(yàn)及案例分析驗(yàn)證了本文模型的有效性.