梁朝暉,朱笑笑+,曹其新,馬燕紅,徐義明
(1.上海交通大學 機械與動力工程學院,上海 200240;2.上海交通大學附屬第六人民醫院 康復醫學科,上海 200233)
由于涉及到病人隱私與信息安全等問題,目前在康復醫療領域中不同醫療機構所采集的患者數據無法互通,導致難以訓練出一個泛用性強、準確度高的神經網絡模型。針對這一問題,聯邦學習提供了解決思路。聯邦學習是一種在各客戶端節點上進行分布式訓練,再在服務器端對全局模型進行整合更新的機器學習框架。聯邦學習期間,所有本地數據都保存在所屬機構內部而無需對外開放,從而實現數據隱私保護。可見,將聯邦學習技術應用于康復領域有助于打破不同機構之間的數據孤島狀態,通過多方協同訓練出泛用性強、準確度高的下肢康復評估模型。
由此,本文提出一種基于聯邦學習的下肢康復評估算法,搭建聯邦學習系統并設計GRU-Inception康復評估神經網絡模型進行訓練,實現下肢損傷部位分類及康復情況評分任務。
隨著計算機技術發展,已有國內外學者利用神經網絡模型進行康復評估。閆航等[1]提出Pose-AMGRU模型,利用攝像系統采集到的視頻信息提取人體姿態,實現康復動作識別。羅堅等[2]通過深度傳感器采集得到的點云數據,結合人體特征語義,設計一種Conv GRU網絡實現下肢異常步態檢測。王金甲等[3]利用可穿戴設備采集患者下肢運動數據,并設計相應的卷積神經網絡,實現對帕金森癥患者的凍結特征識別任務。
上面的研究中可以看出,在利用傳感器采集到足夠的康復數據后,康復評估算法的研究多集中于神經網絡模型的設計以及實現上。然而由于醫療機構之間數據不互通,這些方法往往難以在實際的醫療領域應用當中取得滿意效果。針對患者與醫療機構的數據隱私問題,目前已有國內外學者將聯邦學習[4]應用在醫療領域中,展開相關研究工作。Lee J等[5]利用聯邦學習平臺,在不共享患者信息情況下實現跨機構的患者相似性學習。Liu D等[6]開發一種兩階段聯邦學習方法,對跨機構病例進行患者表征學習。王生生等[7,8]在聯邦學習框架下完成了醫學影像檢測及分割等任務。
針對上面研究中康復評估神經網絡模型所存在的數據安全問題,結合聯邦學習的隱私保護訓練機制,本文所提出的基于聯邦學習的下肢康復評估算法能在本地數據不外泄的情況下高效完成模型訓練,并取得較好的損傷分類以及評分結果,有助于提升模型在實際康復醫療場景下的表現。
本文采用客戶端-服務器架構來搭建聯邦學習系統,其整體框架如圖1所示。每個客戶端節點代表一個醫療機構接入到聯邦學習系統內。服務器作為聯邦學習的核心節點,與各個客戶端節點構成雙向通訊鏈路。服務器部署在可信的第三方云平臺上。聯邦學習的模型訓練過程分為初始化、客戶端選擇、模型廣播、本地訓練、全局更新等階段。

