国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成

2022-12-15 13:19張曉宇李冬冬任鵬杰陳竹敏任昭春
計(jì)算機(jī)研究與發(fā)展 2022年12期
關(guān)鍵詞:存儲(chǔ)單元實(shí)體向量

張曉宇 李冬冬 任鵬杰 陳竹敏 馬 軍 任昭春

(山東大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 山東青島 266237)(xiaoyu.zhang@mail.sdu.edu.cn)

醫(yī)療是人們生活中不可少的組成部分,但是部分患者的就醫(yī)條件受到制約.一方面,醫(yī)療資源稀缺,醫(yī)生供不應(yīng)求;另一方面,患者受時(shí)空限制,無(wú)法抽出時(shí)間或行程不便,導(dǎo)致許多患者無(wú)法及時(shí)得到診斷和治療.

基于患者需求與客觀條件制約之間的沖突,我們希望模擬醫(yī)生對(duì)用戶的詢問作出回答,且為用戶提供更便利的在線咨詢方式,從而解決時(shí)空沖突問題.本文提出了一種基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型(memory networks based knowledge-aware medical dialogue generation model, MKMed).

記憶網(wǎng)絡(luò)主要解決任務(wù)的知識(shí)源多、需要容納大量信息和進(jìn)行復(fù)雜推理等需求,且能夠使長(zhǎng)期記憶得到更好的保存.Weston等人[1]在2014年首先提出了記憶網(wǎng)絡(luò)的結(jié)構(gòu)體系,該網(wǎng)絡(luò)包含4個(gè)模塊,“input feature map”用于編碼知識(shí)、“generalization”用于更新舊記憶、“output feature map”用于產(chǎn)生新的輸出向量、“response”用于將上一模塊的輸出轉(zhuǎn)換為回復(fù).Sukhbaatar等人[2]在2015年擴(kuò)展了這項(xiàng)工作,使得記憶網(wǎng)絡(luò)可以被端到端的訓(xùn)練.Kumar等人[3]在2016年提出了動(dòng)態(tài)記憶網(wǎng)絡(luò),使其在Face-book的bAbI數(shù)據(jù)集上進(jìn)行的“Counting and Lists/Sets”任務(wù)中得到了很大的改進(jìn).Xu等人[4]在2016年通過在最后一層推理中加入復(fù)制機(jī)制,解決了超出詞匯表單詞如電話號(hào)碼、航班號(hào)等的問題.

本文提出的基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型恰好面臨著記憶網(wǎng)絡(luò)針對(duì)的難點(diǎn),因?yàn)樾枰瑫r(shí)處理醫(yī)患的對(duì)話歷史信息以及醫(yī)療數(shù)據(jù)庫(kù)中的知識(shí)信息,即信息源多且復(fù)雜,需要多步的推理,所以模型采用了記憶網(wǎng)絡(luò)的基本理念,將各信息源進(jìn)行編碼,寫入記憶存儲(chǔ)單元,然后結(jié)合記憶網(wǎng)絡(luò)中存儲(chǔ)的向量進(jìn)行解碼,生成最終回復(fù).

根據(jù)生活常識(shí),為了給出正確的診斷和適當(dāng)?shù)闹委?,醫(yī)生通??紤]癥狀和疾病.如果該醫(yī)生以前遇到過相同的癥狀和疾病,則會(huì)通過經(jīng)驗(yàn)給出答案,如果出現(xiàn)的是罕見的疾病,該醫(yī)生通常會(huì)查閱相關(guān)的醫(yī)學(xué)文獻(xiàn).醫(yī)學(xué)文獻(xiàn)和醫(yī)生的經(jīng)驗(yàn)可以被視為醫(yī)療知識(shí).總結(jié)上述過程,我們發(fā)現(xiàn):醫(yī)學(xué)知識(shí)是生成回復(fù)不可缺少的一部分.因此本文提出的模型將外部知識(shí)納入醫(yī)學(xué)對(duì)話的生成.

知識(shí)感知生成任務(wù)指的是根據(jù)準(zhǔn)確的外部知識(shí)生成回復(fù).根據(jù)知識(shí)的結(jié)構(gòu)進(jìn)行劃分,目前此類任務(wù)可以被分為2類,分別是結(jié)構(gòu)化知識(shí)感知生成以及非結(jié)構(gòu)化知識(shí)感知生成任務(wù),前者主要利用三元組知識(shí)[5-6]或者知識(shí)圖譜[7-8],后者多基于非結(jié)構(gòu)化文本知識(shí)[9-10].本文提出的模型MKMed利用三元組知識(shí)優(yōu)化回復(fù)生成.Liu等人[5]在2018年提出了NKD模型,該模型設(shè)計(jì)了實(shí)體匹配和實(shí)體發(fā)散模塊,直接結(jié)合對(duì)話歷史的編碼向量,使用多層感知機(jī)等抽取并預(yù)測(cè)相關(guān)三元組知識(shí).2019年Liu等人[7]提出的AKGCM模型根據(jù)對(duì)話歷史擴(kuò)充知識(shí)圖譜,以便在開放域?qū)υ捜蝿?wù)中與對(duì)話歷史更好地結(jié)合.2019年Lian等人[9]提出了PostKS模型,該模型利用非結(jié)構(gòu)化知識(shí)的后驗(yàn)分布來(lái)指導(dǎo)回復(fù)生成時(shí)知識(shí)的選擇,從而優(yōu)化基于知識(shí)的對(duì)話回復(fù)生成.目前存在的大多數(shù)知識(shí)感知生成方法無(wú)法應(yīng)用于醫(yī)療場(chǎng)景,如只針對(duì)從開放域知識(shí)庫(kù)中選擇知識(shí);或者無(wú)法處理規(guī)模龐大醫(yī)療有關(guān)的外部數(shù)據(jù)庫(kù);又或無(wú)法解決醫(yī)療對(duì)話任務(wù)中需要根據(jù)對(duì)話歷史多步推理進(jìn)行診斷的問題等.因此本文提出的MKMed模型引入專用的醫(yī)學(xué)領(lǐng)域三元組知識(shí)進(jìn)行知識(shí)實(shí)體追蹤以及2階段的預(yù)測(cè),從而多步篩選,并使用記憶網(wǎng)絡(luò)以及多跳注意力機(jī)制進(jìn)行推理.

