趙俊杰,張國興,楊杰
( 中南民族大學(xué) 計算機科學(xué)學(xué)院,湖北 武漢 430074)
隨著科技的發(fā)展,人工智能已經(jīng)深入到人們的日常生活中。在現(xiàn)實生活中,數(shù)據(jù)通常不是由單一主體管理而是掌握在諸多參與者的手中。而且在歐盟委員會強制實施《通用數(shù)據(jù)保護條例》之后,數(shù)據(jù)安全在監(jiān)管上呈現(xiàn)全面化、密集化、嚴格化的趨勢。 各方參與者不愿意共享數(shù)據(jù),形成數(shù)據(jù)孤島,阻礙了人工智能的發(fā)展。2016年,Mcmahan等首次提出聯(lián)邦學(xué)習(xí)的概念,即利用分散在各個移動設(shè)備上的數(shù)據(jù)進行本地訓(xùn)練,然后將訓(xùn)練的梯度發(fā)送到服務(wù)器,再由服務(wù)器進行梯度聚合,最后設(shè)備獲取到新的梯度。這種將數(shù)據(jù)保存在本地的訓(xùn)練方式使數(shù)據(jù)的安全性得到極大程度的提高,解決了數(shù)據(jù)孤島問題,推動了人工智能的發(fā)展。
聯(lián)邦學(xué)習(xí)的目的是為了讓參與者在保證隱私安全、數(shù)據(jù)安全以及遵守相關(guān)規(guī)定的前提下 協(xié)同進行模型訓(xùn)練。然而,隨著研究的不斷深入,聯(lián)邦學(xué)習(xí)依然面臨著許多的安全風(fēng)險。比如在傳輸?shù)倪^程中,如果發(fā)生梯度泄露,參與者的數(shù)據(jù)很有可能通過梯度被反推出來,那么參與者的數(shù)據(jù)安全將會受到嚴重威脅。如果參與者中有人對數(shù)據(jù)進行投毒或者提供虛假數(shù)據(jù),那么模型將很難得到一個很好的訓(xùn)練效果。比如服務(wù)器不可信時,那么用戶選擇的服務(wù)和擁有的數(shù)據(jù)都會存在巨大的風(fēng)險。
為了解決橫向聯(lián)邦學(xué)習(xí)中的投毒攻擊問題,本文提出了基于聚類分析的參與者評價算法,實現(xiàn)了以下目標:
(1)提出一種基于聚類分析的參與者評價機制。本算法的目的是針對橫向聯(lián)邦學(xué)習(xí)中參與者遭受到的數(shù)據(jù)投毒攻擊或者惡意參與者,對他們進行篡改的數(shù)據(jù)集行為進行防御,從而保護訓(xùn)練模型的訓(xùn)練效果。
(2)通過在真實數(shù)據(jù)集上的實驗和分析,證明算法滿足準確性與實效性要求。
在橫向聯(lián)邦學(xué)習(xí)的框架中,具有相同數(shù)據(jù)結(jié)構(gòu)的個參與者和一個云服務(wù)器,通過參數(shù)傳遞協(xié)同學(xué)習(xí)一個模型。在當(dāng)前的研究中,橫向聯(lián)邦學(xué)習(xí)的框架在實際應(yīng)用中已經(jīng)取得了不錯的成果,但是對投毒攻擊的預(yù)防并沒有較好的辦法。如果在這個訓(xùn)練中,參與者們面臨的是惡意服務(wù)器或者 好奇服務(wù),那么所有參與者的樣本數(shù)據(jù)將沒有任何的隱私性。
數(shù)據(jù)投毒是指攻擊者對訓(xùn)練的數(shù)據(jù)集樣本進行篡改,如添加錯誤標簽、添加錯誤的數(shù)據(jù),達到降低數(shù)據(jù)質(zhì)量的效果,從而影響模型的整體訓(xùn)練效果。在標簽翻轉(zhuǎn)攻擊中,通過篡改數(shù)據(jù)標簽影響模型的整體訓(xùn)練效果。在后門攻擊中,通過設(shè)計特別的數(shù)據(jù),讓模型在預(yù)測階段產(chǎn)生與真實值相距甚遠的結(jié)果。
針對投毒攻擊的問題,研究者們也提出了各種解決方案。在文獻[7]中,對惡意用戶提供虛假參數(shù)破壞學(xué)習(xí)過程、用戶提供的參數(shù)缺乏驗證、用戶不愿意參與模型訓(xùn)練等問題,設(shè)計一種可靠的信譽評估管理機制,既能提升用戶之間的可信任度,又能獲得高質(zhì)量的模型參數(shù)。文獻[8]中提出了一種分布式學(xué)習(xí)算法——基于中值和裁剪均值的兩種魯棒分布梯度下降算法,且在實驗中證明了該算法可用性。在文獻[9]中,可以在服務(wù)器上測量良性更新和惡意更新的分布差異,以此發(fā)現(xiàn) 惡意用戶,通過K-means算法對所有梯度值進行聚類分析,以查找出異常值。
K-means聚類算法是一種最為常用的動態(tài)聚類算法,其特點是思路簡潔、收斂迅速。K-means算法的步驟為:
(1)選點 。從樣本中隨機選取個樣本作為初始中心點(值由自己設(shè)定)。
(2)歸類 。計算其余樣本與樣本點的歐式距離并進行比較,將樣本與距離最近的中心點歸為一類 。
(3)計算。重新計算簇的中心點,重復(fù)前面的步驟,直到中心點的位置收斂結(jié)束。
針對橫向聯(lián)邦學(xué)習(xí)中的數(shù)據(jù)投毒攻擊,本文提出一種基于聚類分析的參與者評價算法,目的在于發(fā)現(xiàn)遭受到數(shù)據(jù) 投毒攻擊的參與者或者是抵御對數(shù)據(jù)進行投毒或惡意修改的惡意參與者。參與者評價算法構(gòu)成如圖1所示。
圖1 參與者評價算法構(gòu)成
本 算法通過對所有參與者數(shù)據(jù)集的分布趨勢、數(shù)據(jù)集的離群情況和不符合標簽規(guī)則的數(shù)據(jù)量進行分析,實現(xiàn)對聯(lián)邦學(xué)習(xí)中有毒數(shù)據(jù)集的檢測。算法中選擇對這三類參數(shù)進行分析的原因有三點:(1)離群值的數(shù)量是判斷一個數(shù)據(jù)集好壞的重要參數(shù),如果一個數(shù)據(jù)集中存在大量的離群值,那么這個數(shù)據(jù)集的可用性就會下降,該數(shù)據(jù)集可能遭受到了攻擊;(2)每個數(shù)據(jù)集都存在自己的數(shù)據(jù)分布規(guī)律,如若兩個數(shù)據(jù)集的任務(wù)相同,那么它們的數(shù)據(jù)分布具有一定的相似性,通過對數(shù)據(jù)分布趨勢的分析找出差異大的數(shù)據(jù)集,該數(shù)據(jù)集即為離群數(shù)據(jù)集;(3)要使訓(xùn)練模型的效果降低,最好的方法就是篡改數(shù)據(jù),隨意篡改數(shù)據(jù)值或設(shè)計篡改規(guī)則,讓它產(chǎn)生錯誤的結(jié)果。數(shù)據(jù)集分布趨勢中的參數(shù)有:眾數(shù)、中位數(shù)、均值、四分位差、極差、平均差、標準差、峰態(tài)系數(shù)、偏態(tài)系數(shù)。數(shù)據(jù)集離群情況中的參數(shù)有:離群值量、離群值占比。不符合標簽規(guī)則數(shù)據(jù)量中的參數(shù)有:錯誤數(shù)據(jù)量、錯誤數(shù)據(jù)量占比。
在計算數(shù)據(jù)集的分布趨勢時,選擇數(shù)據(jù)中重要的標簽進行計算,對服務(wù)進行評價時,以所有標簽的同類評價分數(shù)的平均值為最后評分。服務(wù)器在收集到所有參與者發(fā)送的參數(shù)之后,對各類參數(shù)進行分類和編號。對各個類型的參數(shù)進行分析、評分,用于分析的正太分布函數(shù)公式為:
其中,為均值,為標準差。計算出各類參數(shù)的和,然后根據(jù)參數(shù)的設(shè)定分值進行評分,總分為100分。本算法中各個參數(shù)值的分數(shù)是依據(jù)參數(shù)在整個數(shù)據(jù)集中的重要性來設(shè)定。離群值相關(guān)參數(shù)的總分值設(shè)為30分,離群值量和離群值占比的分值設(shè)定為10分和20分,離群值是一個很重要的評價指標,分值較高;數(shù)據(jù)集的集中趨勢總分值為15分,眾數(shù)、中位數(shù)、均值分別占5分、5分、5分;數(shù)據(jù)的離散趨勢總分值20分,四分位差、極差、平均差、標準差分別占5分、5分、5分、5分;數(shù)據(jù)分布形狀的總分數(shù)為15分,峰態(tài)系數(shù)、偏態(tài)系數(shù)分別占7.5分、7.5分;數(shù)據(jù)相關(guān)性找出的錯誤數(shù)據(jù)總分值為20分,錯誤數(shù)據(jù)量7.5分、錯誤數(shù)據(jù)量占比12.5。分數(shù)計算分值的公式為:
其中,為分值,為該函數(shù)(-,+)、(-2,+2)、(-3,+3)的面積對應(yīng)范圍的面積,每個范圍對應(yīng)的分值范圍是70%+30%×Q、50%+20%×Q、50%×Q,S為某類型參數(shù)在正太分布中的面積,Q為面積范圍內(nèi)的占比,P為某一類型參數(shù)的具體評分。計算每個參與者的總分值,設(shè)定評分的閥值為60,僅對總分高于60的參與者的梯度進行聚合。對于分值低于60的參與者,則認為該參與者的數(shù)據(jù)集存在投毒攻擊。
模型經(jīng)過訓(xùn)練后,本算法開始計算數(shù)據(jù)集的離群值、分布趨勢和錯誤數(shù)據(jù)。模型訓(xùn)練完后,在發(fā)送訓(xùn)練參數(shù)時,把機制計算得到的參數(shù)與訓(xùn)練參數(shù)一起發(fā)送到服務(wù)器。服務(wù)器在接收到所有數(shù)據(jù)后,對機制計算的參數(shù)進行分組,如 ,=(,,…,),其中,為訓(xùn)練輪次,為客戶端數(shù),,,…,分別對應(yīng)數(shù)據(jù)集的離群值、分布趨勢和錯誤數(shù)據(jù)的參數(shù)值。然后服務(wù)器計算各類參數(shù)的平均值,通過分值計算公式計算各個參數(shù)的得分,再計算出各個客戶端的數(shù)據(jù)集評分。最后,判斷出合格的數(shù)據(jù)集。
算法 3.1:參與者評價算法
Input:參與者訓(xùn)練數(shù)據(jù)量num
Output:聚合平均梯度Δ,參與者訓(xùn)練數(shù)據(jù)總量num
(1)Begin。
(2)Client executes。
(4)對數(shù)據(jù)集進行趨勢分析,得到趨勢參數(shù)Q=(,,…,q)。
(6)把所有參數(shù)發(fā)送到服務(wù)器。
(7)Server executes。
(8)用評分算法對所有參與者的數(shù)據(jù)集參數(shù)進行打分,統(tǒng)計總分數(shù)。
(9)高于閥值的總分、低于閥值的總分判斷為有毒數(shù)據(jù)集。
(10)END。
每個數(shù)據(jù)集都存在一定的規(guī)則和數(shù)據(jù)分布。數(shù)據(jù)投毒攻擊篡改數(shù)據(jù),會改變數(shù)據(jù)集的分布規(guī)律和趨勢,被篡改的數(shù)據(jù)集與其他無毒的數(shù)據(jù)集的分布趨勢會存在差異,通過對數(shù)據(jù)集的數(shù)據(jù)分布趨勢進行分析,相同的數(shù)據(jù)集存在相同或相似的分布趨勢,找出參與者中數(shù)據(jù)趨勢差異大的數(shù)據(jù)集,將其判定為投毒數(shù)據(jù)集。
數(shù)據(jù)標簽間的相關(guān)性是指一個數(shù)據(jù)集中兩個或兩個以上不同標簽數(shù)據(jù)之間的相關(guān)性,如數(shù)量、價格和總價之間的相關(guān)性、人的血壓中高壓大于低壓、同種物體重量越大體積越大,等等。
數(shù)據(jù)標簽的規(guī)則是在改標簽的數(shù)據(jù)應(yīng)當(dāng)屬于在改標簽的設(shè)定范圍。如在一個人的體檢數(shù)據(jù)集中,假設(shè)一個正常成年男子的身高應(yīng)該在1.5米~2.2米,但是卻存在2.5米甚至3米的數(shù)據(jù)值。
通過數(shù)據(jù)標簽的規(guī)則和相關(guān)性可以檢測數(shù)據(jù)集中的錯誤數(shù)據(jù)和不符合規(guī)則的數(shù)據(jù)。在正常的數(shù)據(jù)集中,可能存在錯誤數(shù)據(jù),其產(chǎn)生的原因可能是操作出錯、機器故障,也可能被視為惡意篡改數(shù)據(jù)。前者產(chǎn)生的錯誤數(shù)據(jù)是有限的(可能有幾條),但是惡意行為中數(shù)據(jù)的條數(shù)就不太好判斷了。因此我們根據(jù)這個特點,設(shè)定錯誤數(shù)據(jù)量的一個指標,以此來判斷數(shù)據(jù)是否遭受到人為的惡意篡改。
本算法中所使用參數(shù)的價值較低,并不存在暴露本地數(shù)據(jù)的風(fēng)險。若攻擊者獲取到本算法中的參數(shù),其僅憑這些參數(shù)無法通過逆向攻擊反推出樣本數(shù)據(jù)集。對于所使用的聚類分析算法,只是用到了計算結(jié)果以及存在的離群值的數(shù)量,離群點的具體值并不會出本地,所以說本算法是安全可靠的。
本文所搭建的基于聚類分析和同態(tài)加密的橫向聯(lián)邦學(xué)習(xí)方案,實驗環(huán)境采用的是AMDRyzen 5 3600—Core Processor 3.6 GHz,32 GB內(nèi)存,系統(tǒng)平臺為Windows10操作系統(tǒng),采用Python語言實現(xiàn)所有方法,在虛擬機中模擬各方參與者與可信任第三方,本機為服務(wù)器。
本實驗采用的數(shù)據(jù)集——Cardiotocography來源于UCI機器學(xué)習(xí)存儲庫,該數(shù)據(jù)集一共包含2 126條數(shù)據(jù),由產(chǎn)科醫(yī)生分類的心電圖上的胎兒心率和子宮收縮特征的測量值組成,通過這些診斷特征來確定胎兒的狀態(tài)。
本實驗的目的是對文中檢測遭受到數(shù)據(jù)投毒參與者的可行性進行驗證,對遭受到數(shù)據(jù)投毒參與者的數(shù)量閾值進行測定,對用戶進行投毒的數(shù)據(jù)量進行測定。實驗設(shè)置有10位參與者,參與者各自持有的數(shù)據(jù)集分別從Cardiotocography數(shù)據(jù)集中抽取出200條數(shù)據(jù),作為參與者的個人數(shù)據(jù)。針對評價算法的實驗設(shè)置有正常數(shù)據(jù)集訓(xùn)練的參照組、存在投毒數(shù)據(jù)的對照組和使用投毒數(shù)據(jù)驗證參與者評價機制的實驗組。
實驗結(jié)果圖中的三個條形柱分別是正常數(shù)據(jù)集訓(xùn)練、存在投毒數(shù)據(jù)、使用投毒數(shù)據(jù)驗證參與者評價機制的模型準確率:
(1)單個用戶遭受到數(shù)據(jù)投毒攻擊的數(shù)據(jù)量達到多少時能夠識別出被投毒數(shù)據(jù)集,圖2是模型準確率對比圖。
圖2 模型準確率與投毒數(shù)據(jù)量
由實驗結(jié)果可知,投毒率達到12%以上時可以找出投毒數(shù)據(jù)集,投毒率在8%、10%時沒有找出投毒數(shù)據(jù)集。在單個參與者的投毒數(shù)據(jù)量比較小時,其對模型準確率的影響比較小,大概與正常模型的準確率差了0.1%~0.3%,在實際應(yīng)用中可以忽略不計。本算法在數(shù)據(jù)投毒量在12%以上時,算法的有效性得到證明。
(2)多個用戶受到數(shù)據(jù)投毒攻擊且投毒的數(shù)據(jù)量為50%時,投毒數(shù)據(jù)集從1到4逐漸增多,圖3是模型準確率對比圖。
圖3 模型準確率與投毒參與者數(shù)
由實驗結(jié)果可知,當(dāng)投毒用戶數(shù)小于3個時,能夠準確地找出投毒的用戶。當(dāng)投毒用戶數(shù)大于3個時,參與者評價機制已經(jīng)不能準確地辨別出投毒數(shù)據(jù)集,模型的準確率也大受影響,中毒模型的準確率減少17%以上。算法在面對數(shù)據(jù)投毒攻擊時,能夠識別投毒的用戶量在30%以內(nèi)。
隨著時代的發(fā)展,數(shù)據(jù)安全變得越來越重要,人們對于數(shù)據(jù)的安全性也越來越重視。聯(lián)邦學(xué)習(xí)的發(fā)展,不能只注重訓(xùn)練效果和準確率的提升,聯(lián)邦學(xué)習(xí)的本質(zhì)即為數(shù)據(jù)安全,而忽視數(shù)據(jù)安全則與聯(lián)邦學(xué)習(xí)的初衷相背離。聯(lián)邦學(xué)習(xí)的數(shù)據(jù)安全應(yīng)當(dāng)?shù)玫阶銐虻闹匾?,特別是對數(shù)據(jù)投毒、不誠實參與者和半誠實參與者的防備。因此,本文提出的基于聚類分析和同態(tài)加密的安全橫向聯(lián)邦學(xué)習(xí)方法在保證訓(xùn)練準確率的同時,對于數(shù)據(jù)安全性有較高的提升,特別是對數(shù)據(jù)投毒攻擊和不誠實參與者的防御策略十分有效,通過對比實驗證明了本文所提出方案的有效性。在今后的工作中,希望針對縱向聯(lián)邦學(xué)習(xí)中存在的數(shù)據(jù)投毒攻擊和不誠實用戶的問題能夠提出更好的解決方案。