圖1 聯邦學習整體框架
訓練開始前,服務器首先進行初始化,設定聯邦學習參數。為提高通訊效率,每一輪訓練開始前需要進行客戶端選擇,選中的客戶端可參與本輪訓練。選擇完成后,服務器向選中客戶端廣播發送上一輪全局模型。各客戶端將該模型作為初始值,利用本地數據及resSGD優化器對其進行訓練。模型更新值需經量化編碼壓縮后才上傳服務器,減輕通訊負擔。最后服務器端基于高斯差分隱私機制對模型更新值進行聚合來實現全局更新,得到本輪全局模型。至此一輪訓練完成,當達到設定訓練輪數或觸發其它終止條件后聯邦學習結束。
針對下肢康復評估問題,本文設計了GRU-Inception網絡模型來實現下肢損傷分類與評分。該模型利用GRU提取輸入的時序關節角度數據特征,并采用多個Inception模塊級聯而成的分類器處理得到受測者下肢損傷部位分類結果以及康復評分結果。通過建立聯邦學習系統并對所設計的GRU-Inception網絡模型進行訓練,本文所提出的基于聯邦學習的下肢康復評估算法有助于打破醫療機構間的數據壁壘,在保護數據隱私的基礎上通過跨機構多方協同訓練來提升模型效果。
在聯邦學習系統當中,模型訓練過程被分布到大量客戶端節點上。每個通訊輪次中,上行(客戶端→服務器)和下行(服務器→客戶端)傳輸都需要占用大量網絡帶寬及傳輸時間。在保證模型訓練效果基礎上,本系統利用客戶端節點選擇機制來減少每輪參與訓練客戶端節點數目,提高聯邦學習效率。該機制綜合考慮各客戶端節點網絡連接情況、新增患者數據量以及上次參與訓練間隔時間等因素,計算出本輪參與訓練的客戶端節點列表。其中網絡條件好,數據量多,訓練間隔時間長的節點更有可能納入本輪訓練節點列表中。算法具體流程如下:
算法:客戶端選擇
輸入:節點隊列d1,d2, 參與訓練客戶端數K, 評分權重w1,w2, 本輪輪次t;
輸出:參與訓練客戶端節點列表list;
步驟1 初始化,若t=1, 將所有節點加入d1。
步驟2 下標i為隊列編號,當tmodi=0, 則服務器向隊列di里的節點發送請求,列入候選。
步驟3 若某節點限定時間內無反饋,則將其移動到d2。 其它節點加入d1并計算其得分
scorek=w1×numk+w2×interk
(1)
其中,下標k代表該節點的編號;numk為該節點新增數據量;interk為該節點距離上次參與訓練的輪次間隔。
步驟4 將得分top-K的節點加入本輪參與訓練的客戶端節點列表list。
參與訓練的客戶端節點列表通過選擇機制產生后,服務器將上一輪的全局模型廣播發送給各個選中客戶端節點。客戶端節點接收全局模型,并利用本地數據以及resSGD優化器進行訓練。在第t+1輪,客戶端節點本地訓練步驟如下:
算法:本地訓練
輸入:上輪全局模型Wtg; 學習率lr; 本地訓練迭代次數epoch; 限制項參數μ;
輸出:局部模型參數更新ΔWt+1k, 其中上標t+1代表聯邦學習輪次,下標k表示客戶端節點編號,k∈[1,K];
步驟1 初始化局部模型參數W0k=Wtg。
步驟2 設定學習率lr, 迭代次數epoch, 輸入批大小bs, 設定均方誤差函數MSELoss。
步驟3 設定自定義優化器resSGD,其更新方法為
Updres=μ(We-1k-W0k)
(2)
Wek=We-1k-lr(grad+Updres),e∈[1,epoch]
(3)
其中,上標e為客戶端迭代次數,Updres為限制項,grad為本次迭代訓練的梯度。
步驟4 進行本地訓練,直至預設迭代次數epoch后訓練結束,返回局部模型參數更新
ΔWt+1k=Wepochk-W0k
(4)
下肢康復評估任務既包括損傷部位的多標簽分類問題,也涉及到評估分值的回歸問題。而本地訓練中所采用的均方誤差損失函數能對各類別的預測概率與真值進行對比,符合下肢康復評估模型任務要求。在resSGD優化器中,加入如式所示(2)的限制項,其目的是使本地訓練更新后的局部模型和全局模型之間不至于相差過大,防止客戶端節點數據異構和系統異構導致模型發散問題,保證局部模型和全局模型的收斂一致性[9]。
當模型文件較大時,如果直接將本地訓練后的局部模型更新值上傳服務器,可能會導致網絡帶寬受限的客戶端節點占用過多通訊時間,影響模型聚合更新進程。作為一個折中方案,本系統利用量化編碼壓縮算法,犧牲一定精度來對局部模型更新參數進行壓縮。量化編碼壓縮算法分為兩步:隨機正交變換以及量化編碼,其流程如下:
算法:模型壓縮
輸入:局部模型參數更新ΔWt+1k∈p×q, 且k∈[1,K];t+1為本輪訓練輪次;K為本輪參與訓練的客戶端數;
輸出:壓縮模型更新參數ht+1k∈1×pq; 隨機種子seedt+1k; 最大值及最小值hmint+1k,hmaxt+1k;
步驟1 將局部模型更新參數展開成向量
Hk=flatten(ΔWt+1k)
(5)
步驟2 生成隨機種子
seedt+1k=rand()
(6)
步驟3 通過QR分解隨機矩陣,獲取隨機正交矩陣
mk=randmatrix((pq,pq),seed)
(7)
Qk,Rk=QR(mk)
(8)
步驟4 向量隨機正交變換
h*k=Qk×Hk
(9)
步驟5 向量各個分量進行量化,最終得到ht+1k
hmint+1k=min(h*k),hmaxt+1k=max(h*k)
(10)
ht+1k[i]=int(65535(h*k[i]-hmint+1k)hmaxt+1k-hmint+1k)-32768
(11)
式(9)中的隨機正交變換步驟目的是使變換后的向量在各維度上的尺度較為一致,減少量化編碼帶來的損失。Suresh等[10]的研究表明,如果在量化之前對向量應用隨機旋轉(用隨機正交矩陣乘以待量化的向量),可使量化誤差降低一定比例。原始模型更新參數數據類型為32位浮點數,通過量化步驟將其映射到-32 768~32 767范圍內的整數區間當中,即可使用16位整型數來表示。后續通過尺度因子以及壓縮后的整型向量,可對原始浮點數向量進行還原恢復。量化編碼方法以犧牲一定精度為代價可獲取較好的壓縮效果,將待傳輸的模型文件大小降為50%,從而大大減輕服務器與客戶端節點之間的傳輸壓力,加速聯邦學習進程。
在服務器節點獲取到客戶端節點所上傳的局部模型更新后,需要利用全局更新算法計算出一個全局模型,完成本輪次的訓練。本系統已在客戶端本地訓練的resSGD優化器中引入限制項,從而保證局部模型和全局模型的收斂性,因此在全局更新階段采用聯邦平均算法[11]即可獲得較好效果。然而若服務器遭遇數據攻擊,第三方可能從局部模型參數更新中推斷出客戶端節點的訓練貢獻,甚至存在原始數據泄漏的風險。為解決這一問題,本系統在聯邦平均算法基礎上引入高斯差分隱私機制來保護數據安全,并在計算過程中進行因子縮放來對噪聲進行限制,保證模型可用性。
差分隱私主要技術手段是往原始數據中添加一定的噪聲實現混淆,確保其滿足隱私要求。在差分隱私技術中,利用高斯噪聲實現ε-δ差分隱私的方法被稱為高斯機制。給定隱私算法M,其定義域為D,值域為R。當算法M對任意兩個數據t,t′∈D得到結果t*∈R時,若滿足下面不等式,則算法M滿足ε-δ差分隱私
Pr[M(t)=t*]≤eε×Pr[M(t′)=t*]+δ
(12)
其中,Pr為概率分布函數;ε為隱私預算,和噪聲呈負相關關系,和數據可用性成正相關關系;δ為松弛項,表示系統對差分隱私失效的容忍度。
σ=Δ2f2ln(1.25/δ)ε
(13)
M(D)=f(D)+N(0,σ2)
(14)
其中,Δ2f是函數f在L2范數下的敏感度,函數N(0,σ2) 生成均值為0方差為σ2的隨機高斯噪聲。綜合上述高斯差分隱私機制及聯邦平均算法,本系統中服務器節點全局更新算法流程如下:
算法:高斯差分隱私全局更新
輸入:壓縮模型更新參數ht+1k; 隨機種子seedt+1k; 最大值及最小值hmint+1k,hmaxt+1k; 噪聲閾值th; 隱私預算ε; 容忍度δ; 最大通訊輪數U; 上一輪全局模型Wtg;
輸出:本輪全局模型Wt+1g, 其中上標t+1代表聯邦學習輪次;
步驟1 將壓縮模型更新參數進行反量化
h*k[i]=hmaxt+1k-hmint+1k65535(ht+1k[i]+32768)+hmint+1k
(15)
其中,i∈[1,pq] 代表向量各分量
步驟2 根據隨機種子生成正交矩陣進行反變換,并將參數向量還原為矩陣形式
mk=randmatrix((pq,pq),seedt+1k)
(16)
Qk,Rk=QR(mk)
(17)
Hk=QTk×h*k
(18)
ΔWt+1k=unflatten(Hk)
(19)
步驟3 高斯噪聲計算
將函數敏感度限制為各客戶端參數更新的L2范數中值,后續通過縮放來限制噪聲
Δ2f=median(ΔWt+1k2),k∈[1,K]
(20)
根據式(13)計算高斯噪聲標準差σ,并為各客戶端計算縮放因子
Sk=min(1,Δ2f/ΔWt+1k2)
(21)
步驟4 全局更新計算
ΔWg=1K∑Kk=1(Sk×ΔWt+1k+N(0,σ2))
(22)
Wt+1g=Wtg+ΔWg
(23)
步驟5 計算噪聲強度并判斷是否繼續訓練
ps=(Wt+1g2)2pq,pn=σ2/K
(24)
snr=10*lg(ps/pn)
(25)
cond=(snr
(26)
其中,snr為本次全局更新的信噪比;cond為訓練繼續條件,若為假則聯邦學習停止。
在進行康復評估前,需要利用運動捕捉系統來采集受測者步行時的下肢運動參數。康復醫學上常用參數包括:左右側髖關節屈伸角、左右側膝關節屈伸角以及左右側踝關節屈伸角共計6個關節角度。完成數據采集后,在上海市第六人民醫院康復科醫生指導下確立如下康復評估任務:第一,對下肢損傷部位進行識別分類,包括正常、左右膝關節損傷、左右踝關節損傷共5個類別;第二,對康復程度進行評分,分數高說明康復情況良好。因此下肢康復評估可視為一個多分類及評分回歸問題,其輸入為6個關節角度200幀時間序列,輸出為5類關節損傷分類結果及對應康復評分結果。
針對以上問題,本文設計一種結合循環神經網絡與卷積神經網絡的時間序列多分類與評分模型,即GRU-Inception模型。該模型分為循環神經網絡特征提取模塊以及卷積神經網絡分類預測模塊,整體結構如圖2所示。卷積神經網絡分類預測模塊中的Inception單元,其結構如圖3所示。

圖2 GRU-Inception模型結構

圖3 Inception單元結構
GRU-Inception模型中采用GRU來實現特征提取模塊。GRU能有效捕捉時間序列當中的依賴關系,提取時序特征。輸入數據張量形狀為 (B,V,S),B代表輸入批大小,V代表輸入變量維度,S代表輸入序列時間步數。GRU隱藏層尺寸為hs, 表示特征提取所得的狀態張量維數。經特征提取模塊處理后,輸出狀態張量形狀為 (B,S,hs)。
GRU-Inception模型中分類預測模塊由卷積神經網絡InceptionTime[12]實現。如圖2所示,該模塊通過連接6個Inception單元組成,每隔3個單元引入殘差連接,防止深度增加導致模型退化及梯度消失。如圖3所示,每個Inception單元由3個并列卷積層及一個最大池化層拼接組成。
最后,利用全連接層來整合輸出張量形狀,利用Softmax層進行指數歸一化,形成獨熱編碼作為輸出結果。獨熱編碼one_hot這5個分量分別代表該樣本在5個類別上的預測概率,進一步計算即可得到分類結果class_id及評分結果score
class_id=argmax(one_hot)
(27)
score=one_hot[normal_id]one_hot[class_id]
(28)
其中,函數argmax用于找出獨熱編碼向量里最大值的索引編號。
本數據集在上海市第六人民醫院一線康復科醫生合作下進行數據采集和標注工作。本數據集利用Xsens可穿戴式動捕設備來進行下肢運動數據捕捉,采集時分別將7個可穿戴傳感器佩戴在骨盆中央、左右側大腿股骨中段、左右側小腿脛骨中段以及左右側腳跟跟骨處。隨后進行站姿標定,確定傳感器與肢體相對位姿。接下來進行數據記錄,受測者在平地上行走,采集得到關節角度步態數據。
關節角度采集頻率為40 Hz,每幀采集得到左右髖關節屈伸、左右膝關節屈伸以及左右踝關節屈伸共計6個角度。后續處理中每隔5 s,即200幀數據,劃分為一個樣本,并在醫生協助下進行數據標注工作。數據標注工作分為分類和評分兩步,數據集共分為5個類別:正常N、右膝損傷RK、右踝損傷RA、左膝損傷LK、左踝損傷LA。根據受測者康復程度不同,評分分值范圍為0.6~1.0。最后計算得到該樣本1×5獨熱編碼來代表各類別概率。例如,獨熱編碼(0.45,0.55,0,0,0)代表其正常概率為0.45,右膝損傷概率為0.55,其它概率為0。因此該樣本分類結果為右膝損傷,評分為0.45/0.55=0.82。本數據集共有樣本1698份,均通過上文所述方法獲得,各類樣本數量與比例見表1。

表1 下肢康復數據集

本實驗基本設置如下:每輪訓練客戶端迭代次數epoch=3; 批大小設置為B=64; 學習率設置為lr=0.01; 通訊輪數U=200; 優化器限制項參數μ=0.1; 壓縮類型compression=int16。 對于高斯差分隱私機制相關的參數,設置隱私預算ε=1; 容忍度δ=0.1; 噪聲閾值th=10。
本實驗在Ubuntu 20.04系統上進行;深度學習框架為Pytorch 1.9.1;編程環境為Python 3.7;CPU為英特爾Core i7-9750;GPU為英偉達GeForce RTX 2060;顯存為6 G;內存為8 G。
GRU-Inception模型在聯邦學習框架上進行200輪訓練后,在測試集上對其進行驗證。如表2所示,本實驗按照5種類別進行結果整理,其中Pre、Rec代表各類別分類精確率、召回率;TP代表各類別識別正確的樣本數;FP代表其它類別誤識別為本類別的樣本數;FN代表本類誤識別為其它類別的樣本數,則
Pre=TPTP+FP,Rec=TPTP+FN
(29)

表2 GRU-Inception模型聯邦學習分類結果
對模型的整體表現進行分析,在測試集上模型的總體準確率為Acc=0.93。準確率代表預測正確樣本數占測試集樣本總數的比值,即
Acc=num(pred=gt)num(total)
(30)
采用均方根誤差對模型康復評分效果進行分析,結果為RMSE=0.023。均方根誤差計算如下
RMSE=∑mi=1(yi-xi)2/m
(31)
其中,y,x分別代表預測分值以及真值分值,下標i代表樣本編號,m代表樣本數。
除了對模型整體效果進行實驗,本文對聯邦學習過程中各重要步驟分別進行驗證。在本地訓練過程中,resSGD優化器在隨機梯度下降基礎上引入限制項,防止本地更新后的局部模型和全局模型相差過大導致模型發散。對帶限制項的resSGD優化器效果進行驗證,誤差曲線對比如圖4所示,帶限制項的resSGD優化器為BASE,不帶限制項的SGD優化器為NR(no restriction)。

圖4 是否使用限制項優化器對比
由圖4可見,是否使用限制項優化器其整體誤差曲線相似。但在訓練開始及結束階段,不使用限制項時模型訓練誤差有相對較大幅度的波動。在測試集上進行對比,加入限制項時模型Acc=0.93,RMSE=0.023;不加限制項時模型Acc=0.90,RMSE=0.025。由于不同節點梯度相差較大,全局更新時波動與震蕩難以避免,嚴重時會影響模型收斂。帶限制項的resSGD優化器可減少訓練時模型參數波動幅度,提升收斂穩定性與模型性能。
在客戶端與服務器通訊階段,為減輕網絡傳輸負擔,加快模型傳輸速度,采用int16量化編碼壓縮。對量化編碼壓縮效果進行驗證,誤差曲線對比如圖5所示,使用編碼壓縮為BASE,不使用編碼壓縮為NC(no compression)。

圖5 是否使用量化編碼壓縮對比
由圖5可見,是否使用編碼壓縮其整體誤差曲線十分接近。在測試集上進行對比,使用編碼壓縮時模型Acc=0.93,RMSE=0.023;不使用編碼壓縮時模型Acc=0.93,RMSE=0.021。本模型中各層參數最大最小值相差基本小于50,而int16類型范圍為65 536,進行量化壓縮時可保證1e-3的精度。因此,量化編碼壓縮后的模型精度損失較小,但文件大小可降為50%,大幅減輕傳輸壓力。
在全局更新階段,為保護數據隱私,在聯邦平均算法基礎上加入高斯噪聲實現差分隱私機制。對高斯差分隱私機制進行驗證,誤差曲線對比如圖6所示,使用高斯機制的聯邦平均算法為BASE,普通聯邦平均算法為NN(no noise)。

圖6 是否使用高斯差分隱私機制對比
由圖6可見,無噪聲時模型訓練誤差低于添加高斯噪聲。在測試集上進行對比,添加噪聲時模型Acc=0.93,RMSE=0.023;無噪聲時模型Acc=0.93,RMSE=0.025。添加高斯噪聲雖使模型訓練誤差增加,收斂速度變慢,但在測試集上其表現接近甚至略優于無噪聲。可見適當添加高斯噪聲既能保護數據隱私安全,防止信息泄漏,又可以使模型過擬合程度減輕,泛化性能得到一定的改善。
為驗證GRU-Inception模型在下肢康復數據集上的表現,將其與一些最新時序網絡模型經聯邦學習后在測試集上進行比較,結果見表3。

表3 不同模型對比
表3可見,GRU-Inception在評分準確度上略低于InceptionTime,但分類預測準確率有較大提升。對比mWDN、LSTM_FCN與XCM,GRU-Inception模型在下肢康復數據集上的整體表現更好。而MINIROCKET雖在單節點訓練時效果突出,但聯邦學習時該模型不收斂,說明其對參數擾動較為敏感。實驗結果表明,經聯邦學習訓練后GRU-Inception模型在下肢康復數據集上綜合表現較優。除某些對參數擾動比較敏感的模型外,本文構建的聯邦學習系統對各類模型結構適應性強,適用范圍廣。
本文提出一種基于聯邦學習的下肢康復評估算法,用于保護數據隱私安全并進行模型訓練與康復評估。聯邦學習系統的搭建上,本文采用客戶端選擇機制及量化編碼壓縮算法提高通訊效率,設計帶限制項的resSGD優化器保證模型收斂,最后利用高斯差分隱私實現數據保護。在此基礎上設計了GRU-Inception模型完成康復評估任務。
實驗結果表明,本文提出的基于聯邦學習的下肢康復評估算法整體表現較優,有助于打破醫療機構之間的數據壁壘,使多方協同訓練出準確度高、泛用性好的康復評估模型成為可能。