陳 思 源,譚 艾 迪,魏 雙 劍,蓋 珂 珂
(1.北京理工大學 計算機學院,北京 100081;2.北京理工大學長三角研究院(嘉興),浙江 嘉興 314019;3.中國船舶工業綜合技術經濟研究院,北京 100081;4.北京理工大學 網絡空間安全學院,北京100081)
醫院每天產生和診斷大量的醫療影像,據統計在醫療數據中,影像數據占數據總量的90%以上。隨著醫療檢測設備的更新換代和不斷增加,影像數據以每年超過30%的增長速度急劇增加。與此形成鮮明對比的是,醫生數量緩慢增長,這使得影像診斷如閱讀分析CT(計算機斷層掃描)等工作對醫生造成的負擔日益加劇,經驗缺乏與工作量增大容易造成誤診。隨著大數據和人工智能技術的發展,利用計算機輔助診斷,使用基于人工智能的目標檢測技術幫助醫生做出快速判斷,對減輕醫生負擔、增加診斷準確率、提高就診效率而言就顯得十分必要且具有現實意義。
目標檢測技術因其廣泛的現實應運用場景備受學術界和工業界關注。隨著計算機算力的不斷提升,目標檢測技術蓬勃發展,衍化出雙階段和單階段兩大類。
Faster R-CNN[1]、R-FCN[2]和FPN[3]都屬于雙階段,該類算法在基于特征提取的基礎上,在目標對象上生成候選區域,再對其區域進行分類和回歸,用矩形框確定準確位置信息并判定類別。雙階段類算法中,R-CNN[4]是最早的深度學習目標檢測算法,顯著提升了目標檢測平均精準度(mean Average Precison,mAP);He[5]通過引入空間金字塔池化層(Spatial Pyramid Pooling,SPP)提出SPP-NET,檢測效率較R-CNN大幅提高;Fast R-CNN[9]改 進了R-CNN的池化核,將候選區域映射成統一尺度的特征向量,提高了模型訓練效率。一般的,雙階段類算法具有較高的精度。
YOLO[6],SSD[7]和RetinaNet[8]等屬于單階段目標檢測算法。該類算法一次性實現候選區域的生成、分類和回歸。YOLO網絡結構簡單,具有速度快、實時性較好的特點,是單階段類算法的代表。SSD通過對不同卷積層預設錨盒提取特征,優化了對多尺度目標的檢測。YOLOv3延續了之前版本Darknet結構的使用,同時引入殘差結構,提高了小尺度目標的檢測精度。總的看來單階段類算法具有較高的效率。
然而,目標檢測確保預測精準的必要前提是需要大量準確數據。訓練樣本過小,會導致學習效果不佳。錯誤的數據更是可能產生誤導性的結果。為了獲得大量數據,在醫院、研究中心等機構間共享醫療數據是簡單高效的解決方案,但是中心化的醫療數據存儲不利于數據分享,容易催生倒賣數據的黑色產業,更不利于對患者隱私的保護。區塊鏈是一種分布式的數據賬本,可以在零信任基礎的用戶之間實現安全的數據共享。將區塊鏈用于醫療數據存儲和共享,這意味著用戶可以得到更多的訓練數據,產生更好的訓練模型,得到更準確的診斷預測結果,并有助于數據集的豐富和更新。除此之外,區塊鏈有助于幫助AI解釋自己,使AI的“黑匣子”存在被人類理解的可能。區塊鏈的數據公布于鏈上且不可篡改,擁有清晰的數據審計基礎,不僅可以提高數據和模型的可信度,還可以提供一條清晰的路徑來追溯計算機決策的過程,消除人們對AI診斷的顧慮。
本文提出了一種新的醫療影像數據人工智能檢測模型,該模型使用區塊鏈網絡,利用智能合約實現醫療影像數據共享,通過密碼學技術保證數據安全和隱私保護。
基于深度學習的目標檢測算法,其性能主要取決于網絡結構,常見的網絡結構結構有卷積神經網絡和殘差網絡結構等。
卷積神經網絡結構一般分為下列層級:
(1)輸入層
輸入一般為圖片,經過輸入層的運算處理,可轉化為三維像素矩陣,三個維度分別代表圖像的長寬和色彩的通道數。黑白圖片通道數為1,彩色圖片通道數為3。經過輸入層后,三維矩陣再通過不同網絡結構進行變換,直到最后的全連接層為止。
(2)卷積層
卷積層用于提取特征。輸入矩陣通過卷積核得到輸出矩陣。卷積核也是一個三維矩陣,它的長和寬是通常為3×3或5×5。因為卷積操作兩個矩陣的深度必須是一致的,所以濾波器的深度不可以改變,必須和輸入層矩陣的深度一致。卷積核還需要人工設置個數,它的個數決定了輸出層矩陣深度的大小。
(3)池化層
池化層用于壓縮數據尺寸大小,減少參數個數,在加快網絡計算速度的同時又能夠防止過擬合問題的出現。
池化層通過使用過濾器在矩陣上進行滑動,根據過濾器計算方式為取最大值還是平均值,分為平均池化和最大池化。平均池化與目標區域所有值都有關,所以對圖像背景信息的保留更為完整,而最大值池化并非與所有值有關,因此突出保留邊緣紋理信息,這是識別目標的重要特征,所以圖像識別大多使用最大值池化法。
(4)全連接層
全連接層的作用類似于分類器,用于實現特征到樣本空間的映射,可以通過采用尺寸1×1的卷積核的卷積層替代。
(5)softmax層
如圖1所示,softmax層往往作為深度神經網絡的最后一層,作為多分類的輸出,輸出值為不同分類的概率。最后一次全連接神經元的個數n即為需要分類的種數。之后將所有的經過softmax運算得到最終的輸出,softmax運算公式為:


