溫亞蘭,陳美娟
(南京郵電大學通信與信息工程學院,南京 210003)
互聯網、大數據分析、移動邊緣計算等技術的爆發式增長推動了“共享經濟”的發展。隨著海量醫療數據的產生以及時代發展的需要,人們將共享經濟的關注點轉向醫療行業。若能利用大數據分析技術將分散在各個醫療機構的醫療數據應用到不同行業,將醫學專家的寶貴經驗轉化為標準化的知識,形成數據驅動服務,那么將大幅提高整個公共醫療機構服務效率問題,給整個社會帶來巨大的效益[1]。但由于醫療數據涉及了患者的隱私且獨立存儲于醫療機構的數據庫中,因此,利用醫療數據需要考慮共享過程中的隱私保護與效率問題。針對隱私問題,文獻[2-4]利用云服務制定管理與訪問醫療數據的策略,以實現共享過程中的數據安全。文獻[5]在醫療數據共享的最初階段就嚴格設計了相關醫院、病人的訪問規則,并結合代理再加密技術和癥狀匹配機制實現了輕量級的醫療數據共享保護方案。文獻[6]和文獻[7]提出,由于云服務提供商面臨內部和外部的安全威脅,如果不加強安全和隱私保護,而繼續將敏感的健康數據外包給云,就可能會增加數據泄漏的風險。HAΟ 等[8]認為簡單地將醫療數據移動到云端進行存儲、管理和分析并不能完美解決共享過程中的隱私保護與效率問題。為提高數據共享的可搜索性和安全性,文獻[9-10]提出將分布式去中心化的區塊鏈技術結合不同的加密算法解決病人隱私泄露問題。但在實際應用中,數據請求方從區塊鏈上下載密文并解密的過程增加了互操作性的難度[10]。
聯邦學習(Federated Learning,FL)技術[11]的發展為解決數據共享中的隱私問題帶來了新的曙光,其能夠在沒有數據共享或數據收集的情況下在多源分散數據庫中學習,讓數據請求者不再需要收集大量數據就可以研究和挖掘數據中的潛在價值。SILVA 等[12]提出聯邦學習框架,在不需共享大量原始數據的情況下就可以安全地訪問和分析任何生物醫學數據。盡管聯邦學習允許參與者在不被披露的情況下貢獻他們的本地數據,但FL 并不驗證系統中不同方的數據質量以及準確支付參與者高質量數據貢獻方面的問題[13]。因此,具有較少公共實體的低質量數據集可以與其他數據集共同訓練,但這可能會導致大量計算資源的浪費及作為聯邦成員的惡意客戶端對FL 模型的攻擊。針對此問題,文獻[14]提出將區塊鏈技術與聯邦學習結合并用于物聯網場景下的數據共享,通過區塊鏈技術對數據提供者進行身份驗證,并將聯邦學習訓練的模型參數存儲于區塊鏈中以防止被篡改,保證數據的安全性。將聯邦學習與區塊鏈相結合[15-16]已成為數據共享領域中能夠同時解決隱私保護和數據安全性問題的重要方法。文獻[17-18]將聯邦學習與區塊鏈相結合并用于醫療數據的安全共享,但也指出從各種數據源收集數據并協同準確高效的訓練模型是人工智能技術的一個巨大挑戰。SHAYAN 等[19]指出移動設備可能會在模型更新過程中對其進行中毒攻擊,或者對目標設備進行信息泄漏攻擊,并利用抵御負面影響防御來刪除中毒模型更新。同時,使用不同的隱私方案來保護隱私,并在區塊鏈平臺上進行存儲和匯總。LI等[20]提出聯邦近似的學習算法,在客戶端奔潰的情況下依然擁有較高的學習精度。為提高聯合學習的效率,NISHIΟ 等[21]考慮到具有異構資源的客戶,提出一種基于貪婪算法的聯合學習客戶選擇方案。
現有的大部分研究工作為了獲得好的學習性能,主要集中在設計高級的聯合學習算法上,而使用其他手段篩選聯邦學習數據源來提高學習性能卻很少被探索。雖然NISHIΟ 等[21]考慮了資源限制和工人選擇問題,但參與聯邦訓練設備的可靠性被忽略了。LIU 等[22]提出將聲譽機制運用于挑選數據源以及KANG 等[23]提出將激勵機制和可靠聯邦學習工人(即移動設備)相結合的方案來改進聯邦學習算法,既保護了隱私也提高了算法效率。
為了將數據源的影響降至最低,保證醫療數據共享的安全和效率,本文提出一種區塊鏈與聯邦學習相結合的聲譽選擇候選醫院方案。通過在訓練前篩選數據質量高的成員,將數據共享過程轉化為模型參數共享過程,避免原始數據上傳至區塊鏈而造成患者隱私泄露。同時,改進聲譽方案,選擇數據質量高和可靠的參與聯邦學習的候選醫院訓練模型,并利用分布式的聯盟鏈存儲各醫院的聲譽值以及全局模型參數,對積極參與高質量數據貢獻的醫院進行獎勵。
本文設定了一種由N個參與數據共享的醫院和請求數據的相關機構H組成的聯盟鏈聯邦學習系統來模擬現實中安全可靠的醫療共享場景,包括區塊鏈層和應用層。
如圖1 所示,應用層是由1 個數據請求者(例如某保險機構、政府機構)和一組醫院組成的通用移動網絡。其中,廣泛部署在網絡邊緣的用于通信的基礎設施稱為邊緣節點,聯邦學習任務的物理基礎設施包括醫院的移動設備和邊緣節點。移動設備利用本地數據培訓本地數據模型。邊緣節點有2 種用途:1)在聯邦學習任務中作為中央聚合器聚合本地模型以形成全局模型并與參與培訓的醫院相互傳輸模型;2)作為聯盟鏈上的節點與數據請求者進行通信,為數據請求者提供候選醫院的聲譽值。醫院數據庫存儲和加密著病人的各種醫療數據。數據請求者是一個需要分析大量臨床醫療數據以進行研究的第三方機構。
在應用層中,為了保護隱私,基于上述來自醫院共享的數據對多個具有聯邦學習任務的數據請求者進行模型訓練。每個數據請求者設計合約條款,以激勵作為工人的可靠移動設備進行模型培訓(圖1中的步驟1)。接著,每個醫院根據其本地數據迭代地訓練一個共享的全局模型,并生成本地模型更新(圖1 中的步驟2~4)。然后,所有的醫院將他們的本地模型更新上傳到邊緣節點以更新全局模型(圖1中的步驟6)。最后,重復訓練過程,直到全局模型的精度達到預定義的收斂值。廣泛分布的邊緣節點使醫院能及時與數據請求者通信。數據請求者會評估局部模型更新的質量,并根據參與醫院的模型更新質量,為參與醫院生成聲譽評價。更多的聲譽計算方案將在本文第2 節給出。聲譽意見將存儲在聯盟鏈上,具有不可篡改的特性,而數據請求者之間能公開透明地共享各醫院之間的聲譽值。
在區塊鏈層,因邊緣節點具有強大的計算能力、通信能力及存儲能力,可以作為聯盟鏈的礦工。聲譽意見通過共識算法被礦工驗證后存儲到數據塊中。由于區塊鏈的去中心化和防篡改性質,即使發生糾紛和破壞[9],數據塊中的聲譽意見也是持久和透明的證據。對于參與共享的醫院,數據請求者會將自己的直接聲譽意見與其他數據請求者的間接聲譽意見集合并生成綜合聲譽值上傳到聯盟鏈上。在聯邦學習中,聲譽值是可靠醫院選擇的重要指標。在此次任務結束后,通過區塊鏈的準確支付機制對積極參與貢獻的醫院進行獎勵。
基于聲譽機制的候選醫院共享數據選擇方案如圖1 所示,本文提出以聲譽為基礎選擇醫院并進行可靠的聯邦學習,由聯盟鏈來管理醫院的聲譽值和模型參數的方案,由如下6 個步驟組成。