圖1是一組醫(yī)患對(duì)話的例子,圖1(a)是對(duì)話歷史,圖1(b)是出現(xiàn)在對(duì)話歷史中有助于診斷和醫(yī)療推薦的實(shí)體與外部知識(shí).患者和醫(yī)生的對(duì)話歷史中可能出現(xiàn)許多疾病、癥狀,我們可以通過直接精確詞匹配從對(duì)話歷史中提取這些實(shí)體.圖1(b)部分顯示了出現(xiàn)在對(duì)話中的疾病和藥品部分的實(shí)體以及對(duì)應(yīng)的癥狀、病原和治療方法等三元組知識(shí).我們發(fā)現(xiàn)圖1(b)展示的三元組知識(shí),如〈過敏性鼻炎;癥狀;流鼻涕,打噴嚏,鼻子發(fā)癢〉和〈丙酸氟替卡;適用;鼻炎〉,有助于診斷和推薦藥物.因此可以佐證:理解對(duì)話歷史中的實(shí)體對(duì)于生成正確的回復(fù)至關(guān)重要.

Fig. 1 Example of multi-turn doctor-patient dialogue圖1 醫(yī)患多輪對(duì)話示例

我們把這些從對(duì)話歷史中抽取的實(shí)體對(duì)應(yīng)的知識(shí)命名為追蹤知識(shí).考慮到如果僅匹配出癥狀等實(shí)體可能導(dǎo)致缺乏治療信息,又部署了知識(shí)預(yù)測(cè)器來(lái)篩選出可用于回復(fù)生成的實(shí)體對(duì)應(yīng)的知識(shí),這些知識(shí)被稱為預(yù)測(cè)知識(shí);然后,知識(shí)寫入模塊將追蹤知識(shí)和預(yù)測(cè)知識(shí)的三元組編碼成向量表達(dá),并分別寫入對(duì)應(yīng)的記憶網(wǎng)絡(luò)存儲(chǔ)單元;最終,回復(fù)生成模塊通過整合在記憶網(wǎng)絡(luò)中保存的信息生成回復(fù).

本文在帶有外部知識(shí)的大規(guī)模醫(yī)療對(duì)話數(shù)據(jù)集KaMed[11]上進(jìn)行了相關(guān)實(shí)驗(yàn),該數(shù)據(jù)集中的醫(yī)療對(duì)話收集來(lái)自在線中文醫(yī)療咨詢平臺(tái)“春雨醫(yī)生”[12],醫(yī)學(xué)知識(shí)爬取來(lái)自最大的中文醫(yī)學(xué)知識(shí)平臺(tái)“中文醫(yī)學(xué)知識(shí)圖譜”[13],皆為真實(shí)數(shù)據(jù).實(shí)驗(yàn)結(jié)果表明基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型在回復(fù)生成的流暢性、多樣性、正確性和專業(yè)性等方面顯著優(yōu)于大部分基準(zhǔn)模型.

1 相關(guān)工作

現(xiàn)有的醫(yī)學(xué)對(duì)話回復(fù)生成模型大多是任務(wù)導(dǎo)向型對(duì)話類型,患者表達(dá)癥狀,對(duì)話系統(tǒng)將其分類為相應(yīng)的疾病.最初醫(yī)療診斷任務(wù)多是基于電子健康記錄進(jìn)行自動(dòng)診斷[14],如2018年Tou等人[15]發(fā)表的論文中提出的感染檢測(cè)系統(tǒng).但是電子健康記錄需要通過復(fù)雜專業(yè)的醫(yī)療診斷程序來(lái)獲得,信息獲取的代價(jià)很高.為了解決這個(gè)問題,Wei等人[16]在2018年的論文中提出了利用病人自述以及自動(dòng)識(shí)別對(duì)話歷史信息中出現(xiàn)過的癥狀,然后通過強(qiáng)化學(xué)習(xí)和模板來(lái)產(chǎn)生回復(fù)的方法.在此基礎(chǔ)上,Lin等人[17]在2019年的論文中通過從數(shù)據(jù)集語(yǔ)料庫(kù)中抽取癥狀圖來(lái)對(duì)癥狀之間的關(guān)系進(jìn)行建模,以提高癥狀提取識(shí)別的性能.Xu等人[18]在2019年的論文開發(fā)了一個(gè)對(duì)話系統(tǒng),引入外部知識(shí)圖譜,結(jié)合已經(jīng)標(biāo)注好的患者對(duì)話信息,顯示考慮癥狀與疾病的概率,結(jié)合強(qiáng)化學(xué)習(xí)做出決策概率,最后依然用模板生成回復(fù).雖然以上工作都致力于研究醫(yī)療對(duì)話生成這一課題,但不能應(yīng)用于真實(shí)的醫(yī)療場(chǎng)景.一方面對(duì)話歷史中出現(xiàn)的癥狀和疾病等需要大量的人工標(biāo)注,是勞動(dòng)密集型的,并且醫(yī)療診斷任務(wù)被視為分類問題,隨著疾病和癥狀對(duì)的增加,模型的學(xué)習(xí)復(fù)雜度會(huì)變得很高.另一方面,醫(yī)學(xué)領(lǐng)域知識(shí)通常是動(dòng)態(tài)變換和大規(guī)模的,現(xiàn)有的方法只處理有限的特定疾病,這導(dǎo)致它們不適用于疾病和癥狀多的場(chǎng)景.最后上述模型都使用給定的模板生成回復(fù),不能同時(shí)給出診斷和醫(yī)療建議,用戶使用體驗(yàn)不佳.因此本文將外部知識(shí)融入醫(yī)學(xué)對(duì)話生成,使用精確詞匹配自動(dòng)識(shí)別醫(yī)療實(shí)體并可動(dòng)態(tài)擴(kuò)展外部實(shí)體知識(shí)庫(kù).