圖1 softmax層結構
softmax運算相當于將輸入值映射為0~1之間的實數,并且所有的輸出值和為1,正好可以把輸出值看作為判斷為該類別的概率,所以它可以作為分類問題中卷積神經網絡的輸出。
隨著深層卷積網絡深度不斷增加,出現了準確率反而降低的網絡的退化現象,其本質就是因為信息丟失而出現了過擬合問題。在網絡層數較多的情況,經卷積處理的圖片會使得原本差別很大的圖像變得相似,那么這種情況下的分類結果過會出現誤差,問題的解決辦法就是提高泛化性和差異性,由此產生了殘差網絡,其結構如圖2所示。殘差結構通過斷開式設計,將之前層級中的數據直接輸入到后面數據層中,設x為輸入,擬合函數映射設為H(x),定義殘差映射F(x)=H(x)-x,則原始的映射函數H(x)可表示為F(x)+x。

圖2 殘差網絡結構
區塊鏈是一種變革式的數據存儲技術,又稱分布式賬本,是比特幣的底層技術,利用數字簽名、散列函數等密碼學技術,結合P2P網絡實現的去信任、無法篡改的分布式數據庫[10]。數據存儲在稱為區塊的結構中,這些區塊通過散列以鏈形式相互連接(通常每個塊還包括時間戳和通過其散列指向前一個塊的鏈接)。這些塊具有報頭和內容。由于區塊之間按一定規則順序相連,隨著參與者和區塊數量的增加,在沒有網絡共識的情況下,要修改任何信息都是極其困難的。
從區塊鏈技術實現的層面來看,區塊鏈并不是計算機領域某一單一技術的改良或革新,而是多種跨領域成熟技術的完美結合。當這些技術不再以獨立的身份孤立存在,而是以新的方式相互融合,創造了一種全新的數據承載模式[11]。
區塊鏈迅速為人們所熟知,并廣泛應用于大數據、物聯網[12-16]等多個領域,得益于其本身具有的多種出眾特性,其中去中心、透明性和可溯源性、不可篡改性是其最為突出的優勢:
(1)去中心化
相較于傳統的中心化服務器存儲,區塊鏈避免了使用單一節點存儲、更新數據的弊端,取而代之的是由所有參與方共同維護網絡數據。這種方式不僅提高了系統的安全性,同時使網絡數據不會因為某一寡頭存在而使整個網絡被更改和控制。
(2)透明性和可溯源性
區塊鏈面向所有接入節點開放,以比特幣為例,所有接入節點均可以查詢區塊鏈中的任意交易,每一節點都有權保存全部交易賬本,因此是面對交易透明的。于此同時,區塊之間以鏈式結構首尾相連,按上鏈時間先后順序記錄數據,因此實現了交易可溯源[17]。
(3)不可篡改性
區塊鏈上的數據上鏈前需運行共識算法,達成共識后方可上鏈。共識算法種類很多,以比特幣為例,其采用工作量證明(POW)共識算法,鏈上交易需經過6個區塊后才能被確認為交易成功,這使得算力在50%以下的攻擊者想要篡改鏈上數據幾乎不可能實現[18],由此保證了不可篡改性。
模型結構如圖3所示,目的是要充分利用各醫院的醫療影像數據,在眾多機構參與的情況下形成海量的數據集,從而訓練得到更好的全局模型。對于某一訓練任務,服務器對任務進行細分,明確學習的對象、相關設備、應用的類型(如CT圖)、訓練集的格式、訓練模型(如卷積神經網絡)、訓練要求(如學習率)等。為了保證各方原始數據不泄露,對k家醫院,它們各自擁有nk個數據點,設本地模型權重為wt,學習率為η,醫院在本地訓練其模型,并將更新參數記錄在區塊鏈上,再由服務器聚合得到全局模型。