圖1 系統模型Fig.1 System model
步驟1制定合約條款并發布聯邦學習共享任務。數據請求者(如政府機構、醫療研究所、醫療保健院等)根據需求發布聯邦學習任務以尋求滿足合約的候選人。在發布任務之前,任務發布者需要根據實際需求制定一項智能合約,合約里面的內容包括需要的數據大小、數據類型、數據質量、聲譽值及時間,CPU cycles 將合約傳遞給通信范圍內的邊緣節點,邊緣節點再將合約發送給一定范圍內的醫院。滿足合約要求的醫院將作為此任務的候選人并將滿足的資源信息發送給邊緣節點,邊緣節點再將其反饋給數據請求者。
步驟2核對候選醫院聲譽值并上傳核對結果。在接收到邊緣節點反饋的資源信息后,數據請求者需要估算相關候選人的聲譽值來選擇合適的醫院來共享數據。聲譽值由邊緣節點對候選人的直接意見和其他與候選人交互過的邊緣節點的聲譽意見決定,并通過一種雙重主觀邏輯模型來計算。數據請求者首先從邊緣節點反饋的資源信息中獲得最新的候選人間接聲譽值,再從存儲聲譽值的聯盟鏈上下載候選人的聲譽值并與之核對。每個候選人的聲譽值都會被存儲于聯盟鏈的分布式數據區塊中。若兩值相同,則該聲譽值將作為其他任務發布者對候選者的間接聲譽值。反之,數據請求者會將比對結果上傳至聲譽鏈上,經過聲譽鏈上的節點核實后候選醫院的聲譽值將會降低。最后,邊緣節點根據與醫院交互的直接聲譽意見和間接聲譽意見來生成候選醫院綜合聲譽值,然后將綜合聲譽值上傳至聯盟鏈上,作為下一次其他數據請求者衡量醫院的間接聲譽意見。
步驟3根據聲譽值選擇候選醫院并參與聯邦學習任務。因為用戶的數據集質量直接影響訓練出的局部數據模型[12][23],而局部數據模型的質量又影響最終的數據模型質量。所以,數據請求者在估算出候選人的聲譽值后并結合他們的資源選擇合適的醫院子集來執行聯邦學習算法。
步驟4執行聯邦學習算法和評估本地模型更新的質量。被選擇的醫院首先會在附近的邊緣節點上下載最新的初始化模型,然后根據自己的資源使用不同的優化算法[15](例如,隨機梯度下降算法SGD、小批量梯度下降算法Mini-batch gradient descent)進行聯邦學習訓練模型,在培訓出局部模型后醫院會將模型參數以及梯度值傳至通信范圍內的邊緣節點,邊緣節點接收到各個醫院傳過來的局部模型參數后聚合模型并形成全局模型,即完成一次迭代過程。若全局模型質量達不到要求,邊緣節點會將最新聚合形成的全局模型下發給各個醫院,醫院接收到更新后的全局模型后會再次進行本地模型更新,完成多次迭代之后,當全局模型達到一定的精度即滿足預定義的收斂條件時,則迭代結束。
步驟5將更新交互后的聲譽意見上傳至區塊鏈。在每次上傳模型中,與不可靠的醫院或攻擊者的交互均被視為負面交互[21]。與可靠醫院的交互均被視為積極交互。邊緣節點會依據每一次交互歷史更新用戶的直接聲譽意見,迭代幾次聲譽意見就會被更新幾次。迭代結束后,邊緣節點會將直接聲譽意見和間接聲譽意見(間接聲譽意見由其他邊緣節點與醫院的交互活動決定)綜合形成一個綜合值,該值會作為對下一次任務的候選醫院的間接聲譽值。邊緣節點會將上傳聲譽綜合值作為一筆交易上傳到區塊鏈上的區塊中,在經過區塊驗證和執行共識過程后,該筆交易才會被寫入聯盟鏈中。因此,所有的數據請求者均可通過聲譽聯盟鏈來選擇擁有高質量數據的醫院來執行聯邦學習算法。
步驟6完成醫療數據共享。在應用層完成上述步驟后,相關的數據請求者可以從聯盟鏈上下載由邊緣節點聚合的全局模型參數,并在不獲取患者原始數據的情況下利用聯邦學習訓練的模型參數挖掘研究價值。由于區塊鏈具有分散性、開放性、抗篡改性等安全特性,醫療數據模型可以被安全地訪問和分析。
本節將考慮多家醫院合作進行聯邦學習,為數據請求者提供數據模型。在真實的無線網絡中,模型的傳輸受到傳輸的帶寬、時間延遲的影響,因此只有當一部分符合要求的醫院參與聯邦算法來共享數據時才能提高模型的質量和共享效率。在下面環節中將闡述醫院的選擇對聯邦學習算法性能的影響。
在所提模型中,當相關機構H想要請求A和B或者C醫院病人的個人隱私數據并用于某項研究(例如請求病人的血檢報告用于研究病人患乳腺癌幾率),數據請求者H將任務發布在任務平臺上,附近的邊緣節點接收到該任務向A和B或者C醫院發送數據請求者制定的合約條款,等待醫院的資源信息反饋。任務發布者根據反饋信息選擇合適的醫院來參與培訓模型。每個醫院都有一個本地數據集Dn,i={xn,i∈Ti,yn,i∈Ti},xn,i是醫院n參與訓練的輸入樣本矢量,yn,i是輸入樣本矢量的標簽。參與訓練的數據量 為D=其中:i∈I是輸入的第i個 樣本。n∈N是參與培訓的醫院,N是參與共享數據的醫院的集合。定義一個權重參數wn來表示醫院n訓練的局部模型參數,整個訓練過程的目標是通過學習算法找到由Xn和Yn訓練得到的參數來使模型收斂達到預測精度,并使損失函數最小化。Xn、Yn分別是輸入樣本矢量集合和輸入樣本矢量標簽的集合。不同的優化方法損失函數的表達式不同。本文使用邏輯回歸方法來描述聯邦學習問題,局部模型的損失函數可表示為式(1)所示:

