李道興,李元誠(chéng),劉海青
(華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,北京 102206)
傳染病是由病原體引起的能在人與人或人與動(dòng)物之間相互傳播并廣泛流行的疾病。傳染病傳播的速度很快,并且一旦爆發(fā)將給個(gè)人,社會(huì),國(guó)家?guī)?lái)巨大的損失[1]。如果能提早預(yù)警傳染病的爆發(fā),就可以通過(guò)防疫措施將疫情控制在局部地區(qū),從而盡可能減少疫情所帶來(lái)的負(fù)面影響。因此傳染病預(yù)警模型在傳染病預(yù)防的過(guò)程中起到了重要的作用[2]。
根據(jù)傳染病預(yù)警模型使用的技術(shù)種類,可以將傳染病預(yù)警分為兩類:基于統(tǒng)計(jì)學(xué)的傳染病預(yù)警模型和基于大數(shù)據(jù)技術(shù)的傳染病預(yù)警模型?;诮y(tǒng)計(jì)學(xué)的傳染病預(yù)警模型按照傳染病流行的三間可以分為時(shí)間模型,空間模型,時(shí)空模型這三類[3]。時(shí)間模型利用傳染病確診的時(shí)間和人數(shù)信息,通過(guò)回歸法[4],時(shí)間序列法[5],統(tǒng)計(jì)過(guò)程圖法[6]等方法對(duì)傳染病是否爆發(fā)進(jìn)行預(yù)警??臻g模型[7-11]利用患者地理位置的相關(guān)信息,監(jiān)測(cè)傳染病患者是否出現(xiàn)了空間上的聚集性,從而發(fā)出預(yù)警信息。時(shí)空模型[12-15]借助于時(shí)間和空間聚集性探測(cè)方法,來(lái)判斷固定區(qū)域內(nèi)的病例數(shù)、空間聚集熱點(diǎn)區(qū)域是否達(dá)到預(yù)警閾值,如果達(dá)到,系統(tǒng)則發(fā)出預(yù)警信號(hào)。傳統(tǒng)的傳染病預(yù)警模型最大的問(wèn)題在于其必須依賴醫(yī)院確診,上報(bào)傳染病病例,從而對(duì)傳染病的爆發(fā)進(jìn)行預(yù)警,因此對(duì)于已知類型的傳染病效果較好。但是對(duì)于突發(fā)的未知新型傳染病,相關(guān)部門很難在短時(shí)間內(nèi)統(tǒng)一診斷標(biāo)準(zhǔn),從而降低了預(yù)警的時(shí)效性?;诖髷?shù)據(jù)技術(shù)的傳染病預(yù)警系統(tǒng)使用諸如網(wǎng)站搜索量等網(wǎng)絡(luò)信息,不用依賴醫(yī)院確診傳染病病例來(lái)對(duì)傳染病的爆發(fā)進(jìn)行預(yù)測(cè),從而提高了傳染病預(yù)警系統(tǒng)的實(shí)時(shí)性。2009年,Ginsberg 等人[16]利用谷歌網(wǎng)站上對(duì)于流感的搜索數(shù)據(jù),比當(dāng)?shù)丶部刂行奶崆耙恢茴A(yù)測(cè)了流感爆發(fā)的到來(lái)。近年來(lái),隨著深度學(xué)習(xí)技術(shù)的成熟,使用社交媒體信息進(jìn)行傳染病預(yù)警的研究也越來(lái)越多。Aramaki 等人通過(guò)將自然語(yǔ)言處理技術(shù)與支持向量機(jī)相結(jié)合,分類出和流感相關(guān)的twitter[17]。Serban 等人設(shè)計(jì)的傳染病系統(tǒng)SENTINEL,通過(guò)結(jié)合臨床數(shù)據(jù)與twitter 數(shù)據(jù)對(duì)傳染病是否爆發(fā),以及爆發(fā)的嚴(yán)重性進(jìn)行預(yù)警[18]。雖然基于大數(shù)據(jù)技術(shù)的傳染病預(yù)警系統(tǒng)在預(yù)警實(shí)時(shí)性上表現(xiàn)優(yōu)異,但是社交媒體上的存在大量錯(cuò)誤和虛假信息,可能誤導(dǎo)預(yù)警系統(tǒng)。而如果采用醫(yī)院中電子病歷中的信息來(lái)進(jìn)行傳染病預(yù)警則無(wú)法保護(hù)患者的隱私。
本文建立了一種新型的傳染病預(yù)警模型,采用電子病歷作為預(yù)警數(shù)據(jù)源,在保證患者數(shù)據(jù)隱私的前提下,通過(guò)聯(lián)邦學(xué)習(xí)的方法訓(xùn)練symptomBERT 模型提取電子病歷中關(guān)于癥狀和疾病的相關(guān)信息并輸出傳染病癥狀向量,最后利用C2&C3算法檢測(cè)傳染病癥狀向量的各個(gè)維度構(gòu)成的時(shí)間序列,一旦出現(xiàn)異常峰值則會(huì)立刻預(yù)警。在訓(xùn)練symptom-BERT 模型的過(guò)程中采用了信譽(yù)區(qū)塊鏈來(lái)選取可靠的計(jì)算節(jié)點(diǎn)來(lái)保證symptomBERT模型的訓(xùn)練效果。
我們?cè)O(shè)計(jì)的傳染病預(yù)警模型如圖1所示,其中最重要的是兩個(gè)部分,一個(gè)是負(fù)責(zé)從電子病歷文本信息中提取得到傳染病癥狀向量的SymptomBERT模型,其次是C2&C3預(yù)警算法。
圖1 傳染病預(yù)警模型結(jié)構(gòu)
由于電子病歷生成會(huì)先于傳染病卡(疑似病例在未確診前不會(huì)填寫傳染病卡),因此從電子病歷文本信息中提取傳染病癥狀向量進(jìn)行預(yù)測(cè)保證了我們的預(yù)警模型具有較高的實(shí)時(shí)性。同時(shí)為了保證信息提取的準(zhǔn)確性,我們采用了最新的自然語(yǔ)言處理模型BioBERT[19]并對(duì)其進(jìn)行了部分改進(jìn)。我們的新模型命名為SymptomBERT。SymptomBERT 模型以BERT模型[20]作為基礎(chǔ),其結(jié)構(gòu)如圖2所示,其中采用了多層雙向Transformer[21]作為編碼器和解碼器。不同于傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò),Transformer以自注意力模塊為基礎(chǔ)進(jìn)行構(gòu)建,因而能夠更好的構(gòu)建句子中相隔較遠(yuǎn)的詞之間的依賴關(guān)系,對(duì)于文本類的任務(wù)具有較好的表現(xiàn)。此外,為了輸出傳染病癥狀向量,我們?cè)谠糂ERT模型的基礎(chǔ)上還在最后一層添加了一個(gè)全聯(lián)接層來(lái)調(diào)整輸出的維度。Symptom-BERT 由24 個(gè)Transformer 模塊構(gòu)成,每個(gè)Transformer 模塊的隱藏層數(shù)目為1024,注意力機(jī)制數(shù)為16,總共含有近3億4千萬(wàn)參數(shù)。因?yàn)镾ymptomBERT模型規(guī)模較大,我們首先需要對(duì)其進(jìn)行預(yù)訓(xùn)練,讓其首先能夠提取出醫(yī)學(xué)文本的表征,然后再通過(guò)微調(diào)訓(xùn)練的方式讓其輸出傳染病癥狀向量。預(yù)訓(xùn)練采用MaskLM 方法,首先隨機(jī)將病歷中15%詞掩蓋掉,SymptomBERT模型的任務(wù)是讀取整個(gè)句子來(lái)預(yù)測(cè)被掩蓋的詞的真實(shí)值是什么從而完成預(yù)訓(xùn)練。在預(yù)訓(xùn)練結(jié)束后,我們?cè)偻ㄟ^(guò)微調(diào)訓(xùn)練的方式讓SymptomBERT適應(yīng)提取傳染病癥狀向量的任務(wù)。
圖2 SymptomBERT模型結(jié)構(gòu)
為了保護(hù)電子病歷數(shù)據(jù)中的患者隱私信息,我們采用聯(lián)邦學(xué)習(xí)的方式來(lái)對(duì)模型進(jìn)行微調(diào)訓(xùn)練。聯(lián)邦學(xué)習(xí)是一種新型的分布式保護(hù)隱私的機(jī)器學(xué)習(xí)技術(shù),它使分布式的節(jié)點(diǎn)能夠協(xié)作地訓(xùn)練一個(gè)全局的機(jī)器學(xué)習(xí)模型,而不需要將私有的本地?cái)?shù)據(jù)上傳到中央服務(wù)器。每個(gè)節(jié)點(diǎn)從中央服務(wù)器中獲得一個(gè)初始參數(shù)為θ 的全局機(jī)器學(xué)習(xí)模型(在本文中為SymptomBERT模型)ΦBERT(θ),并用本地的電子病歷數(shù)據(jù)對(duì)其進(jìn)行訓(xùn)練。當(dāng)節(jié)點(diǎn)用本地?cái)?shù)據(jù)完成訓(xùn)練后將把模型的參數(shù)或梯度上傳到中央服務(wù)器的從而對(duì)全局模型的參數(shù)進(jìn)行更新。假設(shè)節(jié)點(diǎn)n有用于訓(xùn)練的數(shù)據(jù)集sn,則總共N個(gè)節(jié)點(diǎn)所含的全部數(shù)據(jù)集為sn=s。在上述條件假設(shè)下,聯(lián)邦學(xué)習(xí)的目標(biāo)函數(shù)可以寫為以下形式
其中fi是在節(jié)點(diǎn)n中樣本i產(chǎn)生的損失函數(shù)值。
在全局模型訓(xùn)練的第t個(gè)迭代,每個(gè)節(jié)點(diǎn)將會(huì)上傳其使用本地?cái)?shù)據(jù)集訓(xùn)練參數(shù)為θ(t)全局模型ΦBERT(θ(t))得到的梯度,假設(shè)每個(gè)節(jié)點(diǎn)使用隨機(jī)梯度法對(duì)模型進(jìn)行訓(xùn)練,更新步率為αn,則本地的模型在t+1 時(shí)刻的參數(shù)為:。之后在模型聚合階段,全局模型將聚合所有本地節(jié)點(diǎn)模型的參數(shù),從而完成對(duì)于SymptomBERT模型的微調(diào)訓(xùn)練。
當(dāng)出現(xiàn)新的傳染病病歷時(shí),訓(xùn)練后的SymptomBERT模型會(huì)自動(dòng)提取病歷中的傳染病癥狀信息,生成傳染病癥狀記錄,并將其上傳至數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)會(huì)統(tǒng)計(jì)該地區(qū)每日按癥狀分組的傳染病病歷數(shù),再由C2&C3 算法來(lái)判斷是否發(fā)出預(yù)警,C2&C3算法是由美國(guó)疾控中心研發(fā)的EARS系統(tǒng)[22]的核心算法之一,適合傳染病綜合癥狀信息的預(yù)警監(jiān)測(cè),其具體算法如下所示。假設(shè)一共監(jiān)測(cè)J種傳染病癥狀,那么傳染病癥狀記錄數(shù)據(jù)庫(kù)第i日上傳的含有第j種癥狀的病例數(shù)為,C2&C3算法首先計(jì)算7天內(nèi)該癥狀病例數(shù)時(shí)間序列的中位數(shù)Medianj。
其中mad()代表求中位數(shù)運(yùn)算,之后計(jì)算中位數(shù)標(biāo)準(zhǔn)差MAD。
C2 預(yù)警是針對(duì)某個(gè)癥狀的預(yù)警,假設(shè)癥狀為j,則該癥狀觸發(fā)C2預(yù)警的條件為:
當(dāng)觸發(fā)3 個(gè)或3 個(gè)以上的C2 預(yù)警時(shí)則會(huì)觸發(fā)級(jí)別更高的C3預(yù)警,用公式的形式可以表示為:
C2&C3 傳染病預(yù)警模型的準(zhǔn)確度主要依賴于SymptomBERT 模型的信息提取的準(zhǔn)確度,因此我們采用一種基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)框架來(lái)選取可靠的訓(xùn)練節(jié)點(diǎn),從而保證SymptomBERT模型的訓(xùn)練效果。
為了使用含有大量患者隱私數(shù)據(jù)的電子病歷數(shù)據(jù)來(lái)訓(xùn)練SypmtomBERT 模型,我們參考文獻(xiàn)[23]中的模型,設(shè)計(jì)了一個(gè)基于聯(lián)盟區(qū)塊鏈的聯(lián)邦學(xué)習(xí)框架來(lái)訓(xùn)練Symptom-BERT模型。這個(gè)聯(lián)邦學(xué)習(xí)框架包括兩層,應(yīng)用層與區(qū)塊鏈層,詳情如圖3所示。
圖3 傳染病預(yù)警模型聯(lián)邦學(xué)習(xí)訓(xùn)練框架
在應(yīng)用層,我們考慮使用以太網(wǎng)網(wǎng)作為底層結(jié)構(gòu),整個(gè)網(wǎng)絡(luò)采用環(huán)狀與星狀混合的拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)的端節(jié)點(diǎn)是部署在醫(yī)院的深度學(xué)習(xí)服務(wù)器,并將廣泛部署的交換設(shè)備作為網(wǎng)絡(luò)的邊節(jié)點(diǎn)。端節(jié)點(diǎn)不僅具有先進(jìn)的算力,同時(shí)也儲(chǔ)存著大量包含患者隱私數(shù)據(jù)的電子病歷。聯(lián)邦學(xué)習(xí)的特點(diǎn)在于:當(dāng)訓(xùn)練管理中心發(fā)布訓(xùn)練SymptomBERT 的任務(wù)后,端節(jié)點(diǎn)會(huì)直接利用本地的數(shù)據(jù)進(jìn)行模型訓(xùn)練,而不會(huì)將本地的數(shù)據(jù)上傳至中心的服務(wù)器,從而保證了患者數(shù)據(jù)的隱私性。由于部分端節(jié)點(diǎn)設(shè)備可能不在線或者臨時(shí)被其他深度學(xué)習(xí)模型訓(xùn)練任務(wù)所征用,因此訓(xùn)練管理中心會(huì)首先設(shè)計(jì)一個(gè)智能合約來(lái)選取可靠的端節(jié)點(diǎn)作為訓(xùn)練節(jié)點(diǎn)來(lái)進(jìn)行Symptom-BERT 模型的訓(xùn)練。每個(gè)訓(xùn)練節(jié)點(diǎn)使用本地的數(shù)據(jù)來(lái)訓(xùn)練SymptomBERT 模型得到新的SymptomBERT 模型參數(shù)。訓(xùn)練節(jié)點(diǎn)完成訓(xùn)練后會(huì)將本地的模型參數(shù)上傳至訓(xùn)練管理中心中來(lái)更新全局的SymptomBERT模型。訓(xùn)練管理中心會(huì)將本地模型的參數(shù)進(jìn)行聚合,并更新到全局的Symptom-BERT 模型上。以上的步驟將會(huì)一直重復(fù)直到全局的SymptomBERT 模型的準(zhǔn)確率達(dá)到預(yù)先設(shè)定的值。廣泛分布的邊節(jié)點(diǎn)使端節(jié)點(diǎn)能夠及時(shí)與訓(xùn)練管理中心進(jìn)行通信。訓(xùn)練管理中心將根據(jù)訓(xùn)練節(jié)點(diǎn)模型更新和訓(xùn)練的情況來(lái)生成該端節(jié)點(diǎn)的信譽(yù)。信譽(yù)的管理由區(qū)塊鏈層的聯(lián)盟區(qū)塊鏈來(lái)進(jìn)行,我們稱該區(qū)塊鏈為信譽(yù)區(qū)塊鏈。
在區(qū)塊鏈層,由于邊節(jié)點(diǎn)同時(shí)連接著端節(jié)點(diǎn)與訓(xùn)練管理中心,因此我們利用邊節(jié)點(diǎn)來(lái)選取符合條件的端節(jié)點(diǎn)作為訓(xùn)練節(jié)點(diǎn)。我們使用基于信譽(yù)的方法訓(xùn)練節(jié)點(diǎn)。當(dāng)完成端節(jié)點(diǎn)的信譽(yù)被所有端節(jié)點(diǎn)一致驗(yàn)證后,該節(jié)點(diǎn)的信譽(yù)值將會(huì)被存儲(chǔ)到信譽(yù)區(qū)塊鏈的數(shù)據(jù)塊中。由于區(qū)塊鏈的分布式與不可篡改的特點(diǎn),即使在發(fā)生爭(zhēng)議和破壞的情況下,數(shù)據(jù)區(qū)塊中存儲(chǔ)的信譽(yù)值仍是永久而公開的證據(jù)。在計(jì)算信譽(yù)時(shí),我們不僅考慮使用來(lái)自本次訓(xùn)練SymptomBERT模型時(shí)模型訓(xùn)練中心提供的信譽(yù)值,還將結(jié)合該端節(jié)點(diǎn)之前訓(xùn)練深度學(xué)習(xí)模型的的表現(xiàn)作為間接信譽(yù)值來(lái)綜合考慮端節(jié)點(diǎn)的信譽(yù)值。信譽(yù)值是選擇訓(xùn)練節(jié)點(diǎn)的最重要的指標(biāo)。
我們的實(shí)驗(yàn)主要分為兩個(gè)部分:第一部分是通過(guò)聯(lián)邦學(xué)習(xí)的方法訓(xùn)練SymptomBERT 模型提取電子病歷中的癥狀向量,第二部分是利用訓(xùn)練好的SymptomBERT 模型提取癥狀向量并利用C2&C3算法對(duì)傳染病進(jìn)行監(jiān)測(cè)預(yù)警。我們實(shí)驗(yàn)在云平臺(tái)上的虛擬機(jī)上進(jìn)行,虛擬機(jī)配置了一塊NIVIDIA 2080Ti GPU,內(nèi)存為16g,采用Ubuntu 16.04LTS操作系統(tǒng)。
在第一部分實(shí)驗(yàn)中,我們基于PyTorch內(nèi)核的聯(lián)邦學(xué)習(xí)框架PySyft來(lái)實(shí)現(xiàn)SymptomBERT模型。由于電子病歷數(shù)據(jù)涉及病人的隱私較難獲取,我們僅從中國(guó)臨床案例成果數(shù)據(jù)庫(kù)中獲取到了529 份與傳染病相關(guān)的文本型電子病歷數(shù)據(jù),因此我們采用了遷移學(xué)習(xí)的方法來(lái)對(duì)github 上的chinese-clinical-NER 開源項(xiàng)目中使用的BERT 模型進(jìn)行微調(diào),從而獲得用于提取癥狀向量的symptomBERT模型。我們首先對(duì)529份文本型電子病歷數(shù)據(jù)進(jìn)行人工標(biāo)注,并將分為訓(xùn)練集和測(cè)試集兩部分,訓(xùn)練集包含400 份電子病歷樣本,儲(chǔ)存在4 個(gè)聯(lián)邦學(xué)習(xí)數(shù)據(jù)節(jié)點(diǎn)中,每個(gè)節(jié)點(diǎn)100 份,這些數(shù)據(jù)節(jié)點(diǎn)中的電子病歷樣本在訓(xùn)練時(shí)不會(huì)被上傳到中心節(jié)點(diǎn),從而保護(hù)了患者的隱私;測(cè)試集包含129 份電子病歷樣本。在微調(diào)過(guò)程中,我們只對(duì)SymptomBERT 模型中Linear 層和Softmax 層的參數(shù)進(jìn)行反向傳播,保持其他層參數(shù)不變。訓(xùn)練過(guò)程中損失值的變化如圖4所示。
圖4 SymptomBERT模型訓(xùn)練過(guò)程中損失函數(shù)值的變化
從圖4中我們可以看到隨著迭代次數(shù)的增加,損失值逐漸下降,并最終在1.5 附近波動(dòng),證明symptomBERT 模型在電子病歷訓(xùn)練集上收斂。我們?cè)陔娮硬v測(cè)試集上對(duì)訓(xùn)練后的symptomBERT模型進(jìn)行了測(cè)試,symptomBERT模型在電子病歷測(cè)試集上的準(zhǔn)確率為0.80,回歸率為0.83。
在第二部分試驗(yàn)中,我們采用某私立醫(yī)院提供的2015年到2017年傳染病相關(guān)的3191 條電子病歷數(shù)據(jù),其中2956條是結(jié)構(gòu)化數(shù)據(jù),其中的癥狀信息記錄在表格中可以直接提??;235 條為非結(jié)構(gòu)化文本數(shù)據(jù),需要使用SymptomBERT模型對(duì)其中的癥狀信息進(jìn)行提取,我們提取了三種癥狀信息:咳嗽(Cough)、發(fā)熱(Fever)、咳痰(Expectoration),并用C2&C3算法對(duì)其進(jìn)行監(jiān)測(cè)預(yù)警。癥狀信息的時(shí)間分布如圖5所示。
圖5 癥狀信息的時(shí)間分布圖
從圖5中我們可以看到C2&C3算法在2016年2月15日產(chǎn)生了咳嗽、發(fā)熱、咳痰三種癥狀的C2預(yù)警信號(hào)(圖5中黑色箭頭),并產(chǎn)生了C3 預(yù)警信號(hào)。而在在2016年2月16日,咳嗽、發(fā)熱、咳痰三種癥狀的數(shù)量達(dá)到最大值。這表明C2&C3算法能夠?qū)魅静〉南嚓P(guān)癥狀信息進(jìn)行有效的監(jiān)測(cè)預(yù)警。
本文基于聯(lián)邦學(xué)習(xí)和區(qū)塊鏈技術(shù)提出了一種新型的傳染病預(yù)警模型,利用分布在各醫(yī)院的端節(jié)點(diǎn)存儲(chǔ)的電子病歷數(shù)據(jù)訓(xùn)練SymptomBERT 提取癥狀向量對(duì)傳染病發(fā)病情況進(jìn)行檢測(cè),并用C2&C3 算法判斷傳染病是否爆發(fā)從而進(jìn)行預(yù)警。該模型通過(guò)監(jiān)測(cè)電子病歷中描述的癥狀來(lái)對(duì)傳染病進(jìn)行預(yù)警,不需要精確確診是哪種傳染病,因此該模型更加適用于突發(fā)新型傳染病疫情的預(yù)警。本模型的主要?jiǎng)?chuàng)新點(diǎn)在于使用了聯(lián)邦學(xué)習(xí)的方法訓(xùn)練SymptomBERT模型從而保護(hù)了病歷數(shù)據(jù)中患者的隱私,并采用信譽(yù)區(qū)塊鏈來(lái)選取可靠的端節(jié)點(diǎn)進(jìn)行訓(xùn)練從而保證了模型訓(xùn)練的抗干擾性。實(shí)驗(yàn)證明基于聯(lián)邦學(xué)習(xí)和區(qū)塊鏈的傳染病預(yù)警模型可以在保證患者隱私的前提下,有效提取癥狀向量進(jìn)行傳染病預(yù)警。在未來(lái)的工作中,計(jì)劃進(jìn)一步提升該模型的預(yù)警效果和性能。
自動(dòng)化技術(shù)與應(yīng)用2022年5期