2 研究方法

2.1 問題定義

醫(yī)療對(duì)話生成任務(wù)需給定醫(yī)患對(duì)話歷史,對(duì)話歷史由多輪句子組成,可表示為H={S1,S2,…,S|H|}.

給定外部實(shí)體知識(shí)數(shù)據(jù)庫(kù),醫(yī)療實(shí)體集合用E={e1,e2,…,e|E|}來(lái)表示.根據(jù)Bordes等人[19]在2015年提出的方法,將事實(shí)定義為包含頭實(shí)體h、關(guān)系r和與頭實(shí)體h具有關(guān)系r的尾實(shí)體集合t的三元組.本文中每條知識(shí)以(頭實(shí)體h,關(guān)系r,尾實(shí)體集合t)的三元組形式來(lái)組織,表示為τi,j.所有以ei為頭實(shí)體的三元組知識(shí)集合表示為G(ei)={τi,1,τi,2,…,τi,|G(ei)|}.每條知識(shí)經(jīng)分詞后由一系列詞組成,可表示為τi,j={Wi,j,1,Wi,j,2,…,Wi,j,|τi,j|}.

模型需要根據(jù)對(duì)話歷史H生成回復(fù),表示為Y={y1,y2,…,yi,…,y|Y|},yi代表Y中的第i個(gè)詞.

2.2 模型結(jié)構(gòu)

本文提出了基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型.模型需要在與用戶的交互過程中收集用戶信息,模擬醫(yī)生在外部數(shù)據(jù)庫(kù)中進(jìn)行搜索并預(yù)測(cè)實(shí)體知識(shí),最后結(jié)合信息,生成一個(gè)通順回復(fù).模型框架如圖2所示,主要包含4個(gè)模塊:對(duì)話歷史編碼模塊、知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊、知識(shí)寫入模塊和回復(fù)生成模塊.

1) 對(duì)話歷史編碼模塊讀取給定的對(duì)話歷史H并編碼成句子級(jí)別表示,寫入“歷史記憶”存儲(chǔ)單元.

2) 知識(shí)實(shí)體追蹤部分追蹤對(duì)話歷史中出現(xiàn)過的實(shí)體及對(duì)應(yīng)知識(shí),知識(shí)實(shí)體預(yù)測(cè)部分搜索外部數(shù)據(jù)庫(kù),預(yù)測(cè)可能出現(xiàn)在生成的回復(fù)里的實(shí)體,并且輸出其在數(shù)據(jù)庫(kù)內(nèi)對(duì)應(yīng)的知識(shí).

3) 知識(shí)寫入模塊依賴知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊,以它輸出的知識(shí)集合作為輸入,將三元組進(jìn)行編碼,然后寫入“追蹤記憶”存儲(chǔ)單元和“預(yù)測(cè)記憶”存儲(chǔ)單元.

4) 回復(fù)生成模塊依賴對(duì)話歷史編碼模塊和知識(shí)寫入模塊,集成它們寫入的4個(gè)記憶網(wǎng)絡(luò)存儲(chǔ)單元:追蹤記憶、注意力記憶、預(yù)測(cè)記憶和歷史記憶,生成目標(biāo)回復(fù).

Fig. 2 Framework of MKMed圖2 基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型框架

2.3 對(duì)話歷史編碼模塊

為了解決句子信息稀釋問題,更好地進(jìn)行信息傳遞,本模塊使用分層循環(huán)神經(jīng)網(wǎng)絡(luò)編碼解碼結(jié)構(gòu)(hierarchical recurrent encoder-decoder, HRED).

給定對(duì)話歷史H={S1,S2,…,S|H|},首先利用HRED的編碼器循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)句子Si進(jìn)行編碼,得到句子級(jí)別表達(dá){So,1,So,2,…,So,|H|},So,i∈h,h是門控循環(huán)單元(gate recurrent unit, GRU)的隱狀態(tài)維度.然后依次向HRED的上下文循環(huán)神經(jīng)網(wǎng)絡(luò)輸入{So,1,So,2,…,So,|H|},得到帶有上下文信息的句子級(jí)別表達(dá)D={d1,d2,…,d|H|},最后時(shí)刻的隱層輸出記為dh,并將D寫入“歷史記憶”存儲(chǔ)單元.

根據(jù)Sukhbaatar等人[2]在2015年發(fā)表的端到端記憶網(wǎng)絡(luò)工作里提到的多跳注意力機(jī)制方法,本文對(duì)歷史記憶存儲(chǔ)器中D進(jìn)行k跳注意力運(yùn)算.第t跳運(yùn)算使用的query記為mt,D內(nèi)向量作為key和value,特別地,dh作為初始querym0.具體公式描述如式(1)所示:

(1)

進(jìn)行k跳運(yùn)算后,得到“注意力記憶”存儲(chǔ)單元Mh的內(nèi)容,記作Mh={m1,m2,…,m|k|}.最后,用基于GRU的循環(huán)神經(jīng)網(wǎng)絡(luò)編碼Mh內(nèi)向量,最后時(shí)刻輸出的隱狀態(tài)向量聚合了Mh的所有信息,記為mh.

2.4 知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊

患者希望得到更專業(yè)的醫(yī)療建議,僅從對(duì)話歷史中獲取信息是不可行的,因此本文引入了額外信息:外部實(shí)體知識(shí)數(shù)據(jù)庫(kù).因?yàn)閹?kù)中包含所有搜集到的醫(yī)療實(shí)體及對(duì)應(yīng)知識(shí),數(shù)據(jù)量龐大,且絕大部分?jǐn)?shù)據(jù)與當(dāng)前對(duì)話無(wú)關(guān),所以將其全部編碼存入記憶網(wǎng)絡(luò)是不可行且非必要的.為了解決此問題,本文設(shè)計(jì)了知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊.