局部模型損失函數最小化的目標是:

每個醫院n在第e輪更新模型,表達式如式(3)所示:

其中:l是預定義的學習速率。將更新的模型參數傳給邊緣節點,由邊緣節點訓練出e輪全局模型參數如式(4)所示:

其中pn的表達式如式(5)所示:

其中:pn是每個醫院被選擇的概率。根據式(1)和式(2),具有高精度和可靠的本地訓練數據的醫院可以更快地收斂局部損失函數fn(w)和全局模型參數f(w)。從式(4)中可以看出邊緣節點訓練的全局模型參數取決于醫院傳送的局部模型參數,以及訓練的數據集質量。反之,全局模型參數又決定局部模型的更新。因此,為了使局部和全局模型更新在更少的迭代次數內達到收斂目的,必須選擇具有高精度和可靠的本地訓練數據的醫院才可以顯著提高聯邦學習的學習效率[17-18]。
雖然各醫療機構內部均擁有病人數據庫,且對于某種疾病擁有相同的“基因組”,但是他們仍然可以提供不相關的信息,且提供數據的醫院可能會因為電腦病毒感染、自私目的而分享虛假信息[8]。如果醫院nj傳輸給通信范圍內的邊緣節點ei的數據模型質量被檢測為有用的,那么就認為此次互動為積極交互。反之,為消極交互。此外,以往的研究也表明,在數據共享中提供的數據越全面、質量越好的用戶聲譽越高[16],所以基于聲譽選擇可靠的病人數據源提供者來提高聯邦學習算法的精確度是一種值得考慮的方法。本文設計一種基于醫院與數據請求者之間的互動及聯合雙重主觀邏輯模型來量化醫院聲譽的機制。請求者接收到邊緣節點反饋的醫院候選人資源信息后獲取到他們的最新聲譽值,然后從區塊鏈上下載醫院候選人的聲譽值并與之比對。若兩值相同,則數據請求者同意候選醫院為之服務;若不同,則數據請求者將收集到的證據以形式發送給邊緣節點,邊緣節點更新其對候選醫院的聲譽意見。其中,H(·)函數是對證據做哈希運算,sig 是數據請求者的簽名,time 是交易的時間戳。邊緣節點將選擇聲譽值高的醫院為數據請求者服務,在交互過程中再利用雙重主觀邏輯模型計算候選醫院的聲譽,最終將醫院的綜合聲譽值和訓練的模型參數上傳至聯盟鏈上[21]。為了激勵高質量的數據貢獻者積極參與聯邦學習,利用區塊鏈技術準確無誤地為高質量的數據貢獻者支付獎勵。由于激勵機制不是本文重點,因此本文不對此展開詳細闡述。
2.1.1 直接聲譽值
邊緣節點在經過幾次與候選醫院的交互后,根據如圖2 所示的流程圖更新對醫院的聲譽意見。

