?

利用對話模型引導的對話生成推薦

2022-11-08 10:48齊孝龍韓東紅喬百友
東北大學學報(自然科學版) 2022年10期
關鍵詞:模塊目標模型

齊孝龍, 韓東紅, 高 翟, 喬百友

(東北大學 計算機科學與工程學院, 遼寧 沈陽 110169)

推薦系統可以解決海量數據導致的信息過載問題,旨在通過分析用戶行為、興趣、個性化需求等預測用戶感興趣的信息,諸如商品、新聞、感興趣的話題等[1].

傳統的推薦系統不能與用戶進行很好地交互,從而影響了用戶體驗.有研究表明,對話式推薦能夠更好地解決推薦系統中的冷啟動問題[2],而且在可解釋性方面優于基于深度學習的推薦系統[3].基于此,對話式推薦技術開始進入學術界和工業界的視野[4-10].

已有的對話推薦研究多以目標或話題為導向[7,9],即通常采用Pipeline方式,首先利用分類模型預測對話目標、話題或推薦實體,再根據預測得到的對話目標等指導生成合適的推薦對話.由于分類標簽的空間過大(大約1 000個)[9],導致預測的準確率不高.針對上述問題,本文提出了一種利用對話模型引導的對話生成推薦(dialogue guided recommendation of dialogue generation,DGRDG)模型,通過對話模型生成對話目標,因對話目標的生成是逐步的,DGRDG模型在每一時間步的目標生成模塊均融入上下文信息,生成的對話目標質量優于分類模型;本文提出一種目標重規劃策略(goal replan policy,GRP),即在生成對話目標后,利用對話目標之間的關系和對話目標與對話目標候選集中元素之間的語義相似度,調整生成的對話目標,使得對話目標的準確率比未引入該策略前提高了3.93%;最后通過在DuRecDial數據集上進行實驗,結果驗證了所提出的模型的有效性.

1 相關工作

推薦對話數據集樣例如圖1所示.對話推薦任務由推薦系統和對話系統構成,本文將分別介紹對話系統、對話目標預測和對話推薦系統的相關工作.對話系統包括面向任務和非面向任務兩類:面向任務的對話系統大多將整個對話流程使用管道(Pipeline)的方式連接起來;而非面向任務的對話系統則多使用端到端生成或檢索的方式[11].現有的一些研究關注對話推薦系統的對話能力,嘗試基于端到端的方式構建模型.這些模型旨在學習人類會話語料庫中的模式,并且通常是不透明的且難以解釋.端到端方法在推薦和響應方面的人工評估效果不佳,因此設計一個明確的對話策略是非常必要的[12].面向推薦的對話系統其本質也是一種任務型的對話系統,所以適合使用Pipeline方式.

圖1 對話推薦數據集樣例

作為Pipeline模型中的重要組成部分,對話目標預測很大程度上影響著最終生成回復的質量.對話目標預測任務是自然語言理解(natural language understanding, NLU)的一個子方向,與對話行為識別、對話狀態跟蹤以及意圖識別相似,目前研究主要通過以下兩種方式來實現:①分類模型,Pavuri等[13]使用基于RNN和LSTM的模型實現NLU,并發現在輸入完整信息后再進行意圖分類的效果更好;Guo等[14]通過使用一個兩階段模型來解決對話狀態跟蹤中標簽重復的問題,從而提高了模型的預測效率.②將原問題轉化為序列到序列任務;Colombo等[15]使用Seq2Seq模型在編碼階段使用層次化編碼器獲取不同粒度下的編碼信息,在解碼階段的每一時間步預測單個話語的對話行為,并在實驗中驗證了所提出模型的有效性.經過上述通過分類模型或者序列到序列的標簽預測模型處理NLU問題的基礎上,對話系統再通過下游的自然語言生成(natural language generation, NLG)模塊生成最終的回復.

現有對話推薦任務的解決方案多采用Pipeline方式.Zhou等[6]提出了結合面向單詞和實體的知識圖譜以增強對話推薦中的數據表示,并采用互信息最大化來對齊單詞級和實體級的語義空間,從而可以在響應文本中生成信息豐富的關鍵字或實體.Zhou等[7]提出了一種話題引導會話推薦模型,并在實驗中證明了該方法在主題預測、項目推薦和響應生成三個子任務上的有效性.

