王金鵬,戴 歡,2+,李凱程,唐 毅,2,付保川
(1.蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009; 2.蘇州和數(shù)區(qū)塊鏈應(yīng)用研究院有限公司,江蘇 蘇州 215000)
當(dāng)前,數(shù)字經(jīng)濟(jì)發(fā)展,大數(shù)據(jù)應(yīng)用面臨以下兩個(gè)難題:①不同行業(yè)、不同部門之間存在壁壘,形成了所謂“數(shù)據(jù)孤島”[1];②數(shù)據(jù)安全和數(shù)據(jù)隱私無(wú)法得到保障。為了解決以上問(wèn)題,谷歌公司于2016年提出了聯(lián)邦學(xué)習(xí)(federated learning,F(xiàn)L)架構(gòu)[2],參與聯(lián)邦學(xué)習(xí)的客戶端無(wú)需上傳本地隱私數(shù)據(jù),只需上傳每輪訓(xùn)練的本地模型,再通過(guò)中央服務(wù)器聚合成全局模型,因此,各個(gè)客戶端可以在不共享原始數(shù)據(jù)的情況下共同完成機(jī)器學(xué)習(xí)任務(wù)。
傳統(tǒng)的聯(lián)邦學(xué)習(xí)系統(tǒng)需要一個(gè)可信的第三方服務(wù)器來(lái)聚合全局模型,這可能給聯(lián)邦學(xué)習(xí)系統(tǒng)造成單點(diǎn)故障的安全隱患[3]。區(qū)塊鏈技術(shù)具有去中心化、可追溯和難篡改等特點(diǎn),與聯(lián)邦學(xué)習(xí)結(jié)合,為有效解決其對(duì)第三方服務(wù)器的依賴提供了可能。同時(shí),合理設(shè)計(jì)區(qū)塊鏈自帶的激勵(lì)機(jī)制,也能夠充分激勵(lì)客戶端參與聯(lián)邦學(xué)習(xí),提高聯(lián)邦學(xué)習(xí)的模型性能。Kim H等[4]提出了一種基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)架構(gòu)BlockFL,使用工作量證明(proof of work,POW)作為共識(shí)機(jī)制,在考慮通信時(shí)延、計(jì)算時(shí)延和共識(shí)時(shí)延的情況下,計(jì)算最優(yōu)的塊生成率。文獻(xiàn)[5]提出了一種名為Deepchain的聯(lián)邦學(xué)習(xí)框架,利用區(qū)塊鏈保證模型的安全,并設(shè)計(jì)了激勵(lì)機(jī)制鼓勵(lì)參與方能夠誠(chéng)實(shí)地進(jìn)行訓(xùn)練。然而,基于POW共識(shí)機(jī)制的區(qū)塊鏈通常需要較大的計(jì)算開銷來(lái)實(shí)施區(qū)塊鏈的挖礦過(guò)程,這對(duì)電力資源耗費(fèi)較大。
在傳統(tǒng)聯(lián)邦學(xué)習(xí)環(huán)境中,第三方服務(wù)器能夠獲取客戶端上傳的更新梯度,文獻(xiàn)[6-8]表明,即使只擁有模型的梯度信息,攻擊者也可以反推出部分原始數(shù)據(jù),即聯(lián)邦學(xué)習(xí)存在梯度泄露的安全隱患。常見的解決方案是在上傳梯度時(shí)使用差分隱私[9]和同態(tài)加密[10]技術(shù)。Lu Y等[11]將差分隱私融入聯(lián)邦學(xué)習(xí)進(jìn)一步保護(hù)數(shù)據(jù)隱私,提出了一種面向工業(yè)物聯(lián)網(wǎng)應(yīng)用的分布式多方隱私保護(hù)數(shù)據(jù)共享機(jī)制。Bin Jia等[12]使用區(qū)塊鏈代替中央服務(wù)器,設(shè)計(jì)了一種面向工業(yè)物聯(lián)網(wǎng)的聯(lián)邦學(xué)習(xí)模型,同時(shí)結(jié)合了差異隱私和同態(tài)加密技術(shù)來(lái)防止梯度泄露,該架構(gòu)會(huì)造成模型精度的損失,并且計(jì)算量較大。上述方法,添加差分隱私噪聲會(huì)對(duì)模型精度產(chǎn)生影響,使用同態(tài)加密技術(shù)需要在安全可信的環(huán)境下交換密鑰,并且使用同態(tài)加密,加密梯度需要進(jìn)行大量的密碼學(xué)計(jì)算。此外,在保護(hù)梯度隱私的同時(shí),如何降低通信成本也未得到有效解決。
數(shù)據(jù)質(zhì)量是影響聯(lián)邦學(xué)習(xí)訓(xùn)練結(jié)果的重要因素,然而,傳統(tǒng)聯(lián)邦學(xué)習(xí)缺乏激勵(lì)機(jī)制來(lái)吸引客戶端參與訓(xùn)練。區(qū)塊鏈的激勵(lì)機(jī)制可以與聯(lián)邦學(xué)習(xí)有機(jī)結(jié)合,通過(guò)為使用優(yōu)質(zhì)數(shù)據(jù)參與訓(xùn)練的客戶端節(jié)點(diǎn)提供獎(jiǎng)勵(lì),激勵(lì)客戶端參與聯(lián)邦學(xué)習(xí)。文獻(xiàn)[13]提出了一種基于區(qū)塊鏈和聯(lián)邦學(xué)習(xí)的分布式深度學(xué)習(xí)框架,在保護(hù)用戶隱私的前提下,設(shè)計(jì)了一種本地可信度評(píng)估機(jī)制來(lái)保證公平性。葉晉[14]設(shè)計(jì)了一種質(zhì)量證明算法(proof of quality,PoQ),該算法基于客戶端信譽(yù)和數(shù)據(jù)質(zhì)量,在邊緣計(jì)算框架基礎(chǔ)上,提出了一種基于聯(lián)邦學(xué)習(xí)和區(qū)塊鏈技術(shù)的海洋物聯(lián)網(wǎng)數(shù)據(jù)安全共享方法,能夠高效且安全地進(jìn)行模型訓(xùn)練。文獻(xiàn)[15]中設(shè)計(jì)了一種基于EOS區(qū)塊鏈的梯度檢測(cè)算法,根據(jù)梯度質(zhì)量為參與者提供獎(jiǎng)勵(lì)。文獻(xiàn)[16]結(jié)合了差分隱私和梯度驗(yàn)證,保證了梯度安全的同時(shí),選擇合法的客戶端數(shù)據(jù)進(jìn)行全局模型更新,但是沒有考慮通信和計(jì)算成本。
針對(duì)以上問(wèn)題,本文做了以下工作:
(1)利用梯度壓縮技術(shù),減少聯(lián)邦學(xué)習(xí)訓(xùn)練過(guò)程中梯度泄露的威脅,并降低了通信壓力;
(2)設(shè)計(jì)了一種基于聯(lián)盟鏈的聯(lián)邦學(xué)習(xí)框架,解決傳統(tǒng)聯(lián)邦學(xué)習(xí)中單點(diǎn)故障的問(wèn)題;提出了一種基于貢獻(xiàn)的聯(lián)邦學(xué)習(xí)聚合方法,該方法通過(guò)梯度驗(yàn)證遴選滿足精度要求的客戶端梯度,再根據(jù)客戶端模型貢獻(xiàn)分配權(quán)重進(jìn)行全局聚合,降低了投毒攻擊對(duì)模型的威脅;
(3)提出了一種基于雙因子貢獻(xiàn)的區(qū)塊鏈共識(shí)算法,根據(jù)模型貢獻(xiàn)選舉共識(shí)委員會(huì),根據(jù)行為貢獻(xiàn)選舉區(qū)塊鏈記賬節(jié)點(diǎn);利用區(qū)塊鏈的激勵(lì)機(jī)制為參與模型訓(xùn)練的客戶端和區(qū)塊鏈節(jié)點(diǎn)提供激勵(lì),提高了客戶端參與聯(lián)邦學(xué)習(xí)訓(xùn)練的積極性和區(qū)塊鏈系統(tǒng)的穩(wěn)定性。
如圖1所示,本文設(shè)計(jì)了一種基于聯(lián)盟鏈的可信聯(lián)邦學(xué)習(xí)系統(tǒng)架構(gòu),該架構(gòu)使用區(qū)塊鏈的分布式處理代替?zhèn)鹘y(tǒng)聯(lián)邦學(xué)習(xí)的第三方服務(wù)器處理聚合客戶端模型。
該系統(tǒng)節(jié)點(diǎn)共有3種角色:
(1)模型請(qǐng)求者
模型請(qǐng)求者是聯(lián)邦學(xué)習(xí)任務(wù)的發(fā)起者,負(fù)責(zé)發(fā)布任務(wù)、設(shè)計(jì)和初始化聯(lián)邦學(xué)習(xí)模型。
(2)參與模型訓(xùn)練的客戶端節(jié)點(diǎn)
假設(shè)系統(tǒng)中一共有NC個(gè)客戶端,客戶端i(1≤i≤NC) 所擁有的數(shù)據(jù)集大小為Si??蛻舳斯?jié)點(diǎn)利用本地?cái)?shù)據(jù)集進(jìn)行模型的本地訓(xùn)練,并向?qū)?yīng)的區(qū)塊鏈共識(shí)節(jié)點(diǎn)上傳和下載模型梯度。梯度壓縮能夠有效防止梯度泄露,并且可以降低通信壓力,提高系統(tǒng)整體通信效率。本系統(tǒng)采用基于殘差累積的梯度稀疏化方法來(lái)實(shí)現(xiàn)客戶端的梯度壓縮。
(3)區(qū)塊鏈共識(shí)節(jié)點(diǎn)
假設(shè)系統(tǒng)中共有NM個(gè)區(qū)塊鏈共識(shí)節(jié)點(diǎn),每個(gè)區(qū)塊鏈共識(shí)節(jié)點(diǎn)j(1≤j≤NM) 綁定若干客戶端節(jié)點(diǎn)。共識(shí)節(jié)點(diǎn)接收對(duì)應(yīng)客戶端節(jié)點(diǎn)的本地模型,驗(yàn)證其合法性之后轉(zhuǎn)發(fā)給其它區(qū)塊鏈節(jié)點(diǎn)。在接收到所有客戶端模型或者達(dá)到最大等待時(shí)長(zhǎng)后,所有區(qū)塊鏈節(jié)點(diǎn)根據(jù)貢獻(xiàn)評(píng)分選出共識(shí)委員會(huì)節(jié)點(diǎn)和領(lǐng)導(dǎo)人節(jié)點(diǎn),領(lǐng)導(dǎo)人節(jié)點(diǎn)打包區(qū)塊后轉(zhuǎn)發(fā)給共識(shí)委員會(huì)節(jié)點(diǎn)進(jìn)行區(qū)塊驗(yàn)證,驗(yàn)證通過(guò)的區(qū)塊保存至區(qū)塊鏈中。
系統(tǒng)整體流程如圖1所示,共分為以下7個(gè)步驟:
步驟1 任務(wù)初始化
模型請(qǐng)求者R發(fā)布聯(lián)邦學(xué)習(xí)任務(wù)請(qǐng)求,設(shè)計(jì)并初始化聯(lián)邦學(xué)習(xí)模型,提出數(shù)據(jù)集的數(shù)據(jù)類型、學(xué)習(xí)率η、小批量梯度下降的批量大小bs、最大聯(lián)邦訓(xùn)練輪數(shù)T、遴選率S。隨后符合數(shù)據(jù)集要求的客戶端節(jié)點(diǎn)以及區(qū)塊鏈共識(shí)節(jié)點(diǎn)申請(qǐng)加入訓(xùn)練,參與訓(xùn)練的客戶端節(jié)點(diǎn)和區(qū)塊鏈共識(shí)節(jié)點(diǎn)發(fā)送各自的公鑰,客戶端公布本地的數(shù)據(jù)集的大小Si,任務(wù)發(fā)布者R向共識(shí)節(jié)點(diǎn)發(fā)送一小部分驗(yàn)證數(shù)據(jù)集Dv。
準(zhǔn)備工作完成后,模型請(qǐng)求者R將初始模型打包成區(qū)塊Block0,發(fā)布到區(qū)塊鏈中。
步驟2 客戶端訓(xùn)練模型并壓縮梯度
客戶端i從與其綁定的共識(shí)節(jié)點(diǎn)j下載最新的全局模型,然后用全局模型替代本地模型參數(shù),使用本地隱私數(shù)據(jù)集進(jìn)行訓(xùn)練。為了提高訓(xùn)練效率,客戶端采用小批量梯度下降(mini-batch gradient descent,MBGD)進(jìn)行訓(xùn)練,如式(1)、式(2)所示
(1)
(2)
客戶端i在訓(xùn)練完成后,采用基于殘差累積的梯度稀疏化方法來(lái)壓縮梯度?;舅悸肥菍⒚枯啽粔嚎s的小梯度累積在本地作為殘差梯度,直到這些梯度達(dá)到某輪的壓縮閾值。梯度壓縮的具體過(guò)程如下。
(3)
(4)
(5)
算法1:ClientUpdate算法
輸入:本地?cái)?shù)據(jù)集Di,學(xué)習(xí)率η,壓縮率C,全局訓(xùn)練輪次k。
(3) for batchDb∈Dido
(5)end for
(9) for layerlof all layers do
(14) end if
(15) end for
(16)end for
步驟3 客戶端上傳本地梯度
步驟4 節(jié)點(diǎn)驗(yàn)證階段
共識(shí)節(jié)點(diǎn)j接收到客戶端節(jié)點(diǎn)的交易后,使用i的公鑰驗(yàn)證其數(shù)字簽名,確認(rèn)身份后轉(zhuǎn)發(fā)該交易至其它區(qū)塊鏈節(jié)點(diǎn),并進(jìn)行參數(shù)質(zhì)量評(píng)分。
步驟5 根據(jù)貢獻(xiàn)選出共識(shí)委員會(huì)節(jié)點(diǎn)
步驟6 領(lǐng)導(dǎo)人節(jié)點(diǎn)生成新區(qū)塊
領(lǐng)導(dǎo)人節(jié)點(diǎn)將本輪的全部合法事務(wù)打包成新區(qū)塊Blockk,區(qū)塊頭中保存前一個(gè)區(qū)塊的哈希值hashk-1、當(dāng)前區(qū)塊的哈希值hashk、時(shí)間戳timestampk、領(lǐng)導(dǎo)人的公鑰PKleader(k)、領(lǐng)導(dǎo)人的數(shù)字簽名signleader(k)和本輪的全局梯度gk,區(qū)塊體以Merkle樹的數(shù)據(jù)結(jié)構(gòu)保存全部的合法事務(wù)。為降低投毒攻擊對(duì)模型的影響,計(jì)算全局梯度時(shí)以客戶端得分為遴選標(biāo)準(zhǔn),根據(jù)遴選率S選擇客戶端梯度進(jìn)行全局梯度的聚合。經(jīng)過(guò)超過(guò)三分之二共識(shí)委員會(huì)節(jié)點(diǎn)驗(yàn)證通過(guò)后,新區(qū)塊將廣播給其它區(qū)塊鏈節(jié)點(diǎn)保存上鏈。
步驟7 客戶端下載區(qū)塊,繼續(xù)訓(xùn)練
接收到新區(qū)塊的區(qū)塊鏈節(jié)點(diǎn)將其轉(zhuǎn)發(fā)給與其綁定的所有客戶端節(jié)點(diǎn),客戶端下載后根據(jù)其中的全局梯度gk更新本地模型,并開始下一輪訓(xùn)練。
重復(fù)步驟2~步驟7,直到訓(xùn)練次數(shù)達(dá)到聯(lián)邦學(xué)習(xí)目標(biāo)訓(xùn)練輪數(shù)。
共識(shí)機(jī)制是區(qū)塊鏈系統(tǒng)[19-21]的核心組件之一,實(shí)用拜占庭容錯(cuò)(practical byzantine fault tolerance,PBFT)共識(shí)算法[22]相比于工作量證明和權(quán)益證明(proof of stake,PoS)等[23]需要提供挖礦證明的算法,共識(shí)效率高,系統(tǒng)吞吐量也更大,能夠滿足聯(lián)邦學(xué)習(xí)對(duì)系統(tǒng)吞吐量的需求。
然而,傳統(tǒng)PBFT共識(shí)算法選取領(lǐng)導(dǎo)人節(jié)點(diǎn)是隨機(jī)的,可能會(huì)選出拜占庭節(jié)點(diǎn)。為了提高基于聯(lián)盟鏈的聯(lián)邦學(xué)習(xí)系統(tǒng)的穩(wěn)定性和效率,本文設(shè)計(jì)了一種基于雙因子貢獻(xiàn)的PBFT共識(shí)機(jī)制,該機(jī)制首先根據(jù)聯(lián)邦學(xué)習(xí)模型貢獻(xiàn)選舉共識(shí)委員會(huì),再通過(guò)節(jié)點(diǎn)行為貢獻(xiàn)選舉領(lǐng)導(dǎo)人節(jié)點(diǎn),有效激勵(lì)擁有優(yōu)質(zhì)數(shù)據(jù)集的客戶端參與模型訓(xùn)練,同時(shí)提高區(qū)塊鏈系統(tǒng)的穩(wěn)定性。
系統(tǒng)中的區(qū)塊鏈節(jié)點(diǎn)分為領(lǐng)導(dǎo)人節(jié)點(diǎn)、委員會(huì)節(jié)點(diǎn)和普通節(jié)點(diǎn),委員會(huì)節(jié)點(diǎn)由普通節(jié)點(diǎn)根據(jù)模型貢獻(xiàn)選舉得出,領(lǐng)導(dǎo)人節(jié)點(diǎn)是行為貢獻(xiàn)最高的委員會(huì)節(jié)點(diǎn)。每個(gè)區(qū)塊鏈節(jié)點(diǎn)j都綁定了若干聯(lián)邦學(xué)習(xí)客戶端i。在每輪訓(xùn)練中,根據(jù)客戶端提交的參數(shù)質(zhì)量為客戶端評(píng)分,評(píng)分公式如下
(6)
(7)
因此,為了綜合考量節(jié)點(diǎn)的歷史模型貢獻(xiàn),本方法使用了一種基于牛頓冷卻定律的時(shí)間衰減函數(shù)來(lái)計(jì)算節(jié)點(diǎn)歷史模型貢獻(xiàn)值。
(8)
(9)
投毒攻擊是聯(lián)邦學(xué)習(xí)中常見的一種攻擊方式,該攻擊通過(guò)惡意修改本地訓(xùn)練樣本或者上傳錯(cuò)誤的梯度來(lái)降低聯(lián)邦學(xué)習(xí)質(zhì)量。為了抵御投毒攻擊,本文結(jié)合模型貢獻(xiàn)評(píng)估機(jī)制,提出了一種基于貢獻(xiàn)的聯(lián)邦學(xué)習(xí)聚合算法,在每輪聚合全局梯度時(shí),根據(jù)遴選率S聚合評(píng)分較高的客戶端提交的梯度,并根據(jù)客戶端評(píng)分分配權(quán)重。每輪聚合全局模型的公式如下
(10)
式中:L是遴選出的評(píng)分較高的客戶端評(píng)分序列,scoreL是遴選出的客戶端評(píng)分之和。
全局模型訓(xùn)練的偽代碼如下所示:
算法2:GlobalTrain算法
輸入:目標(biāo)訓(xùn)練輪數(shù)T,客戶端節(jié)點(diǎn)數(shù)量NC,驗(yàn)證集Dv,學(xué)習(xí)率η,梯度壓縮率C,客戶端遴選率S。
輸出:全局模型wT。
(1)initial:w0;
(2)forkin range(T) do
(3) foriin range(NC) do
(5) end for
(6)L←sortClient(scorek,S);
(7)gk←0;
(10) end for
(11)wk+1←wk-gk;
(12)end for
(13)returnwT;
在所有客戶端都上傳了梯度或者達(dá)到最大等待時(shí)長(zhǎng)后,進(jìn)入共識(shí)委員會(huì)選舉階段。計(jì)算節(jié)點(diǎn)的模型貢獻(xiàn)分,由模型貢獻(xiàn)最高的若干節(jié)點(diǎn)組成共識(shí)委員會(huì)。
區(qū)塊鏈系統(tǒng)需要節(jié)點(diǎn)共同參與維護(hù),系統(tǒng)的穩(wěn)定性取決于節(jié)點(diǎn)的行為。因此,本文引入了節(jié)點(diǎn)的行為貢獻(xiàn)機(jī)制來(lái)反映節(jié)點(diǎn)的性能與表現(xiàn),通過(guò)節(jié)點(diǎn)的行為貢獻(xiàn)機(jī)制增加可信節(jié)點(diǎn)參與區(qū)塊鏈系統(tǒng)事務(wù)的概率。成功完成系統(tǒng)任務(wù)的節(jié)點(diǎn)將獲得行為貢獻(xiàn)分,未能按時(shí)完成工作的節(jié)點(diǎn)將被扣除部分行為貢獻(xiàn)分。在選舉出共識(shí)委員會(huì)節(jié)點(diǎn)后,節(jié)點(diǎn)的行為貢獻(xiàn)用于從中選舉打包區(qū)塊的領(lǐng)導(dǎo)人節(jié)點(diǎn)。
節(jié)點(diǎn)的行為包括:打包區(qū)塊、參與委員會(huì)共識(shí)、驗(yàn)證客戶端參數(shù)。3種行為對(duì)應(yīng)的貢獻(xiàn)用 〈b1,b2,b3〉 表示,對(duì)于區(qū)塊鏈節(jié)點(diǎn)j,每種行為貢獻(xiàn)計(jì)算公式如下
(11)
(12)
(13)
BS(j)=δ1×b1(j)+δ2×b2(j)+δ3×b3(j)
(14)
式中:δ1,δ2,δ3表示3種行為對(duì)應(yīng)的權(quán)重,滿足δ1+δ2+δ3=1。 打包區(qū)塊和達(dá)成共識(shí)對(duì)區(qū)塊鏈系統(tǒng)的穩(wěn)定至關(guān)重要,因此,3種權(quán)重的賦值應(yīng)該遵循δ1>δ2≥δ3的原則。
為了降低區(qū)塊鏈系統(tǒng)中心化的程度,本文在共識(shí)機(jī)制中加入了領(lǐng)導(dǎo)人節(jié)點(diǎn)選舉冷卻機(jī)制,通過(guò)設(shè)置節(jié)點(diǎn)選舉冷卻間隔q來(lái)限制某一節(jié)點(diǎn)壟斷生成區(qū)塊權(quán)。即節(jié)點(diǎn)當(dāng)選為領(lǐng)導(dǎo)人節(jié)點(diǎn)之后的q輪無(wú)法參與領(lǐng)導(dǎo)人節(jié)點(diǎn)的競(jìng)爭(zhēng)。
選舉領(lǐng)導(dǎo)人節(jié)點(diǎn)時(shí),根據(jù)行為貢獻(xiàn)分將共識(shí)委員會(huì)中的節(jié)點(diǎn)進(jìn)行排序,由不處于冷卻間隔中的行為貢獻(xiàn)分最高的節(jié)點(diǎn)擔(dān)任本輪的領(lǐng)導(dǎo)人節(jié)點(diǎn)。選出共識(shí)委員會(huì)和領(lǐng)導(dǎo)人節(jié)點(diǎn)后,由領(lǐng)導(dǎo)人節(jié)點(diǎn)聚合該輪全局梯度gk,并生成區(qū)塊Blockk。
領(lǐng)導(dǎo)人節(jié)點(diǎn)打包區(qū)塊后,進(jìn)入PBFT共識(shí)階段,PBFT共識(shí)分為4個(gè)階段:pre-prepare、prepare、commit和reply。在共識(shí)委員會(huì)節(jié)點(diǎn)確認(rèn)新區(qū)塊為合法區(qū)塊后,提交合法更新的客戶端、領(lǐng)導(dǎo)人節(jié)點(diǎn)和共識(shí)委員會(huì)節(jié)點(diǎn)獲得區(qū)塊鏈獎(jiǎng)勵(lì),獎(jiǎng)勵(lì)與貢獻(xiàn)評(píng)分成正比。在不超過(guò)三分之一節(jié)點(diǎn)為拜占庭節(jié)點(diǎn)的情況下,PBFT算法能夠保證最終一致性。
實(shí)驗(yàn)數(shù)據(jù)集為經(jīng)典MNIST數(shù)據(jù)集,該數(shù)據(jù)集由60 000個(gè)訓(xùn)練樣本和10 000個(gè)測(cè)試樣本組成,每個(gè)數(shù)據(jù)樣本都是一張28×28的灰度圖像。聯(lián)邦學(xué)習(xí)需要考慮客戶端數(shù)據(jù)非獨(dú)立同分布(non independently identically distribution,Non-IID)的情況,為了測(cè)試Non-IID情況下系統(tǒng)性能,本實(shí)驗(yàn)先將60 000個(gè)訓(xùn)練樣本按照標(biāo)簽排序,排序后均勻分成200份,每份300個(gè)樣本。實(shí)驗(yàn)客戶端數(shù)量為50,每個(gè)客戶端擁有4份數(shù)據(jù)。在IID情況下,本實(shí)驗(yàn)將訓(xùn)練樣本隨機(jī)打亂后均勻分配。給客戶端評(píng)分的驗(yàn)證集來(lái)自測(cè)試集中按標(biāo)簽均勻選取的100個(gè)樣本,全局模型測(cè)試集為全部的10 000個(gè)測(cè)試樣本。
實(shí)驗(yàn)中客戶端采用卷積神經(jīng)網(wǎng)絡(luò)(conventional neural network,CNN)作為訓(xùn)練模型。共包含3層3×3的卷積層,激活函數(shù)為Relu,學(xué)習(xí)率為0.01,損失函數(shù)為交叉熵?fù)p失函數(shù)。更新全局模型時(shí)采用本文提出的基于貢獻(xiàn)的聚合算法?;赑ython3.7、Tensorflow2.5和Keras框架設(shè)計(jì)神經(jīng)網(wǎng)絡(luò)。實(shí)驗(yàn)在本機(jī)設(shè)置50個(gè)客戶端節(jié)點(diǎn)模擬聯(lián)邦學(xué)習(xí)場(chǎng)景,使用Django框架仿真區(qū)塊鏈功能,提供創(chuàng)建事務(wù)、上傳事務(wù)、打包區(qū)塊和下載區(qū)塊等功能。
實(shí)驗(yàn)環(huán)境配置參數(shù):處理器Intel(R)Core(TM)i7-9750H CPU @ 2.60 GHz 2.59 GHz,顯卡NVIDIA GeForce GTX1650,內(nèi)存16 GB,操作系統(tǒng)Windows10。
3.2.1 模型精度與壓縮率關(guān)系分析
本節(jié)分析了模型精度與梯度壓縮率的關(guān)系。如圖2、圖3所示,在兩種不同分布情況下,隨著梯度壓縮率的提高,模型收斂速度有所下降。iid分布時(shí),與不壓縮梯度的聯(lián)邦學(xué)習(xí)算法對(duì)比,采用90%和95%梯度壓縮率的模型精度幾乎沒有損失,采用99%壓縮率時(shí)精度下降略高,達(dá)到了1.52%。Non-iid分布下,采用95%以下的梯度壓縮率,模型精度也幾乎沒有降低,在采用99%壓縮率時(shí)精度下降了1.05%。
圖2 iid分布下壓縮率與模型準(zhǔn)確率關(guān)系
圖3 Non-iid分布下壓縮率與模型準(zhǔn)確率關(guān)系
實(shí)驗(yàn)結(jié)果表明,采用過(guò)大的梯度壓縮率,會(huì)因丟棄太多梯度,對(duì)聯(lián)邦學(xué)習(xí)模型精度產(chǎn)生較大影響。采用95%以下的梯度壓縮率對(duì)模型精度的影響很小,而且上傳壓縮后的梯度能夠防止梯度泄露,保護(hù)客戶端數(shù)據(jù)隱私。
3.2.2 模型魯棒性分析
在真實(shí)的系統(tǒng)運(yùn)行環(huán)境中,可能會(huì)出現(xiàn)低質(zhì)量數(shù)據(jù)影響模型整體質(zhì)量,甚至惡意節(jié)點(diǎn)使用投毒攻擊破壞模型的情況。為了評(píng)估系統(tǒng)的魯棒性,實(shí)驗(yàn)?zāi)M了投毒攻擊的情形,根據(jù)投毒率將部分客戶端訓(xùn)練樣本的標(biāo)簽進(jìn)行更改。實(shí)驗(yàn)中梯度壓縮率設(shè)置為95%。
文獻(xiàn)[24]算法基于客戶端模型準(zhǔn)確率篩選客戶端進(jìn)行全局模型聚合來(lái)抵御投毒攻擊,Multi-Krum[25]算法通過(guò)計(jì)算客戶端梯度與其它梯度的距離,為客戶端打分,選擇得分最低的部分梯度作為合法梯度參與聚合。圖4和圖5分別展示了在iid和Non-iid分布下,30%投毒攻擊時(shí),本文聚合算法與FedAvg算法、文獻(xiàn)[24]算法、Multi-Krum算法的模型損失對(duì)比結(jié)果,其中,本文聚合算法的遴選率設(shè)置為70%。
圖4 iid分布時(shí)不同算法在投毒攻擊下模型的損失
圖5 Non-iid分布時(shí)不同算法在投毒攻擊下模型的損失
由圖4可知,在客戶端數(shù)據(jù)集符合iid的條件下,30%投毒攻擊會(huì)讓采用傳統(tǒng)FedAvg聚合算法的模型無(wú)法收斂,因?yàn)镕edAvg算法只是對(duì)所有客戶端梯度進(jìn)行了簡(jiǎn)單的加權(quán)平均,惡意梯度會(huì)嚴(yán)重影響全局模型;使用文獻(xiàn)[24]聚合算法的收斂速度明顯下降,因?yàn)橐詼?zhǔn)確率作為聚合標(biāo)準(zhǔn)存在一定的隨機(jī)性,惡意梯度有可能和正常梯度得到相同準(zhǔn)確率;采用70%遴選率的本文聚合算法的模型收斂性能幾乎能達(dá)到無(wú)投毒攻擊的水平,而且也未出現(xiàn)收斂速度下降的情況,這是因?yàn)閻阂馓荻鹊膿p失低于正常梯度的可能性極低,因此,以損失作為評(píng)價(jià)標(biāo)準(zhǔn)效果優(yōu)于文獻(xiàn)[24]提出的以準(zhǔn)確率作為評(píng)價(jià)標(biāo)準(zhǔn)。Multi-Krum算法在iid分布下效果也較好,但是由圖5可知,在Non-iid分布下,Mutli-Krum算法無(wú)法收斂,其模型性能甚至低于FedAvg算法,因?yàn)樵贜on-iid分布下,客戶端之間的梯度本來(lái)就存在很大差別,梯度之間的距離平方和無(wú)法作為判斷惡意梯度和正常梯度的標(biāo)準(zhǔn)。本文聚合算法在客戶端數(shù)據(jù)符合Non-iid的情況下也能達(dá)到很好的收斂效果,30%投毒攻擊情況下,本文聚合算法的收斂速度和最終模型損失都優(yōu)于以上幾種聯(lián)邦學(xué)習(xí)聚合算法,模型損失接近無(wú)投毒攻擊水平。
表1和表2分別詳細(xì)記錄了本文聚合算法在iid條件下和Non-iid條件下,不同投毒率和遴選率對(duì)模型精度的影響(帶*號(hào)的表示采用傳統(tǒng)FedAvg聚合算法)。實(shí)驗(yàn)結(jié)果表明,過(guò)大的遴選率無(wú)法充分抵御投毒攻擊,過(guò)小的遴選率會(huì)導(dǎo)致在沒有惡意節(jié)點(diǎn)的情況下模型精度下降較多。采用70%遴選率的模型綜合性能最好,能夠抵御30%比例的投毒攻擊。
表1 iid條件下投毒率、遴選率和準(zhǔn)確率關(guān)系
表2 Non-iid條件下投毒率、遴選率和準(zhǔn)確率關(guān)系
綜上所述,在兩種不同分布的情況下,使用本文聚合算法的模型性能優(yōu)于其它聚合算法。這是因?yàn)楸疚木酆纤惴ㄊ歉鶕?jù)客戶端參數(shù)質(zhì)量進(jìn)行遴選的,在無(wú)投毒攻擊的情況下,少量丟棄質(zhì)量較低客戶端梯度并不會(huì)對(duì)整體模型產(chǎn)生較大影響,并且在面對(duì)投毒攻擊的情況下,本文聚合算法在保證模型收斂的同時(shí),收斂速度也未顯著下降。
3.2.3 區(qū)塊鏈共識(shí)機(jī)制分析
實(shí)驗(yàn)首先將誠(chéng)實(shí)參與訓(xùn)練的50個(gè)客戶端節(jié)點(diǎn)平均分配給10個(gè)區(qū)塊鏈節(jié)點(diǎn)。PBFT共識(shí)算法需要共識(shí)節(jié)點(diǎn)數(shù)量滿足3f+1,本實(shí)驗(yàn)設(shè)定共識(shí)委員會(huì)節(jié)點(diǎn)數(shù)量為4。為了測(cè)試區(qū)塊鏈節(jié)點(diǎn)的行為貢獻(xiàn),實(shí)驗(yàn)時(shí)將10個(gè)區(qū)塊鏈節(jié)點(diǎn)的行為完成度ac設(shè)置為0.95,0.9,0.85,0.8和0.75,ac表示節(jié)點(diǎn)成功打包區(qū)塊、成功參與共識(shí)和驗(yàn)證客戶端參數(shù)的概率。每?jī)蓚€(gè)節(jié)點(diǎn)設(shè)置同一種ac,節(jié)點(diǎn)1和節(jié)點(diǎn)6的ac為0.95,節(jié)點(diǎn)2和節(jié)點(diǎn)7的ac為0.9,以此類推。所有節(jié)點(diǎn)初始行為貢獻(xiàn)分都設(shè)置為0。3種行為的權(quán)重分別設(shè)置為δ1=0.5,δ2=0.25,δ3=0.25, 懲罰系數(shù)設(shè)置為α1=2,α2=2。 節(jié)點(diǎn)選舉冷卻機(jī)制的冷卻間隔設(shè)置為3。
節(jié)點(diǎn)行為貢獻(xiàn)分與區(qū)塊鏈長(zhǎng)度的關(guān)系如圖6所示,隨著區(qū)塊鏈長(zhǎng)度的增加,節(jié)點(diǎn)的行為貢獻(xiàn)分整體呈增長(zhǎng)趨勢(shì),并且行為貢獻(xiàn)分與ac呈正相關(guān)關(guān)系。有時(shí)低ac節(jié)點(diǎn)貢獻(xiàn)分大于高ac節(jié)點(diǎn),這是因?yàn)橹挥心P拓暙I(xiàn)較高的節(jié)點(diǎn)才有資格進(jìn)入共識(shí)委員會(huì)參與共識(shí)和競(jìng)爭(zhēng)打包區(qū)塊的資格。行為貢獻(xiàn)分降低是因?yàn)楣?jié)點(diǎn)當(dāng)選為領(lǐng)導(dǎo)人后未能按時(shí)生成新區(qū)塊,或成為委員會(huì)節(jié)點(diǎn)卻未能完成共識(shí)任務(wù)。
圖6 行為貢獻(xiàn)分與區(qū)塊鏈長(zhǎng)度關(guān)系
圖7 打包區(qū)塊次數(shù)對(duì)比
為驗(yàn)證本文共識(shí)算法在提高系統(tǒng)穩(wěn)定性方面的有效性,本實(shí)驗(yàn)與AHBFT[26]共識(shí)算法進(jìn)行了對(duì)比。圖7展示了不同節(jié)點(diǎn)在采用兩種共識(shí)算法的情況下打包區(qū)塊次數(shù)的對(duì)比,AHBFT共識(shí)算法將模型準(zhǔn)確率作為選舉主節(jié)點(diǎn)的指標(biāo),雖然增加了隨機(jī)數(shù)提高了節(jié)點(diǎn)選舉的隨機(jī)性,但是并未考慮節(jié)點(diǎn)參與區(qū)塊鏈?zhǔn)聞?wù)的能力,因此在節(jié)點(diǎn)的模型質(zhì)量相差不大的情況下,節(jié)點(diǎn)成為主節(jié)點(diǎn)的次數(shù)大致一樣,這給區(qū)塊鏈系統(tǒng)帶來(lái)了不穩(wěn)定的風(fēng)險(xiǎn)。本文共識(shí)算法不僅考慮了模型的質(zhì)量,還將節(jié)點(diǎn)的行為貢獻(xiàn)作為領(lǐng)導(dǎo)人節(jié)點(diǎn)的選舉指標(biāo),ac高的節(jié)點(diǎn)成為領(lǐng)導(dǎo)人節(jié)點(diǎn)的機(jī)會(huì)更多,能夠提高區(qū)塊鏈系統(tǒng)的穩(wěn)定性。而且并未出現(xiàn)單個(gè)節(jié)點(diǎn)壟斷區(qū)塊打包權(quán)的情況,說(shuō)明節(jié)點(diǎn)選舉冷卻機(jī)制能夠有效降低系統(tǒng)中心化程度。
實(shí)驗(yàn)結(jié)果表明,基于雙因子貢獻(xiàn)的區(qū)塊鏈共識(shí)機(jī)制能夠有效激勵(lì)節(jié)點(diǎn)參與模型訓(xùn)練和提高區(qū)塊鏈系統(tǒng)的穩(wěn)定性,節(jié)點(diǎn)冷卻機(jī)制能夠有效降低系統(tǒng)中心化程度。
3.2.4 系統(tǒng)時(shí)延分析
完成一輪模型訓(xùn)練的時(shí)間分為3部分:客戶端本地模型訓(xùn)練時(shí)間、區(qū)塊鏈共識(shí)時(shí)間、客戶端上傳和下載模型時(shí)間。本方法在客戶端上傳梯度時(shí)使用了梯度壓縮,經(jīng)過(guò)測(cè)試,在壓縮95%梯度之后,僅傳輸梯度的索引和值,數(shù)據(jù)量大小約為無(wú)壓縮時(shí)的9.25%。基于雙因子貢獻(xiàn)的PBFT共識(shí)算法在選舉委員會(huì)節(jié)點(diǎn)和領(lǐng)導(dǎo)人節(jié)點(diǎn)時(shí)需要進(jìn)行客戶端和區(qū)塊鏈共識(shí)節(jié)點(diǎn)的貢獻(xiàn)評(píng)分和排序,評(píng)分階段耗時(shí)與節(jié)點(diǎn)數(shù)量呈正相關(guān)關(guān)系,排序階段使用堆排序,耗時(shí)與評(píng)分相比可以忽略不計(jì)。
在不同數(shù)量客戶端參與訓(xùn)練的情況下,使用本文算法和使用PBFT共識(shí)的傳統(tǒng)基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)算法(blockchain based federated learning,BFL)的區(qū)塊鏈共識(shí)時(shí)延對(duì)比如圖8所示,區(qū)塊鏈共識(shí)時(shí)間隨客戶端數(shù)量增加而增長(zhǎng),這是因?yàn)殡S著客戶端數(shù)量的增多,共識(shí)時(shí)轉(zhuǎn)發(fā)的數(shù)據(jù)量也在增加。在使用了95%梯度壓縮之后,共識(shí)時(shí)間大大減少,平均共識(shí)時(shí)間減少為原始算法的18.75%。
圖8 共識(shí)時(shí)延對(duì)比
實(shí)驗(yàn)結(jié)果表明,本文算法在保證模型質(zhì)量的同時(shí),能有效減少通信壓力,并且設(shè)計(jì)的基于雙因子貢獻(xiàn)的區(qū)塊鏈共識(shí)機(jī)制,能夠吸引高質(zhì)量節(jié)點(diǎn)積極參與訓(xùn)練,提升區(qū)塊鏈系統(tǒng)共識(shí)效率和穩(wěn)定性。
本文提出了一種基于聯(lián)盟鏈的可信聯(lián)邦學(xué)習(xí)方法,利用區(qū)塊鏈解決了傳統(tǒng)聯(lián)邦學(xué)習(xí)中單點(diǎn)故障的問(wèn)題;通過(guò)使用梯度壓縮減少了通信壓力,并且上傳壓縮后的梯度可以降低梯度泄露的風(fēng)險(xiǎn);提出了一種基于貢獻(xiàn)的聯(lián)邦學(xué)習(xí)聚合算法,根據(jù)模型質(zhì)量進(jìn)行參數(shù)遴選和聚合權(quán)重分配,降低了投毒攻擊和低質(zhì)量數(shù)據(jù)對(duì)全局模型的影響;設(shè)計(jì)了一種基于雙因子貢獻(xiàn)的區(qū)塊鏈共識(shí)算法,綜合考慮節(jié)點(diǎn)的模型貢獻(xiàn)和行為貢獻(xiàn),在防止系統(tǒng)中心化的前提下能夠激勵(lì)優(yōu)質(zhì)節(jié)點(diǎn)參與系統(tǒng)的訓(xùn)練和維護(hù)。在未來(lái)的工作中,考慮將節(jié)點(diǎn)收益用于聯(lián)邦學(xué)習(xí)模型交易,并進(jìn)一步研究區(qū)塊鏈共識(shí)協(xié)議的效率和公平性。