李海洋,郭晶晶,劉玖樽,劉志全
(1.西安電子科技大學(xué) 網(wǎng)絡(luò)與信息安全學(xué)院,陜西 西安 710071;2.暨南大學(xué) 信息科學(xué)技術(shù)學(xué)院,廣東 廣州 510632;3.數(shù)力聚(北京)科技有限公司,北京 100020)
隨著社會的發(fā)展,人工智能有著越來越多的實際應(yīng)用。為應(yīng)對人工智能面臨的數(shù)據(jù)孤島問題,聯(lián)邦學(xué)習(xí)(Federated Learning,FL)[1]應(yīng)運而生。不同于傳統(tǒng)的數(shù)據(jù)集中式機器學(xué)習(xí),聯(lián)邦學(xué)習(xí)是一種分布式機器學(xué)習(xí)架構(gòu),聯(lián)邦學(xué)習(xí)系統(tǒng)中節(jié)點的本地訓(xùn)練集不出本地,節(jié)點間通過共享模型訓(xùn)練的中間參數(shù)進行多方協(xié)作訓(xùn)練得到共享的全局模型。根據(jù)節(jié)點的本地訓(xùn)練集特征,聯(lián)邦學(xué)習(xí)可分為3種類型[2],分別是數(shù)據(jù)樣本ID空間重疊較少而數(shù)據(jù)特征空間重疊較多的橫向聯(lián)邦學(xué)習(xí)(Horizontal Federated Learning,HFL),數(shù)據(jù)樣本ID空間重疊較多而數(shù)據(jù)特征空間重疊較少的縱向聯(lián)邦學(xué)習(xí)(Vertical Federated Learning,VFL)以及數(shù)據(jù)樣本ID空間和數(shù)據(jù)特征空間均重疊較少的聯(lián)邦遷移學(xué)習(xí)(Federated Transfer Learning,FTL)。
橫向聯(lián)邦學(xué)習(xí)進行一輪訓(xùn)練的流程如下:① 節(jié)點在本地進行模型訓(xùn)練,獲得本地模型并將模型更新(梯度)上傳至聚合服務(wù)器;② 聚合服務(wù)器首先接收各節(jié)點上傳的本地模型梯度信息,然后進行聚合生成全局模型梯度,并將模型梯度信息下發(fā)至各節(jié)點;③ 節(jié)點接收全局模型梯度并以此更新本地模型。上述步驟一直循環(huán)執(zhí)行,直至全局模型收斂或者達到預(yù)定義的模型迭代訓(xùn)練輪數(shù)。
盡管流程①中節(jié)點的本地訓(xùn)練集未出本地,但節(jié)點上傳的中間訓(xùn)練參數(shù)同樣會泄露隱私[3-4]。針對這一問題,國內(nèi)外學(xué)者提出了許多聯(lián)邦學(xué)習(xí)的隱私保護方案,這些方案通過對中間訓(xùn)練參數(shù)進行隱私保護來避免節(jié)點的隱私泄露。當(dāng)前的隱私保護方法主要分為以同態(tài)加密(Homomorphic Encryption,HE)、安全多方計算(Secure Multi-party Computation,SMC)為代表的加密方法和以差分隱私(Differential Privacy,DP)為代表的擾動方法[5-6]。同態(tài)加密是一種無需訪問數(shù)據(jù)本身便可處理數(shù)據(jù)的技術(shù),即聚合服務(wù)器可對密文狀態(tài)的模型梯度信息進行計算。然而,同態(tài)加密計算復(fù)雜,要求節(jié)點有較高計算能力,因此在當(dāng)前計算力條件下,同態(tài)加密在聯(lián)邦學(xué)習(xí)中的實用性不高。安全多方計算可在不泄露原始數(shù)據(jù)條件下實現(xiàn)全局模型的無損聚合。然而,安全多方計算通常需要復(fù)雜的流程設(shè)計,有較高的額外計算成本,因此效率不高。差分隱私通過添加噪聲來擾動原本極易識別的數(shù)據(jù),避免數(shù)據(jù)的敏感信息泄露,且所添加的噪聲不會破壞數(shù)據(jù)原本的特征[7]。在每一輪聯(lián)邦學(xué)習(xí)訓(xùn)練中,首先將節(jié)點的本地模型梯度信息進行差分隱私處理,然后再將其發(fā)往聚合服務(wù)器,從而防止節(jié)點隱私泄露?;诓罘蛛[私的橫向聯(lián)邦學(xué)習(xí)算法主要目標是在精度損失可接受范圍內(nèi)實現(xiàn)隱私預(yù)算最小[8]。WEI等[9]提出CRD(Communication Rrounds Discaunting)算法,證明在給定隱私預(yù)算時存在一個最優(yōu)的訓(xùn)練輪數(shù),可在滿足差分隱私的同時提升模型性能。差分隱私通過犧牲部分模型精度來實現(xiàn)隱私保護,實現(xiàn)簡便,計算開銷低,是一種實用的隱私保護技術(shù)。
由于聯(lián)邦學(xué)習(xí)的本質(zhì)是一種分布式機器學(xué)習(xí),因此易受拜占庭節(jié)點攻擊。拜占庭節(jié)點攻擊的常用手段是發(fā)起投毒攻擊破壞模型的完整性與可用性,致使聯(lián)邦學(xué)習(xí)系統(tǒng)的魯棒性極低。SHEJWALKAR等[10]提出一種模型投毒攻擊,在生成惡意梯度時,使其方向同正常模型梯度方向相反,然后將模型梯度的長度設(shè)置為系統(tǒng)防御機制可檢測的門限范圍內(nèi)的邊緣值,以使惡意梯度的攻擊能力最大化。針對拜占庭節(jié)點的防御問題,文獻[10]中總結(jié)了以Krum、Multi-Krum、Buylan等為代表的統(tǒng)計學(xué)分析方法,其核心思路為:首先基于模型更新的某種數(shù)學(xué)指標進行安全聚合,例如中位值、均值等;文獻[11-12]這類基于變分自編碼器(Auto-Encoder,AE)識別惡意模型參數(shù)的機器學(xué)習(xí)方法,其核心思路為:首先聚合服務(wù)器預(yù)先在本地預(yù)訓(xùn)練一個自編碼器模型,然后正式訓(xùn)練過程中基于自編碼器計算各節(jié)點模型更新的重構(gòu)誤差,以此重構(gòu)誤差判斷模型更新的可靠性;文獻[13-15]這類基于生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)的防御方法,其核心思路為:首先基于生成對抗網(wǎng)絡(luò)補足異常檢測模型訓(xùn)練集,然后基于異常檢測模型進行拜占庭檢測;文獻[13-14,16]這類通過驗證模型參數(shù)精度來檢測惡意模型參數(shù)的方法,其核心思路為:首先聚合服務(wù)器利用根數(shù)據(jù)集在本地訓(xùn)練一個同聯(lián)邦學(xué)習(xí)任務(wù)一致的本地模型,然后基于節(jié)點提供的模型,更新和聚合服務(wù)器本地訓(xùn)練得到的模型,以更新的余弦相似度計算節(jié)點的信任值。無論是哪一類防御方法,其基本策略皆為對節(jié)點中間訓(xùn)練參數(shù)的某項數(shù)據(jù)指標進行相互比較,從而找出離群值。而這樣的策略存在兩個問題:① 數(shù)據(jù)非獨立同分布。真實的橫向聯(lián)邦學(xué)習(xí)場景中節(jié)點間的數(shù)據(jù)是參差不齊的,如果節(jié)點訓(xùn)練數(shù)據(jù)差別過大,那么節(jié)點的中間訓(xùn)練參數(shù)的區(qū)別也會較大,則此類節(jié)點的中間訓(xùn)練參數(shù)容易被系統(tǒng)檢測機制誤判為惡意數(shù)據(jù)。因此,現(xiàn)有的拜占庭魯棒算法一般不能直接用于數(shù)據(jù)非獨立同分布的聯(lián)邦學(xué)習(xí)環(huán)境。② 隱私保護環(huán)境。不論是加密還是擾動的隱私保護方法,其基本目的都是隱藏節(jié)點中間訓(xùn)練參數(shù)的數(shù)據(jù)特征從而破壞其可分析性。以同態(tài)加密為代表的加密方法使得節(jié)點中間訓(xùn)練參數(shù)的數(shù)據(jù)特征完全隱藏,致使檢測機制無法對密文進行分析;以差分穩(wěn)私為代表的擾動方法使得節(jié)點中間訓(xùn)練參數(shù)的數(shù)據(jù)特征部分隱藏,這使檢測機制執(zhí)行難度增加。因此,現(xiàn)有的拜占庭魯棒算法一般不能直接用于隱私保護的聯(lián)邦學(xué)習(xí)環(huán)境。
針對上述問題,文中提出一種可在數(shù)據(jù)非獨立同分布和隱私保護環(huán)境下拜占庭魯棒的聯(lián)邦學(xué)習(xí)算法。首先,節(jié)點對本地梯度進行隱私保護處理;然后,聚合服務(wù)器將節(jié)點的歷史模型更新依次輸入自編碼器和長短期記憶(Long Short-Term Memory,LSTM)模型,比較長短期記憶模型輸出的預(yù)測值和實際值的差距以檢測拜占庭攻擊;最后,聚合服務(wù)器根據(jù)評估結(jié)果進行全局梯度聚合。針對隱私保護需求,所提算法采用差分隱私技術(shù)為節(jié)點的本地梯度進行隱私保護處理。針對數(shù)據(jù)非獨立同分布環(huán)境下的拜占庭魯棒需求,所提算法僅對節(jié)點上傳的歷史梯度進行縱向比較,以此對節(jié)點的可信度進行評估,不涉及節(jié)點間的橫向比較,因此不受數(shù)據(jù)非獨立同分布環(huán)境的影響。
系統(tǒng)模型如圖1所示,分為節(jié)點端和服務(wù)端2個部分。服務(wù)端由預(yù)處理模塊、數(shù)據(jù)檢測模塊和全局聚合模塊組成。預(yù)處理模塊負責(zé)注冊節(jié)點的基本信息,以及在聯(lián)邦學(xué)習(xí)正式開始前進行模型預(yù)訓(xùn)練。數(shù)據(jù)檢測模塊負責(zé)更新和維護歷史模型更新信息(即節(jié)點上傳的本地梯度),并進行拜占庭檢測。全局聚合模塊則根據(jù)數(shù)據(jù)檢測模塊的檢測結(jié)果,選擇可信本地模型進行聚合生成全局梯度。
圖1 系統(tǒng)模型
節(jié)點端由正常節(jié)點和拜占庭節(jié)點共同組成,這兩類節(jié)點都持有本地訓(xùn)練集。在聯(lián)邦學(xué)習(xí)訓(xùn)練中,正常節(jié)點遵從聯(lián)邦學(xué)習(xí)協(xié)議參與訓(xùn)練,而拜占庭節(jié)點則伺機發(fā)起投毒攻擊破壞聯(lián)邦學(xué)習(xí)訓(xùn)練過程。根據(jù)惡意梯度的生成方式不同,文中將拜占庭節(jié)點的攻擊方法分為兩類:① 隨機生成與全局梯度同維度的惡意梯度;② 在本地梯度的基礎(chǔ)上添加一個反方向的干擾向量。此外,本方案中的拜占庭節(jié)點可選擇從第5輪或第10輪(此設(shè)置僅為觀察精度降低的攻擊效果)開始發(fā)起攻擊。
為進一步描述所提方案,作如下系統(tǒng)假設(shè):
(1) 橫向聯(lián)邦學(xué)習(xí)系統(tǒng)中共有N個節(jié)點,用集合{P1,P2,…,PN}表示;
(2) 聚合服務(wù)器誠實且好奇,且持有根數(shù)據(jù)集,其與節(jié)點的本地訓(xùn)練集類別一致,即均為MNIST/CIFAR10數(shù)據(jù)集;
(3) 拜占庭節(jié)點不在第1輪訓(xùn)練就發(fā)起攻擊。
圖1所示的聯(lián)邦學(xué)習(xí)系統(tǒng)進行一輪協(xié)作訓(xùn)練的步驟①~⑦的說明如下:
階段1 注冊階段。
① 節(jié)點向聚合服務(wù)器發(fā)起注冊請求并提交必要信息,例如本地訓(xùn)練集的數(shù)據(jù)量。
② 聚合服務(wù)器響應(yīng)節(jié)點請求,協(xié)助節(jié)點商定模型結(jié)構(gòu)、相關(guān)參數(shù)設(shè)置等。
階段2 預(yù)處理階段。
③ 預(yù)處理模塊開始預(yù)訓(xùn)練得到自編碼器和長短期記憶模型并將其發(fā)送給數(shù)據(jù)檢測模塊。
階段3 正式訓(xùn)練階段。
④ 首先節(jié)點開始本地訓(xùn)練得到本地梯度,然后將本地梯度用差分隱私處理后上傳聚合服務(wù)器,其中差分隱私使用的是(ε,δ)差分隱私,采用高斯機制(即添加高斯噪聲)實現(xiàn)。
⑤ 首先聚合服務(wù)器接收節(jié)點的本地梯度,然后數(shù)據(jù)檢測模塊進行拜占庭檢測,生成可信節(jié)點列表并將其發(fā)送給全局聚合模塊。
⑥ 首先全局聚合模塊選擇可信節(jié)點所對應(yīng)的本地梯度,并根據(jù)其本地訓(xùn)練集的數(shù)據(jù)量進行加權(quán)聚合得到全局梯度,然后將其下發(fā)可信節(jié)點。
⑦ 首先節(jié)點接收全局梯度并更新本地模型,然后返回步驟④,開始新一輪訓(xùn)練。
上述預(yù)處理階段步驟③中提到的自編碼器是一種無監(jiān)督機器學(xué)習(xí),其輸入層神經(jīng)網(wǎng)絡(luò)數(shù)量等于輸出層神經(jīng)網(wǎng)絡(luò)數(shù)量,可用于特征提取和異常檢測。長短期記憶模型是一種時間循環(huán)網(wǎng)絡(luò),可解決一般的循環(huán)神經(jīng)網(wǎng)絡(luò)存在的長期依賴問題,用于處理序列數(shù)據(jù)。自編碼器[17]和長短期記憶模型[18]在多種場景下都得到了廣泛的應(yīng)用。
所提方案的具體流程分為3個階段:注冊階段、預(yù)處理階段和正式訓(xùn)練階段。下面對各個階段進行詳細闡述。
① ift==1 then
③ else
⑧ end if
⑨ end if
2.2.1 注冊階段
此階段主要任務(wù)是節(jié)點在橫向聯(lián)邦學(xué)習(xí)系統(tǒng)內(nèi)完成注冊,聚合服務(wù)器同節(jié)點協(xié)商網(wǎng)絡(luò)模型結(jié)構(gòu)等訓(xùn)練細節(jié)。
2.2.2 預(yù)處理階段
在預(yù)處理階段,聚合服務(wù)器首先收集差分時間序列數(shù)據(jù)集(Differential Time Series Data,DTSD),然后利用差分時間序列數(shù)據(jù)集先訓(xùn)練自編碼器模型,再訓(xùn)練長短期記憶模型,最后確定門限參考列表,為正式訓(xùn)練階段提供準備。
算法2Pi第t輪信任度評估算法。
threshold ∥一級門限,對梯度每一層進行判斷
tolerance_tn ∥可信節(jié)點異常的模型層數(shù)的最大值
tolerance_htn ∥半可信節(jié)點異常的模型層數(shù)的最大值
輸出:Pi的信任度?!畏譃?可信節(jié)點TN,半可信節(jié)點HTN,不可信節(jié)點AN
① fork←1~4 do
⑤ origin←AEencoder(h4)
⑦ gradient_euler←‖origin-predict‖ ∥計算L2距離Pi的信任度劃分
⑧ ayer_state←0 ∥表示梯度中異常的層數(shù)
⑨ for gradient_euler in gradient_euler do
⑩ if layer_euler>threshold then
收集差分時間序列數(shù)據(jù)集:
(1) 聚合服務(wù)器創(chuàng)建初始模型(注冊階段所協(xié)商的模型),用根數(shù)據(jù)集進行n輪模型訓(xùn)練,期間收集訓(xùn)練過程中產(chǎn)生的模型梯度,得到時序梯度數(shù)據(jù)集G,其中G=
(2) 針對G中的每一個梯度,聚合服務(wù)器計算其L2范數(shù),選取其中值最大的m個L2范數(shù),將其均值作為梯度裁剪的閾值c并向各節(jié)點廣播;
(3) 聚合服務(wù)器根據(jù)ct=gt/max(1,‖gt‖2/c)對G中的梯度進行裁剪,得到數(shù)據(jù)集C,其中C=
(4) 聚合服務(wù)器根據(jù)dt=ct+1-ct計算C中相鄰梯度的差值,得到差分時間序列數(shù)據(jù)集DTSD,其中DTSD=
獲取自編碼器模型:
聚合服務(wù)器首先創(chuàng)建自編碼器模型,用差分時間序列數(shù)據(jù)集作為訓(xùn)練集來訓(xùn)練自編碼器模型,然后保存模型。
獲取長短期記憶模型:
(1) 聚合服務(wù)器用自編碼器模型的編碼器模塊將差分時間序列數(shù)據(jù)集進行編碼處理,得到數(shù)據(jù)集DTSD_E。
(2) 聚合服務(wù)器用長度為4、步長為1的滑動窗口(此處滑動窗口的參數(shù)是經(jīng)驗值,在實際情況中也可取其他的值)在DTSD_E上進行采樣,生成數(shù)據(jù)集DTSD_E_L,選取其中前80%的數(shù)據(jù)作為訓(xùn)練集Data_Train,剩余20%的數(shù)據(jù)作為測試集Data_Test。
(3) 聚合服務(wù)器首先創(chuàng)建長短期記憶模型,用Data_Train訓(xùn)練長短期記憶模型,然后保存模型。
確定門限參考列表:
將Data_Test輸入長短期記憶模型,計算每1條預(yù)測數(shù)據(jù)和實際數(shù)據(jù)的距離(歐式距離),得到門限參考列表euler_dis。在正式訓(xùn)練階段選取euler_dis中最大的tm(虛門限)個值,計算其均值作為實際門限值。
2.2.3 正式訓(xùn)練階段
正式訓(xùn)練階段節(jié)點端與服務(wù)端的工作流程如下所示:
節(jié)點Pi:
(1)Pi設(shè)置相關(guān)模型參數(shù);
(2)Pi開始第t輪訓(xùn)練,收集本輪訓(xùn)練的模型梯度gt;
(3)Pi對gt進行裁剪,得到ct,其中ct=gt/max(1,‖gt‖2/c);
(4)Pi對ct進行差分隱私處理,得到dt,其中dt=ct+N(0,σ2);
(5)Pi將dt上傳聚合服務(wù)器;
(6) 若t<5,返回步驟(2),開始新的一輪訓(xùn)練;否則,進入下一步;
(7) 接收全局梯度gradient_globalt并更新本地模型;
(8) 返回步驟(2),開始新的一輪訓(xùn)練。
服務(wù)端:
(1) 聚合服務(wù)器接收節(jié)點第t輪上傳的dt;
(2) 聚合服務(wù)器更新節(jié)點的歷史記錄ht(詳見算法1),其記錄的是節(jié)點上傳的本地梯度信息;
(3) 若t<5,則返回步驟(1),開始新的一輪訓(xùn)練;否則,進入下一步;
(4) 聚合服務(wù)器根據(jù)ht、自編碼器模型以及長短期記憶模型評估節(jié)點的可信度(詳見算法2);
(5) 聚合服務(wù)器選取可信節(jié)點上傳的dt計算全局梯度gradient_globalt(詳見算法3);
(6) 聚合服務(wù)器向不可信節(jié)點發(fā)送假數(shù)據(jù),向其余節(jié)點發(fā)送gradient_globalt;
(7) 返回步驟(1),開始新的一輪訓(xùn)練。
在上述正式訓(xùn)練階段,服務(wù)端使用了3個算法。算法1是節(jié)點歷史模型記錄(節(jié)點歷史模型記錄以雙端隊列形式存儲)更新算法,其中步驟①~⑤表示歷史記錄條數(shù)小于5時新的記錄直接進入隊尾,步驟⑥和⑦表示歷史記錄條數(shù)大于等于5時新的記錄進入隊尾的同時最早進入的記錄需要彈出隊頭,然后輸出節(jié)點的新歷史模型記錄。算法2給出了節(jié)點信任度評估方法,其中步驟①~⑦處理節(jié)點的歷史記錄,首先計算歷史記錄中相鄰梯度的差值,得到一個長度為4的差值列表,再用自編碼器模型將此列表中的每條數(shù)據(jù)進行編碼處理,然后將此列表的前3條數(shù)據(jù)作為長短期記憶的輸入得到預(yù)測值,最后計算此預(yù)測值和列表中第4條數(shù)據(jù)的歐氏距離gradient_eurler;步驟⑧~行將gradient_eurler中每層的值同各自的門限進行比較以得出每一層的異常狀態(tài),然后根據(jù)總的異常層數(shù)判斷節(jié)點此時的可信度。算法3給出了全局模型聚合方案,以節(jié)點的本地訓(xùn)練集的數(shù)據(jù)量為權(quán)重,對所有可信節(jié)點的本地梯度進行加權(quán)聚合得到全局模型梯度。
算法3全局梯度聚合算法。
經(jīng)算法2篩選后有m個節(jié)點可信,1
輸出:第t輪的全局梯度gradient_globalt
③ return gradient_globalt
為驗證所提方案的有效性,文中開展了一系列的仿真實驗,下面首先介紹總體的實驗設(shè)置,然后給出實驗結(jié)果并對其進行分析。
本實驗所采用的平臺如表1所示,實驗所涉及符號的說明如表2所示。聯(lián)邦學(xué)習(xí)系統(tǒng)中節(jié)點的本地訓(xùn)練集采用MNIST/CIFAR10數(shù)據(jù)集,數(shù)據(jù)分布分為獨立同分布(Independent and Identically Distributed,IID)和非獨立同分布(Non-Independent and Identically Distributed,Non-IID)兩類。其中,通過在MNIST/ CIFAR10數(shù)據(jù)集中隨機、均勻地選取一定數(shù)量(文中選取500、1 000條數(shù)據(jù))的數(shù)據(jù)實現(xiàn)節(jié)點數(shù)據(jù)獨立同分布的聯(lián)邦學(xué)習(xí)環(huán)境,而節(jié)點數(shù)據(jù)非獨立同分布的聯(lián)邦學(xué)習(xí)環(huán)境則采用文獻[19]所提方法實現(xiàn)。具體方法如表3所示。節(jié)點的本地訓(xùn)練模型采用多層感知機(Multi-Layer Perceptron,MLP)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)這兩類模型,其中多層感知機模型結(jié)構(gòu)為[784,256,10],卷積神經(jīng)網(wǎng)絡(luò)自定義模型包含2個卷積層、2個池化層。
表1 實驗平臺表
表2 對工藝庫的遷移性評估
表3 非獨立同分布數(shù)據(jù)劃分
仿真實驗的基礎(chǔ)設(shè)置為:節(jié)點數(shù)量u=30,訓(xùn)練輪數(shù)epoch=30,隱私預(yù)算epsilon=2,拜占庭節(jié)點比例mn=0.2。實驗結(jié)果的主要衡量指標為聚合服務(wù)器進行數(shù)據(jù)檢測的時間開銷、全局模型精度(由聚合服務(wù)器用完整的MNIST/CIFAR10測試集測試得出)以及數(shù)據(jù)檢測模塊的性能(誤檢率)。
首先進行可行性分析。圖2給出了節(jié)點數(shù)據(jù)獨立同分布且訓(xùn)練模型為卷積神經(jīng)網(wǎng)絡(luò)模型的條件下,分別選擇MNIST和CIFAR10作為訓(xùn)練集的全局模型精度隨訓(xùn)練輪次的變化過程,其中ad表示聚合服務(wù)器端部署了所提方案,nad則表示無異常檢測。從圖2可以看出,在第5輪和第10輪全局模型的精度出現(xiàn)大幅度降低,這是因為拜占庭節(jié)點分為兩批發(fā)起攻擊,其中一批從第5輪開始發(fā)起攻擊,另一批從第10輪發(fā)起攻擊??梢钥闯?如果服務(wù)器部署了文中所提方案,則在第5輪與第10輪迭代后全局模型精度并未出現(xiàn)波動,在整個訓(xùn)練過程中全局模型的精度均高于未部署所提方案時全局模型的精度。此外,實驗日志顯示,數(shù)據(jù)檢測模塊及時準確地檢測出了聯(lián)邦學(xué)習(xí)系統(tǒng)中所有拜占庭節(jié)點。因此,所提拜占庭節(jié)點檢測算法在節(jié)點數(shù)據(jù)獨立同分布條件下,可以準確地檢測出系統(tǒng)中的拜占庭節(jié)點。圖2中訓(xùn)練集為CIFAR10時所得全局模型的精度低于訓(xùn)練集為MNIST時所得全局模型的精度,這是由CIFAR10數(shù)據(jù)集特性以及本實驗所采用的簡單卷積神經(jīng)網(wǎng)絡(luò)模型模型結(jié)構(gòu)所致。在相同條件下,未部署所提方案的CIFAR10訓(xùn)練集訓(xùn)練得到的全局模型精度更低。
圖2 數(shù)據(jù)獨立同分布條件下卷積神經(jīng)網(wǎng)絡(luò)模型的精度
圖3給出了MNIST數(shù)據(jù)集作為訓(xùn)練集,訓(xùn)練模型為卷積神經(jīng)網(wǎng)絡(luò)模型,節(jié)點數(shù)據(jù)非獨立同分布條件下全局模型精度隨訓(xùn)練輪次的變化過程。從圖3可以看出,不同非獨立同分布條件下全局模型的最終精度存在一定的差異。然而,相同非獨立同分布條件下,未部署所提異常檢測機制時在第5輪和第10輪訓(xùn)練結(jié)束后全局模型均出現(xiàn)了精度突然降低的現(xiàn)象。因此,所提方案可在隱私保護且節(jié)點數(shù)據(jù)非獨立同分布條件下準確地檢測出系統(tǒng)中的拜占庭節(jié)點。圖3中節(jié)點數(shù)據(jù)分布為N2和N3兩種情況時得到的全局模型精度低于節(jié)點數(shù)據(jù)分布為N1時得到的全局模型精度,這是因為N1劃分主要體現(xiàn)了節(jié)點的本地訓(xùn)練樣本數(shù)量的不同,而單個節(jié)點所擁有的數(shù)據(jù)較為完備,因而其精度遠高于另外兩種劃分時得到的全局模型精度。
圖3 數(shù)據(jù)非獨立同分布條件下卷積神經(jīng)網(wǎng)絡(luò)模型的精度
接下來進行所提方案的計算開銷分析。圖4給出了MNIST數(shù)據(jù)集作為訓(xùn)練集,訓(xùn)練模型為卷積神經(jīng)網(wǎng)絡(luò)模型,節(jié)點數(shù)據(jù)獨立同分布條件下數(shù)據(jù)檢測模塊進行異常檢測的時間開銷隨節(jié)點數(shù)量變化的過程。從圖4可以看出,不論是以多層感知機還是卷積神經(jīng)網(wǎng)絡(luò)模型作為訓(xùn)練模型,異常檢測的時間開銷隨著節(jié)點數(shù)量增加大體呈線性增長的態(tài)勢,多層感知機作為訓(xùn)練模型時單個節(jié)點的檢測耗時在1~2 s之間,卷積神經(jīng)網(wǎng)絡(luò)模型作為訓(xùn)練模型時單個節(jié)點的檢測耗時在1 s以內(nèi)。
圖4 異常檢測的計算開銷
為了分析隱私預(yù)算對數(shù)據(jù)檢測模塊的性能影響,圖5給出了節(jié)點數(shù)據(jù)獨立同分布,節(jié)點總數(shù)u=30,拜占庭節(jié)點比例mn=0.2條件下數(shù)據(jù)檢測模塊在不同隱私預(yù)算下的誤檢節(jié)點個數(shù)。從圖5可以看出,當(dāng)隱私預(yù)算為0.000 1時,誤檢節(jié)點總數(shù)為24,即全部正常節(jié)點均被誤判為惡意節(jié)點,數(shù)據(jù)檢測模塊完全失效。隨著隱私預(yù)算逐漸增大,數(shù)據(jù)檢測模型誤檢的節(jié)點個數(shù)也逐漸減小。這是因為隱私預(yù)算越小,隱私保護越強,但數(shù)據(jù)可用性越弱,因此誤檢率高。
圖5 隱私預(yù)算對異常檢測的影響
采用虛門限tm替代實際門限值以給出更具體的門限設(shè)置參考。為了分析虛門限對數(shù)據(jù)檢測模塊的性能影響,圖6和圖7給出了節(jié)點數(shù)據(jù)獨立同分布條件下,分別以多層感知機和卷積神經(jīng)網(wǎng)絡(luò)模型作為訓(xùn)練模型時,數(shù)據(jù)檢測模塊在不同虛門限下的誤檢節(jié)點個數(shù)。從圖6和圖7可以看出,隨著虛門限的增加,數(shù)據(jù)檢測模塊誤檢節(jié)點數(shù)量隨之增加。這是因為虛門限越大,實際門限值越小,對數(shù)據(jù)的要求更加嚴格,因此誤檢情況會增加。
圖6 多層感知機模型下虛門限對異常檢測的影響
圖7 卷積神經(jīng)網(wǎng)絡(luò)模型模型下虛門限對異常檢測的影響
為了分析拜占庭節(jié)點比例對數(shù)據(jù)檢測模塊的性能影響,圖8給出了節(jié)點數(shù)據(jù)獨立同分布條件下,不同拜占庭節(jié)點比例對應(yīng)的聯(lián)邦學(xué)習(xí)環(huán)境的全局模型的最終精度。從圖8可以看出,隨著拜占庭節(jié)點比例從0.2增加至0.8,全局模型的精度幾乎未變,且實驗日志顯示全部拜占庭節(jié)點一旦發(fā)起攻擊便被數(shù)據(jù)檢測模塊識別,因此所提方案不受拜占庭節(jié)點比例的影響。其中,盡管正常節(jié)點數(shù)量在減少,然而全局模型精度卻基本保持不變。這是因為在實驗的節(jié)點數(shù)據(jù)獨立同分布設(shè)置下,單個節(jié)點分配的數(shù)據(jù)較多,僅需要少數(shù)節(jié)點甚至僅僅單個節(jié)點所訓(xùn)練的模型精度就已近乎收斂。
圖8 拜占庭節(jié)點比例對異常檢測的影響
同現(xiàn)有的拜占庭魯棒聯(lián)邦學(xué)習(xí)算法相比,所提算法具有可在數(shù)據(jù)非獨立同分布和隱私保護環(huán)境下執(zhí)行的優(yōu)勢,為驗證上述優(yōu)勢,選取Krum[20]和Median[21]這兩個經(jīng)典的方案進行對照實驗。設(shè)置如下兩個實驗場景:①場景1:節(jié)點上傳數(shù)據(jù)為密文(文中使用差分隱私技術(shù))、節(jié)點數(shù)據(jù)獨立同分布、本地訓(xùn)練模型為卷積神經(jīng)網(wǎng)絡(luò)模型,用以分析本方案與對比方案在隱私保護環(huán)境中的有效性;②場景2:節(jié)點上傳數(shù)據(jù)為明文、節(jié)點數(shù)據(jù)非獨立同分布(文中使用N1、N2和N3這3種劃分方式),本地訓(xùn)練模型為卷積神經(jīng)網(wǎng)絡(luò)模型,用以分析本方案與對比方案在數(shù)據(jù)非獨立同分布環(huán)境中的有效性。
圖9為所提方案與Krum和Median的對照實驗結(jié)果。在場景1中,所提算法的全局模型精度達到92%,而Krum和Median聚合方案的全局模型精度最高沒有超過50%。主要原因是Krum和Median只適用于數(shù)據(jù)以明文形式傳輸?shù)沫h(huán)境,而此時數(shù)據(jù)是經(jīng)過差分隱私處理的密文數(shù)據(jù),導(dǎo)致Krum和Median在一定程度上失效。所提算法利用自編碼器模型對節(jié)點相鄰兩輪的本地模型梯度的差值進行編碼(提取特征),而差分隱私處理后的模型參數(shù)只損失部分精度,仍有可用性,因此數(shù)據(jù)的內(nèi)在特征基本不變,所以自編碼器對原始數(shù)據(jù)和經(jīng)過差分隱私處理的數(shù)據(jù)進行編碼的結(jié)果差別不大。在場景2中,所提算法的全局模型精度仍遠遠高于Krum和Median的全局模型精度,例如數(shù)據(jù)分布為N1時,所提算法的全局模型精度達到96.38%,而Median的全局模型精度只有40%左右。主要因為Krum和Median本質(zhì)上是在眾多數(shù)據(jù)之間進行橫向比較,當(dāng)節(jié)點數(shù)據(jù)非獨立同分布時,節(jié)點上傳的數(shù)據(jù)間的區(qū)別比較大,原本正常的數(shù)值此時容易被誤判為離群值。所提算法在設(shè)計之初便是基于節(jié)點歷史數(shù)據(jù)的角度(縱向比較)考慮,一個節(jié)點上傳的數(shù)據(jù)是否惡意僅與自己的歷史數(shù)據(jù)有關(guān),同其它節(jié)點無關(guān),因此可以有效解決數(shù)據(jù)非獨立同分布的問題。
圖9 對照實驗結(jié)果
文獻[22]和文獻[23]也在隱私保護場景下提出各自的拜占庭魯棒算法,因為這兩個算法和所提算法的隱私保護機制不同,因此僅從理論角度將其與本方案進行對比分析。文獻[22]首先利用掩碼加密模型更新信息,然后基于可驗證的秘密共享協(xié)議計算量化的秘密值之間的距離,以此距離值進行異常檢測。而本方案計算簡單,且基于差分隱私的隱私保護方案比基于掩碼加密的隱私保護方案更有普適性,所提算法可運行在任意基于差分隱私的隱私保護環(huán)境下。文獻[23]基于加法同態(tài)加密和安全兩方計算保護隱私,假設(shè)存在兩個非共謀服務(wù)器且存在根數(shù)據(jù)集,服務(wù)器首行基于此根數(shù)據(jù)集進行同步訓(xùn)練,然后服務(wù)器計算節(jié)點上傳的模型更新和服務(wù)器本地模型更新的漢明距離進行異常檢測。文獻[23]本質(zhì)是對各節(jié)點上傳的模型更新信息進行橫向比較,不適用于節(jié)點數(shù)據(jù)非獨立同分布的聯(lián)邦學(xué)習(xí)環(huán)境。而本方案的執(zhí)行無需依賴同態(tài)加密這類高計算復(fù)雜度的運算過程,且本方案可在節(jié)點數(shù)據(jù)非獨立同分布的環(huán)境下有效檢測出拜占庭節(jié)點。
本方案提出一種可在隱私保護和數(shù)據(jù)非獨立同分布環(huán)境下拜占庭魯棒的聯(lián)邦學(xué)習(xí)算法。其首先采用差分隱私技術(shù)對模型梯度進行隱私保護處理,然后基于節(jié)點的歷史數(shù)據(jù)對節(jié)點進行信任度評估,最后聚合服務(wù)器根據(jù)評估結(jié)果對可信節(jié)點的數(shù)據(jù)進行加權(quán)聚合,得到全局模型梯度。不同于以往的拜占庭魯棒算法需要對系統(tǒng)中各節(jié)點間的本地梯度進行相互比較,所提算法僅對節(jié)點的歷史數(shù)據(jù)進行縱向比較,可應(yīng)用于數(shù)據(jù)非獨立同分布環(huán)境,且不受拜占庭節(jié)點數(shù)量的影響。實驗結(jié)果表明,在拜占庭節(jié)點占比為20%~80%的聯(lián)邦學(xué)習(xí)環(huán)境下,所提算法對拜占庭節(jié)點進行檢測的誤檢率和漏檢率均可達到0%,其中檢測模塊對單個節(jié)點進行檢測的平均耗時約為1 s,并且檢測模塊的總耗時隨著正常節(jié)點數(shù)量的增加呈線性增長的態(tài)勢。然而,文中所提拜占庭檢測算法存在冷啟動問題,還有待優(yōu)化。
下一步可從提高拜占庭檢測性能和降低系統(tǒng)假設(shè)限制這兩個方面進行研究。在第一個方面,可考慮選用性能更好的特征提取工具替換自編碼器,例如變分自編碼器;還可考慮選用更好的序列預(yù)測工具替換長短期記憶模型,例如長短期記憶模型的變體循環(huán)門單元(Gated Recurrent Unit,GRU)。在第二個方面,可考慮基于生成對抗網(wǎng)絡(luò)生成根數(shù)據(jù)集;還可考慮在模型預(yù)訓(xùn)練時選用同聯(lián)邦學(xué)習(xí)訓(xùn)練集同類型的已有數(shù)據(jù)集,例如兩者皆為語音數(shù)據(jù)集、圖像數(shù)據(jù)集等。