MIT提出:引入貝葉斯深度學(xué)習(xí)在醫(yī)療監(jiān)控上的應(yīng)用
Paper:
http://wanghao.in/paper/NatureMedicine21_MSA.pdf
Bayesian Formulation及算法細(xì)節(jié):
http://wanghao.in/BayesDL4MSA.html
Bayesian Deep Learning Survey:
http://wanghao.in/paper/CSUR20_BDL.pdf
Bayesian Deep Learning Github Repo:
https://github.com/js05212/BayesianDeepLearning-Survey/blob/master/README.md
來給大家講一下我們發(fā)表在Nature Medicine上的一個工作,這算是我在MIT期間做的最有意思的工作之一了。希望這個帖子能夠貢獻一個數(shù)據(jù)點,讓大家看看機器學(xué)習(xí)(特別是貝葉斯深度學(xué)習(xí),or Bayesian Deep Learning)在醫(yī)療監(jiān)控(Health Monitoring)上的應(yīng)用。
一、應(yīng)用場景
簡單(科幻)地說,我們做的這個系統(tǒng)能夠通過感知房子里面的wifi信號,來監(jiān)測病人是否遵醫(yī)囑,按時使用胰島素筆(Insulin Pen)或者定量吸入器(Inhaler)之類的醫(yī)療工具來治療自己。因為這類醫(yī)療工具的使用有點復(fù)雜(比如胰島素筆有8個步驟,而定量吸入器有6個步驟),病人經(jīng)常會出現(xiàn)使用失誤,我們這個系統(tǒng)還能自動檢測出病人有沒有漏掉哪個步驟,或者有沒有哪個步驟做得不到位。我們把這個應(yīng)用叫做‘ 自我給藥 ’(Medication Self-Administration,or MSA)。具體使用場景如下圖。
關(guān)于胰島素筆和定量吸入器的使用步驟可以看下圖。
二、 連續(xù)時間域的概率推理
熟悉機器學(xué)習(xí)的同學(xué)可能已經(jīng)發(fā)現(xiàn)了,這個問題其實是個比較復(fù)雜的概率推理問題:
1. 不同的步驟持續(xù)的時間長度不同,比如上圖Fig. 4a的第1步(Step 1)的‘拿起工具’一般只有4秒左右,而第6步(Step 6)‘用藥并按住’一般會持續(xù)12秒左右。因此可以認(rèn)為,不同步驟的時長都遵循不同的概率分布。如下圖。而我們的模型需要把這些先驗知識整合進去。
2. 不同步驟之間的空白時間也有長有短(比如上面綠色中間的白色區(qū)域)。
3. 病人經(jīng)常會忘記里面的一些關(guān)鍵步驟。比如,對于胰島素筆(見上圖)來說,病人經(jīng)常會忘記的步驟是第2步‘放入藥芯’(Load Cartridge)和第4步‘預(yù)備胰島素筆’(Prime Insulin Pen)。那么此時,我們可以把整個胰島素筆的流程畫成如下圖的有限狀態(tài)機。圖中的從Step 1出發(fā)的2個’50%’的路徑表示,一個病人有一半的(先驗)概率會忘記Step 2而直接進行Step 3。而這個也是我們的模型需要整合的先驗知識。
三、 貝葉斯深度學(xué)習(xí)
(深度學(xué)習(xí)和概率推理的結(jié)合)
從技術(shù)的角度上說,在這個work里面,我們結(jié)合底層的FMCW雷達Perception和頂層的Continuous-time BayesNet Reasoning做了一個Bayesian Deep Learning的model,用于全天候、無接觸地推斷慢性病人是否按時使用Insulin Pen、Inhaler之類的醫(yī)療工具治療自己,同時檢測自動具體使用步驟的異常。整個系統(tǒng)的流程圖如下。
這里面包含兩個聯(lián)動的模型。
第一個模型是用來處理類Wifi信號(底層的FMCW雷達信號)的深度神經(jīng)網(wǎng)絡(luò)。對應(yīng)上圖的階段1(Stage 1)和階段2(Stage 2)的合并。這個深度模型的 輸入 是:長達幾分鐘的很多幀(frame)的雷達信號(見上圖的第一行);而他的 輸出 是:每一幀屬于不同步驟的概率(見上圖的Stage 2的輸出),也就是說,如果這個用藥過程包含6個步驟,那么每一幀的輸出會是一個6維的向量,這6維的數(shù)字加起來會恒等于1。
第二個模型對應(yīng)上圖的階段3(Stage 3),它是基于Stage 2的原始概率分?jǐn)?shù)(Raw Probability Score),然后結(jié)合我們前面講到的‘ 連續(xù)時間域的概率推理 ’來進行進一步的概率推斷,從而輸出最終預(yù)測(見上圖最后一行)。
這兩個模型一個作為 深度模塊(也叫做感知模塊) ,負(fù)責(zé)對高維信號進行處理,另一個作為 概率推斷模塊(也叫做任務(wù)模塊) ,負(fù)責(zé)進行任務(wù)相關(guān)的概率推斷。兩個模塊可以聯(lián)動地、端到端(end-to-end)地起作用,我們把這個稱為 貝葉斯深度學(xué)習(xí)
有興趣的同學(xué)請看 A Survey on Bayesian Deep Learning :
http://wanghao.in/paper/CSUR20_BDL.pdf
四、 深度學(xué)習(xí)vs貝葉斯深度學(xué)習(xí)
那么問題來了,此處為何需要第二個模型的聯(lián)動呢?為何直接使用第一個模型沒法解決問題?
這是因為, 第一個模型作為一個深度神經(jīng)網(wǎng)絡(luò),只負(fù)責(zé)給出每幀獨立的概率預(yù)測,無法結(jié)合本幀的前后部分來進行推理。 這樣的后果是,它直接輸出的逐幀預(yù)測經(jīng)常是不符合常理的。比如它可能輸出這樣的預(yù)測:前0.1秒這個病人還在使用設(shè)備的第3步,后0.1秒就直接跳回到第1步,而后的0.1秒又是在第4步。一個正常人顯然無法做出這樣的動作序列。因此,第二個模型的作用就是,把我們在連續(xù)時間域上的先驗知識(前面‘ 連續(xù)時間域的概率推理 ’章節(jié)講到的那三個方面)整合入模型里面,進行端到端(end-to-end)的推斷,從而拿到最終的預(yù)測。這整個結(jié)合概率推理和深度學(xué)習(xí)的框架,我們把它叫做 貝葉斯深度學(xué)習(xí) 。
這樣做的好處有兩方面。 第一方面 是大大提高模型的 準(zhǔn)確度和魯棒性 。由于概率推理的存在,模型會根據(jù)整個幾分鐘的動作序列來判斷病人是否在使用醫(yī)療用藥工具,這樣既自動糾正了第一個模型的一些錯誤預(yù)測,同時也使得整個系統(tǒng)受無關(guān)噪音的影響大大減小。 第二方面 是給模型提供了 可解釋性 。正如 @kkhenry 所說,在醫(yī)療相關(guān)的應(yīng)用中,可解釋性異常重要,因為這個關(guān)系到,AI系統(tǒng)的使用者(醫(yī)生等醫(yī)療從業(yè)人員)能否相信你模型的預(yù)測。有了概率推斷的部分,我們就可以給出對每個步驟預(yù)測的概率,以及模型預(yù)測于先驗知識的偏差程度,從而提供解釋。比如,模型可以給出‘此病人在早上9點使用了醫(yī)療工具,但是使用錯誤’的結(jié)論,同時解釋‘這是因為模型有95%的把握他/她跳過了Step 2。而醫(yī)生可以根據(jù)模型提供的解釋,來決定要不要進一步檢查此病人的具體數(shù)據(jù),并提醒病人。如下圖。
五、技術(shù)細(xì)節(jié)之如何結(jié)合
兩個模型的預(yù)測
關(guān)于Output,每個幀會有2個預(yù)測(Prediction)。第一個預(yù)測是來自于第一個模型(深度學(xué)習(xí)模型)給出的逐幀(Frame-level)預(yù)測,這個很簡單,可以理解為神經(jīng)網(wǎng)絡(luò)對輸出進行Softmax操作后,得到的各類的概率。第二個預(yù)測來自于第二個模型(概率推斷模型)。它是來自于一個作為先驗(Prior)的隨機過程,具體地講,這是一個連續(xù)時間域的 點過程 (Point Process)和 馬爾科夫鏈 (Markov chain)的結(jié)合。點過程負(fù)責(zé)對每個步驟(比如Step 2)的長度進行建模,馬爾科夫鏈負(fù)責(zé)對各個步驟之間的轉(zhuǎn)換進行建模(比如進行Step 1后,有一半的概率會進行Step 2,有另一半的概率會進行Step 3)。
這里有一個有趣的點就是,如果我們只用一般的點過程,比如 泊松過程 (Poisson Process),是沒有辦法很好的對每個步驟的長度進行建模的。這是因為泊松過程假設(shè)每個步驟的長度是一個指數(shù)分布(Exponential Distribution),而指數(shù)分布一旦他的期望值(均值)確定了(比如是a),他的方差也就確定了(等于a^2)。因此它沒法像高斯分布(Gaussian Distribution)一樣那么靈活,可以自由地描述一個分布的期望值和方差。所以這個地方我們靈機一動,把泊松過程的指數(shù)分布替換成 高斯分布 ,用來作為我們模型的先驗之一。而每個步驟持續(xù)時間的高斯分布的期望值和方差都不一樣,這些都可以從訓(xùn)練數(shù)據(jù)里面直接估計出來。
所以,我們直接結(jié)合了第一個模型(深度學(xué)習(xí)模型)的 預(yù)測分?jǐn)?shù) ,以及第二個模型提供的 先驗分?jǐn)?shù) ,在加上一個 近似的動態(tài)規(guī)劃算法 ,就可以進行聯(lián)動的(jointly or end-to-end)概率推斷,得到最終的預(yù)測。下圖展示了一些我們模型預(yù)測(AI Prediction)和人工標(biāo)注(Human Annotation)的對比,前3個例子(a、b、c)是3個不同的病人在使用胰島素筆,總共有8個步驟。后面3個例子是3個不同的病人在使用定量吸入器,總共有6個步驟??梢钥吹剑?nbsp;我們的模型最終預(yù)測是非常準(zhǔn)確的,而且不會出現(xiàn) physically impossible 的預(yù)測。
六、寫在最后
整個帖子算是拋磚引玉,講了下機器學(xué)習(xí)(更具體的是貝葉斯深度學(xué)習(xí))及其在醫(yī)療上的應(yīng)用。
最后要感謝一下趙老板拉我入伙一起做這個work。遙想當(dāng)年剛進去MIT的時候就想著把貝葉斯深度學(xué)習(xí)用到醫(yī)療上,說要用深度模塊(即感知模塊)來對無線信號建模,用概率模塊(即任務(wù)模塊)來做醫(yī)療相關(guān)的概率推斷。沒想到最后真的實現(xiàn)了??芍^念念不忘必有回響:)
Illustration by Maria Shukshina from Icons8