知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊分為2個(gè)部分:一部分負(fù)責(zé)追蹤對(duì)話歷史中出現(xiàn)過的實(shí)體,這些實(shí)體與當(dāng)前醫(yī)療對(duì)話密切相關(guān),對(duì)應(yīng)的知識(shí)是生成與上下文一致的回復(fù)的關(guān)鍵;另一部分進(jìn)行實(shí)體預(yù)測(cè),保證回答的多樣性和專業(yè)性,為推理出沒有出現(xiàn)在對(duì)話歷史的實(shí)體和知識(shí)提供基礎(chǔ).

2.4.1 知識(shí)實(shí)體追蹤

知識(shí)實(shí)體追蹤部分需要跟蹤在對(duì)話歷史中出現(xiàn)過的實(shí)體.通過精確詞匹配,該部分將分詞后的對(duì)話歷史H與數(shù)據(jù)庫(kù)中的實(shí)體名進(jìn)行匹配,如果匹配到實(shí)體e,我們則稱e為追蹤實(shí)體,并將其對(duì)應(yīng)的三元組知識(shí)集合G(e)存儲(chǔ)在“追蹤記憶”存儲(chǔ)單元內(nèi).本文把追蹤實(shí)體的集合命名為Etracker,對(duì)應(yīng)三元組知識(shí)集合命名為Gtracker={G(e);e∈Etracker}.

2.4.2 知識(shí)實(shí)體預(yù)測(cè)

知識(shí)實(shí)體預(yù)測(cè)部分期望從數(shù)據(jù)庫(kù)中篩選出從未出現(xiàn)在對(duì)話歷史,卻需在回復(fù)中使用的實(shí)體和知識(shí).知識(shí)預(yù)測(cè)部分又分為粗粒度篩選和細(xì)粒度篩選2個(gè)階段.

1) 粗粒度篩選階段

粗粒度篩選使用統(tǒng)計(jì)實(shí)體之間共現(xiàn)概率的方法.該階段首先利用模型訓(xùn)練時(shí)使用的全部醫(yī)患對(duì)話記錄數(shù)據(jù)集,統(tǒng)計(jì)出所有實(shí)體間的共現(xiàn)概率,記共現(xiàn)概率矩陣為T,T∈b×b,這里b為外部數(shù)據(jù)庫(kù)中的實(shí)體數(shù)目,Ti,j為實(shí)體ei和實(shí)體ej同時(shí)出現(xiàn)的概率.接著該階段將Etracker轉(zhuǎn)換為one-hot向量表示vtracker∈b,如果實(shí)體ei為追蹤實(shí)體,則否則在粗粒度篩選階段,任意實(shí)體被選為預(yù)測(cè)實(shí)體的概率vpredictor∈b用vtracker與T相乘得到,因此未在對(duì)話歷史中出現(xiàn)的實(shí)體也有被選中概率,如式(2)所示:

vpredictor=vtracker×T.

(2)

又因?yàn)楸疚南M黾踊貜?fù)的多樣性,避免預(yù)測(cè)實(shí)體與追蹤實(shí)體的重疊度過大,所以從實(shí)體全集中過濾掉追蹤實(shí)體的部分,剩余部分記為Eglobal,如式(3)所示:

Eglobal={e;e∈E∧e?Etracker}.

(3)

我們?cè)贓global中根據(jù)vpredictor選擇概率最高的c個(gè)候選實(shí)體,對(duì)應(yīng)集合記為Ecandidate,這里c是候選實(shí)體數(shù)量的超參.

2) 細(xì)粒度篩選階段

細(xì)粒度篩選階段旨在從Ecandidate的c個(gè)候選實(shí)體中篩選出標(biāo)準(zhǔn)預(yù)測(cè)實(shí)體.主要用到余弦相似度來(lái)表示實(shí)體被選中的匹配度.

實(shí)體e的表示向量用它的三元組知識(shí)集合G(e)編碼而來(lái),如式(4)所示:

ti=BiGRU(τi),

(4)

(5)

(6)

使用式(4)~(6),我們可以計(jì)算得到Ecandidate和Etracker中各實(shí)體對(duì)應(yīng)的向量表達(dá),分別記為ec和et.

在此基礎(chǔ)上,與式(5)(6)的計(jì)算過程相似,本文使用式(7)得到追蹤實(shí)體集合Etracker的表達(dá)向量htc:

(7)

htc+dh包含對(duì)話歷史和追蹤實(shí)體集合的信息,本文計(jì)算它與候選實(shí)體集合Ecandidate中實(shí)體的表達(dá)向量ec的余弦相似度s,如式(8)所示:

s=cos(ec,htc+dh).

(8)

本文選擇s最高的f個(gè)實(shí)體為預(yù)測(cè)實(shí)體,記集合為Epredictor,其中f是超參,是目標(biāo)預(yù)測(cè)實(shí)體個(gè)數(shù).又將Epredictor在外部數(shù)據(jù)庫(kù)中對(duì)應(yīng)的三元組知識(shí)集合存放在“預(yù)測(cè)記憶”存儲(chǔ)單元內(nèi).

2.5 知識(shí)寫入模塊

本模塊將“預(yù)測(cè)記憶”和“追蹤記憶”存儲(chǔ)單元中每條知識(shí)τ用雙向門控循環(huán)單元編碼,最后時(shí)刻隱層輸出的向量τh記為知識(shí)的向量表達(dá).如式(9)所示:

τh=Wτ×BiGRU(τ),

(9)

其中Wτ是可訓(xùn)練矩陣,記編碼后的“追蹤記憶”存儲(chǔ)單元為Mt,記編碼后的“預(yù)測(cè)記憶”存儲(chǔ)單元為Mp.另外,我們把雙向門控循環(huán)單元編碼過程中每時(shí)刻輸出的詞級(jí)別向量表達(dá),即“追蹤記憶”和“預(yù)測(cè)記憶”存儲(chǔ)單元中所有知識(shí)分詞{W1,W2,…,W|B|}的表示,記為{Wo,1,Wo,2,…,Wo,|B|}.

2.6 回復(fù)生成模塊

