陳 思 源,譚 艾 迪,魏 雙 劍,蓋 珂 珂
(1.北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京 100081;2.北京理工大學(xué)長(zhǎng)三角研究院(嘉興),浙江 嘉興 314019;3.中國(guó)船舶工業(yè)綜合技術(shù)經(jīng)濟(jì)研究院,北京 100081;4.北京理工大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,北京100081)
醫(yī)院每天產(chǎn)生和診斷大量的醫(yī)療影像,據(jù)統(tǒng)計(jì)在醫(yī)療數(shù)據(jù)中,影像數(shù)據(jù)占數(shù)據(jù)總量的90%以上。隨著醫(yī)療檢測(cè)設(shè)備的更新?lián)Q代和不斷增加,影像數(shù)據(jù)以每年超過30%的增長(zhǎng)速度急劇增加。與此形成鮮明對(duì)比的是,醫(yī)生數(shù)量緩慢增長(zhǎng),這使得影像診斷如閱讀分析CT(計(jì)算機(jī)斷層掃描)等工作對(duì)醫(yī)生造成的負(fù)擔(dān)日益加劇,經(jīng)驗(yàn)缺乏與工作量增大容易造成誤診。隨著大數(shù)據(jù)和人工智能技術(shù)的發(fā)展,利用計(jì)算機(jī)輔助診斷,使用基于人工智能的目標(biāo)檢測(cè)技術(shù)幫助醫(yī)生做出快速判斷,對(duì)減輕醫(yī)生負(fù)擔(dān)、增加診斷準(zhǔn)確率、提高就診效率而言就顯得十分必要且具有現(xiàn)實(shí)意義。
目標(biāo)檢測(cè)技術(shù)因其廣泛的現(xiàn)實(shí)應(yīng)運(yùn)用場(chǎng)景備受學(xué)術(shù)界和工業(yè)界關(guān)注。隨著計(jì)算機(jī)算力的不斷提升,目標(biāo)檢測(cè)技術(shù)蓬勃發(fā)展,衍化出雙階段和單階段兩大類。
Faster R-CNN[1]、R-FCN[2]和FPN[3]都屬于雙階段,該類算法在基于特征提取的基礎(chǔ)上,在目標(biāo)對(duì)象上生成候選區(qū)域,再對(duì)其區(qū)域進(jìn)行分類和回歸,用矩形框確定準(zhǔn)確位置信息并判定類別。雙階段類算法中,R-CNN[4]是最早的深度學(xué)習(xí)目標(biāo)檢測(cè)算法,顯著提升了目標(biāo)檢測(cè)平均精準(zhǔn)度(mean Average Precison,mAP);He[5]通過引入空間金字塔池化層(Spatial Pyramid Pooling,SPP)提出SPP-NET,檢測(cè)效率較R-CNN大幅提高;Fast R-CNN[9]改 進(jìn)了R-CNN的池化核,將候選區(qū)域映射成統(tǒng)一尺度的特征向量,提高了模型訓(xùn)練效率。一般的,雙階段類算法具有較高的精度。
YOLO[6],SSD[7]和RetinaNet[8]等屬于單階段目標(biāo)檢測(cè)算法。該類算法一次性實(shí)現(xiàn)候選區(qū)域的生成、分類和回歸。YOLO網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,具有速度快、實(shí)時(shí)性較好的特點(diǎn),是單階段類算法的代表。SSD通過對(duì)不同卷積層預(yù)設(shè)錨盒提取特征,優(yōu)化了對(duì)多尺度目標(biāo)的檢測(cè)。YOLOv3延續(xù)了之前版本Darknet結(jié)構(gòu)的使用,同時(shí)引入殘差結(jié)構(gòu),提高了小尺度目標(biāo)的檢測(cè)精度??偟目磥韱坞A段類算法具有較高的效率。
然而,目標(biāo)檢測(cè)確保預(yù)測(cè)精準(zhǔn)的必要前提是需要大量準(zhǔn)確數(shù)據(jù)。訓(xùn)練樣本過小,會(huì)導(dǎo)致學(xué)習(xí)效果不佳。錯(cuò)誤的數(shù)據(jù)更是可能產(chǎn)生誤導(dǎo)性的結(jié)果。為了獲得大量數(shù)據(jù),在醫(yī)院、研究中心等機(jī)構(gòu)間共享醫(yī)療數(shù)據(jù)是簡(jiǎn)單高效的解決方案,但是中心化的醫(yī)療數(shù)據(jù)存儲(chǔ)不利于數(shù)據(jù)分享,容易催生倒賣數(shù)據(jù)的黑色產(chǎn)業(yè),更不利于對(duì)患者隱私的保護(hù)。區(qū)塊鏈?zhǔn)且环N分布式的數(shù)據(jù)賬本,可以在零信任基礎(chǔ)的用戶之間實(shí)現(xiàn)安全的數(shù)據(jù)共享。將區(qū)塊鏈用于醫(yī)療數(shù)據(jù)存儲(chǔ)和共享,這意味著用戶可以得到更多的訓(xùn)練數(shù)據(jù),產(chǎn)生更好的訓(xùn)練模型,得到更準(zhǔn)確的診斷預(yù)測(cè)結(jié)果,并有助于數(shù)據(jù)集的豐富和更新。除此之外,區(qū)塊鏈有助于幫助AI解釋自己,使AI的“黑匣子”存在被人類理解的可能。區(qū)塊鏈的數(shù)據(jù)公布于鏈上且不可篡改,擁有清晰的數(shù)據(jù)審計(jì)基礎(chǔ),不僅可以提高數(shù)據(jù)和模型的可信度,還可以提供一條清晰的路徑來追溯計(jì)算機(jī)決策的過程,消除人們對(duì)AI診斷的顧慮。
本文提出了一種新的醫(yī)療影像數(shù)據(jù)人工智能檢測(cè)模型,該模型使用區(qū)塊鏈網(wǎng)絡(luò),利用智能合約實(shí)現(xiàn)醫(yī)療影像數(shù)據(jù)共享,通過密碼學(xué)技術(shù)保證數(shù)據(jù)安全和隱私保護(hù)。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,其性能主要取決于網(wǎng)絡(luò)結(jié)構(gòu),常見的網(wǎng)絡(luò)結(jié)構(gòu)結(jié)構(gòu)有卷積神經(jīng)網(wǎng)絡(luò)和殘差網(wǎng)絡(luò)結(jié)構(gòu)等。
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一般分為下列層級(jí):
(1)輸入層
輸入一般為圖片,經(jīng)過輸入層的運(yùn)算處理,可轉(zhuǎn)化為三維像素矩陣,三個(gè)維度分別代表圖像的長(zhǎng)寬和色彩的通道數(shù)。黑白圖片通道數(shù)為1,彩色圖片通道數(shù)為3。經(jīng)過輸入層后,三維矩陣再通過不同網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行變換,直到最后的全連接層為止。
(2)卷積層
卷積層用于提取特征。輸入矩陣通過卷積核得到輸出矩陣。卷積核也是一個(gè)三維矩陣,它的長(zhǎng)和寬是通常為3×3或5×5。因?yàn)榫矸e操作兩個(gè)矩陣的深度必須是一致的,所以濾波器的深度不可以改變,必須和輸入層矩陣的深度一致。卷積核還需要人工設(shè)置個(gè)數(shù),它的個(gè)數(shù)決定了輸出層矩陣深度的大小。
(3)池化層
池化層用于壓縮數(shù)據(jù)尺寸大小,減少參數(shù)個(gè)數(shù),在加快網(wǎng)絡(luò)計(jì)算速度的同時(shí)又能夠防止過擬合問題的出現(xiàn)。
池化層通過使用過濾器在矩陣上進(jìn)行滑動(dòng),根據(jù)過濾器計(jì)算方式為取最大值還是平均值,分為平均池化和最大池化。平均池化與目標(biāo)區(qū)域所有值都有關(guān),所以對(duì)圖像背景信息的保留更為完整,而最大值池化并非與所有值有關(guān),因此突出保留邊緣紋理信息,這是識(shí)別目標(biāo)的重要特征,所以圖像識(shí)別大多使用最大值池化法。
(4)全連接層
全連接層的作用類似于分類器,用于實(shí)現(xiàn)特征到樣本空間的映射,可以通過采用尺寸1×1的卷積核的卷積層替代。
(5)softmax層
如圖1所示,softmax層往往作為深度神經(jīng)網(wǎng)絡(luò)的最后一層,作為多分類的輸出,輸出值為不同分類的概率。最后一次全連接神經(jīng)元的個(gè)數(shù)n即為需要分類的種數(shù)。之后將所有的經(jīng)過softmax運(yùn)算得到最終的輸出,softmax運(yùn)算公式為:
圖1 softmax層結(jié)構(gòu)
softmax運(yùn)算相當(dāng)于將輸入值映射為0~1之間的實(shí)數(shù),并且所有的輸出值和為1,正好可以把輸出值看作為判斷為該類別的概率,所以它可以作為分類問題中卷積神經(jīng)網(wǎng)絡(luò)的輸出。
隨著深層卷積網(wǎng)絡(luò)深度不斷增加,出現(xiàn)了準(zhǔn)確率反而降低的網(wǎng)絡(luò)的退化現(xiàn)象,其本質(zhì)就是因?yàn)樾畔G失而出現(xiàn)了過擬合問題。在網(wǎng)絡(luò)層數(shù)較多的情況,經(jīng)卷積處理的圖片會(huì)使得原本差別很大的圖像變得相似,那么這種情況下的分類結(jié)果過會(huì)出現(xiàn)誤差,問題的解決辦法就是提高泛化性和差異性,由此產(chǎn)生了殘差網(wǎng)絡(luò),其結(jié)構(gòu)如圖2所示。殘差結(jié)構(gòu)通過斷開式設(shè)計(jì),將之前層級(jí)中的數(shù)據(jù)直接輸入到后面數(shù)據(jù)層中,設(shè)x為輸入,擬合函數(shù)映射設(shè)為H(x),定義殘差映射F(x)=H(x)-x,則原始的映射函數(shù)H(x)可表示為F(x)+x。
圖2 殘差網(wǎng)絡(luò)結(jié)構(gòu)
區(qū)塊鏈?zhǔn)且环N變革式的數(shù)據(jù)存儲(chǔ)技術(shù),又稱分布式賬本,是比特幣的底層技術(shù),利用數(shù)字簽名、散列函數(shù)等密碼學(xué)技術(shù),結(jié)合P2P網(wǎng)絡(luò)實(shí)現(xiàn)的去信任、無法篡改的分布式數(shù)據(jù)庫(kù)[10]。數(shù)據(jù)存儲(chǔ)在稱為區(qū)塊的結(jié)構(gòu)中,這些區(qū)塊通過散列以鏈形式相互連接(通常每個(gè)塊還包括時(shí)間戳和通過其散列指向前一個(gè)塊的鏈接)。這些塊具有報(bào)頭和內(nèi)容。由于區(qū)塊之間按一定規(guī)則順序相連,隨著參與者和區(qū)塊數(shù)量的增加,在沒有網(wǎng)絡(luò)共識(shí)的情況下,要修改任何信息都是極其困難的。
從區(qū)塊鏈技術(shù)實(shí)現(xiàn)的層面來看,區(qū)塊鏈并不是計(jì)算機(jī)領(lǐng)域某一單一技術(shù)的改良或革新,而是多種跨領(lǐng)域成熟技術(shù)的完美結(jié)合。當(dāng)這些技術(shù)不再以獨(dú)立的身份孤立存在,而是以新的方式相互融合,創(chuàng)造了一種全新的數(shù)據(jù)承載模式[11]。
區(qū)塊鏈迅速為人們所熟知,并廣泛應(yīng)用于大數(shù)據(jù)、物聯(lián)網(wǎng)[12-16]等多個(gè)領(lǐng)域,得益于其本身具有的多種出眾特性,其中去中心、透明性和可溯源性、不可篡改性是其最為突出的優(yōu)勢(shì):
(1)去中心化
相較于傳統(tǒng)的中心化服務(wù)器存儲(chǔ),區(qū)塊鏈避免了使用單一節(jié)點(diǎn)存儲(chǔ)、更新數(shù)據(jù)的弊端,取而代之的是由所有參與方共同維護(hù)網(wǎng)絡(luò)數(shù)據(jù)。這種方式不僅提高了系統(tǒng)的安全性,同時(shí)使網(wǎng)絡(luò)數(shù)據(jù)不會(huì)因?yàn)槟骋还杨^存在而使整個(gè)網(wǎng)絡(luò)被更改和控制。
(2)透明性和可溯源性
區(qū)塊鏈面向所有接入節(jié)點(diǎn)開放,以比特幣為例,所有接入節(jié)點(diǎn)均可以查詢區(qū)塊鏈中的任意交易,每一節(jié)點(diǎn)都有權(quán)保存全部交易賬本,因此是面對(duì)交易透明的。于此同時(shí),區(qū)塊之間以鏈?zhǔn)浇Y(jié)構(gòu)首尾相連,按上鏈時(shí)間先后順序記錄數(shù)據(jù),因此實(shí)現(xiàn)了交易可溯源[17]。
(3)不可篡改性
區(qū)塊鏈上的數(shù)據(jù)上鏈前需運(yùn)行共識(shí)算法,達(dá)成共識(shí)后方可上鏈。共識(shí)算法種類很多,以比特幣為例,其采用工作量證明(POW)共識(shí)算法,鏈上交易需經(jīng)過6個(gè)區(qū)塊后才能被確認(rèn)為交易成功,這使得算力在50%以下的攻擊者想要篡改鏈上數(shù)據(jù)幾乎不可能實(shí)現(xiàn)[18],由此保證了不可篡改性。
模型結(jié)構(gòu)如圖3所示,目的是要充分利用各醫(yī)院的醫(yī)療影像數(shù)據(jù),在眾多機(jī)構(gòu)參與的情況下形成海量的數(shù)據(jù)集,從而訓(xùn)練得到更好的全局模型。對(duì)于某一訓(xùn)練任務(wù),服務(wù)器對(duì)任務(wù)進(jìn)行細(xì)分,明確學(xué)習(xí)的對(duì)象、相關(guān)設(shè)備、應(yīng)用的類型(如CT圖)、訓(xùn)練集的格式、訓(xùn)練模型(如卷積神經(jīng)網(wǎng)絡(luò))、訓(xùn)練要求(如學(xué)習(xí)率)等。為了保證各方原始數(shù)據(jù)不泄露,對(duì)k家醫(yī)院,它們各自擁有nk個(gè)數(shù)據(jù)點(diǎn),設(shè)本地模型權(quán)重為wt,學(xué)習(xí)率為η,醫(yī)院在本地訓(xùn)練其模型,并將更新參數(shù)記錄在區(qū)塊鏈上,再由服務(wù)器聚合得到全局模型。
圖3 模型結(jié)構(gòu)
參數(shù)更新公式如下:
本地權(quán)重更新:
全局權(quán)重更新:
各醫(yī)院節(jié)點(diǎn)充當(dāng)區(qū)塊鏈礦工,以工作量證明的共識(shí)機(jī)制(PoW)將更新參數(shù)記錄到區(qū)塊鏈中,以此基于貢獻(xiàn)的原則激勵(lì)數(shù)據(jù)共享。
為了保證數(shù)據(jù)安全,采用加密數(shù)據(jù)上鏈。各醫(yī)院擁有自身密鑰{PKj,SKj}{j=1,2,3,…,K}。 服務(wù)器提出任務(wù)txi時(shí),生成臨時(shí)密鑰串上標(biāo)代表任務(wù)批次,下標(biāo)代表醫(yī)院編號(hào),并使用對(duì)應(yīng)醫(yī)院的密鑰加密后廣播,因此各醫(yī)院只能得到自己的臨時(shí)密鑰。各醫(yī)院使用自身臨時(shí)密鑰對(duì)數(shù)據(jù)加密并做哈希后再將數(shù)據(jù)上鏈。在區(qū)塊鏈中,每個(gè)區(qū)塊對(duì)應(yīng)某一學(xué)習(xí)任務(wù)txi,對(duì)每家醫(yī)院而言,只能通過解密方式查看自己的數(shù)據(jù),其他鏈上數(shù)據(jù)呈現(xiàn)加密亂碼,由此保護(hù)各醫(yī)院數(shù)據(jù)的獨(dú)立安全。
除此之外,考慮兩種現(xiàn)實(shí)需求:(1)醫(yī)院想借助服務(wù)器診斷CT圖,除服務(wù)器給出的結(jié)果外,醫(yī)院還需判斷該結(jié)果的準(zhǔn)確率;(2)醫(yī)院A需要醫(yī)院B的鏈上數(shù)據(jù)以優(yōu)化自己的本地模型。
對(duì)于(1),過程如圖4所示,設(shè)醫(yī)院H需服務(wù)器對(duì)CT圖x0進(jìn)行診斷,得到病因y0。為了不暴露患者隱私,醫(yī)院H不想服務(wù)器知道需要診斷的具體為哪張CT圖,為此引入圖x1,x2,…,xt作為混淆輸入。x1,x2,…,xt為 已 被 正 確 診 斷 的CT圖,x1,x2,…,xt對(duì)應(yīng)診斷結(jié)果y1,y2,…,yt。{x0,{x1,y1},{x2,y2},…,{xt,yt}}被H提交至智能合約,智能合約再將{x0,x1,x2,…,xt}發(fā)送服務(wù)器。由于沒有收到y(tǒng)1,y2,…,yt,服務(wù)器無法識(shí)別真實(shí)需要判斷的CT圖x0,無差別地對(duì)所有輸入進(jìn)行判斷,將所有判斷結(jié)果{y0,y1,…,yt}
圖4 申請(qǐng)服務(wù)器診斷流程
對(duì)于(2),過程如圖5所示,設(shè)醫(yī)院A向智能合約發(fā)送請(qǐng)求SKA(request),希望得到區(qū)塊txi上醫(yī)院B的數(shù)據(jù)dataB,智能合約驗(yàn)證醫(yī)院A的簽名后,轉(zhuǎn)發(fā)請(qǐng)求至醫(yī)院B。醫(yī)院B將鏈上對(duì)應(yīng)數(shù)據(jù)解密,使用加密dataB,并用SKB簽名后發(fā)送給智能合約。隨后智能合約驗(yàn)證簽名并轉(zhuǎn)發(fā)醫(yī)院A,醫(yī)院A使用自己的臨時(shí)密鑰SKA解密得到醫(yī) 院A對(duì)解密后的數(shù)據(jù)用醫(yī)院B的臨時(shí)密鑰加密并做哈希運(yùn)算,查看結(jié)果與鏈上數(shù)據(jù)是否一致,從而可以判斷醫(yī)院B是否交付真實(shí)數(shù)據(jù)。
圖5 申請(qǐng)數(shù)據(jù)流程
本文提出了一種基于區(qū)塊鏈的醫(yī)療影像數(shù)據(jù)人工智能檢測(cè)模型。該模型基于區(qū)塊鏈網(wǎng)絡(luò)結(jié)合加密和簽名技術(shù),采用各方本地訓(xùn)練模型、在鏈上聚合更新權(quán)重的方式實(shí)現(xiàn)數(shù)據(jù)安全共享并避免了原始數(shù)據(jù)泄露。本文還細(xì)化提出了醫(yī)院共享數(shù)據(jù)、判斷服務(wù)器診斷準(zhǔn)確率的方法。