陳乃月,金 一,李浥東,蔡露鑫,魏圓夢
(北京交通大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,北京 100044)
在大數(shù)據(jù)時(shí)代下,各種信息逐漸以數(shù)據(jù)的形式存在于人們的日常生活中,例如社交賬號、就診信息、瀏覽記錄、購物記錄等,很多信息會被企業(yè)收集并分析以達(dá)成預(yù)測客戶行為或其他目標(biāo)。但在實(shí)際中,出于保護(hù)用戶數(shù)據(jù)隱私的目的,各大企業(yè)組織之間不進(jìn)行數(shù)據(jù)共享,這就造成了數(shù)據(jù)通常是以孤島的形式存在[1-3]。當(dāng)前絕大多數(shù)的機(jī)器學(xué)習(xí)算法依賴大量數(shù)據(jù),其為訓(xùn)練出理想的模型提供了強(qiáng)有力的支撐。但相關(guān)研究表明,傳統(tǒng)機(jī)器學(xué)習(xí)模型由于存在脆弱性而容易被潛在的攻擊所威脅,比如對抗攻擊[4]、中毒攻擊[5]、成員推理攻擊[6]等。由于聯(lián)邦學(xué)習(xí)(Federated Learning,F(xiàn)L)框架存在天然的數(shù)據(jù)分離以及分布式訓(xùn)練過程等特性,其同樣容易受到不確定性攻擊,因此研究聯(lián)邦學(xué)習(xí)的魯棒性問題是保證聯(lián)邦學(xué)習(xí)框架能夠安全穩(wěn)定運(yùn)行的關(guān)鍵。
在保證數(shù)據(jù)安全和維護(hù)數(shù)據(jù)隱私的前提下,為了解決數(shù)據(jù)孤島的問題,研究人員提出一種新的機(jī)器學(xué)習(xí)技術(shù),即聯(lián)邦學(xué)習(xí)[7-8]。聯(lián)邦學(xué)習(xí),顧名思義就是協(xié)作學(xué)習(xí),由多個(gè)參與方進(jìn)行聯(lián)合訓(xùn)練,其本質(zhì)上是一種分布式的學(xué)習(xí)算法[9-10]。和傳統(tǒng)的機(jī)器學(xué)習(xí)方法相比,聯(lián)邦學(xué)習(xí)不需要匯集所有客戶數(shù)據(jù)至中心端,在一定程度上有效防止了這些數(shù)據(jù)在上傳過程中被泄露的可能性。聯(lián)邦學(xué)習(xí)的主要思想是:在不共享原始數(shù)據(jù)的前提下,各個(gè)客戶端利用本地?cái)?shù)據(jù)集進(jìn)行本地模型訓(xùn)練,完成本地訓(xùn)練后進(jìn)行模型相關(guān)參數(shù)的交互,從而聯(lián)合聚合出一個(gè)高效、共享的全局模型。但這并不意味著聯(lián)邦學(xué)習(xí)方法必定是安全可信的,在聚合的過程中,外部攻擊者也可以利用截獲的模型相關(guān)參數(shù)重構(gòu)出原始數(shù)據(jù)。并且參與客戶如果出現(xiàn)掉線或中途退出等意外行為可能會導(dǎo)致整個(gè)聯(lián)邦訓(xùn)練網(wǎng)絡(luò)出現(xiàn)崩潰的情況。因此,在維護(hù)數(shù)據(jù)隱私性、解決異構(gòu)性、保證公平性等方面,聯(lián)邦學(xué)習(xí)仍然存在很多亟需解決的問題。
區(qū)塊鏈作為一種去中心化的分布式存儲技術(shù)具有廣闊的應(yīng)用前景[11-12]。不同于傳統(tǒng)的中心化分布式存儲技術(shù),區(qū)塊鏈中的每個(gè)節(jié)點(diǎn)都獨(dú)立維護(hù)一份完整的數(shù)據(jù)記錄,并通過共識機(jī)制實(shí)現(xiàn)數(shù)據(jù)存儲的一致性,當(dāng)單個(gè)節(jié)點(diǎn)發(fā)生故障或者被惡意攻擊時(shí),不會影響其他節(jié)點(diǎn)的正常運(yùn)行,從而保證了數(shù)據(jù)的安全性,提高了整個(gè)系統(tǒng)的魯棒性[13]。區(qū)塊鏈中每個(gè)節(jié)點(diǎn)按照時(shí)間順序相連的區(qū)塊存儲數(shù)據(jù),每個(gè)區(qū)塊的區(qū)塊頭中記錄著上一個(gè)區(qū)塊的哈希值,某個(gè)區(qū)塊的改變將會影響后面一系列區(qū)塊的計(jì)算,所以區(qū)塊鏈上偽造或者更改數(shù)據(jù)的代價(jià)很高,遭受惡意節(jié)點(diǎn)篡改全部數(shù)據(jù)的可能性極小。此外,區(qū)塊鏈還通過非對稱加密算法、數(shù)字簽名等密碼學(xué)技術(shù)進(jìn)一步保證了數(shù)據(jù)的安全。因此,區(qū)塊鏈技術(shù)可以滿足保護(hù)數(shù)據(jù)安全和用戶隱私的要求,實(shí)現(xiàn)多個(gè)參與方之間的可信數(shù)據(jù)交換。結(jié)合聯(lián)邦學(xué)習(xí)的架構(gòu),區(qū)塊鏈技術(shù)可以激勵對聚合全局模型貢獻(xiàn)度高的用戶更加積極地參與訓(xùn)練,形成整體可持續(xù)的學(xué)習(xí)模式。同時(shí),利用共識機(jī)制和激勵機(jī)制可以更加公平地計(jì)算并分配參與方的收益,實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)各個(gè)節(jié)點(diǎn)間貢獻(xiàn)度的公平性。因此,利用區(qū)塊鏈技術(shù)可以識別出聯(lián)邦訓(xùn)練過程中可能存在的惡意攻擊行為或潛在危險(xiǎn),追溯惡意用戶并進(jìn)行懲罰。
目前,結(jié)合聯(lián)邦學(xué)習(xí)和區(qū)塊鏈的研究工作已經(jīng)取得了較好的進(jìn)展。文獻(xiàn)[14]提出一種結(jié)合區(qū)塊鏈和聯(lián)邦學(xué)習(xí)實(shí)現(xiàn)安全數(shù)據(jù)分享的框架,通過許可鏈建立多個(gè)參與方之間的安全連接,可以進(jìn)一步控制節(jié)點(diǎn)對共享數(shù)據(jù)的訪問,降低了聯(lián)邦學(xué)習(xí)協(xié)作過程中數(shù)據(jù)泄露的風(fēng)險(xiǎn)。文獻(xiàn)[15]使用區(qū)塊鏈取代聯(lián)邦學(xué)習(xí)中的中央服務(wù)器,使得參與節(jié)點(diǎn)在無可信第三方的情況下依然可以建立可信通信,并對該框架在效率、隱私保護(hù)、抗中毒攻擊等方面的性能進(jìn)行了研究。DeepChain[16]對不信任的參與節(jié)點(diǎn)提供基于區(qū)塊鏈價(jià)值驅(qū)動的激勵機(jī)制,并且通過區(qū)塊鏈實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)協(xié)作過程的可審計(jì)性,對不誠實(shí)的節(jié)點(diǎn)進(jìn)行懲罰,對誠實(shí)的節(jié)點(diǎn)進(jìn)行獎勵。以上研究在區(qū)塊鏈的基礎(chǔ)上,對聯(lián)邦學(xué)習(xí)協(xié)作過程中的數(shù)據(jù)安全、隱私保護(hù)和公平性等方面的問題進(jìn)行了改善,但是沒有考慮到不同參與節(jié)點(diǎn)數(shù)據(jù)分布不均衡問題對聯(lián)邦學(xué)習(xí)協(xié)作過程的影響。文獻(xiàn)[17]則提出一種多層分布式防御計(jì)算框架,有效改善了本地節(jié)點(diǎn)訓(xùn)練數(shù)據(jù)有限的問題,但是模型結(jié)構(gòu)較復(fù)雜,在應(yīng)用上存在較大的困難。
針對客戶端訓(xùn)練樣本分布不均衡現(xiàn)象導(dǎo)致的訓(xùn)練精度問題,本文結(jié)合區(qū)塊鏈的共識技術(shù)研究高效的公平性聯(lián)邦學(xué)習(xí)機(jī)制。首先根據(jù)客戶端本地訓(xùn)練模型參數(shù)計(jì)算節(jié)點(diǎn)可信度,構(gòu)建基于信任度的聯(lián)邦學(xué)習(xí)聚合模型,各客戶端結(jié)合本地模型的歷史性能更新本地模型參數(shù),以保證本地?cái)?shù)據(jù)特征不被全局模型遺忘。然后利用區(qū)塊鏈的共識機(jī)制技術(shù)保障聯(lián)邦學(xué)習(xí)中各參與方訓(xùn)練數(shù)據(jù)傳輸?shù)目尚判裕_保節(jié)點(diǎn)間數(shù)據(jù)傳輸?shù)碾[私性及不可篡改性。最后通過在各客戶端利用不同數(shù)據(jù)分布的訓(xùn)練集進(jìn)行實(shí)驗(yàn)仿真,以保證各客戶端的隱私性。
聯(lián)邦學(xué)習(xí)是一種由多方共同參與進(jìn)行聯(lián)合學(xué)習(xí)的新型技術(shù)。聯(lián)邦學(xué)習(xí)結(jié)構(gòu)模型如圖1 所示,主要包括擁有數(shù)據(jù)的客戶端和包含聚合模型的中央服務(wù)器兩個(gè)主體。相比一般的分布式機(jī)器學(xué)習(xí),存在的明顯不同是聯(lián)邦學(xué)習(xí)不需要將數(shù)據(jù)集進(jìn)行聚合操作,大幅降低了在集合多方數(shù)據(jù)的階段造成隱私泄露問題的可能性。在每輪迭代中,各個(gè)參與方持有本地?cái)?shù)據(jù)進(jìn)行本地模型訓(xùn)練,并將更新后的模型相關(guān)參數(shù)值上傳至中央服務(wù)器,由服務(wù)器聚合參數(shù),從而更新全局模型。
圖1 聯(lián)邦學(xué)習(xí)結(jié)構(gòu)模型Fig.1 Federated learning structure model
作為一種分布式數(shù)據(jù)庫技術(shù),區(qū)塊鏈可以在多個(gè)互不了解的參與方之間實(shí)現(xiàn)可信的數(shù)據(jù)共享[18]。區(qū)塊鏈?zhǔn)侨ブ行幕?,無需借助可信的第三方,由多個(gè)參與方按照嚴(yán)格的規(guī)則共同維護(hù),通過密碼學(xué)、共識機(jī)制、智能合約等多種技術(shù)實(shí)現(xiàn)交易過程的高度可信性,可以有效減少單個(gè)故障節(jié)點(diǎn)或惡意節(jié)點(diǎn)帶來的影響。
區(qū)塊鏈通過以區(qū)塊為單位的數(shù)據(jù)結(jié)構(gòu)保障了數(shù)據(jù)的不可篡改性,每個(gè)區(qū)塊包括區(qū)塊頭和區(qū)塊體兩部分,由區(qū)塊頭連接上一個(gè)區(qū)塊,由區(qū)塊體記錄交易數(shù)據(jù)。在區(qū)塊鏈系統(tǒng)中,每個(gè)參與節(jié)點(diǎn)都會記錄所有的交易信息,并對其他節(jié)點(diǎn)記錄的信息進(jìn)行正確性驗(yàn)證。存儲在區(qū)塊鏈中的交易信息是公開透明的,同時(shí)交易賬戶的個(gè)人信息是高度加密的,這樣既提高了數(shù)據(jù)庫的安全性,又保證了參與方的隱私性,還可以有效追溯非法篡改的惡意節(jié)點(diǎn),對其進(jìn)行懲罰。
谷歌提出關(guān)于聯(lián)邦學(xué)習(xí)的算法,使用該算法來處理安卓手機(jī)終端的本地模型更新。近年來由聯(lián)邦學(xué)習(xí)結(jié)合其他算法有效地處理了一系列實(shí)際問題,而其中如何提高通信開銷、解決異構(gòu)性、保證公平性和隱私性等問題都是當(dāng)前聯(lián)邦學(xué)習(xí)算法主要的研究方向。聯(lián)邦平均(FedAvg)[10]算法是由MCMAHAN等提出的,和傳統(tǒng)FedSGD 算法相比,在一定程度上降低了通信成本,但是其存在所有客戶共用相同模型的問題,無法滿足持有非獨(dú)立同分布數(shù)據(jù)客戶端的需求。為了解決不同客戶端設(shè)備狀況存在差異、所處網(wǎng)絡(luò)環(huán)境存在不同以及非獨(dú)立同分布數(shù)據(jù)等問題,文獻(xiàn)[19]在聯(lián)邦平均的基礎(chǔ)上提出了一種異步聯(lián)邦優(yōu)化算法處理設(shè)備異構(gòu)性,文獻(xiàn)[20]則針對模型異構(gòu)性將聯(lián)邦學(xué)習(xí)與元學(xué)習(xí)相融合。在FedAvg算法的基礎(chǔ)上添加L2 正則化項(xiàng)而構(gòu)造的FedProx 模型[21],是通過添加約束項(xiàng)使得客戶端局部更新過程中的參數(shù)盡可能與服務(wù)端模型的參數(shù)相近。通過此簡單且有效的操作,使得模型可以有效緩解數(shù)據(jù)異質(zhì)性的問題,同時(shí)能夠安全地聚合來自不同客戶端具有模型差異性的梯度信息進(jìn)而提高模型的預(yù)測性能。文獻(xiàn)[22]通過利用一階模型優(yōu)化來計(jì)算模型聚合的權(quán)重,客戶端可以根據(jù)其與其他客戶端的權(quán)重系數(shù)進(jìn)行加權(quán)聚合,因而不同的客戶端可以擁有不同的全局個(gè)性化模型,進(jìn)而利用合理的權(quán)重信息來得到更加精確的全局模型。然而,這些聯(lián)邦學(xué)習(xí)優(yōu)化方法只考慮了客戶端在本輪模型訓(xùn)練的性能,在節(jié)點(diǎn)選擇過程中容易造成歷史模型的遺忘,本文方法將根據(jù)歷史模型個(gè)性化更新本地模型,以更實(shí)際地體現(xiàn)整體模型與本地模型的關(guān)系。
區(qū)塊鏈技術(shù)最早由中本聰于2008 年提出,并在2009 年得到實(shí)踐。區(qū)塊鏈的發(fā)展經(jīng)歷了以數(shù)字貨幣為特點(diǎn)的1.0 時(shí)代、以智能合約為特點(diǎn)的2.0 時(shí)代與正在邁向更加安全和完備的3.0 時(shí)代。區(qū)塊鏈通過塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)存儲數(shù)據(jù),根據(jù)分布式共識算法更新數(shù)據(jù),通過智能合約操作數(shù)據(jù)。目前,區(qū)塊鏈的共識算法主要包括工作量證明、權(quán)益證明、委托權(quán)益證明和實(shí)用拜占庭容錯(cuò)等。文獻(xiàn)[23]提出優(yōu)化算法T-PBFT,通過團(tuán)隊(duì)簽名和相互監(jiān)督選擇信用較好的節(jié)點(diǎn)參與到共識過程中,提高系統(tǒng)的容錯(cuò)性。文獻(xiàn)[24]提出一種改進(jìn)的委托權(quán)益證明共識機(jī)制,引入信用機(jī)制,通過監(jiān)測節(jié)點(diǎn)行為及時(shí)剔除不積極參與協(xié)作的惡意節(jié)點(diǎn)。
目前,很多聯(lián)邦學(xué)習(xí)算法在處理一些實(shí)際應(yīng)用時(shí)得到的模型效果存在一定局限,只有當(dāng)問題的數(shù)據(jù)類型為獨(dú)立同分布或數(shù)據(jù)規(guī)模較小時(shí),這些算法能夠?qū)崿F(xiàn)較為理想的結(jié)果。
然而,在實(shí)際問題中面對的情況往往更加復(fù)雜,一般的聯(lián)邦學(xué)習(xí)技術(shù)缺乏一定的可行性,不能有效地平衡例如隱私保護(hù)、公平性等一系列重要因素。因此,很多研究的方向是將聯(lián)邦學(xué)習(xí)與其他技術(shù)相結(jié)合來優(yōu)化訓(xùn)練模型的性能,其中,將其與區(qū)塊鏈技術(shù)進(jìn)行融合是一個(gè)熱門方向。現(xiàn)有的一些區(qū)塊鏈結(jié)合聯(lián)邦學(xué)習(xí)的算法主要動機(jī)是通過激勵更多高質(zhì)量的數(shù)據(jù)擁有者參與到協(xié)作學(xué)習(xí)過程中以提升模型的訓(xùn)練效果。區(qū)塊鏈中有很多設(shè)計(jì)成熟的激勵機(jī)制,包括增加收益型激勵機(jī)制、賦予權(quán)利型激勵機(jī)制和提高聲譽(yù)型激勵機(jī)制等類型。文獻(xiàn)[25]提出一種基于樣本數(shù)目大小的激勵機(jī)制,給予區(qū)塊鏈中礦工與其關(guān)聯(lián)設(shè)備訓(xùn)練中使用數(shù)據(jù)量成正比的獎勵,但在該機(jī)制中,惡意節(jié)點(diǎn)可能通過造假騙取獎勵。文獻(xiàn)[26]則通過引入與數(shù)據(jù)質(zhì)量相關(guān)的參數(shù),不僅考慮到樣本數(shù)據(jù)量的大小,還考慮到樣本數(shù)據(jù)對聯(lián)邦學(xué)習(xí)訓(xùn)練過程準(zhǔn)確率的影響,激勵更多擁有高質(zhì)量數(shù)據(jù)的用戶參與協(xié)作學(xué)習(xí)。文獻(xiàn)[27]則使用聲譽(yù)作為礦工的選擇標(biāo)準(zhǔn),通過主觀邏輯對礦工進(jìn)行聲譽(yù)評價(jià),并將聲譽(yù)評價(jià)公開透明地記錄在區(qū)塊鏈中,用于可信的聲譽(yù)計(jì)算,實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)過程中可靠參與者的選擇。
本文與現(xiàn)有的基于區(qū)塊鏈的聯(lián)邦學(xué)習(xí)工作相比,主要貢獻(xiàn)為采用基于損失函數(shù)的梯度投影算法保證數(shù)據(jù)分布不均衡情況下各個(gè)用戶的數(shù)據(jù)特征,同時(shí),采用結(jié)合本地模型的歷史性能更新本地模型參數(shù),以保證本地?cái)?shù)據(jù)特征的不被全局模型遺忘。并且,通過區(qū)塊鏈技術(shù)來保證節(jié)點(diǎn)間數(shù)據(jù)傳輸?shù)碾[私性以及不可篡改性。同時(shí),設(shè)計(jì)了PoT 共識機(jī)制作為聯(lián)邦學(xué)習(xí)聚合的引擎,適用于輕量級智能邊緣計(jì)算中的聯(lián)邦學(xué)習(xí)。該方法能夠降低模型中心化參數(shù)泄露的風(fēng)險(xiǎn),降低區(qū)塊鏈節(jié)點(diǎn)的通信開銷。
相較于傳統(tǒng)的分布式機(jī)器學(xué)習(xí),聯(lián)邦學(xué)習(xí)模型可以保證網(wǎng)絡(luò)數(shù)據(jù)高效處理,中心節(jié)點(diǎn)不需要訓(xùn)練網(wǎng)絡(luò)中所有的數(shù)據(jù),而是將各個(gè)參與節(jié)點(diǎn)上傳的參數(shù)進(jìn)行綜合處理,進(jìn)而返回給各個(gè)節(jié)點(diǎn)相應(yīng)的學(xué)習(xí)參數(shù)。
分布式機(jī)器學(xué)習(xí)利用多個(gè)計(jì)算節(jié)點(diǎn)進(jìn)行機(jī)器學(xué)習(xí)或深度學(xué)習(xí),提供擴(kuò)展大規(guī)模訓(xùn)練數(shù)據(jù)的計(jì)算和存儲能力。其中,訓(xùn)練數(shù)據(jù)被分為不相交的數(shù)據(jù)分片并被發(fā)送給各個(gè)工作節(jié)點(diǎn),工作節(jié)點(diǎn)在本地執(zhí)行隨機(jī)梯度下降后,將模型參數(shù)返回給中心服務(wù)器。由于在該過程中,中心節(jié)點(diǎn)不會接觸到各個(gè)節(jié)點(diǎn)的原始數(shù)據(jù),因此能夠保證各個(gè)節(jié)點(diǎn)本地?cái)?shù)據(jù)的隱私性。同時(shí),由于中心節(jié)點(diǎn)只需處理邊緣節(jié)點(diǎn)上傳的相關(guān)參數(shù),因此降低了中心節(jié)點(diǎn)的計(jì)算量,提高了機(jī)器學(xué)習(xí)的工作效率。
本文將結(jié)合聯(lián)邦學(xué)習(xí)框架和區(qū)塊鏈的思想設(shè)計(jì)公平性的聯(lián)邦學(xué)習(xí)模型,采用信任機(jī)制量化工作節(jié)點(diǎn)的本地模型性能,通過區(qū)塊鏈傳遞各個(gè)節(jié)點(diǎn)模型參數(shù),其框架如圖2 所示。
圖2 系統(tǒng)模型框架Fig.2 System model framework
在聯(lián)邦學(xué)習(xí)框架中,參與工作的節(jié)點(diǎn)定義為M={m1,m2,…,mk},其中每個(gè)工作節(jié)點(diǎn)訓(xùn)練本地機(jī)器學(xué)習(xí)模型,其模型參數(shù)為W={w1,w2,…,wk}。在本地模型中采用成熟的神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)特征的分類,本文采用卷積神經(jīng)網(wǎng)絡(luò)方法構(gòu)建神經(jīng)網(wǎng)絡(luò)模型,提取原始數(shù)據(jù)中最有效的特征表示。該網(wǎng)絡(luò)的構(gòu)建包括卷積層、池化層和全連接層。如圖3 所示,該模型采用兩個(gè)卷積層和池化層交疊,然后連接全連接層。
圖3 本地CNN 模型Fig.3 Local CNN model
卷積層主要將網(wǎng)絡(luò)連接和系統(tǒng)審計(jì)數(shù)據(jù)轉(zhuǎn)化為特征圖,有效提取數(shù)據(jù)特征。在卷積層中,隨機(jī)初始化其權(quán)重w和偏置值b。卷積計(jì)算以滑動窗口的形式進(jìn)行,計(jì)算公式如下:
其中:xi表示原始數(shù)據(jù);ci表示計(jì)算后的數(shù)據(jù)特征。
池化層階段主要進(jìn)行降采樣操作,降低特征圖的特征空間,否則過多的特征圖參數(shù)不利于高層特征的抽取。特征的降維操作一般采用最大池和平均池的兩種計(jì)算方式。
其中:最大池化是保留每個(gè)小區(qū)域中的最大值,即重點(diǎn)在于該區(qū)域是否匹配上,而非具體某一處的高度匹配。
在全連接層,將根據(jù)前兩層進(jìn)行的特征提取進(jìn)行數(shù)據(jù)特征的分類操作。該層類似于前饋神經(jīng)網(wǎng)絡(luò)中的隱含層,不再以空間拓?fù)浣Y(jié)構(gòu)進(jìn)行計(jì)算,而是將其通過激勵函數(shù)展開為向量的形式。
由于區(qū)塊鏈具有分布式記賬的特點(diǎn),可以保證區(qū)塊鏈網(wǎng)絡(luò)中聯(lián)邦學(xué)習(xí)的參與方之間交互是安全可靠的,且共享的數(shù)據(jù)具備透明、一致、防篡改等特性。以區(qū)塊鏈為基礎(chǔ)的聯(lián)邦學(xué)習(xí)框架需要通過共識機(jī)制來保證參與聯(lián)邦學(xué)習(xí)的各個(gè)節(jié)點(diǎn)進(jìn)行可信的協(xié)作學(xué)習(xí)。在該框架中利用區(qū)塊鏈來接收和保存參與節(jié)點(diǎn)相關(guān)的認(rèn)證信息和模型參數(shù),再經(jīng)由共識協(xié)議對其進(jìn)行認(rèn)證處理,有效保證了協(xié)作訓(xùn)練的公平性。
目前,一般的區(qū)塊鏈共識機(jī)制并不能夠滿足聯(lián)邦學(xué)習(xí)在通信開銷和公平性方面的需求。區(qū)塊鏈中最基本的共識機(jī)制包括工作量證明(Proof of Work,PoW)[26-27]共識機(jī)制和權(quán)益證明(Proof of Stake,PoS)[28-29]共識機(jī)制。雖然PoW 的原理更簡單,由于該機(jī)制選擇的依據(jù)是節(jié)點(diǎn)的算力競爭,需要被證明人執(zhí)行大量重復(fù)的計(jì)算工作,容易導(dǎo)致資源嚴(yán)重?fù)p耗,達(dá)成共識的周期較長。PoS 能夠有效緩解資源浪費(fèi)的問題,達(dá)成共識的時(shí)間較短,但是需要被證明人擁有一定數(shù)量的加密貨幣所有權(quán),安全性能低,擁有加密貨幣多的用戶容易被攻擊。因此,本文對共識機(jī)制進(jìn)行適當(dāng)改進(jìn),提出一種更適合聯(lián)邦學(xué)習(xí)應(yīng)用場景的基于信任值證明(Proof of Trust,PoT)的共識機(jī)制,引入了信任值來衡量參與節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)協(xié)作過程中的表現(xiàn)情況。
PoT 通過利用每個(gè)節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)協(xié)作過程中的可信度來達(dá)成節(jié)點(diǎn)間的共識,且實(shí)現(xiàn)的去中心化程度和安全性能較高,既可以保證較低的通信開銷,也能保證每個(gè)參與節(jié)點(diǎn)在協(xié)作過程中公平地獲益,從而鼓勵更多高質(zhì)量、可信任的節(jié)點(diǎn)積極參與到協(xié)作過程中。在PoT 中,每個(gè)節(jié)點(diǎn)都按照共識規(guī)則進(jìn)行數(shù)據(jù)處理,使得整個(gè)分布式系統(tǒng)中所有節(jié)點(diǎn)保持一致性。節(jié)點(diǎn)通過選擇性地參與到聯(lián)邦學(xué)習(xí)協(xié)作過程中來更新信任值,在一段時(shí)間內(nèi),具有最高信任值的節(jié)點(diǎn)被選取作為主節(jié)點(diǎn),獲取唯一記賬權(quán),生成新區(qū)塊時(shí)需要節(jié)點(diǎn)提供一個(gè)有效的信任值證明,并且這個(gè)證明應(yīng)可以被其他協(xié)作節(jié)點(diǎn)驗(yàn)證。通過對節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)協(xié)作過程中的表現(xiàn)進(jìn)行認(rèn)證來證明該節(jié)點(diǎn)擁有一定的可信度,增大了節(jié)點(diǎn)作假的成本,在一定程度上保證了整個(gè)網(wǎng)絡(luò)的安全性。因此,PoT 解決了PoW 中資源損耗嚴(yán)重和PoS 中安全性能低的問題,可以更好地運(yùn)用于聯(lián)邦學(xué)習(xí)應(yīng)用場景。
在聯(lián)邦學(xué)習(xí)協(xié)作過程中,如果惡意節(jié)點(diǎn)上傳虛假的本地參數(shù),會導(dǎo)致最終聚合的全局模型質(zhì)量受到影響。為了防止惡意節(jié)點(diǎn)破壞協(xié)作過程,本文通過信任值來衡量每個(gè)節(jié)點(diǎn)上傳的本地模型參數(shù)的可信度。本文中計(jì)算信任值的主要依據(jù)是本地模型和全局模型的相似程度,定義如下:
在每一輪訓(xùn)練中,當(dāng)隨機(jī)選擇的所有參與節(jié)點(diǎn)完成本地訓(xùn)練后,各個(gè)節(jié)點(diǎn)將在區(qū)塊鏈網(wǎng)絡(luò)中共享透明的、不能隨意篡改的全局模型參數(shù),隨后進(jìn)行共識驗(yàn)證。在共識過程中,首先根據(jù)參與本輪訓(xùn)練的節(jié)點(diǎn)組在前幾輪的整體訓(xùn)練效果選出信任值最高的節(jié)點(diǎn)P;eader,即主節(jié)點(diǎn),并由主節(jié)點(diǎn)處理交易請求。當(dāng)接收到一條交易請求時(shí),該節(jié)點(diǎn)根據(jù)擁有的本地?cái)?shù)據(jù)和模型參數(shù)進(jìn)行訓(xùn)練,將訓(xùn)練得到的損失loss(f(xi),yi)通過廣播的形式發(fā)送給區(qū)塊鏈網(wǎng)絡(luò)上的其他參與節(jié)點(diǎn)pj,同時(shí)收集相關(guān)的交易信息并包裝成一個(gè)區(qū)塊Blockt進(jìn)行廣播。由主節(jié)點(diǎn)主持的新區(qū)塊主要包含兩部分內(nèi)容,即Blockt={
除主節(jié)點(diǎn)外的其他參與節(jié)點(diǎn)pi對該區(qū)塊Blockt進(jìn)行共識驗(yàn)證,只有當(dāng)廣播的區(qū)塊通過這些節(jié)點(diǎn)的驗(yàn)證,才能證實(shí)主節(jié)點(diǎn)發(fā)布的內(nèi)容是可信的。在共識節(jié)點(diǎn)pj驗(yàn)證區(qū)塊的過程中,首先需要驗(yàn)證存儲在區(qū)塊頭中的哈希值確保區(qū)塊發(fā)布者不可隨意篡改區(qū)塊內(nèi)容,其次驗(yàn)證主節(jié)點(diǎn)的數(shù)字簽名和其他信息來認(rèn)證節(jié)點(diǎn)身份。此外,這些共識節(jié)點(diǎn)利用本地?cái)?shù)據(jù)對接收到的模型參數(shù)wi以及l(fā)oss(f(xi),yi)驗(yàn)證主節(jié)點(diǎn)的信任值的可信程度,并將最終的驗(yàn)證結(jié)果進(jìn)行廣播。綜合其他節(jié)點(diǎn)對該區(qū)塊的驗(yàn)證結(jié)果,最終認(rèn)證為合法的區(qū)塊Blockt則由主節(jié)點(diǎn)添加到對應(yīng)的區(qū)塊鏈中。
在區(qū)塊鏈網(wǎng)絡(luò)中,可能存在某些參與節(jié)點(diǎn)通過廣播造假其模型參數(shù)以惡意影響全局模型更新的效果。為了避免這種情況的發(fā)生,本文提出一種由參與節(jié)點(diǎn)共同制約不同節(jié)點(diǎn)的本地模型質(zhì)量評估的聯(lián)邦模型審計(jì)算法。在該算法中,當(dāng)節(jié)點(diǎn)完成一次迭代訓(xùn)練就會將其訓(xùn)練更新的本地模型參數(shù)廣播給其他參與節(jié)點(diǎn),也就是協(xié)作節(jié)點(diǎn),由協(xié)作節(jié)點(diǎn)對該模型參數(shù)進(jìn)行質(zhì)量評估。其中,評估的方法是協(xié)作方基于本地?cái)?shù)據(jù)集對模型參數(shù)進(jìn)行測試,最終以計(jì)算得到的模型誤差作為評價(jià)結(jié)果并廣播至鏈上。不同于簡單地以節(jié)點(diǎn)自身的模型訓(xùn)練損失作為衡量本地模型質(zhì)量的唯一評價(jià)指標(biāo)的方法,聯(lián)邦模型成員審計(jì)通過綜合考慮節(jié)點(diǎn)的直接評價(jià)和其他協(xié)作節(jié)點(diǎn)的間接評價(jià),可以得到一個(gè)更加公正客觀的模型質(zhì)量評價(jià)結(jié)果。
節(jié)點(diǎn)本地模型質(zhì)量評估的聯(lián)邦模型審計(jì)算法通過區(qū)塊鏈上的交易完成。參與聯(lián)邦學(xué)習(xí)訓(xùn)練過程的節(jié)點(diǎn)在完成本地訓(xùn)練之后,得到本地模型參數(shù)wi和訓(xùn)練損失loss(wi),然后發(fā)送交易請求,將wi、loss(wi)等交易數(shù)據(jù)發(fā)送給其他參與協(xié)作的節(jié)點(diǎn)。為了保證交易過程的安全性,本文通過使用數(shù)字簽名算法確保交易信息的來源安全可靠,并通過使用非對稱加密算法確保交易數(shù)據(jù)的安全。發(fā)送節(jié)點(diǎn)使用接收節(jié)點(diǎn)的公鑰對交易數(shù)據(jù)進(jìn)行加密,同時(shí)使用自己的私鑰進(jìn)行數(shù)字簽名,最后將加密的交易數(shù)據(jù)、數(shù)字簽名和自己的公鑰一起發(fā)送出去。接收節(jié)點(diǎn)在接收到交易信息后,通過發(fā)送節(jié)點(diǎn)的公鑰對數(shù)字簽名進(jìn)行驗(yàn)證,在確認(rèn)數(shù)據(jù)未被篡改且交易有效之后,通過自己的私鑰對交易數(shù)據(jù)進(jìn)行解密,最后根據(jù)所擁有的本地?cái)?shù)據(jù)在收到的模型上進(jìn)行訓(xùn)練,得到訓(xùn)練誤差loss(wi),同樣通過交易的方式將loss(wi)廣播給參與到聯(lián)邦學(xué)習(xí)訓(xùn)練過程的其他節(jié)點(diǎn)。被驗(yàn)證模型的質(zhì)量評價(jià)結(jié)果綜合了所有節(jié)點(diǎn)測試該模型得到的訓(xùn)練誤差,質(zhì)量評價(jià)結(jié)果的計(jì)算公式如下:
在執(zhí)行PoT 共識的階段,為了實(shí)現(xiàn)更加公平可信的聯(lián)邦協(xié)作學(xué)習(xí),當(dāng)主節(jié)點(diǎn)P;eader將區(qū)塊Blockt廣播給其他參與節(jié)點(diǎn)pj后,這些訓(xùn)練協(xié)作節(jié)點(diǎn)測試接收到的模型參數(shù)wi,計(jì)算出對應(yīng)的模型損失作為審計(jì)結(jié)果。這種方法大幅降低了節(jié)點(diǎn)上傳造假的模型損失至區(qū)塊鏈且不被發(fā)現(xiàn)的可能性。并且,由于具有獨(dú)特的不可篡改的分布式賬本特性,區(qū)塊鏈可以實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)協(xié)作過程的全程可追溯,參與節(jié)點(diǎn)在訓(xùn)練過程中產(chǎn)生的數(shù)據(jù)記錄被永久儲存且不可偽造,從而有效預(yù)防不誠實(shí)的節(jié)點(diǎn)上傳低質(zhì)量的模型參數(shù)而危害整體模型聚合。
通過PoT 共識機(jī)制選出主節(jié)點(diǎn),區(qū)塊鏈上其他節(jié)點(diǎn)收集到參與訓(xùn)練節(jié)點(diǎn)的本地模型后進(jìn)行模型聚合,現(xiàn)有的模型聚合方法主要是聯(lián)邦平均算法,但是聯(lián)邦平均算法沒有考慮各個(gè)節(jié)點(diǎn)間數(shù)據(jù)的異質(zhì)性以及樣本標(biāo)簽的不均衡問題,這會導(dǎo)致標(biāo)簽少的樣本的特征提取不公平。
在區(qū)塊鏈選擇工作節(jié)點(diǎn)的過程中,不能確保每一輪的工作節(jié)點(diǎn)都具有相同的數(shù)據(jù)分布、數(shù)據(jù)規(guī)模等特征。每個(gè)本地區(qū)塊都有本地的數(shù)據(jù)特征,特別是當(dāng)數(shù)據(jù)是非獨(dú)立同分布時(shí),不同本地模型之間參數(shù)模型的差異就會增大。這種現(xiàn)象會造成在聯(lián)邦學(xué)習(xí)框架中產(chǎn)生梯度的沖突,僅通過對各個(gè)區(qū)塊參數(shù)的加權(quán)平均可能會消除梯度方向間的差異,造成梯度方向差別信息的遺漏。為了緩解節(jié)點(diǎn)間樣本標(biāo)簽不均衡問題,本文在聚合本地模型參數(shù)前,計(jì)算梯度之間是否存在很明顯的方向沖突,進(jìn)而采用梯度投影的思想聚合全局模型。其中的模型梯度沖突一方面來源于擁有相同特征的數(shù)據(jù)客戶在某輪通信中占據(jù)多數(shù),導(dǎo)致與其他特征用戶模型梯度產(chǎn)生明顯差異,另一種可能性來源于訓(xùn)練的數(shù)據(jù)量不均衡所導(dǎo)致的模型梯度之間的差異。因此,本文在本地模型參數(shù)出現(xiàn)過大差異時(shí),選擇采用按序投影的方式以保留各個(gè)用戶的數(shù)據(jù)特征。由于在梯度投影過程中最后被投影的參數(shù)所保留的方向最全面,因此本文采用按照本地訓(xùn)練損失函數(shù)的逆序進(jìn)行全局沖突的梯度投影。
同時(shí),為了使得本地更新模型可以更好地適合其自身數(shù)據(jù)集的特征,在模型每個(gè)區(qū)塊中節(jié)點(diǎn)更新本地模型參數(shù)時(shí),將對比上一輪全局模型的性能和本次本地模型的性能,以自適應(yīng)地調(diào)整更適配本地?cái)?shù)據(jù)集的模型權(quán)重。本文將結(jié)合本地模型的歷史性能優(yōu)化全局模型在區(qū)塊鏈中各個(gè)節(jié)點(diǎn)的模型訓(xùn)練參數(shù)。
當(dāng)上一輪的全局模型在本地的表現(xiàn)相較于本地模型較差時(shí),可能是由于本地?cái)?shù)據(jù)分布的特征與全局模型聚合中大部分的分布特征不相同,此時(shí)需要考慮本地的數(shù)據(jù)特征,因此,在本地模型更新過程中,將會調(diào)整全局模型所占比例,強(qiáng)調(diào)本地模型所表現(xiàn)的數(shù)據(jù)特征,以更好地優(yōu)化本地模型更新,其模型聚合更新算法描述如算法1 所示。
為了驗(yàn)證本文算法的有效性,采用機(jī)器學(xué)習(xí)中圖像識別任務(wù)中被廣泛使用的MNIST 數(shù)據(jù)集和CIFAR-10 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),與聯(lián)邦平均算法進(jìn)行異常檢測精度和數(shù)據(jù)處理效率的對比。MNIST 數(shù)據(jù)集由0 到9 手寫數(shù)字圖片和數(shù)字標(biāo)簽所組成,每個(gè)樣本都是28×28 像素的灰度手寫圖片,共計(jì)60 000 個(gè)訓(xùn)練樣本和10 000 個(gè)測試樣本。相較于MNIST 數(shù)據(jù)集,CIFAR-10 數(shù)據(jù)集是3 通道的彩色RGB 圖像,且圖片尺寸為32×32 像素,比MNIST 稍大。相比于手寫字符,CIFAR-10 含有的是現(xiàn)實(shí)世界中真實(shí)的物體,不僅噪聲很大,而且物體的比例、特征都不盡相同,這為識別帶來很大困難。本文實(shí)驗(yàn)代碼基于Python、PyTorch 實(shí)現(xiàn)聯(lián)邦學(xué)習(xí)協(xié)作式模型訓(xùn)練,通過線程池模擬多節(jié)點(diǎn)分布式并行訓(xùn)練。
本文實(shí)驗(yàn)計(jì)算機(jī)配置為16 GB內(nèi)存,i7-9700 3.2 GHz處理器,操作系統(tǒng)為Centos,實(shí)驗(yàn)語言為Python,框架搭建使用Pytorch 平臺完成。本文使用查全率(AC)對模型進(jìn)行評估。計(jì)算公式如式(9)所示:
其中:TTP表示正確分類的正樣本數(shù),即預(yù)測為正樣本,實(shí)際也是正樣本;FFP表示被錯(cuò)誤地標(biāo)記為正樣本的負(fù)樣本數(shù),即實(shí)際為負(fù)樣本而被預(yù)測為正樣本,所以是False;TTN指正確分類的負(fù)樣本數(shù),即預(yù)測為負(fù)樣本,實(shí)際也是負(fù)樣本;FFN指被錯(cuò)誤地標(biāo)記為負(fù)樣本的正樣本數(shù),即實(shí)際為正樣本而被預(yù)測為負(fù)樣本,所以是False;TTP+FFN+FFP+TTN表示樣本總數(shù);TTP+FFN表示實(shí)際正樣本數(shù);TTP+FFP表示預(yù)測結(jié)果為正樣本的總數(shù),包括預(yù)測是正確的和錯(cuò)誤的;FFP+TTN表示實(shí)際負(fù)樣本數(shù);TTN+FFN表示預(yù)測結(jié)果為負(fù)樣本的總數(shù),包括預(yù)測是正確的和錯(cuò)誤的。
本文實(shí)驗(yàn)主要有3 個(gè)方面:首先分析在獨(dú)立同分布情況下該算法與對比算法的性能差別;其次面向非獨(dú)立同分布數(shù)據(jù)特征進(jìn)行模型訓(xùn)練,更貼近真實(shí)場景下聯(lián)邦學(xué)習(xí)的各個(gè)節(jié)點(diǎn)數(shù)據(jù)分布特征,從而驗(yàn)證本文算法的公平性,對于不同的節(jié)點(diǎn)可以公平地滿足各自的特征需求;最后驗(yàn)證區(qū)塊鏈模型聚合的服務(wù)性能,保證該算法能夠在區(qū)塊鏈框架下高效運(yùn)行。
為了證明提出算法的有效性,該實(shí)驗(yàn)將MNIST數(shù)據(jù)集和CIFAR-10 數(shù)據(jù)集按照數(shù)據(jù)集規(guī)格分割為同等比例的10 份數(shù)據(jù)集分給各個(gè)工作節(jié)點(diǎn),其中每個(gè)數(shù)據(jù)集中包含各類照片數(shù)據(jù)。通過這種數(shù)據(jù)分割方式可以使得各個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)達(dá)到獨(dú)立同分布的狀態(tài)。將本文算法與原始聯(lián)邦學(xué)習(xí)算法作為比較基準(zhǔn),結(jié)果如圖4、圖5 所示。
圖4 MNIST 數(shù)據(jù)集中不同算法性能對比Fig.4 Performance comparison of different algorithms in MNIST dataset
圖5 CIFAR-10 數(shù)據(jù)集中不同算法性能對比Fig.5 Performance comparison of different algorithms in CIFAR-10 dataset
如圖4 所示,在MNIST 數(shù)據(jù)集中各算法的表現(xiàn)均較好,但是本文算法無論在初始狀態(tài)還是隨輪次的迭代,均高于Fedavg 算法。并且該算法在迭代15 次達(dá)到了收斂狀態(tài),相較于Fedavg 算法和FedFa 算法都是最先達(dá)到收斂狀態(tài)的。如圖5 所示,本文算法在訓(xùn)練CIFAR-10 數(shù)據(jù)集時(shí),迭代60 輪次達(dá)到收斂,且準(zhǔn)確率達(dá)到70.2%,F(xiàn)edFa 算法訓(xùn)練65 輪次直至收斂,且準(zhǔn)確率為68.7%。因此,通過與baseline 和基于公平性的聯(lián)邦學(xué)習(xí)方法對比,本文算法可以在較少的迭代次序中得到更高的準(zhǔn)確率,減少了通信次數(shù)。
為了分析該算的公平性,本次實(shí)驗(yàn)將MNIST 數(shù)據(jù)集按照標(biāo)簽進(jìn)行預(yù)處理,使得每個(gè)工作節(jié)點(diǎn)僅僅存在部分標(biāo)簽數(shù)據(jù),而不包含全部的10 類標(biāo)簽以符合實(shí)際工作中數(shù)據(jù)分布不均衡的現(xiàn)象。
通過圖6 可以發(fā)現(xiàn),隨著通信輪次的增加,模型的準(zhǔn)確率也在提高,本文算法在開始幾輪通信中并沒有顯著的優(yōu)勢,這是由于開始時(shí)模型參數(shù)的隨機(jī)性較大,但是很快就實(shí)現(xiàn)了準(zhǔn)確率的提升,并且提升的速度較于Fedavg 算法有很大的進(jìn)步。Fedfv 算法采用梯度投影方法緩和梯度沖突造成的影響,該算法通過設(shè)計(jì)不同客戶端的投影順序以優(yōu)化整體模型準(zhǔn)確率,其準(zhǔn)確率隨著迭代次數(shù)的增加而提高。但是該算法沒有考慮各個(gè)節(jié)點(diǎn)的歷史表現(xiàn)性能,因此,本文提出的算法隨著模型訓(xùn)練的迭代,其性能均優(yōu)于其他3 種算法,且較快地達(dá)到模型的收斂狀態(tài)。因此,可以證明在節(jié)省通信成本和完成非獨(dú)立同分布情況下,本文算法在分類任務(wù)方面具有一定的優(yōu)勢。
圖6 non-IID 數(shù)據(jù)集中不同算法性能對比Fig.6 Performance comparison of different algorithms in non-IID dataset
本文實(shí)驗(yàn)采用Python Flask 框架實(shí)現(xiàn)區(qū)塊鏈服務(wù)功能,能夠提供創(chuàng)建交易、鏈狀態(tài)查詢、節(jié)點(diǎn)注冊等服務(wù)。通過區(qū)塊鏈網(wǎng)絡(luò)構(gòu)建搭載聯(lián)邦學(xué)習(xí)中的工作節(jié)點(diǎn),假設(shè)每個(gè)節(jié)點(diǎn)存儲10 次聯(lián)邦學(xué)習(xí)模型聚合和更新的交易,本次實(shí)驗(yàn)在MNIST 數(shù)據(jù)集中分析基于區(qū)塊鏈公平性聯(lián)邦學(xué)習(xí)模型在區(qū)塊鏈中的吞吐量和時(shí)延性能。
如圖7 所示,本實(shí)驗(yàn)分析在不同交易數(shù)量情況下的吞吐量與時(shí)延的比例,可以發(fā)現(xiàn)隨著發(fā)送交易數(shù)量的增加,交易吞吐量的也隨之增加,在2 000 以內(nèi)的交易數(shù)量中吞吐量穩(wěn)步線性增長。但是隨著交易數(shù)量的再度增大,其吞吐量的增長速度變得緩慢,這是由于在預(yù)備塊的生成和區(qū)塊達(dá)成共識時(shí)需要保持一定數(shù)量節(jié)點(diǎn)的一致性,從而產(chǎn)生較高時(shí)延以產(chǎn)生吞吐量增速下降的現(xiàn)象。本文進(jìn)行30 次實(shí)驗(yàn)取得均值以展示交易吞吐量相對穩(wěn)定的狀態(tài)。因此,通過區(qū)塊鏈結(jié)構(gòu)同時(shí)打包區(qū)塊信任度以及模型參數(shù)進(jìn)行區(qū)塊交易是可行的,并且能夠滿足一定的性能需求。
圖7 區(qū)塊鏈的交易吞吐量Fig.7 Transaction throughput of blockchain
本文主要研究在數(shù)據(jù)分布不均衡情況下數(shù)據(jù)共享模型公平性問題,通過結(jié)合聯(lián)邦學(xué)習(xí)和區(qū)塊鏈技術(shù),提出基于本地?cái)?shù)據(jù)特征的公平性聯(lián)邦學(xué)習(xí)模型。設(shè)計(jì)基于信任度的共識機(jī)制,利用區(qū)塊鏈記錄工作節(jié)點(diǎn)的本地模型參數(shù)作為證據(jù)實(shí)現(xiàn)模型聚合功能。實(shí)驗(yàn)結(jié)果表明,本文算法可以優(yōu)化非獨(dú)立同分布下的模型訓(xùn)練精度,防止中間參數(shù)傳輸信息泄露,實(shí)現(xiàn)區(qū)塊鏈在公平性的聯(lián)邦學(xué)習(xí)框架中的應(yīng)用。下一步將擴(kuò)展本文節(jié)點(diǎn)信任機(jī)制,研究更公平的整體模型聚合方法及加入隱私保護(hù)的梯度更新方法,以降低隱私泄露的風(fēng)險(xiǎn)。