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