以上對話推薦相關模型多采用分類模型預測出對話目標、話題或推薦實體,再對推薦對話的生成進行指導[7],但當標簽數量很大時分類效果并不理想;或者使用端到端的方式將對話管理模塊隱式地融合在整個對話推薦系統中[6].鑒于Pipeline模型在任務型對話中獲得的良好效果,本文嘗試利用Pipeline模型來解決對話推薦任務,在上游使用對話模型來生成對話目標,期望對話模型能夠充分學習輸入信息之間的語義信息,進而生成更合適的對話目標來對下游推薦對話的生成進行指導.

2 模 型

2.1 問題定義

對話推薦任務的定義如下:

定義1用戶畫像P={p1,p2,…,pnp},其中pi為第i個用戶畫像鍵值對,np為用戶畫像鍵值對個數.

定義2知識信息K={k1,k2,…,knk},其中ki為第i條知識.

定義3對話歷史H={h1,h2,…,ht-1},其中hi={wi,1,wi.2,…,wi,nw}為第i條對話歷史,t為當前對話輪次,wi,j為第i條對話歷史的第j個字.

定義4對話目標G={g1,g2,…,gng},其中gi為第i個對話目標,gi包含兩部分,Goal_type和Goal_topic,如“美食推薦(Goal_type)水煮魚(Goal_topic)”,ng為對話目標的個數.

定義5生成回復Y={y1,y2,…,yny}.其中yi為生成的回復中的第i個字.

訓練集中所有的對話目標都是已知的,但測試集中只給出第一個以及最后兩個對話目標.基于此,模型的任務為:首先預測出本輪對話的對話目標GOAL,并根據預測出的對話目標生成對應的回復Y.

2.2 DGRDG模型總體架構

受到文獻[9]的啟發,DGRDG模型整體分為3個子模塊:IsGoalEnd模塊、GoalPlan模塊和ResponseGeneration模塊.如圖2所示,其中GoalPlan模塊由NextGoalGeneration子模塊與GRP構成.首先使用IsGoalEnd模塊判斷上一輪次的對話目標是否結束,結束則調用GoalPlan模塊生成當前輪次的對話目標,沒有結束則依然使用上一輪次的對話目標作為當前輪次的對話目標;得到當前輪次的對話目標后,調用ResponseGeneration模塊生成最終的回復Y.

圖2 DGRDG模型總體架構

2.3 IsGoalEnd模塊

鑒于預訓練模型在分類任務上的優異表現,本模塊融合BERT-wwm(之后用BERT表示)[16]及BiLSTM構建回歸模型.首先將對話歷史H與上一輪次的對話目標gt-1拼接(若超過模型最大輸入長度,則從后往前截取到標點符號處)后形成一個句子,將其輸入至BERT得到整個句子的矩陣,表示為

HI=BERT([h1;h2;…;ht-1;gt-1]).

(1)

(2)

若PIsGoalEnd>0.5,表示上一輪次的對話目標已經結束,需要生成新的對話目標作為當前輪次的對話目標;若PIsGoalEnd≤0.5,則表示上一輪次的對話目標尚未結束,依然使用上一輪次的對話目標作為當前輪次的對話目標.可將該模塊表示為一個函數:IsGoalEnd(H,gt-1).

2.4 GoalPlan模塊

2.4.1 NextGoalGeneration子模塊

本模塊利用對話模型生成新的對話目標GOAL.如圖3a所示,Encoder首先獲取輸入的信息(包括知識信息K、用戶畫像P、對話歷史H)融合上下文的編碼表示,如對于知識信息K,首先獲取其編碼表示KGembedding,再將其輸入至BiGRU中:

圖3 NextGoalGeneration子模塊

Okg,hkg=BiGRU(KGembedding).

(3)

其中,KGembedding為知識信息的編碼表示,再將句子經過Embedding Layer得到相應的編碼表示,Okg與hkg則分別為BiGRU的輸出與隱藏層狀態.

采用同樣的方法,獲取用戶畫像P和對話歷史H融合上下文信息的編碼表示與隱藏層狀態:Oup,hup和Ohis與hhis;再將知識信息、用戶畫像信息及對話歷史信息融合上下文的編碼表示,Okg,Oup和Ohis拼接,得到Encoder最終編碼表示:

OEncoder=[Okg;Oup;Ohis].

(4)

將知識信息、用戶畫像信息和對話歷史信息的隱藏層狀態hkg,hup和hhis進行拼接和線性變換,得到Encoder最終的隱藏層狀態,用于初始化Decoder的隱藏層狀態:

hEncoder=W[hkg;hup;hhis]+b.

(5)

其中,W,b分別為可學習的參數和偏置.

(6)

(7)

(8)

γs-1=softmax(γs-1′),

(9)

as-1=(γs-1)TOEncoder.

(10)

最終采用交叉熵損失函數對該模塊進行優化,解碼時采用貪心解碼策略.

2.4.2 目標重規劃策略GRP

對話目標由兩部分構成,分別為Goal_type與Goal_topic,且Goal_type之間存在著如圖4所示的關系[9],所以可以根據Goal_type之間的關系對模型預測出的對話目標進行調整,如上一對話目標的Goal_type為“音樂推薦”,則下一對話目標的Goal_type則為“播放音樂”或“關于明星的聊天”;2.4.1節中對話模型所輸出的句子與真實值有時存在一些誤差,如真實值為“美食推薦水煮魚”,而模型的輸出則可能為“美食推薦魚”,所以可以計算預測值與候選目標集中的元素的語義相似度來對預測值進行調整.基于以上兩方面的因素,提出目標重規劃策略GRP,對2.4.1節所預測出的對話目標進行修正.

圖4 Goal_type之間關系

步驟1 首先根據上一輪次的對話目標與Goal_type之間的關系,篩選出Goal_type候選集,如上一輪次的對話目標為“天氣信息推送”,則Goal_type候選集為[“音樂推薦”, “美食推薦”, “再見”].

步驟2 將Goal_type候選集中需要Goal_topic的元素(“美食推薦”和“音樂推薦”)與知識信息中的實體進行排列組合,構成對話目標候選集,如[“音樂推薦一剪梅”, “音樂推薦月亮代表我的心”,…,“美食推薦水煮魚”,“美食推薦口水雞”,…, “再見”],其中“再見”為不需要Goal_topic的Goal_type,所以不參與排列組合的過程.

步驟3 將2.3節所輸出的對話目標與步驟2構建的對話目標候選集中的每一個元素計算TF-IDF值作為得分,并選擇對話目標候選集中得分最大的元素作為最終的對話目標.

可將2.4.1節與2.4.2節結合,共同表示為一個函數:GoalPlan(K,P,H).

2.5 ResponseGeneration模塊

在本模塊中,將采用與2.4.1節中相似的架構生成最終的回復Y.為了能夠獲取融入對話目標信息的對話歷史表示,需將當前輪次的對話目標GOAL加在對話歷史之前.并且在利用式(3)計算出融合上下文的各個輸入信息的表示后,使用一種交互注意力機制[17]計算對話歷史表示與知識信息以及用戶畫像的注意力,得到融合對話歷史的知識信息表示和融入對話歷史的用戶畫像表示.并按照式(4)將各個輸入信息進行拼接,得到Encoder最終的編碼表示.再使用與2.4.1節中相同的Decoder架構生成最終的回復Y.與2.4.1節相同,本模塊采用交叉熵損失函數對該模塊進行優化,解碼時采用貪心解碼策略.可將該模塊表示為一個函數:ResponseGeneration(K,P,H, GOAL).

3 實驗與分析

3.1 訓練與推理策略

總體模型的三個模塊進行分別訓練,并在測試時組裝在一起.具體處理過程如算法1所示.第1行將第1個對話目標賦值給GOAL,并給H′與j賦初值,H′為循環過程中的對話歷史,j表示當前是第j個對話目標.由于對話目標是殘缺的,需要對殘缺的對話目標進行補充,所以需要對所有的對話歷史進行遍歷,如第2行所示.第3行將對話歷史中第i條話語加入H′中,第4行調用IsGoalEnd模塊判斷針對當前的對話歷史H′,當前的對話目標GOAL是否結束.若需生成下一對話目標.由于已知對話目標的總個數為ng-1,且已知最后兩個對話目標,所以第6行判斷需生成的對話目標是否為倒數第二個,若是倒數第二個,則第7行直接將已知的倒數第二個對話目標賦值給GOAL;否則,第8行再判斷需生成的對話目標是否為倒數第一個,若是倒數第一個則第9行直接將已知的倒數第一個對話目標賦值給GOAL;若不是,則第11行調用GoalPlan模塊生成新的對話目標賦值給GOAL.第14行判斷對話歷史是否已經全部遍歷完成,如果尚未遍歷完成,則遍歷下一條對話歷史;若已遍歷完成,則在第17行調用ResponseGeneration模塊生成最終的回復Y,至此循環結束,并在第20行輸出所生成的回復Y.