回復(fù)生成模塊利用在對(duì)話歷史編碼模塊中生成的“歷史記憶”存儲(chǔ)單元內(nèi)D,dh;“注意力記憶”存儲(chǔ)單元內(nèi)Mh,mh;知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊中生成的“追蹤記憶”存儲(chǔ)單元Mt;“預(yù)測(cè)記憶”存儲(chǔ)單元Mp生成回復(fù).

本文在此模塊中也引入注意力機(jī)制,運(yùn)算過程與式(7)相同.為了方便描述,將回復(fù)生成模塊在時(shí)刻t-1預(yù)測(cè)出目標(biāo)詞時(shí)產(chǎn)生的狀態(tài)向量記為ht-1,作為注意力運(yùn)算的query,另記作Q,而D和Mh內(nèi)向量分別作為key和value,另記作K與V,運(yùn)算得到的輸出向量O分別記作“歷史記憶”的表示向量chis和“注意力記憶”的表示向量cmem,運(yùn)算過程如式(10)所示:

(10)

(11)

(12)

(13)

(14)

將時(shí)刻t-1生成詞對(duì)應(yīng)的詞嵌入與cmem和chis拼接,用門控循環(huán)單元編碼,可得時(shí)刻t的第1個(gè)狀態(tài)向量,記作ht,如式(15)所示:

ht=GRU([emb(yt-1);cmem;chis]).

(15)

(16)

(17)

其中Wtrans∈h×2h和Wgen∈sizevocab×h是可訓(xùn)練參數(shù),sizevocab是字典大小.

我們通過觀察標(biāo)準(zhǔn)回復(fù)發(fā)現(xiàn),目標(biāo)回復(fù)大概率帶有選中實(shí)體對(duì)應(yīng)的知識(shí)中的分詞,故而為了生成更接近標(biāo)準(zhǔn)的回復(fù),本文引入復(fù)制網(wǎng)絡(luò),設(shè)計(jì)時(shí)刻t輸出詞yt的復(fù)制概率為pcopy(yt),計(jì)算過程如式(18)所示:

(18)

其中Wo,j是“追蹤記憶”和“預(yù)測(cè)記憶”存儲(chǔ)單元內(nèi)第j個(gè)知識(shí)分詞Wj的向量表示,I(x,y)為判斷目標(biāo)x是否等于y的指標(biāo)函數(shù),即相等則返回1,否則返回0,Z是歸一化因子.

時(shí)刻t生成詞yt的概率分布為歸一化后的復(fù)制概率pcopy(yt)與生成概率pgen(yt)的和,記為p(yt),如式(19)所示:

p(yt)=softmax(pcopy(yt)+pgen(yt)).

(19)

2.7 模型訓(xùn)練

模型有2個(gè)訓(xùn)練目標(biāo),分別是正確預(yù)測(cè)實(shí)體以及生成與標(biāo)準(zhǔn)一致的回復(fù),所以本文分別在知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊以及回復(fù)生成模塊內(nèi)計(jì)算損失.

在知識(shí)實(shí)體預(yù)測(cè)部分的粗粒度篩選過程中,由于非標(biāo)準(zhǔn)預(yù)測(cè)實(shí)體個(gè)數(shù)過多,即僅極少數(shù)實(shí)體出現(xiàn)在標(biāo)準(zhǔn)回復(fù)中,計(jì)算每個(gè)實(shí)體的余弦相似后求負(fù)對(duì)數(shù)似然損失會(huì)使計(jì)算量超負(fù)荷,所以本文使用Max-margin損失來(lái)計(jì)算實(shí)體預(yù)測(cè)損失Lpred,如式(20)所示:

(20)

其中epos和eneg為我們利用式(4)~(6)運(yùn)算得出的標(biāo)準(zhǔn)預(yù)測(cè)實(shí)體和從數(shù)據(jù)庫(kù)中采樣出的非標(biāo)準(zhǔn)預(yù)測(cè)實(shí)體得到的向量表示.受Lin等人[20]在2017年提出方法的啟發(fā),我們用因子α來(lái)緩解類間不平衡,σ是sigmoid函數(shù),K是超參.

回復(fù)生成模塊內(nèi)的生成損失Lgen計(jì)算如式(21)所示,即計(jì)算交叉熵?fù)p失函數(shù):

(21)

總的損失函數(shù)由實(shí)體預(yù)測(cè)損失Lpred和生成損失Lgen根據(jù)超參λ加權(quán)求和構(gòu)成,如式(22)所示:

L=Lgen+λ×Lpred.

(22)

3 實(shí)驗(yàn)結(jié)果與分析

3.1 實(shí)驗(yàn)數(shù)據(jù)

為了評(píng)估本文提出的基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型,本文在帶有外部知識(shí)的大規(guī)模醫(yī)療對(duì)話數(shù)據(jù)集KaMed(knowledge-aware medical dialogue dataset)[11]上進(jìn)行實(shí)驗(yàn).它主要由2部分組成:對(duì)話部分、知識(shí)部分,包含超過60 000個(gè)醫(yī)療對(duì)話和5 682個(gè)實(shí)體.對(duì)話部分是從中文在線醫(yī)療咨詢平臺(tái)“春雨醫(yī)生”上爬取的網(wǎng)頁(yè)解析而來(lái)的.知識(shí)部分收集自最大的中文醫(yī)學(xué)知識(shí)平臺(tái)“中文醫(yī)學(xué)知識(shí)圖譜”,包含了疾病、藥物以及治療技術(shù)和設(shè)備的結(jié)構(gòu)化知識(shí)描述.其中對(duì)話部分分別取3 000輪對(duì)話用于驗(yàn)證和測(cè)試,其余用于訓(xùn)練.

3.2 實(shí)驗(yàn)設(shè)置