圖2 聲譽意見更新評估流程Fig.2 Procedure of the reputation opinion update evaluation

其中:α、β各自代表邊緣節點ei與醫院nj是該次任務中交互的積極事件和消極事件的次數;為成功傳輸數據模型參數的概率,即在無線網絡中的通信質量決定了邊緣節點對候選醫院的不確定度。結合主觀邏輯模型的矢量意見,可以得到直接聲譽值如式(8)所示:

其中:μ代表不確定度對聲譽值影響的相對系數。在實際情況中,影響邊緣節點對候選醫院的聲譽意見的因素有很多,本文模型考慮了雙方交互時效和正負交互因素的影響。為減少自私節點或惡意節點的攻擊,增加消極交互事件對聲譽意見影響的權重,即令θ<φ。其中:θ是參與聯邦學習的醫院正確傳輸模型參數后,與邊緣節點完成積極交互的權重系數;φ是消極交互的權重系數。聲譽意見公式可以更新為式(9):

隨著時間的推移,參與數據共享的醫院不可能總是高度可信的。由于無線網絡和不確定性因素的存在,因此在模型中考慮了交互時效性影響因子。
定義時效衰落函數t(γ)=FZ-z來描述時間對聲譽的影響,其中:F∈(0,1)是交互新鮮度的衰退參數:z∈(0,Z]是決定交互新鮮度的時隙。根據時效衰落函數可以將一段時間γ內的聲譽意見公式更新為式(10):