算法1 對話模型引導的推薦對話生成DGRDG.

輸入:用戶畫像P、知識信息K,對話歷史H={h1,h2,…,ht-1},對話目標G={g1,g2,…,gng},

輸出:回復Y.

1 GOAL=g1,H′={},j=1

2 Fori=1,2,…,t-1 Do

3 將hi加入H′中

4 If IsGoalEnd(H′,GOAL)> 0.5

5j++

6 Ifj==ng-1

7 GOAL=gng-1

8 Else Ifj≥ng-1

9 GOAL=gng

10 Else

11 GOAL=GoalPlan(K,P,H′)

12 End If

13 End If

14 Ifi

15i++

16 Else

17Y=ResponseGeneration(K,P,H′, GOAL)

18 End If

19 End For

20 ReturnY

3.2 數據集

本文使用DuRecDial數據集[9],由于其中測試集的標注值沒有發布,所以將原DuRecDial數據集中的驗證集作為測試集,原DuRecDial數據集中的訓練集隨機選擇10%作為驗證集,原DuRecDial數據集中的訓練集剩下的90%作為訓練集進行實驗.

3.3 評價指標

對于整體模型,采用F1衡量字粒度的重合程度,BLEU@n衡量n-gram的重合程度,同時采用DISTINCT@n衡量n-gram對話內容多樣性.由于GoalPlan模塊只可生成一個對話目標,該對話目標也只含有一個推薦實體,所以在推薦方面將采用推薦系統中的Hit@1作為評價指標.并且,將采用準確率(即生成的對話目標與標注值完全相同的概率)作為評價指標評價GoalPlan模塊的性能.

3.4 模型說明

3.4.1 與DGRDG模型對比的方法

GPT-2[18]:一種使用大規模語料訓練的生成式預訓練模型.

Transformer[19]:一種基于注意力機制的Encoder-Decoder架構.

KBRD[5]:一種基于知識圖譜的對話推薦系統.

KGSF[6]:一種結合了面向單詞和面向實體的知識圖譜的對話推薦系統.

ReDial[4]:一種融合了基于用戶的協同過濾和情感分析的對話推薦系統.

TG-ReDial[7]:一種基于話題引導對話推薦的模型.

針對以上模型,使用Zhou等[20]開源的CRSLab庫進行實現.

3.4.2 與GoalPlan模塊對比的方法

對于GoalPlan模塊,為驗證本文所提出的對話模型生成對話目標的有效性,以及GRP策略的有效性,將與以下模型進行對比:

BERT[16]:一種經過微調就可以在下游的分類任務中達到很好的分類效果的預訓練模型.

BERT+LSTM:在BERT后附加LSTM來對上下文信息進行增強.

MTTDSC[21]:一種基于GRU的應用于多任務分類的深度學習模型.

Seq2SeqDU[22]:一種將對話狀態跟蹤轉換為序列到序列標簽預測任務的模型.

使用Pytorch框架復現了前兩種模型,對于MTTDSC和Seq2SeqDU模型則使用了文獻[22]中所開源的代碼.

3.5 實驗結果與分析

3.5.1 自動評價

各模型在F1,BLEU@n,DISTINCT@n以及Hit@1等自動評價指標上的表現見表1.本文所提出的DGRDG模型在BLEU@n指標上均優于所對比的模型,說明DGRDG模型能產生與標注值更相似的回答.但DISTINCT@n指標中只有DISTINCT@1最優,在DISTINCT@2~4上的表現均弱于TG-ReDial模型,原因是由于TG-ReDial模型在推薦實體的選擇上多樣性較高,導致模型所輸出的回復在內容多樣性上占據了優勢.DGRDG模型在推薦的準確性上是最優的,在Hit@1指標上相比于次好的KGSF模型高出0.09,而在DISTINCT@n上占優的TG-ReDial模型在Hit@1指標上的表現反而是最差的,原因在于TG-ReDial模型在推薦實體的選擇上較多而導致推薦準確度不高.在與標注值字粒度的重合程度上,GPT-2由于其強大的文本生成能力,在F1指標上表現最優.DGRDG模型在該指標上的表現相比于其他模型依然是最好的,而且相比于GPT-2,在F1評價指標上僅相差0.02.