實(shí)驗(yàn)的代碼是在pytorch-1.2.0深度學(xué)習(xí)框架上實(shí)現(xiàn)的.為了緩解計(jì)算壓力,只提取要預(yù)測(cè)的醫(yī)療信息的前10句話作為對(duì)話歷史信息輸入到模型里.字典中分詞個(gè)數(shù)限制為30000,詞嵌入維數(shù)設(shè)置為300,且模型中所有的編碼解碼器的隱層以及輸出層維數(shù)設(shè)置為512.另外在外部知識(shí)預(yù)測(cè)的粗粒度篩選中,Ecandidate的實(shí)體個(gè)數(shù)c=200,Epredicator的實(shí)體個(gè)數(shù)f=5.在實(shí)體預(yù)測(cè)損失部分中K=10.0,總損失函數(shù)的λ=1.0.實(shí)驗(yàn)使用的參數(shù)優(yōu)化器為Adam,初始學(xué)習(xí)率設(shè)置為exp(-4),隨著訓(xùn)練進(jìn)行以0.1的比率衰減,逐漸下降到exp(-5).數(shù)據(jù)集分詞使用北京大學(xué)開源分詞工具pkuseg[21].在測(cè)試過程使用的束搜索中束寬設(shè)置為5.

3.3 評(píng)價(jià)標(biāo)準(zhǔn)

本文使用了自動(dòng)評(píng)價(jià)以及人工評(píng)價(jià)2種評(píng)估方式對(duì)模型進(jìn)行評(píng)價(jià).

自動(dòng)評(píng)價(jià)主要采用BLEU@N[22]來(lái)衡量生成的回復(fù)與標(biāo)準(zhǔn)回復(fù)之間的重疊度,另外采用了Distinct@N指標(biāo),如式(23)所示:

(23)

其中,Count(unique_n_gram)表示回復(fù)中不重復(fù)的n_gram分詞數(shù)量,Count(n_gram)表示回復(fù)中n_gram分詞的總數(shù).Distinct@N用于計(jì)算生成回復(fù)的全集內(nèi)的多樣性,檢測(cè)模型是否產(chǎn)生了安全回復(fù).BLEU和Distinct指標(biāo)內(nèi)N皆取1~4.為了衡量模型引入外部知識(shí)后生成回復(fù)的正確性,本文還使用了回復(fù)中生成的實(shí)體的F1指標(biāo),即利用精確詞匹配方法從標(biāo)準(zhǔn)回復(fù)和生成回復(fù)中分別抽取出現(xiàn)的實(shí)體,以標(biāo)準(zhǔn)回復(fù)的實(shí)體集合為基準(zhǔn),計(jì)算得到生成回復(fù)的實(shí)體集合的F1指標(biāo).其中,為了防止模型重復(fù)生成對(duì)話歷史中出現(xiàn)過的醫(yī)療實(shí)體詞從而達(dá)到較高的F1指標(biāo),防止缺乏實(shí)際應(yīng)用價(jià)值的情況出現(xiàn),進(jìn)而確保獲得高F1指標(biāo)的模型生成用戶真正需要的回復(fù),我們對(duì)標(biāo)準(zhǔn)和生成回復(fù)的實(shí)體集合都進(jìn)行了篩選,刪除了在對(duì)話歷史中出現(xiàn)過的實(shí)體,僅利用回復(fù)中創(chuàng)新性提出的醫(yī)療實(shí)體來(lái)計(jì)算F1指標(biāo).為了驗(yàn)證模型是否能夠充分利用外部知識(shí),本文還加入了計(jì)算生成回復(fù)的全集中實(shí)體密度的指標(biāo),如式(24)所示:

E@d=|{r;r∈R;r∈B}|/|R|,

(24)

這里R表示生成的回復(fù)的集合,B代表外部數(shù)據(jù)庫(kù)中實(shí)體的集合,公式目標(biāo)是計(jì)算同時(shí)出現(xiàn)在生成回復(fù)和實(shí)體集合中的詞的比例.本文把生成回復(fù)的全集中出現(xiàn)的實(shí)體種類數(shù)量也作為一個(gè)重要指標(biāo),顯而易見,出現(xiàn)的實(shí)體種類數(shù)量越多,回復(fù)的多樣性也就越高,實(shí)體種類記為E@c.

考慮到客觀指標(biāo)的局限性,本文在實(shí)驗(yàn)中進(jìn)行了人工評(píng)價(jià).考慮了4個(gè)指標(biāo),分別是:1)流利度,即生成的回答語(yǔ)法是否正確,句子是否通順.2)相關(guān)性,生成的回復(fù)與上下文是否一致.3)知識(shí)性,回復(fù)中包含有關(guān)實(shí)體知識(shí)的信息量的多少.4)正確性,推薦的治療方法或藥物及診斷是否正確,雖然本文已經(jīng)對(duì)模型的正確性進(jìn)行了自動(dòng)評(píng)價(jià),但是考慮到正確答案并非局限于標(biāo)準(zhǔn)回復(fù)中出現(xiàn)過的醫(yī)療實(shí)體,因此通過引入正確性的人工評(píng)價(jià)來(lái)鑒別出多樣的正確回復(fù).

3.4 結(jié)果分析

為了評(píng)價(jià)基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型的性能,本文選擇了以下10個(gè)合適的基準(zhǔn)模型與它進(jìn)行對(duì)比,這10個(gè)基準(zhǔn)模型分別是:

1) 帶有注意力機(jī)制的Seq2Seq模型[23].此基線模型由編碼器和解碼器構(gòu)成,將輸入序列轉(zhuǎn)換為輸出序列.這里將對(duì)話歷史H作為輸入,用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行編碼,提取H的信息.將最后時(shí)刻輸出的隱層向量輸入到解碼器內(nèi)生成回復(fù).

2) HRED[24]模型.用分層編碼器建模對(duì)話歷史H,得到帶上下文信息的句子級(jí)別表達(dá),最后解碼出回復(fù).

3) Transformer模型[25].它摒棄了傳統(tǒng)的序列模型,用自注意力機(jī)制建模對(duì)話歷史H,可以并行處理序列中的數(shù)據(jù)且同時(shí)產(chǎn)生帶有上下文信息的表達(dá),并生成回復(fù).

為了對(duì)比公平,在上述3個(gè)基準(zhǔn)模型的基礎(chǔ)上,本文在對(duì)話歷史H后拼接追蹤實(shí)體對(duì)應(yīng)的知識(shí)作為輸入,又得到3個(gè)基準(zhǔn)模型:

4) Seq2Seq-k模型.

5) HRED-k模型.

6) Transformer-k模型.

本文還引入了另外4個(gè)基準(zhǔn)模型,分別是:

7) Copynet[26]模型.類似地,以對(duì)話歷史H后拼接追蹤實(shí)體對(duì)應(yīng)的知識(shí)作為基線模型的輸入.

8) CCM[8]模型.此對(duì)話模型同樣基于外部知識(shí),利用知識(shí)圖譜生成回復(fù)的在CCM中以對(duì)話歷史H為輸入,同時(shí)傳入KaMed的外部知識(shí).

9) PostkKS[9]模型.此模型利用后驗(yàn)信息來(lái)指導(dǎo)知識(shí)選擇,從而優(yōu)化回復(fù)生成.在此模型中也以對(duì)話歷史H和KaMed的知識(shí)部分為輸入.

10) MOSS[27]模型.此模型的對(duì)話動(dòng)作模塊預(yù)測(cè)回復(fù)中存在的實(shí)體,結(jié)合對(duì)話歷史以及此模塊的輸出,端到端的生成回復(fù),這里以對(duì)話歷史H和KaMed的實(shí)體部分為輸入.

3.4.1 自動(dòng)評(píng)價(jià)

從表1中可以得出觀察結(jié)果:首先,本文提出的MKMed模型在F1,E@d,E@c指標(biāo)上遠(yuǎn)優(yōu)于所有基準(zhǔn)模型,這表明基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型可以在回復(fù)中生成更多樣且更正確的醫(yī)療專業(yè)知識(shí)相關(guān)信息,通過直接觀察各模型生成的結(jié)果,也發(fā)現(xiàn)MKMed生成的回復(fù)與醫(yī)生真實(shí)的專業(yè)標(biāo)準(zhǔn)回復(fù)更加相似.同時(shí)MKMed模型在BLEU度量上優(yōu)于大部分基準(zhǔn)模型,這說明了MKMed模型在高知識(shí)性和專業(yè)性的基礎(chǔ)上也保證了流暢性.其次,在Distinct指標(biāo)上,CopyNet和MOSS比MKMed模型表現(xiàn)更好,通過對(duì)生成結(jié)果的分析,我們發(fā)現(xiàn)CopyNet和MOSS傾向于復(fù)制輸入的對(duì)話歷史或知識(shí)中的分詞,即使這些詞與上下文并不一致,這可能是造成它們產(chǎn)生的回復(fù)更加多樣性的原因.總的來(lái)說,MKMed模型在Distinct和實(shí)體指標(biāo)上遠(yuǎn)優(yōu)于大部分基準(zhǔn)模型.另外,PostKS模型雖然利用外部數(shù)據(jù)庫(kù)生成回復(fù),但是在實(shí)體指標(biāo)上表現(xiàn)不佳,我們考慮這是因?yàn)镻ostKS無(wú)法從大規(guī)模的候選知識(shí)庫(kù)中找到合適的知識(shí),故而效果不好,這也說明了MKMed利用實(shí)體的共現(xiàn)矩陣進(jìn)行一步篩選的優(yōu)越性.最后,通過實(shí)驗(yàn)結(jié)果觀察到,HRED,Transformer,Seq2Seq基準(zhǔn)模型的性能隨著知識(shí)的融入,在某些指標(biāo)上反而更差了,可以推理出,將外部知識(shí)信息整合到會(huì)話生成任務(wù)中時(shí),需要針對(duì)附加的信息設(shè)計(jì)融入的方案,否則會(huì)干擾原始信息.

Table 1 Automatic Evaluation Results

表示每種實(shí)驗(yàn)設(shè)置下的最佳結(jié)果.

3.4.2 人工評(píng)價(jià)

考慮到語(yǔ)言生成任務(wù)中客觀評(píng)測(cè)指標(biāo)的局限性,采用人工評(píng)測(cè)來(lái)驗(yàn)證基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型的優(yōu)越性.具體來(lái)說,從測(cè)試集合中隨機(jī)抽取了200個(gè)樣例,使MKMed及2個(gè)最具競(jìng)爭(zhēng)力的基準(zhǔn)模型:Copynet和CMM,基于樣例生成回復(fù).

隨后將MKMed生成的回復(fù)分別與Copynet和CMM 的回復(fù)進(jìn)行組合,由3 名醫(yī)學(xué)研究生進(jìn)行人工評(píng)價(jià),從流利度、相關(guān)性、知識(shí)性和正確性4個(gè)角度判斷MKMed與對(duì)比模型相比生成回復(fù)的質(zhì)量為勝、平手或是負(fù),最終得出了各對(duì)比結(jié)果數(shù)在樣例總數(shù)中的比例,同時(shí)使用Kappa系數(shù)來(lái)判斷3名醫(yī)學(xué)研究生人工評(píng)估的一致性.

結(jié)果如表2所示,本文提出的模型在所有指標(biāo)中都達(dá)到了最好的性能.但是考慮到相關(guān)性指標(biāo)上Kappa系數(shù)很小,可能得出結(jié)論相關(guān)性指標(biāo)太主觀,所有評(píng)測(cè)人員很難達(dá)成一致.基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型在知識(shí)性、正確性和流利度上以較高的Kappa系數(shù)優(yōu)于2個(gè)對(duì)比模型,其中在正確性和知識(shí)性上有顯著優(yōu)勢(shì),驗(yàn)證了該評(píng)價(jià)的可靠性和本文提出的模型的優(yōu)越性.

Table 2 Manual Evaluation Results

3.4.3 消融實(shí)驗(yàn)

本節(jié)進(jìn)行了消融實(shí)驗(yàn),來(lái)驗(yàn)證模型中每個(gè)模塊的重要性和有效性.實(shí)驗(yàn)結(jié)果如表3所示.考慮了3種設(shè)置:1)去掉復(fù)制網(wǎng)絡(luò)(即表3中的no-c),2)去掉知識(shí)實(shí)體預(yù)測(cè)部分(即表3中的no-p),3)去掉知識(shí)實(shí)體追蹤與預(yù)測(cè)模塊(即表3中的no-t).