在該時間段內的直接聲譽值如式(11)所示:

在該時間段γ內某一時隙的直接聲譽值如式(12)所示:

2.1.2 間接聲譽值
間接意見是由其他數據請求者對數據提供者提出的。在現實的無線移動網絡中,作為提供醫療數據的數據提供者不會只服務一個任務。所以,每一個任務均會有一個數據請求者對應多個數據提供者。隨著時間的推移,當一個數據提供者完成了與多個數據請求者之間的交互,且有新的任務發布時,當前數據請求者就可以從其他數據請求者那里獲取他們對數據提供者的聲譽意見。每個數據請求者對數據提供者的聲譽意見都將使用2.1.1 節中的聲譽矢量來表示。為了衡量其他請求者提供的間接聲譽值重要性,利用式(13)來計算其他數據請求者的間接聲譽意見的權重因子:

其他數據請求者ey∈Ε,Ε是其他數據請求者的集合,其他邊緣節點對候選醫院的不確定度的表達式如式(14)所示:

式(14)為其他邊緣節點ey對醫院nj的熟悉度,意味著其他邊緣節點ey與醫院nj的交互越頻繁,則越大。在間接意見處考慮熟悉度參數,可使邊緣節點ei獲得對醫院nj可靠性更高的聲譽計算結果。其他邊緣節點ey對醫院nj的間接聲譽意見通過矢量)表示。根據主觀邏輯模型,形成的間接聲譽意見如式(15)所示:

2.1.3 綜合聲譽值
為及時查詢及核對參與數據共享過程中節點的聲譽值,令每一個邊緣節點均有一個本地聲譽存儲池,根據交互歷史存儲對各個醫院或其他邊緣節點的直接聲譽值。為避免其他數據請求者[16]作弊,結合間接意見和直接聲譽意見形成對數據提供者最終的聲譽意見。最終的聲譽意見表示如式(16)所示:

邊緣節點ey更新對醫院nj的最終聲譽綜合值的表達式如式(17)所示:

根據上述公式得到聲譽后,若聲譽綜合值大于預先定義的閾值,則邊緣節點ei可以選擇具有高精度和可靠數據的高聲譽候選醫院nj作為聯邦學習任務的模型培訓工人。每一個邊緣節點都有義務在更新其對各醫院的聲譽值后,將綜合聲譽值上傳到區塊鏈上以作為其他數據請求者的參考意見。這種方案能夠挑選可靠性高且具有高精度數據的候選醫院。
結合第1.3 節和第2.1.1~2.1.3 節的分析,單純的聯邦學習算法與區塊鏈結合不能同時滿足數據高質量且安全地共享,引入聲譽機制的區塊鏈管理方案可以為聯邦學習算法挑選高質量的數據提供者。將該方案應用于醫療數據共享場景中既能保護患者隱私又能保證數據的高效利用。
算法1基于聲譽機制的聯邦學習算法

在復雜和充滿開放性的無線網絡機構中,作為參與聯邦學習訓練的工作者可能會執行惡意和不可靠的模型更新。本節主要從所提方案能夠抵御中毒攻擊、抵御共謀欺騙方面進行安全性分析。
3.1.1 中毒攻擊的抵御
不可靠的模型更新可能是由惡意或篡改設備用欺騙性信息訓練數據或不安全的通信渠道傳輸數據[12]這2 個故意原因導致的。因此,惡意數據所有者可能會故意發起嚴重攻擊,例如中毒攻擊[21]。中毒攻擊是指惡意設備故意將有毒數據點注入訓練數據集或修改訓練數據集,以降低訓練數據的準確性,從而增加錯誤分類的概率并操縱他們在式(3)中的本地模型更新結果。在這種情況下,惡意設備若試圖使用偽造的樣本信息(如身份證),通過在公共通信頻道上竊聽其他參與者訓練的有用信息,則必須獲得足夠準確和常見的IDs。在傳統的FL 中,通常采用同態加密[13]技術對本地模型參數和梯度更新進行加密,竊聽者無法獲取到任何信息。本文提出的聲譽篩選數據源的方案為了減少惡意節點的攻擊,增加了消極交互事件對聲譽意見影響的權重φ,即使在前幾次迭代交互的過程中惡意竊聽者偽裝成功,但經過多次迭代之后,他們的聲譽值變低,抵押在區塊鏈上的資產被沒收,不當的行為被永久記錄在鏈上,同時被取消學習訓練的過程,這能夠在一定程度上抵御中毒攻擊。
3.1.2 共謀欺騙的抵御
本文方案中的聲譽模型可以用于任何節點相互協作的服務中,每個任務發布者隨機選擇一個鄰居。網絡中有2 種可能的節點類型:合作醫院節點和自私醫院節點。即使網絡中有新的FL 任務發布,惡意的授權醫院nj試圖與其他任務發布者串通,他們也無法參與此次的任務。附近的邊緣節點ei從本地存儲中檢索其直接聲譽意見同時ei向區塊鏈上請求其他任務發布者關于醫院nj的間接聲譽意見,并等待時間間隔t(t=0.5 s)。在該時間間隔之后,節點ei開始進行聲譽計算階段,以計算綜合聲譽值如果不滿足此次任務要求的醫院nj想要參與此次任務就必須與之前服務過的任務發布者進行串通并修改區塊鏈上的聲譽意見。但由于區塊鏈獨特的數據結構特點,前一個區塊的hash 值包含在后一個區塊中,如果其中一個區塊被修改,則之后的所有區塊都將被重新計算,所以單個節點對數據庫的修改是無效的。因此,之前的任務發布者想要篡改已有的數據幾乎不可能,共謀欺騙也無法實現。同時,只有符合要求的數據模型參數和梯度更新被上傳到聯盟鏈上,而真實數據由每個數據提供者存儲在本地。數據所有者可以控制他們自己的數據權限。此外,聯盟鏈還使用了一系列的橢圓曲線數字簽名和非對稱等加密算法來保證數據的安全性。
對比方案是文獻[19]所提的典型聯邦學習方案、文獻[20]所提的現有性能較好的方案。文獻[19]中提出的Fedavg 算法利用經典的加權聚合方法隨機選擇用戶參與聯邦學習。文獻[20]中所提性能較好的FedProx算法能夠妥善處理數據異構問題。在仿真實驗中,利用著名的數字分類數據集MNIST 和廣泛使用的軟件環境TensorFlow1.10.0 執行數字分類任務來評估所提出的基于聲譽機制的聯邦學習方案,仿真參數的設置如表1 所示。在MNIST 數據集中有60 000 個訓練示例和10 000 個測試示例。