圖3 模型結構
參數更新公式如下:
本地權重更新:

全局權重更新:

各醫院節點充當區塊鏈礦工,以工作量證明的共識機制(PoW)將更新參數記錄到區塊鏈中,以此基于貢獻的原則激勵數據共享。
為了保證數據安全,采用加密數據上鏈。各醫院擁有自身密鑰{PKj,SKj}{j=1,2,3,…,K}。 服務器提出任務txi時,生成臨時密鑰串上標代表任務批次,下標代表醫院編號,并使用對應醫院的密鑰加密后廣播,因此各醫院只能得到自己的臨時密鑰。各醫院使用自身臨時密鑰對數據加密并做哈希后再將數據上鏈。在區塊鏈中,每個區塊對應某一學習任務txi,對每家醫院而言,只能通過解密方式查看自己的數據,其他鏈上數據呈現加密亂碼,由此保護各醫院數據的獨立安全。
除此之外,考慮兩種現實需求:(1)醫院想借助服務器診斷CT圖,除服務器給出的結果外,醫院還需判斷該結果的準確率;(2)醫院A需要醫院B的鏈上數據以優化自己的本地模型。
對于(1),過程如圖4所示,設醫院H需服務器對CT圖x0進行診斷,得到病因y0。為了不暴露患者隱私,醫院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}發送服務器。由于沒有收到y1,y2,…,yt,服務器無法識別真實需要判斷的CT圖x0,無差別地對所有輸入進行判斷,將所有判斷結果{y0,y1,…,yt}

圖4 申請服務器診斷流程
對于(2),過程如圖5所示,設醫院A向智能合約發送請求SKA(request),希望得到區塊txi上醫院B的數據dataB,智能合約驗證醫院A的簽名后,轉發請求至醫院B。醫院B將鏈上對應數據解密,使用加密dataB,并用SKB簽名后發送給智能合約。隨后智能合約驗證簽名并轉發醫院A,醫院A使用自己的臨時密鑰SKA解密得到醫 院A對解密后的數據用醫院B的臨時密鑰加密并做哈希運算,查看結果與鏈上數據是否一致,從而可以判斷醫院B是否交付真實數據。

圖5 申請數據流程
本文提出了一種基于區塊鏈的醫療影像數據人工智能檢測模型。該模型基于區塊鏈網絡結合加密和簽名技術,采用各方本地訓練模型、在鏈上聚合更新權重的方式實現數據安全共享并避免了原始數據泄露。本文還細化提出了醫院共享數據、判斷服務器診斷準確率的方法。