Table 3 Ablation Study Results

Fig. 3 Case study圖3 樣例研究

結(jié)果表明,所有模塊都有助于Distinct、F1、知識(shí)密度以及實(shí)體個(gè)數(shù)指標(biāo)的提升,移除任意模塊都會(huì)使指標(biāo)降低.我們認(rèn)為,這是因?yàn)橹R(shí)實(shí)體追蹤與預(yù)測(cè)模塊中的任意一個(gè)部分都會(huì)增加輸入到模型中的知識(shí)信息,從而增加了回答的多樣性;在此基礎(chǔ)上,通過篩選得到的輸入知識(shí),使模型更有機(jī)會(huì)接觸到正確信息.增加復(fù)制機(jī)制,會(huì)增加相關(guān)性更大且更有可能是正確的知識(shí)復(fù)制到回答中的概率.但是我們還觀察到,移除了知識(shí)實(shí)體預(yù)測(cè)部分后BLEU指標(biāo)最高,合理的解釋是基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型沒有加入預(yù)測(cè)實(shí)體時(shí)會(huì)偏向生成一些安全詞匯,這樣恰好匹配到標(biāo)準(zhǔn)答案的概率更高,且傾向生成更短的回復(fù),使BLEU的指標(biāo)增大,但是這樣會(huì)帶來(lái)回復(fù)多樣性減少、正確性下降的問題,E@d,F(xiàn)1,Distinct指標(biāo)值急劇減少與前述解釋吻合.

3.4.4 樣例展示

圖3展示的對(duì)話發(fā)生在骨科和創(chuàng)傷科,從圖3中可以看出,MKMed可以提供適當(dāng)?shù)乃幬锝ㄗh,生成回復(fù)中包含的實(shí)體“塞來(lái)昔布膠囊”是適用于緩解骨關(guān)節(jié)炎,治療急性疼痛和滑膜炎的藥物.但是CopyNet和CCM生成的回復(fù)缺乏有用的專業(yè)信息,因?yàn)樗麄儧]有預(yù)測(cè)知識(shí)的能力,不能將外部專業(yè)知識(shí)融入回復(fù)生成.

從樣例展示中我們可以得出結(jié)論,MKMed模型生成的回復(fù)與真實(shí)回復(fù)仍有很大差距,但是已經(jīng)有了預(yù)測(cè)知識(shí)這個(gè)質(zhì)的進(jìn)展,讓回復(fù)更加專業(yè)性、正確且有實(shí)際用處,實(shí)現(xiàn)一些傳統(tǒng)的生成模型所不能及的效果.

4 結(jié)論與展望

本文提出了一個(gè)基于知識(shí)和記憶網(wǎng)絡(luò)的醫(yī)療對(duì)話系統(tǒng)模型,模型開創(chuàng)性的結(jié)合了外部知識(shí),通過知識(shí)實(shí)體追蹤和2階段的知識(shí)實(shí)體預(yù)測(cè)來(lái)改進(jìn)醫(yī)療回復(fù)生成任務(wù).在KaMed上的大量實(shí)驗(yàn)證明,基于記憶網(wǎng)絡(luò)的知識(shí)感知醫(yī)療對(duì)話生成模型在BLEU,Distinct和實(shí)體指標(biāo)上優(yōu)于絕大部分基線模型,表明外部知識(shí)有助于更專業(yè)、正確、多樣且流暢的醫(yī)療回復(fù)的生成.

未來(lái)工作中計(jì)劃通過加入減小專業(yè)醫(yī)學(xué)知識(shí)與患者話語(yǔ)之間語(yǔ)義差距的方法,來(lái)使模型能夠更好地理解患者口語(yǔ)化表達(dá)的句子,希望生成的回復(fù)更個(gè)性化和有針對(duì)性,進(jìn)一步提高模型生成回復(fù)的性能.

作者貢獻(xiàn)聲明:張曉宇負(fù)責(zé)代碼運(yùn)行編寫、論文撰寫與校對(duì);李冬冬負(fù)責(zé)模型構(gòu)思、代碼編寫與運(yùn)行、論文撰寫;任鵬杰、陳竹敏、馬軍負(fù)責(zé)論文撰寫指導(dǎo);任昭春負(fù)責(zé)對(duì)模型構(gòu)思、代碼編寫與運(yùn)行、論文撰寫進(jìn)行全程指導(dǎo).

猜你喜歡
存儲(chǔ)單元實(shí)體向量
一種28 nm工藝下抗單粒子翻轉(zhuǎn)SRAM的12T存儲(chǔ)單元設(shè)計(jì)
向量的分解
聚焦“向量與三角”創(chuàng)新題
一種新型密集堆垛式倉(cāng)儲(chǔ)系統(tǒng)設(shè)計(jì)
前海自貿(mào)區(qū):金融服務(wù)實(shí)體
浮點(diǎn)類型有效位數(shù)計(jì)算與應(yīng)用分析
數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)形式及實(shí)驗(yàn)驗(yàn)證
實(shí)體的可感部分與實(shí)體——兼論亞里士多德分析實(shí)體的兩種模式
兩會(huì)進(jìn)行時(shí):緊扣實(shí)體經(jīng)濟(jì)“釘釘子”
振興實(shí)體經(jīng)濟(jì)地方如何“釘釘子”
确山县| 泽普县| 怀来县| 濮阳市| 吉林省| 郁南县| 禹城市| 金秀| 巢湖市| 高台县| 迁安市| 许昌县| 禹州市| 高唐县| 义马市| 泌阳县| 建宁县| 南充市| 阳朔县| 广宁县| 林州市| 九台市| 星座| 靖西县| 巴彦县| 武威市| 封丘县| 山阴县| 双桥区| 漳平市| 鄯善县| 芜湖市| 眉山市| 沿河| 枣阳市| 拉孜县| 磐石市| 临泉县| 常山县| 曲沃县| 玉田县|