表1 聯邦學習的仿真參數Tabel 1 Simulation parameters of federated learning
圖3、圖4 所示為兩種聯邦學習方案學習精度的對比,在加入不同聲譽值的情況下比較兩種方案的學習精度和損失值。

圖3 不同經典方案的訓練精度對比Fig.3 Comparison of the training accuracy of different classic schemes

圖4 不同經典方案的訓練損失值對比Fig.4 Comparison of the training loss of different classic schemes
為模擬現實網絡中的設備異質性和數據異質性,在實驗中將數據分布在1 000 個設備中,每個設備的樣本數量遵循冪律,并且每個本地設備上的數據隨機分為80%的訓練集和20%的測試集。首先,每臺設備被設定不同的聲譽值,聲譽值的取值范圍為[0,1]。然后,在系統中通過設置不同的聲譽閾值reputation_value_0.2/0.5/0.8 來模擬動態篩選設備參與訓練的過程。在兩種算法中均將Epoch 固定為20,每個Epoch 有100 個Rounds,即模型訓練過程中醫院使用batch_size為10的隨機抽樣樣本連續進行100 次迭代本地模型來研究數據源聲譽值差異對模型收斂的影響。如圖3 所示,不加入聲譽值的時候,兩種經典方案的訓練精度相差不大,但當引入了聲譽值后,隨著聲譽閾值越高,對應的Fedavg 和FedProx 兩種典型方案的損失值不斷降低,學習精度不斷提高。特別地,reputation_value_0.8 的FedProx 聲譽值接近于1,可見其挑選出的醫院幾近完全可信且數據質量好,訓練出的模型精度接近于1。引入聲譽值之后,兩種方案中參與FL 訓練的設備更加靈活,不滿足要求的設備容易掉出訓練網絡,因此系統異質性和更大的數據異質性(非同態分布)造成測試訓練精度和損失值收斂較慢,同時收斂過程中震蕩幅度較大,尤其是經典的Fedavg 方案。對于具有聲譽管理的方案,當聲譽值為0.2~0.5 時,本文的方案使聯邦學習算法的性能提升明顯。這是因為在聲譽方案的幫助下,醫院的聲譽意見被及時更新,相關機構可以選擇具有高精度數據的醫院。因此,使用本文方案實現了高精度的聲譽計算,保證了不同醫療機構之間的高質量數據共享。
圖5 顯示了基于不同聲譽檢測機制方案的醫院聲譽值的變化,分別為本文改進的聲譽方案、基于提供服務節點不確定性的典型聲譽方案2[22]以及基于任務發布者間相似性的聲譽方案1[23]之間的對比。為了表征不同聲譽方案識別不可靠醫院的能力,假設前6 次交互任務中,不可靠醫院假裝表現良好以獲取高的聲譽值,此時所有的醫院聲譽平均值均急速增長,無法分辨好壞。設前6 次交互任務中,不可靠醫院假裝表現良好以獲取高聲譽值,此時所有的醫院聲譽平均值均急速增長,無法分辨好壞。之后,不可靠醫院以0.8 的概率做出不當行為,整體聲譽平均值開始下降,本文方案下降得更劇烈,幅度更大。而且,當不可靠醫院再次表現良好時,整體聲譽平均值也會增加。本文方案增加的幅度要比其他方案都要小,提供了更準確的衡量標準。值得注意的是,在6 次交互后,本文方案可以明確地展示在參與共享的醫院中一直存在不可靠醫院。然而,方案1、2 和無聲譽方案的整體聲譽平均值在0.5 以上,均無法完全檢測出不可靠的醫院。原因是不可靠的醫院在一些交互任務中可以通過良好的行為很好地偽裝自己,能夠在短時間內不被發現。

