佘朝陽,嚴 馨,徐廣義,陳 瑋,鄧忠瑩
(1.昆明理工大學 信息工程與自動化學院,昆明 650504;2.昆明理工大學 云南省人工智能重點實驗室,昆明 650504;3.云南南天電子信息產業(yè)股份有限公司,昆明 650041)
藥物不良反應(Adverse Drug Reaction,ADR)檢測是藥物研究和開發(fā)的重要組成部分。以往的研究數(shù)據(jù)主要來源于藥物不良反應報告[1]、生物醫(yī)學文獻[2]、臨床筆記[3]或醫(yī)療記錄[4]。目前,醫(yī)療社交媒體例如MedHelp、好大夫、尋醫(yī)問藥、丁香醫(yī)生等均提供了諸如專家問診、論壇討論、電話視頻交流等形式多樣的信息收集手段,形成了具有權威性、時效性和全面性的互聯(lián)網醫(yī)療數(shù)據(jù)源,為藥物不良反應檢測提供了豐富的語料基礎。
藥物不良反應檢測通常被看作涉及ADR的文本二分類問題,即辨別文本是否包含ADR的問題。早期,大多數(shù)研究均基于詞典識別文本中的ADR[5-6],但這類方法無法識別詞典中未包含的非常規(guī)ADR詞匯。后來有些研究人員發(fā)現(xiàn),利用統(tǒng)計機器學習方法抽取特征能夠有效提高準確性[7-8]。隨著深度學習的不斷發(fā)展和廣泛應用,基于深度學習方法的ADR 檢測模型大量涌現(xiàn)。LEE等[9]為Twitter中的ADR分類建立了卷積神經網絡(Convolutional Neural Network,CNN)模型,COCOS等[10]開發(fā)了一個遞歸神經網絡(Recurrent Neural Network,RNN)模型,通過與任務無關的預訓練或在ADR檢測訓練期間形成詞嵌入向量,并將其作為輸入。HUYNH等[11]提出2種新的神經網絡模型,即將CNN 與RNN 連接起來的卷積遞歸神經網絡(Convolutional Recurrent Neural Network,CRNN)以及在CNN中添加注意力權重的卷積神經網絡(Convolutional Neural Network with Attention,CNNA),針對Twitter數(shù)據(jù)集分別進行了ADR分類任務。PANDEY等[12]分別采用Word2Vec和GloVe模型從多渠道的醫(yī)學資源中訓練臨床詞的詞向量,將無監(jiān)督的詞嵌入表示輸入到雙向長期短期記憶(Bi-directional Long Short-Term Memory,Bi-LSTM)神經網絡中,并使用注意力權重來優(yōu)化ADR 抽取的效果。
盡管深度學習模型往往表現(xiàn)很好,但通常需要基于大量標注數(shù)據(jù)進行監(jiān)督學習。當標注數(shù)據(jù)過少時,容易出現(xiàn)過擬合現(xiàn)象,嚴重影響預測的準確性。目前,已有大量的研究從英文語料中檢測ADR,但由于缺乏公開可用的中文醫(yī)療社交媒體的數(shù)據(jù)集,目前針對此方面的研究非常有限。
為解決標注數(shù)據(jù)不足的問題,本文提出一種基于數(shù)據(jù)增強與半監(jiān)督學習(Semi-Supervised Learning,SSL)的藥物不良反應檢測方法。通過對未標注數(shù)據(jù)進行數(shù)據(jù)增強,使用分類模型產生低熵標簽,以獲得較為準確的偽標簽。此外,將標注數(shù)據(jù)、未標注數(shù)據(jù)和增強數(shù)據(jù)混合,在文本向量空間中對混合樣本進行插值,以擴增樣本數(shù)量。
在少樣本場景下采用數(shù)據(jù)增強技術,與同等標注量的無增強監(jiān)督學習模型相比,其性能會有較大幅度的提升。文本增強技術如EDA算法[13]、回譯[14]、TF-IDF等通常只針對標注數(shù)據(jù)進行有監(jiān)督地數(shù)據(jù)增強。XIE等[15]將有監(jiān)督的數(shù)據(jù)增強技術擴展到未標注數(shù)據(jù)中,以盡可能地利用未標注數(shù)據(jù)。GUO 等[16]針對文本分類任務,提出詞級的wordMixup 和句子級的senMixup這2 種文本增強策略,通過分別對詞嵌入向量和句子向量進行線性插值,以產生更多的訓練樣本,提升分類性能。
半監(jiān)督學習是一種在不需要大量標簽的情況下訓練大量數(shù)據(jù)模型的方法。監(jiān)督學習方法僅在標注數(shù)據(jù)上訓練分類器而忽略了未標注數(shù)據(jù)。SSL 通過利用未標注數(shù)據(jù)的方法來減輕對標注數(shù)據(jù)的需求。在通常情況下,未標注數(shù)據(jù)的獲取要比標注數(shù)據(jù)容易得多,因此SSL 所帶來的性能提升通常都是低成本的。SSL 方法主要分為兩類:一類是對一個輸入添加微小的擾動,輸出應該與原樣本保持不變,即一致性正則化;另一類是使用預測模型或它的某些變體生成偽標簽,將帶有偽標簽的數(shù)據(jù)和標注數(shù)據(jù)進行混合,并微調模型。
將增強技術與半監(jiān)督學習方法整合于一個框架中的技術在計算機視覺領域已經取得成功。例如MixMatch[17]和FixMatch[18]方法均表現(xiàn)出了良好的性能。然而在自然語言處理領域,由于受文本的語法、語義關系等影響,此類方法的應用極少。
基于上述方法,本文將文本增強技術與半監(jiān)督學習方法相結合,應用于面向中文醫(yī)療社交媒體的ADR 檢測任務。利用回譯對未標注數(shù)據(jù)進行增強,以獲取低熵標簽,并將得到的偽標簽未標注數(shù)據(jù)和標注數(shù)據(jù)進行Mixup 操作,降低對標注數(shù)據(jù)的需求,充分發(fā)揮大量未標注數(shù)據(jù)的價值,提升ADR 檢測模型的準確性。
給定有限標注的數(shù)據(jù)集Xl=和其對應的標簽Yl=,以及大量的未標注數(shù)據(jù)集Xu=,其中n和m是2個數(shù)據(jù)集中的數(shù)據(jù)量,∈{0,1}C是一個one-hot 向量,C是類別數(shù)。本文目標是能有效利用標注數(shù)據(jù)和未標注數(shù)據(jù)一起訓練模型。為此,本文提出一種標簽猜測方法,為未標注數(shù)據(jù)生成標簽,將未標注數(shù)據(jù)視為附加的標注數(shù)據(jù),并在標注數(shù)據(jù)以及未標注數(shù)據(jù)上利用Mixup 方法進行半監(jiān)督學習。最后,引入了熵最小化損失。本文方法的總體框架如圖1 所示。
圖1 本文方法框架Fig.1 Framework of method in this paper
回譯是一種常見的文本增強技術,用機器翻譯把一段中文翻譯成另一種語言,然后再翻譯回中文。通過對同一未標注數(shù)據(jù)進行不同中間語言的回譯,可以得到不同的增強數(shù)據(jù),且能保留原始文本的語義。對于未標注數(shù)據(jù)集Xu中的每一個,生成K個增強數(shù)據(jù),其中k=[1,K],K表 示數(shù)據(jù)增強的次數(shù)。
為了避免加權過于平均,對預測結果使用如式(2)所示的銳化函數(shù)進行處理:
其中:‖·‖1是L1 范式;T是給定的超參數(shù),當T趨向于0 時,生成的標簽是一個one-hot 向量。
Mixup 是ZHANG 等[19]提出的一種圖像增強方法,Mixup 的主要思想非常簡單,即給定2 個標記數(shù)據(jù)(xi,yi)和(xj,yj),其中x是圖像,而y是標簽的onehot 向量,通過線性插值構建虛擬訓練樣本,如式(3)和式(4)所示:
其中:混合因子λ∈[0,1],由Beta 分布得到:
新的訓練樣本將被用于訓練神經網絡模型。Mixup 可以看作是一種數(shù)據(jù)增強方法,能夠基于原始訓練集創(chuàng)建新的數(shù)據(jù)樣本。同時,Mixup 強制對模型進行一致性正則化,使其在訓練數(shù)據(jù)之間的標簽為線性。作為一種簡單有效的增強方法,Mixup可以提升模型的魯棒性和泛化能力。
受Mixup 在圖像分類領域運用的啟發(fā),本文嘗試將其應用于文本分類任務中。通過標簽猜測得到未標注數(shù)據(jù)的標簽后,將標注數(shù)據(jù)Xl、未標注數(shù)據(jù)Xu和增強數(shù)據(jù)Xa=合并成一個大型的數(shù)據(jù)集X=Xl∪Xu∪Xa,對應的標簽為Y=Yl∪Yu∪Ya,其中Ya=,并且定義,即對未標注數(shù)據(jù),其所有的增強樣本與原始樣本共享相同的標簽。
在訓練過程中,本文從數(shù)據(jù)集X中隨機采樣2 個樣本x、x′,根據(jù)式(7)和式(8)分別計算Mixup(x,x′)和mix(y,y′):
其中:f(·)是將文本編碼為向量的神經網絡。
混合樣本通過分類模型獲得預測值p(Mixup(x,x′)),將預測結果和混合標簽進行一致性正則化,使用兩者的KL 散度作為損失,計算公式如式(9)所示:
由于x、x′是從數(shù)據(jù)集X中隨機采樣而來的,因此2 個樣本的來源有3 種情況:2 個都是標注數(shù)據(jù),各有1 個標注數(shù)據(jù)和1 個未標注數(shù)據(jù),2 個都是未標注數(shù)據(jù)?;谝陨锨闆r,將損失分為2 類:
1)監(jiān)督損失。當x∈Xl時,即當實際使用的大部分信息來自于標注數(shù)據(jù)時,使用監(jiān)督損失訓練模型。
2)一致性損失。當樣本來自未標注數(shù)據(jù)或增強數(shù)據(jù)時,即x∈Xu∪Xa,大部分信息來自于未標注數(shù)據(jù),使用KL 散度作為一致性損失,能夠使混合樣本與原始樣本具有相同的標簽。
為使模型能夠基于未標注數(shù)據(jù)預測出置信度更高的標簽,本文使用未標注數(shù)據(jù)的預測概率最小熵作為損失函數(shù):
其中:γ是邊界超參數(shù)。
結合2 種損失,構造總損失函數(shù)的表示式如式(11)所示:
本文模型包含編碼層、Mixup 層、分類層共3 層。輸入文本經過編碼層得到向量表示,Mixup 層通過隨機混合的文本向量表示和對應的分類標簽生成混合樣本和混合標簽?;旌蠘颖镜南蛄勘硎窘涍^Mixup 層被送入分類層。分類層通過全連接層和softmax 函數(shù)計算預測值,并針對混合樣本的標簽和預測值計算分類損失。本文模型的結構如圖2所示。
圖2 本文模型結構Fig.2 Structure of model in this paper
編碼層分為ERNIE 層、BiLSTM 層、Attention 層共3 個子層。
3.1.1 ERNIE 層
傳統(tǒng)的詞向量模型Word2vec 得到的是靜態(tài)詞向量,無法體現(xiàn)1 個詞在不同語境中的不同含義,而預訓練模型能夠動態(tài)捕捉上下文信息,提高文本表示能力。其 中ERNIE 等[20]提出一種知識掩碼(Knowledge Masking,KM)策略,在訓練階段引入外部知識,并隨機選取字、短語、命名實體進行mask,可以潛在地學習到被掩碼的短語和實體之間的先驗知識。此外,新增預訓練任務,使ERNIE 詞向量從訓練數(shù)據(jù)中獲取到更可靠的詞法、語法以及語義信息。
中文醫(yī)療文本存在一詞多義的問題,往往需要結合上下文語境才能獲得精確的語義信息,且藥物不良反應檢測通常與外部知識、藥物實體等密切相關。因此,本文使用百度開源的ERNIE 中文預訓練模型,并充分利用該模型的外部知識和實體信息。
ERNIE 采用多層Transformer 作為編碼器,通過自注意力機制捕獲每個詞向量在文本序列中的上下文信息,并生成上下文語境表征嵌入。以語料中的一個文本為例,文本中的詞序列x=[w1,w2,…,wn],其中:n表示文本長度;wi表示文本中的第i個詞。文本經過ERNIE 預訓練模型得到詞序列的向量表示E=[e1,e2,…,en],其中:ei∈Rd表示第i個詞的詞向量;d表示詞向量的維度。
3.1.2 BiLSTM 層
BiLSTM 層以詞向量表示為輸入,計算詞語在上下文中的向量表示:
3.1.3 Attention 層
Attention 層將BiLSTM 層的隱藏狀態(tài)作為輸入,通過自注意力權重分配來計算文本多個側面的向量表示,表達式如下:
其中:A∈Rr×n表示注意力權重矩陣,由2 層感知器網絡計算得到;分別是2 層注意力層的權重矩陣;da、r是超參數(shù),da表示注意力層隱藏狀態(tài)的維度,r是注意力機制的個數(shù)。
將文本表示矩陣Z∈Rr×2u中的r個向量拼接得到文本的向量表示z,其維度為2ur。
本文基于Mixup 方法,在文本的向量空間中混合樣本?;旌线^程是先隨機選取一個樣本,然后將同批次的樣本隨機打亂后抽取另一個樣本,對2 個樣本(zi,yi)和(zj,yj)進行插值。抽取過程均為不放回抽取。樣本混合因子λ由式(5)和式(6)得到:
在訓練的過程中,Mixup 層通過隨機混合批次內的文本向量表示得到擴增的文本向量表示,其中M表示一個批次的樣本數(shù)據(jù)量。
混合樣本通過一個全連接層和softmax 激活函數(shù),得到分類標簽的預估概率值:
其中:W∈RC×2ur和b∈RC分別是權重矩陣和偏置。
由于目前中文醫(yī)療社交媒體沒有公開可用的藥物不良反應檢測數(shù)據(jù)集,因此本文從好大夫網站收集用戶的診療記錄。如圖3 所示,每個診療記錄包含患者的信息、病情描述、醫(yī)生診療建議等內容。
圖3 診療記錄樣例Fig.3 Sample of treatment record
本文選取80 余種常用藥作為研究內容,其中包含降壓藥、抗過敏藥、抗生素等,獲取了網站2011 年以后包含相關藥物的診療記錄,并選擇記錄中的病情描述內容作為本文的原始語料。最終共獲得42 800 個文本,每個文本都提及了一種或者多種藥物。通過對文本進行預處理,刪除URL、英文字母、特殊字符等并去停用詞。原始語料來源于中文社交媒體,需要對其進行分詞。對于醫(yī)療數(shù)據(jù),傳統(tǒng)的jieba 分詞效果并不理想,因此本文使用北京大學開源分詞工具pkuseg 進行分詞,調用其自帶的medicine 模型將大部分的醫(yī)藥專業(yè)詞匯分詞出來。
為得到標注數(shù)據(jù),本文從語料中選取6 000 條數(shù)據(jù)讓5 名藥學專業(yè)學生進行人工標注,設定分類標簽y∈{0,1}。當不同人員之間存在爭議,同一數(shù)據(jù)的標注結果不一致時,以多數(shù)人的結果為準。標注樣例如表1所示。最終得到包含ADR 的數(shù)據(jù)有2 379 條,不包含ADR 的數(shù)據(jù)有3 621 條,并從中隨機選擇4 800 條作為訓練集,1 200 條作為測試集。
表1 標注數(shù)據(jù)樣例Table 1 Samples of labeled data
本文采用Pytorch 實現(xiàn)所提模型和算法,將文本的最大詞序列長度設為256。ERNIE 預訓練模型包含12 個Encoder 層,多頭注意力機制的頭數(shù)為12,隱藏層維度為768。將BiLSTM 層的隱藏狀態(tài)維度u設為300,Attention 層自注意力機制的參數(shù)r設為24,注意力層隱藏狀態(tài)維度da設為128。未標注數(shù)據(jù)的增強次數(shù)K對于偽標簽的影響較大,參照文獻[21],設置K=2,即對于每個未標注數(shù)據(jù)執(zhí)行2 次數(shù)據(jù)增強。將Beta 分布中的α設置為0.4,當α較小時,Beta(α,α)采樣得到的值大部分落在0 或1 附近,使樣本混合因子λ接近1,從而在合成樣本時偏向某一個樣本創(chuàng)建出相似的數(shù)據(jù)。
模型采用Adam 梯度下降算法訓練,初始學習率設為0.001,β1=0.9,β2=0.999,ε=1×10-8,batchsize=64。訓練過程采用提前停止策略,若模型性能在5 個epoch 后仍然沒有提升,則停止訓練。
4.3.1 ADR 檢測模型的對比實驗
本文選擇了如下6 種基于深度學習的ADR 檢測模型進行對比實驗:
1)CNN[11]模型:采用不同尺度的卷積神經網絡構建文本分類器。分別設置濾波器寬度為2、3、4、5,每個濾波器的大小均為25。
2)CNN+Att[11]模型:在CNN 網絡最上層加入注意力機制。
3)BiL+Att[12]模型:采用BiLSTM 作為編碼器,加入注意力機制。
4)ERNIE[20]模型:采用百度開源的ERNIE 中文預訓練模型作為編碼器,得到文本表示,直接連接一個全連接層實現(xiàn)文本分類。
5)ERNIE+BiL+Att 模型:基于BiL+Att 模型,使用ERNIE 模型得到詞向量表示。
6)ERNIE+BiL+Att+S-Mixup模型:在ERNIE+BiL+Att 模型的編碼層之上加Mixup 層。對標注數(shù)據(jù)進行文本增強,即有監(jiān)督的Mixup(Supervised Mixup,S-Mixup)。
選取4 800 條標注數(shù)據(jù)訓練模型,使用精確率、召回率和F1 值作為評價指標。實驗結果如表2 所示。
表2 不同ADR 檢測模型的實驗結果Table 2 Experimental results of different ADR detection models %
由表2 可知,CNN 模型的效果最差,而采用BiLSTM 獲取上下文信息,并引入注意力機制獲取文本的重要特征,能提高模型效果。對比BiL+Att 和ERNIE+BiL+Att 模型,利用ERNIE 預訓練模型得到的動態(tài)詞向量更符合語義環(huán)境,模型的性能也能得到有效提升。
本文對ERNIE 預訓練模型進行微調,實驗效果顯著,說明了預訓練模型在ADR 檢測任務中能達到較好的分類效果。然而對比ERNIE 與ERNIE+BiL+Att 模型,后者的實驗效果仍有小幅度提升,體現(xiàn)了ERNIE+BiL+Att 模型的優(yōu)勢。
由表2 還可以看出,ERNIE+BiL+Att+S-Mixup 模型的精確率、召回率和F1 值均優(yōu)于其他模型。這是因為神經網絡的訓練通常需要大量的標注數(shù)據(jù),而當標注數(shù)據(jù)有限時,效果往往不太理想。ERNIE+BiL+Att+S-Mixup 模型引入Mixup,通過對標注數(shù)據(jù)進行文本增強,在一定程度上增加了訓練樣本的數(shù)量,從而使ADR檢測模型的性能得到明顯的提升。
4.3.2 半監(jiān)督模型的對比實驗
本文選取了如下5 種半監(jiān)督模型進行對比實驗:
1)ERNIE+BiL+Att+S-Mixup 模型:僅使用標注數(shù)據(jù)。
2)Pseudo-Label[22]模型:先使用標注數(shù)據(jù)訓練模型,將未標注數(shù)據(jù)經過分類模型后得到的預測值作為偽標簽,使用帶有偽標簽的數(shù)據(jù)和標注數(shù)據(jù)一起訓練模型。
3)Π-Model[23]模型:對于同一數(shù)據(jù)的輸入,使用不同的正則化進行2 次預測,通過減小2 次預測的差異,提升模型在不同擾動下的一致性。
4)Mean Teachers[24]模型:使用時序組合模型,對模型參數(shù)進行EMA 平均,將平均模型作為teacher預測人工標簽,由當前模型預測。
5)ERNIE+BiL+Att+SS-Mixup 模型:即本文模型。先對未標注數(shù)據(jù)進行多次增強,將預測值加權平均作為低熵標簽,并共享原始樣本和增強樣本。使用標注數(shù)據(jù)、未標注數(shù)據(jù)和增強數(shù)據(jù)一起對模型進行訓練,即半監(jiān)督的Mixup(Semi-Supervised Mixup,SS-Mixup)。
從訓練集中選取不同數(shù)量的標注數(shù)據(jù)和5 000 條未標注數(shù)據(jù)。使用準確率(Accuracy,Acc)作為評價指標,實驗結果如表3 所示。
表3 不同半監(jiān)督模型的Acc 值對比Table 3 Acc value comparison of different semisupervised models %
由表3可知,與傳統(tǒng)的半監(jiān)督模型相比,本文模型在不同標注數(shù)據(jù)量的情況下,準確率均最高。當標注數(shù)據(jù)的數(shù)量較少時,準確率增長幅度尤其突出。隨著標注數(shù)據(jù)的增加,本文模型帶來的額外提升效果會逐漸降低。從表3中還可以看出,當標注數(shù)據(jù)量為1 500條時,本文模型與ERNIE+BiL+Att+S-Mixup模型在2 800條標注數(shù)據(jù)時的表現(xiàn)相近。即通過本文對未標注數(shù)據(jù)的半監(jiān)督學習,相當于免費獲得了近一倍的額外標注數(shù)據(jù)。說明本文模型有效利用了未標注數(shù)據(jù)的信息,緩解了標注數(shù)據(jù)量不足的影響。同時,本文模型對未標注數(shù)據(jù)有較好的標簽預測能力。
4.3.3 不同未標注數(shù)據(jù)量的對比實驗
為進一步對比未標注數(shù)據(jù)量對本文模型的影響,從訓練集中挑選了800 條標注數(shù)據(jù)和不同數(shù)量的未標注數(shù)據(jù)。實驗結果如表4 所示。
表4 不同未標注數(shù)據(jù)量的Acc 結果Table 4 Acc results of different unmarked data quantities
由表4 可知,當標注數(shù)據(jù)量一定時,未標注數(shù)據(jù)的數(shù)量越多,本文模型的預測結果越準確,表明本文模型能夠有效利用未標注數(shù)據(jù)的信息,幫助模型提升性能。
本文面向中文醫(yī)療社交媒體提出一種融合數(shù)據(jù)增強與半監(jiān)督學習的ADR 檢測方法。通過利用回譯的文本增強技術對未標注數(shù)據(jù)進行多次增強,并在模型的編碼層和分類層之間加入Mixup 層,對混合樣本的文本向量采取插值操作以擴充樣本數(shù)量。此外,通過半監(jiān)督學習訓練分類模型,充分利用標注數(shù)據(jù)與未標注數(shù)據(jù)。實驗結果表明,本文方法充分利用未標注數(shù)據(jù)解決了標注數(shù)據(jù)不足的問題。當標注數(shù)據(jù)量較少時,模型的準確率提升幅度尤其突出,且隨著未標注數(shù)據(jù)量的增加,模型性能得到提升。下一步將研究文本中藥物和不良反應的關系,通過辨別文本中出現(xiàn)的ADR信息是否已知,從而挖掘潛在的ADR 信息,提升本文模型的性能。