表1 各模型自動評價指標得分

為了驗證所提出的目標重規劃策略GRP的有效性,進行消融實驗,即將目標重規劃策略從整體模型中移除,直接使用NextGoalGeneration子模塊所生成的目標進行回復的生成,最后的實驗結果在各個評價指標中都造成了不同程度的下降,尤其在Hit@1指標上,相比于原模型減少了0.05.

在對話目標預測方面,由于本文所使用的GoalPlan模塊是由兩個階段所構成,所以為了實驗的公平性和衡量GRP策略的性能,將GRP策略與其他對比模型相結合,具體實驗結果見圖5.本文所提出的GoalPlan模塊在準確率上均優于所對比的模型,消融實驗表明,GRP策略為模型在預測準確率上帶來了3.93%的提升.所對比的模型表現差的原因,是分類模型或序列標注模型在解決對話目標預測的問題時,由于標簽的數量太大,模型不能很好地學習到輸入數據與標簽的關系.對于所對比的模型而言,加入GRP策略后,帶來的提升并不明顯(最多只帶來0.54%的提升).究其原因,是因為本文提出的GRP策略是在字粒度上對預測出的對話目標進行修正,與本文所用的NextGoalGeneration適配程度較高,但對于其他所對比模型,由于其是分類模型或序列標注模型,所輸出的結果都是標簽級別的,GRP策略所能帶來的提升并不顯著.

說明:NextGoalGeneration為本文所提出的NextGoalGeneration模塊;+GRP表示添加GRP策略后模型的表現.

3.5.2 人工評價

為了能夠更好地對模型的輸出結果進行評估,引入人工評價,評價的指標為:①流暢性,用于評估模型的輸出結果是否符合人類的說話習慣;②目標完成度,用于評價模型生成的回復是否完成了對話目標;③信息性,用于評價模型在生成回復時是否準確地使用了所輸入的知識信息;④相關性,用于評價模型生成的回復是否與對話的語境相關.

所有的指標都分為3個等級:“0”表示差;“1”表示一般;“2”表示好.邀請一家專業的數據標注公司進行人工評價,標注人員一共有三位,每個人都需對全部的數據進行評價,且為保證公平,模型對評價人員是匿名的,最后得分取三位標注人員所給出得分的平均值,結果如表2所示.可以看出,所提出的模型在各指標上的表現都顯著地超過了所對比的模型,并且消融實驗中,模型在沒有GRP策略的情況下,相比于所對比的模型依然占據著優勢.在目標完成度、信息性和相關性的指標上相比于完整的模型下降幅度較大,都在0.4左右,但在流暢性方面只下降了0.14.這樣的結果說明了所提出的DGRDG模型的有效性,而且由于模型主要依靠準確的目標作為指導,所以這樣的實驗結果同時也證明了所提出的GRP策略的有效性.

表2 各模型人工評價得分

4 結 語

本文提出了一種利用對話模型引導的推薦對話生成模型DGRDG,并在對話目標生成模塊生成當前的對話目標后,為了修正該模塊的輸出結果,引入目標重規劃策略 GRP來提高對話目標預測的準確率.經過在DuRecDial數據集上進行實驗,結果表明所提出的模型在生成的回復質量和推薦質量都擁有較好的效果,消融實驗也證明了所提出的目標重規劃策略GRP的有效性.

猜你喜歡
模塊目標模型
適用于BDS-3 PPP的隨機模型
28通道收發處理模塊設計
“選修3—3”模塊的復習備考
自制空間站模型
模型小覽(二)
離散型隨機變量分布列的兩法則和三模型
集成水空中冷器的進氣模塊
中學英語之友·上(2008年2期)2008-04-01
中學英語之友·上(2008年2期)2008-04-01
中學英語之友·上(2008年1期)2008-03-20
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合