圖5 基于不同聲譽檢測方案的聲譽值Fig.5 Reputation value based on different reputation detection schemes
圖6 顯示了在不同方案下當自私節點比例變化時孤立自私節點收斂時間的變化。由圖6 可知,當自私節點的比例低于50%時,收斂時間隨自私節點比例的增加而增加,這是因為隨著自私節點的增加,系統對節點的可信任信息越少,誠實節點需要花費更多的時間收集證據來發現自私節點。也可以看出本文方案與對比方案相比節省了約6%的交互時間,這是因為本文方案綜合考慮了經驗、熟悉度、時效性等多個因素,可以通過更快收集節點的可信信息來判斷節點的行為,因此本文方案性能更好。

圖6 基于不同聲譽方案自私節點比例變化發現自私節點的收斂時間Fig.6 The convergence time of discovering selfish nodes when the proportion of selfish nodes changes based on different reputation schemes
區塊鏈在本文方案中的重要作用是存儲醫院聲譽值,由于聲譽值是動態變化的,入鏈存儲過程并不簡單。為了將聲譽值和參數上傳至鏈上,簡化入鏈存儲過程,這些計算均在鏈下進行,所以上傳至鏈上的是由參數和聲譽值打包好的交易,這符合區塊鏈的交易行為和數據結構特性。該實驗部分通過在國產區塊鏈FISCΟ BCΟS 上建立可靠的交易服務,并采用PBFT 作為運行在4 名預選礦工上的共識算法。同時,使用SHA-256 作為安全哈希算法,聲譽意見的數據大小在100~300 KB 之間,信譽意見的塊大小限制為1 MB。交易吞吐量是衡量分布式系統的一個重要的性能指標,TPS=trans_len/ΔT,系統的吞吐量通常由區塊中包含的交易數量(trans_len)和生成一個區塊的時間(ΔT)決定。使用它來測試在較短的間隔時間內發送大量交易區塊鏈能否快速處理網絡中交易的動態入鏈存儲過程,實驗結果取20 次實驗的均值。
圖7為模擬交易的動態存儲過程,每間隔時間t=5 s時,分別向系統中發送500、1 000、2 000、3 000、4 000筆交易。當交易數量較少時,系統達到的TPS接近于系統中存在的交易。例如,當交易為1 000筆時,系統的平均TPS能達到995.29。但隨著交易數量的明顯增加,系統的TPS增長幅度卻在降低,當交易最大值為4 000筆時,系統的平均TPS只有3 079.35。這是因為一個完整的入鏈存儲的過程包括4個階段:發送交易、預備塊生成、塊的共識和正式的塊生成。當系統中的交易過多時,在預備塊生成和共識階段保持節點間的一致性所需的時間就越長,同時,節點與主節點的通信消耗就越高,共識過程所花費的時間就越多,系統吞吐量就越低。特別地,由于網絡抖動和CPU性能的影響,即使在時間相同的情況下發送不同筆交易到系統中,系統中達到的TPS也不穩定。但從系統平均TPS可以看出,在區塊鏈網絡中同時并發大量將聲譽值和模型參數打包成的交易入鏈存儲過程是可以實現的,并且能滿足一定的性能需求。

圖7 不同交易數量達到的平均TPS 對比Fig.7 Comparison of average TPS of different transaction quantities
本文針對醫療數據共享場景中可靠數據源的選擇問題,提出一種以聲譽為基礎的方案。使用聯邦學習對數據建模,引入區塊鏈技術實現對聲譽的管理,利用雙重主觀邏輯模型改進聲譽方案,并對醫院聲譽進行較全面計算。實驗結果表明,改進的聲譽方案可以吸引更多聲譽高的醫院,提供高質量的本地訓練數據及提高聯邦學習算法的效率。下一步將把本文方案運用于其他場景的數據共享中,并針對聯盟鏈場景設計相應的區塊鏈共識算法和激勵機制以提高共享效率,加強區塊鏈在數據共享中的作用。