?圖表示學習技術在藥物推薦系統(tǒng)中的應用
導讀:本次分享的題目是圖表示學習技術在藥物推薦系統(tǒng)中的應用。
主要包括以下四個部分:
- 研究背景與挑戰(zhàn)
- 判別式藥品包推薦
- 生成式藥品包推薦
- 總結與展望
一、研究背景與挑戰(zhàn)
1、研究背景
- 醫(yī)療資源總體不足,分布不均帶來沉重壓力
藥物推薦是智慧醫(yī)療的一個子問題,首先從智慧醫(yī)療的大背景說起,在我國智慧醫(yī)療存在緊迫性,隨著人口增長、老齡化加劇,人們對于高質量醫(yī)療服務的需求不斷攀升。圖中兩組數(shù)據(jù),一是全國醫(yī)療機構的就診人數(shù)在 60.5 億人次,同比增長 22.4%;二是柳葉刀上關于各國醫(yī)療衛(wèi)生條件統(tǒng)計,我國醫(yī)生大學本科以上學歷僅 57.4%,包括醫(yī)生、護士、社區(qū)衛(wèi)生工作者等 16 類衛(wèi)生工作職業(yè)的每萬人從業(yè)者數(shù)量上,中國僅達到美國的 1/3 。我國的診療人數(shù)不斷攀升,但醫(yī)療資源和醫(yī)療水平相對于發(fā)達國家還有較大的不足,此外還存在著醫(yī)療資源分配不均的問題?;鶎俞t(yī)療機構的醫(yī)療水平相對有限,而頂層機構是供不應求的。因此如何充分利用高水平醫(yī)療機構的診療經(jīng)驗,協(xié)助提升基層醫(yī)療機構的醫(yī)療水平,是一個亟待解決的重要問題。
- 智慧醫(yī)療,人工智能技術帶來了曙光
隨著近些年醫(yī)療機構數(shù)字化進程加快,我國大量的醫(yī)療機構尤其是三甲醫(yī)院等高水平醫(yī)療機構都已經(jīng)積累了非常豐富的電子病歷數(shù)據(jù)。如果能夠利用大數(shù)據(jù)人工智能技術,充分挖掘此信息并提取相關知識,則有可能幫助我們理解這些高水平機構中醫(yī)療專家的一些診療方式和思想,進而支撐智慧復診、醫(yī)療影像分析、慢性病隨訪等一系列的下游智慧醫(yī)療的應用,這些具有顯著的意義。
2、研究挑戰(zhàn)
當下越來越多的醫(yī)療 AI 技術正在取得更加廣泛的應用,也推動了醫(yī)療服務的公平化和普惠化。部分 AI 技術如醫(yī)療影像分析等已經(jīng)取得了一些令人矚目的成果,但在藥品推薦系統(tǒng)中卻存在較少應用,原因是藥品推薦系統(tǒng)和傳統(tǒng)的推薦系統(tǒng)有著非常大的差別,技術上也存在著諸多的難點。
- 包推薦系統(tǒng)
第一個挑戰(zhàn)是傳統(tǒng)基于協(xié)同過濾等方法的推薦系統(tǒng)的應用場景主要是一次為一名用戶推薦一個物品,他們的輸入是單個物品和單個用戶的表示,輸出的是二者之間的匹配程度打分。然而在藥品推薦中,醫(yī)生往往需要一次為患者開出一組藥品。藥品推薦系統(tǒng)實際上是一個包推薦系統(tǒng),叫做 package recommendation system,同時為一個用戶推薦一組藥品。如何結合包推薦系統(tǒng)進行藥品推薦,是我們面臨的第一個大挑戰(zhàn)。
- 藥品間相互作用
藥品推薦系統(tǒng)的第二個挑戰(zhàn)是藥品之間存在著多種多樣的相互作用。有些藥品之間存在藥效互相促進的協(xié)同作用,有些藥品間存在藥效互相抵消的拮抗作用,甚至有些藥品的合用會導致毒性或者其他副作用。圖中病人是患有某種腎臟疾病,左邊部分是醫(yī)生為病人所開藥品,其中部分藥品存在協(xié)同作用,可以促進藥效。右邊部分是統(tǒng)計分析出來的對癥高頻藥品??梢钥吹竭@些藥品可能是由于一些拮抗作用而沒有被選取,下面的藥品可能是跟已有的某種藥品產(chǎn)生了毒性,因此也沒有被此患者使用。
此外,藥品的相互作用影響是個性化的。我們在數(shù)據(jù)統(tǒng)計中發(fā)現(xiàn)存在大量有拮抗作用、甚至是有毒性作用的藥品同時使用。根據(jù)分析,其實醫(yī)生是會根據(jù)病人的病情考慮相互作用影響而開出藥物。比如一些腎臟健康的病人,他往往可以承受一定的藥品腎臟毒性的,因此我們需要對藥品之間的相互作用進行個性化的建模和分析。
3、圖表示學習技術成為了新的可能
總結來說,結合以上的挑戰(zhàn),圖表示學習技術是非常適合解決藥品推薦系統(tǒng)中存在的問題。隨著圖神經(jīng)網(wǎng)絡的飛速發(fā)展,人們意識到圖神經(jīng)網(wǎng)絡技術可以非常有效的建模節(jié)點之間的組合效應與節(jié)點之間的關系,這啟發(fā)我們圖表示學習技術或許將會成為構建藥品推薦系統(tǒng)的一個利器。
圖中舉例來說,我們可以將一個藥品包根據(jù)其中的相互作用構建成圖,通過已有的圖神經(jīng)網(wǎng)絡進行建模?;谝陨舷敕ǎ覀兪褂脠D深度學習技術在藥品推薦系統(tǒng)上做了兩篇工作,分別發(fā)表在 WWW 和 TOIS 期刊上,以下是詳細介紹。
二、判別式藥品包推薦
首先介紹一下我們發(fā)表在 WWW2021 上的關于藥品包推薦論文。這篇文章采用了包推薦系統(tǒng)中廣泛應用的判別式模型定義方法建模,同時使用了圖表示學習技術作為核心技術部分。
1、數(shù)據(jù)描述
- 電子病例數(shù)據(jù)
首先介紹工作中使用的數(shù)據(jù)描述。
我們在研究工作中使用的電子病歷是來自于一個大型三甲醫(yī)院的真實電子病歷數(shù)據(jù)庫,其中每條電子病歷都包括了以下幾類信息:一是患者的基本信息,包括患者的年齡、性別、醫(yī)保等等;二是患者的化驗信息,包括醫(yī)生關注的化驗結果的異常,以及異常的種類:偏高、偏低、是否陽性等;三是醫(yī)生為患者撰寫的病情描述:包括患者為什么入院、以及初步體格檢查等信息;最后是醫(yī)生為患者開的一組藥品。
此電子病歷數(shù)據(jù)是一個異構數(shù)據(jù),包括年齡、性別、化驗等結構化信息以及病情描述等非結構化文本信息。
- 藥品數(shù)據(jù)
為了研究藥品之間的相互作用,我們從 DrugBank 與藥制網(wǎng)兩個大型在線開源藥品知識庫里收集了部分藥品的屬性及相互作用數(shù)據(jù)。藥品相互作用是基于一些模板的自然語言描述,如上圖中 description 一欄是在講某種藥品可能可以增加代謝或減弱代謝等,中間話是模板,前后是填充的藥品名字。因此只要清楚模型分類,則可以把數(shù)據(jù)庫里所有的藥品相互作用進行標記。
因此,我們在專業(yè)醫(yī)師的指導下,把藥品相互作用考慮了無相互作用、協(xié)同作用和拮抗作用三類,把模板進行了標注,得到了藥品相互作用的分類。
2、數(shù)據(jù)預處理與問題定義
數(shù)據(jù)預處理來說,對于電子病歷數(shù)據(jù),我們將其分為了兩個部分:患者的基本信息和化驗信息,我們將其處理為一個 One-hot 的向量;病情描述文本部分,我們通過一些 Padding 與 Cut off 將其轉化為定長文本。對于藥品相互作用數(shù)據(jù):我們將其轉化為一個藥品的相互作用矩陣。
同時問題定義如下:給定一組患者的描述以及對應 Ground-truth 藥品包,我們將訓練一個個性化的打分函數(shù),該函數(shù)可以輸入給定患者和樣品包,輸出一個匹配程度打分。很明顯,這是一個判別式模型的定義方式。
3、模型概覽
本文提出的論文題目是 DPR:Drug Package Recommendation via Interaction-aware Graph Induction。模型包括三個部分:
預訓練部分,我們基于 NCF 框架得到病人與藥品初始表征。
藥品包構建部分,我們提出了一種基于藥品相互作用關系類型,將藥品包構建成藥品圖的方法。
最后一個部分是基于圖的藥品包的推薦框架,其中設計了兩個不同的變種,從兩種不同的角度去理解如何建模藥品之間的相互作用。
- 預訓練
首先預訓練部分是按照傳統(tǒng)的一對一推薦方式進行的。給定一個病例,醫(yī)生為給病人使用過的藥品是正例,未使用過的藥品是負例。通過 BPRLoss 進行預訓練,使用過的藥品得分比沒使用過的高。
預訓練部分主要是要捕捉基本的藥效信息,為后面捕捉更復雜的交互作用提供基礎。對于 One-hot 部分,我們使用 MLP 提取特征;對于文本部分,我們使用LSTM提取文本特征。
- 藥品圖構建
與傳統(tǒng)推薦相比,藥品推薦的核心問題是如何考慮藥品間的相互作用關系,得到藥品包的表征?;诖耍疚奶岢隽嘶趫D模型的藥品包建模方法。
首先,已標注好的藥品相互作用關系會轉化成一個藥品相互作用矩陣,其中不同的數(shù)值表示不同的相互作用類型。隨后基于此矩可以將任意一個給定的藥品包轉化成一個異構藥品圖,圖中節(jié)點對應藥品包中的藥品,節(jié)點屬性是節(jié)點對應上一個步驟中的預訓練過的Embedding。同時為了避免計算量過大,我們并沒有把藥品圖構建成完全圖,即沒有讓任意兩個藥品之間都有一條邊,而是有選擇的進行保留,具體而言只保留了那些被標注過的藥品對的邊以及頻率超過一定閾值的邊。
- 藥品圖構建
為了對藥品圖進行有效表征,我們提出了兩種方式對藥品圖上的邊屬性進行形式化。
第?一種形式是 DPR-WG,使用帶權圖表示藥品圖。首先是根據(jù)標注好的藥品相互作用,對邊全值進行初始化,其中使用-1表示拮抗,+1表示協(xié)同,0 是表示無相互作用或者未知。隨后使用了掩碼向量對藥品圖中的邊權值進行個性化的更新。
該掩碼向量反映了不同藥品的相互作用,對于個?病人的個性化的影響程度,它的計算方法是使用一個非線性層加 Sigmoid 的函數(shù)使得每一個維度取值都是從 0~1 之間,從而實現(xiàn)特征選擇的作用,對藥品的相互作用進行個性化調整。藥品圖更新過程是在 DPR-WG 中先算出一個更新因子,更新因子與對應邊上的權重相乘或者相加等進行更新。后續(xù)實驗中發(fā)現(xiàn)其實更新方法對結果影響不大,在藥品圖表征過程中,我們設計了基于帶權圖的表示藥品的方法。
總結來說,我們首先設計了一個針對帶權圖的信息更新過程:聚合鄰居信息,在聚合的過程中,根據(jù)邊的權重,個性化調整它聚合程度。隨后我們使用了一個 Self Attention 機制把不同節(jié)點之間的權重計算,使用一個聚合 MLP 把圖聚合起來得到最終整個藥品圖的表征。后續(xù)把病人表征與藥品圖表征輸入到打分函數(shù)里面去,可以得到輸出進行推薦。
此外,本文使用 BPRLoss 訓練模型,引入負采樣方法,對應 1 個正樣本有 10 個負樣本。
第二個變種是使用屬性圖表示藥品圖。首先是通過一個 MLP 融合邊兩端的節(jié)點向量初始化邊向量。隨后同樣使用掩碼向量對邊向量進行更新,此時更新方法就不再是更新因子,而是計算一個更新向量,使用更新向量與藥品的邊向量進行逐元素相乘,得到更新后的邊屬性向量。我們專門設計了針對屬性圖的 GNN,其 message passsing 過程首先是根據(jù)邊向量及兩端的節(jié)點 Embedding計算出message進行傳播,通過self attention及聚合方法得到Graph Embedding。
同樣我們可以采用 BPRLoss 進行訓練,不同的是我們額外引進了一個針對邊分類的交叉熵損失函數(shù),希望邊向量可以包含藥品相互作用的類別信息。因為上一個變種中初始化的正負號天然的保留了此信息,但此變種的圖沒有,因此通過引入損失函數(shù)來把此信息補上。
從實驗結果來看,我們的兩個模型均在不同的評價指標上超出了其他判別式模型。同時我們也進行了案例分析:采用 t-SNE 方法,把之前提到的掩碼向量投影到一個二維的空間上。圖中所示,比如孕婦、嬰兒以及肝臟病人等,他們使用的藥物有非常明顯的聚集成簇的趨勢,證明了我們方法的有效性。
三、生成式藥品包推薦
以上判別式模型只能在已有藥品包中進行挑選,沒有生成新的藥品包能力,會影響推薦效果,接下來我們將會介紹發(fā)表在 TOIS 期刊上的針對上一篇工作的擴展工作,目的是希望模型能夠生成全新的為新病人量身定做藥品包。
此工作是保留了上一篇論文中圖表示學習的核心思想,同時完全改變問題定義,把模型定義成生成模型,引入序列生成與強化學習技術,大幅的提高了推薦效果。
1、判別式推薦->生成式推薦
判別式模型與生成式模型的核心區(qū)別是判別式模型是給定病人與給定藥品包的匹配程度打分,而生成式模型是為病人生成候選藥品包并挑選最佳藥品包。
2、啟發(fā)式生成方法
針對上文中提出的判別式模型的缺點,我們設計了一些啟發(fā)式生成方法:通過在相似病人的藥品包中進行增加和刪除部分藥品的操作,形成一些歷史記錄中從來沒有出現(xiàn)過的藥品包供模型挑選。實驗結果證明這種簡單的方法十分有效,為后續(xù)方法提供了基礎。
3、模型概覽
接下來是發(fā)表在 TOIS 的 Interaction-aware Drug Package Recommendation via Policy Gradient 文章。文中提出的模型叫做 DPG,不同于上一篇的 DPR,這里的 G 是 Generation。
此模型主要包含三個部分,分別是藥品相互作用圖上的信息傳播,病人的表征以及藥品包生成模塊,與上文的最大的區(qū)別是藥品包生成模塊。
- 藥品相互作用圖
首先構建藥品相互作用圖部分,文中保留了圖神經(jīng)網(wǎng)絡捕捉藥品間相互作用的方法,不同的是判別式模型中,藥品包是給定的,可以方便的轉化為藥品圖,而在生成式模型中,藥品圖是不固定的,由于計算量原因,無法把所有的藥品包都構建成圖。
本文把所有的藥品全部包含在了一個藥品相互作用圖中,同樣采用 Attributed graph 進行圖形式化,同時也保留了邊分類損失函數(shù),保留邊的 Embedding 信息,最后也構建了基于此藥品相互作用圖上的 GNN。
經(jīng)過幾輪(一般為2)的 message passing 后,我們提取其中節(jié)點 Embedding 作為要使用的藥品 Embedding。
- 病人表征
病人表征部分,同樣采用了 MLP 和 LSTM 提取病人的表征向量,同時也會計算掩碼向量,后續(xù)用于捕捉病人個性化表示向量。
- 基于序列生成的藥品包生成
藥品包生成任務可以視為一個序列生成任務,采用循環(huán)神經(jīng)網(wǎng)絡 RNN 實現(xiàn)。但此方法也帶來了兩大挑戰(zhàn):
第一個挑戰(zhàn)是在生成過程中如何考慮生成出的藥品和已有的藥品之間的相互作用。為此我們提出了一種基于藥品相互作用向量的方法顯式建模藥品之間的相互作用。
第二個挑戰(zhàn)是樣品包是一個集合,本質是無序的,但是序列生成任務往往針對有序序列順序的方法。為此我們提出了一種基于策略梯度的強化學習方法,同時增加了基于SCST的方法來提升此算法的效果和穩(wěn)定性。
- 基于極大似然的藥品包生成
首先介紹如何在基于極大自然的藥品包生成過程中考慮藥品間的相互作用,此部分也是后面用強化學習部分的基礎。基于極大似然的序列生成方法在 NLP 領域已經(jīng)得到了廣泛使用,在生成過程中,每生成一個藥品都依賴于之前生成的其他藥品。
為了考慮到藥品間的相互作用,同時又不為模型帶來過大的計算負擔,我們提出在每一個時間步,顯式計算最新生成的藥品與之前藥品的相互作用向量,此向量計算方法來自于之前圖神經(jīng)網(wǎng)絡里的一個層。
同時我們增加掩碼向量與相互作用向量進行對應元素相乘,引入患者的個性化信息。
最后把所有藥品的相互作用向量求和,使用 MLP 將其融合得到綜合的相互作用向量。
后續(xù)把此向量融入經(jīng)典的序列模型中進行生成,則是解決了第一個挑戰(zhàn)。
與經(jīng)典的序列生成不同的是藥品包其實是一個集合,不應該出現(xiàn)重復藥品,因此我們后續(xù)增加了一個限制,讓模型不能生成已經(jīng)生成過的這個藥品,保證生成結果一定是一個集合。最后我們采用了基于極大似然的 MLE 損失函數(shù)訓練模型。
- 基于強化學習的藥品包生成
以上基于最大似然的方法最大的缺點是藥品包具有嚴格順序,部分人工為藥品指定順序的方法,如根據(jù)頻率排序,根據(jù)首字母排序等等,會破壞藥品包集合的特性,同時也會損失掉部分模型的 performance,因此我們提出了基于強化學習的藥品包生成模型。強化學習中模型的目標是最大化人工設置的 reward 函數(shù),在模型生成完整的藥品包之后,給一個和順序無關的 reward 損失函數(shù),則可以減弱模型對順序的依賴性。
本文采用的是 F-value 作為 reward,它是一個順序無關的函數(shù),同時是我們所關注的評價指標。本文采用 F-value 作為評價指標,在訓練方式上采用了基于策略梯度的訓練方式,在此就不進行詳細推導。
基于策略梯度的訓練方法中,其重一個廣為人知的方法是使用一個 baseline 減少梯度估計的方差,從而增加訓練的穩(wěn)定性。因此我們使用了基于 SCST 的訓練方式,即 Self-critical sequence training 方法。baseline 同樣來自于模型自身生成的這個藥品包所獲得的 reward,自己生成的方式我設計為 Greedy search 的正常序列生成方法。
我們希望模型根據(jù) Policy gradient 采樣出來的藥品包的 reward 要高于傳統(tǒng)給予 Greedy search 生成出來藥品包?;诖吮疚脑O計了強化學習的損失函數(shù),如圖中所示,這里就不詳細的介紹推導過程。
- 極大似然預訓練+強化學習
此外,強化學習的一個特性是訓練較難,因此我們結合了以上兩種訓練方式,首先采用極大自然的估計方法對模型進行預訓練,隨后采用強化學習的方法,對模型參數(shù)進行微調。
- 實驗結果
接下來是模型的實驗結果。
在上表中,所有的藥品包都是用 Greedy search 生成的。首先基于生成式模型的表現(xiàn)普遍優(yōu)于基于判別式模型方法,該實驗證明了生成式模型將會是一個更加優(yōu)秀的選擇。此模型在 F value 上超越了其他所有的 Baseline。此外,基于強化學習的模型表現(xiàn)大大超越了基于極大似然模型,證明了強化學習方法的有效性。
后續(xù)我們還進行了一系列的消融實驗。我們分別去掉了相互作用圖,包括相互作用的掩碼向量以及強化學習的模塊進行消融,結果證明我們的各個模塊都是有效的。同時可以看到,把 SCST 模塊去掉,模型效果下降非常多,因此也證明了強化學習確實比較難訓練。如果不加 Baseline 限制,整個訓練過程會非常抖動。
最后我們也做了大量的案例分析,可以看到孕婦和嬰兒有明顯的個性化偏好。同時我們額外加了一些常見病如胃病、心臟病等,這些病的掩碼向量則分布非常分散,沒有形成簇。常見病的患者情況多種多樣,不會有特別個性化的情況出現(xiàn),不像孕婦和嬰兒有著非常明顯的對于藥品的篩選,如某些需要指定小兒藥品,有些藥品孕婦不能使用等。
同時我們對藥品的相互作用向量進行了投影,可以看到協(xié)同作用和拮抗作用兩種藥品相互作用形成了兩個不同的對立情況,說明模型捕捉到了兩種不同相互作用帶來的不同效果。
四、總結與展望
總結來說,我們的研究主要是相互作用感知的個性化藥品包推薦,包括判別式的藥品包推薦以及生成式的藥品包推薦。
兩者共同點是都使用了圖表示學習技術來建模藥品間的相互作用、都使用了掩碼向量考慮病人病情對于相互作用的個性化的感知。
兩項工作最大的區(qū)別是問題定義差別,對于判別模型我們要的是一個打分函數(shù),那么對于生成模型我們要的是一個生成器,通過實驗證明,生成式模型其實是對于問題更好的一個定義。