曲 靜,馮云霞
(青島科技大學(xué) 信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
人工智能的飛速發(fā)展,機(jī)器學(xué)習(xí)促進(jìn)了人們的衣食住行到航空航天等各個(gè)領(lǐng)域的變革,而這背后也都離不開大數(shù)據(jù)的支持。當(dāng)今時(shí)代的發(fā)展又對機(jī)器學(xué)習(xí)提出了更高的要求,這就需要更多的數(shù)據(jù)進(jìn)行訓(xùn)練。但由于數(shù)據(jù)中往往包含著大量的隱私信息,數(shù)據(jù)擁有者不愿意共享自己的數(shù)據(jù),造成了“數(shù)據(jù)孤島”問題。共享數(shù)據(jù)與隱私保護(hù)似乎成了兩個(gè)相互矛盾的問題。直到物聯(lián)網(wǎng)技術(shù)地快速發(fā)展,產(chǎn)生了大量且分散的數(shù)據(jù)。
谷歌提出的聯(lián)邦學(xué)習(xí)[1]找到了解決數(shù)據(jù)共享與隱私保護(hù)之間的矛盾的新思路,聯(lián)邦學(xué)習(xí)允許計(jì)算節(jié)點(diǎn)利用自己的數(shù)據(jù)集在本地進(jìn)行訓(xùn)練,最后由中央服務(wù)器集中收集并聚合本地模型,避免了直接收集原始數(shù)據(jù)造成的隱私泄露風(fēng)險(xiǎn)。但傳統(tǒng)聯(lián)邦學(xué)習(xí)采用中央服務(wù)器集中收集、聚合全局模型,默認(rèn)中央服務(wù)器可信,可能會造成隱私泄露風(fēng)險(xiǎn)。另一方面谷歌公司最初提出聯(lián)邦學(xué)習(xí)是為了公司內(nèi)部數(shù)據(jù)供共享,如果想要將聯(lián)邦學(xué)習(xí)推廣到開放的網(wǎng)絡(luò)環(huán)境中,參與的計(jì)算節(jié)點(diǎn)中可能混入影響訓(xùn)練的惡意節(jié)點(diǎn),他們可能發(fā)送錯(cuò)誤的本地模型參數(shù)、攻擊其他計(jì)算節(jié)點(diǎn)造成巨大地隱私泄露風(fēng)險(xiǎn)。所以選擇合適的參與節(jié)點(diǎn)參與訓(xùn)練了對于模型的訓(xùn)練和隱私安全至關(guān)重要。
本文將區(qū)塊鏈和聯(lián)邦學(xué)習(xí)相結(jié)合提出一種分布式聯(lián)邦學(xué)習(xí),并基于此系統(tǒng)提出了一種基于信譽(yù)值的分布式節(jié)點(diǎn)選擇算法。分布式聯(lián)邦學(xué)習(xí)在將區(qū)塊鏈和聯(lián)邦學(xué)習(xí)相結(jié)合實(shí)現(xiàn)參與節(jié)點(diǎn)直接通信,取代了傳統(tǒng)聯(lián)邦學(xué)習(xí)通過中央服務(wù)器轉(zhuǎn)發(fā)信息地通訊模式。基于信譽(yù)值的分布式節(jié)點(diǎn)選擇算法采用聲譽(yù)作為節(jié)點(diǎn)可信度的衡量標(biāo)準(zhǔn),對發(fā)布任務(wù)的節(jié)點(diǎn)以及執(zhí)行任務(wù)的節(jié)點(diǎn)都進(jìn)行篩選,并為此設(shè)計(jì)了一種基于角色的節(jié)點(diǎn)聲譽(yù)值計(jì)算。
為解決傳統(tǒng)聯(lián)邦學(xué)習(xí)中央服務(wù)器帶來的問題,文獻(xiàn)[2-7]通過加密算法等方式預(yù)防聯(lián)邦學(xué)習(xí)中的隱私泄露問題,文獻(xiàn)[8-13]將區(qū)塊鏈與聯(lián)邦學(xué)習(xí)結(jié)合起來,借用區(qū)塊鏈不可篡改等特性,解決此問題。文獻(xiàn)[8]中將C/S架構(gòu)下的工作模式移植到區(qū)塊鏈系統(tǒng),每個(gè)節(jié)點(diǎn)按照順序循環(huán)擔(dān)任中央服務(wù)器,中央服務(wù)器不固定,一定程度上可以有效克服單點(diǎn)失效。在文獻(xiàn)[9]中提出了DeepChain,將區(qū)塊鏈技術(shù)與聯(lián)邦學(xué)習(xí)結(jié)合起來,它鼓勵(lì)不信任方參與隱私保護(hù)學(xué)習(xí)、共享梯度和正確更新參數(shù),并最終以雙贏的結(jié)果完成迭代式深度學(xué)習(xí)。聯(lián)邦學(xué)習(xí)和區(qū)塊鏈的結(jié)合開始逐漸在實(shí)際生活領(lǐng)域廣泛研究,2020年新冠肺炎的爆發(fā),在文獻(xiàn)[10]中針對COVID-19,從不同醫(yī)院收集少量數(shù)據(jù),并使用基于區(qū)塊鏈的聯(lián)合學(xué)習(xí)訓(xùn)練一個(gè)全局深度學(xué)習(xí)模型用于檢測新冠病毒。
為了解決聯(lián)邦學(xué)習(xí)的參與者的可信度的問題,節(jié)點(diǎn)選擇可以分為兩個(gè)方向:一個(gè)是在訓(xùn)練開始之前對參與節(jié)點(diǎn)進(jìn)行選擇[14-19],另一個(gè)是在訓(xùn)練過程中對節(jié)點(diǎn)上傳的本地模型進(jìn)行有選擇地聚合[20-22]。
對于在訓(xùn)練開始之前選擇參與節(jié)點(diǎn)方向,首先需要確定一個(gè)公平的衡量標(biāo)準(zhǔn)來量化節(jié)點(diǎn)在訓(xùn)練中的表現(xiàn),并根據(jù)這個(gè)標(biāo)準(zhǔn)對節(jié)點(diǎn)進(jìn)行篩選。在文獻(xiàn)[14]中通過設(shè)置參與者節(jié)點(diǎn)上傳本地訓(xùn)練模型的截止時(shí)間,選擇截至?xí)r間內(nèi)上傳模型的節(jié)點(diǎn),即計(jì)算和通信能力較好的節(jié)點(diǎn),參與訓(xùn)練,以此縮短訓(xùn)練時(shí)間。在文獻(xiàn)[15]中利用價(jià)值函數(shù)評估參與節(jié)點(diǎn)上傳的本地訓(xùn)練結(jié)果對整體訓(xùn)練模型的價(jià)值,此評估結(jié)果為判斷節(jié)點(diǎn)工作能力好壞的標(biāo)準(zhǔn),并決定了節(jié)點(diǎn)被選擇參與下次聯(lián)邦學(xué)習(xí)的概率。在文獻(xiàn)[16]中引入聲譽(yù)值作為衡量標(biāo)準(zhǔn),提出EigenTrust算法,利用曾與該節(jié)點(diǎn)共同訓(xùn)練的其他節(jié)點(diǎn)對該節(jié)點(diǎn)的評價(jià)計(jì)算聲譽(yù)值,根據(jù)節(jié)點(diǎn)的行為為其生成聲譽(yù)意見,并根據(jù)收集的聲譽(yù)意見計(jì)算其聲譽(yù)值,避免了某個(gè)節(jié)點(diǎn)的片面評價(jià)導(dǎo)致聲譽(yù)值計(jì)算錯(cuò)誤,從而影響節(jié)點(diǎn)的選擇。在文獻(xiàn)[17]中提出了一種名為TNA-SL的基于主觀邏輯的參與節(jié)點(diǎn)可信度計(jì)算方法,從而在參與節(jié)點(diǎn)之間建立了信任網(wǎng)絡(luò)。文獻(xiàn)[18]引入不易被篡改的區(qū)塊鏈記錄聲譽(yù)意見,保證聲譽(yù)意見的真實(shí)性。文獻(xiàn)[19]設(shè)計(jì)了一個(gè)分層信任評估模型,對不同層次的信任指數(shù)進(jìn)行了評估,確定節(jié)點(diǎn)的可靠性。
對于訓(xùn)練過程中篩選本地模型聚合方面,主要是由于聯(lián)邦學(xué)習(xí)不同于集中式機(jī)器學(xué)習(xí),它的參與者數(shù)據(jù)集存在異構(gòu)性的問題[20],而FedAvg算法隨機(jī)挑選上傳本地模型進(jìn)行聚合,這可能導(dǎo)致選擇的本地模型并不利于了全局模型的收斂。在文獻(xiàn)[21]中,為解決參與者數(shù)據(jù)集異構(gòu)問題在提出一種名為“FedAdp”的主動加權(quán)算法,通過計(jì)算收到的本地模型與全局梯度之間的相似度,為本地模型在聚合時(shí)設(shè)置不同的權(quán)重。文獻(xiàn)[22]在聯(lián)邦學(xué)習(xí)中考慮到數(shù)據(jù)異構(gòu)的問題,提出一個(gè)概率節(jié)點(diǎn)選擇框架“FedPNS”,通過計(jì)算節(jié)點(diǎn)梯度和全局梯度的內(nèi)積,判斷收到的本地模型是否利于全局模型收斂,選擇出最有利于全局模型收斂的本地模型子集進(jìn)行聚合。
在本文,首先將區(qū)塊鏈和聯(lián)邦學(xué)習(xí)結(jié)合,提出一種新的分布式聯(lián)邦學(xué)習(xí),在區(qū)塊鏈的架構(gòu)中實(shí)現(xiàn)聯(lián)邦學(xué)習(xí),由任務(wù)發(fā)布節(jié)點(diǎn)代替中央服務(wù)器降低單點(diǎn)故障的風(fēng)險(xiǎn)。在此架構(gòu)的基礎(chǔ)上提出了一種基于聲譽(yù)值的節(jié)點(diǎn)選擇方法,分別篩選任務(wù)執(zhí)行節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn),引入?yún)^(qū)塊鏈的共識節(jié)點(diǎn)記錄聲譽(yù)意見。為了計(jì)算節(jié)點(diǎn)的聲譽(yù)值本文又設(shè)計(jì)了一種基于角色的節(jié)點(diǎn)聲譽(yù)值計(jì)算算法,選擇更加適合任務(wù)的節(jié)點(diǎn)集進(jìn)行訓(xùn)練。
在詳細(xì)闡述節(jié)點(diǎn)選擇算法之前,本節(jié)將介紹本文針對的惡意節(jié)點(diǎn)以及系統(tǒng)假設(shè)和提出的分布式聯(lián)邦學(xué)習(xí)系統(tǒng)模型。
在開放的網(wǎng)絡(luò)環(huán)境中,參與節(jié)點(diǎn)混入惡意節(jié)點(diǎn)會影響任務(wù)的訓(xùn)練,甚至對數(shù)據(jù)隱私造成威脅[23]。本文重點(diǎn)考慮了主動惡意任務(wù)發(fā)布節(jié)點(diǎn)、被動惡意任務(wù)發(fā)布節(jié)點(diǎn)、主動惡意任務(wù)執(zhí)行節(jié)點(diǎn)和被動惡意任務(wù)執(zhí)行節(jié)點(diǎn)4種類型的萬一節(jié)點(diǎn)。主動,即惡意節(jié)點(diǎn)在任務(wù)訓(xùn)練過程中未受到外部干擾主動發(fā)起惡意行為;被動,即惡意節(jié)點(diǎn)由于外界因素干擾發(fā)起惡意行為。主動惡意任務(wù)發(fā)布節(jié)點(diǎn)主動廣播虛假任務(wù),惡意分散系統(tǒng)的總算力;而被動惡意任務(wù)發(fā)布節(jié)點(diǎn)被其他節(jié)點(diǎn)攻擊、控制發(fā)布虛假任務(wù),分散系統(tǒng)的總算力。主動惡意任務(wù)執(zhí)行節(jié)點(diǎn)故意上傳低質(zhì)量本地模型,甚至故意攻擊其他節(jié)點(diǎn),影響全局模型精度甚至造成數(shù)據(jù)隱私泄露。被動惡意任務(wù)執(zhí)行節(jié)點(diǎn)受到自身數(shù)據(jù)集質(zhì)量、CPU計(jì)算能力和網(wǎng)絡(luò)通信條件等外部條件的影響[24],導(dǎo)致模型不合格或每次迭代的收斂時(shí)間受到影響,影響全局模型的訓(xùn)練。
本文假設(shè)面向開放的網(wǎng)絡(luò)環(huán)境,如果節(jié)點(diǎn)隨意加入,會導(dǎo)致系統(tǒng)很高的安全風(fēng)險(xiǎn),因此本文選擇聯(lián)盟鏈。所有參與者只有通過身份驗(yàn)證加入聯(lián)盟鏈,才有資格發(fā)布任務(wù)或者參與模型訓(xùn)練,保護(hù)參與者的身份隱私。在執(zhí)行聯(lián)邦學(xué)習(xí)過程中節(jié)點(diǎn)可能充當(dāng)兩種角色:一種是發(fā)布任務(wù)的任務(wù)執(zhí)行節(jié)點(diǎn),另一種是執(zhí)行任務(wù)的任務(wù)執(zhí)行節(jié)點(diǎn)。而且本文支持節(jié)點(diǎn)角色可以動態(tài)轉(zhuǎn)換,節(jié)點(diǎn)可以擔(dān)任多角色,即一個(gè)聯(lián)盟鏈中節(jié)點(diǎn)可以在上個(gè)任務(wù)中擔(dān)任任務(wù)發(fā)布節(jié)點(diǎn),在本次任務(wù)中擔(dān)任任務(wù)執(zhí)行節(jié)點(diǎn),甚至一個(gè)節(jié)點(diǎn)沒有任務(wù)需求,也不想?yún)⑴c協(xié)同訓(xùn)練時(shí)也可以申請作為區(qū)塊鏈的共識節(jié)點(diǎn),參與共識任務(wù)。本文中由任務(wù)發(fā)布節(jié)點(diǎn)充當(dāng)臨時(shí)主控節(jié)點(diǎn)替代傳統(tǒng)聯(lián)邦學(xué)習(xí)的中央服務(wù)器,且在獨(dú)立通道channel中進(jìn)行每個(gè)聯(lián)邦學(xué)習(xí),讓任務(wù)發(fā)布節(jié)點(diǎn)與任務(wù)執(zhí)行節(jié)點(diǎn)的直接通信,而且每個(gè)任務(wù)獨(dú)立訓(xùn)練,實(shí)現(xiàn)多任務(wù)并行訓(xùn)練。聯(lián)盟鏈的共識節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)訓(xùn)練過程中擔(dān)任驗(yàn)證節(jié)點(diǎn)的角色,負(fù)責(zé)篩選任務(wù)發(fā)布節(jié)點(diǎn)、根據(jù)節(jié)點(diǎn)在訓(xùn)練中的行為生成用于計(jì)算聲譽(yù)值的聲譽(yù)意見存儲。聯(lián)盟鏈同時(shí)維護(hù)聲譽(yù)意見以及聯(lián)邦學(xué)習(xí)交易兩個(gè)賬本,既保證聯(lián)邦學(xué)習(xí)都記錄上鏈,也能方便快速查找聲譽(yù)意見。驗(yàn)證節(jié)點(diǎn)采用實(shí)用拜占庭容錯(cuò)算法(PBFT)達(dá)成共識將聲譽(yù)意見以及行為證據(jù)形成區(qū)塊記錄上鏈。
本文提的分布式聯(lián)邦學(xué)習(xí)系統(tǒng),如圖1,具體運(yùn)行流程如下:
圖1 分布式聯(lián)邦學(xué)習(xí)系統(tǒng)架構(gòu)圖
1)篩選節(jié)點(diǎn)。任務(wù)發(fā)布節(jié)點(diǎn)發(fā)布任務(wù),驗(yàn)證節(jié)點(diǎn)區(qū)塊鏈上的聲譽(yù)意見鏈上查詢節(jié)點(diǎn)的聲譽(yù)值,實(shí)現(xiàn)對任務(wù)發(fā)布節(jié)點(diǎn)以及任務(wù)執(zhí)行節(jié)點(diǎn)的篩選(節(jié)點(diǎn)篩選的詳細(xì)細(xì)節(jié)在第3章)。
2)聯(lián)邦學(xué)習(xí)初始化。聯(lián)邦學(xué)習(xí)確定了任務(wù)執(zhí)行節(jié)點(diǎn)后,首先為參與訓(xùn)練的節(jié)點(diǎn)分配數(shù)字證書并設(shè)置權(quán)限,持有數(shù)字證書的參與者可以通過channel進(jìn)行通信,實(shí)現(xiàn)多任務(wù)并行訓(xùn)練,設(shè)置權(quán)限,以實(shí)現(xiàn)任務(wù)執(zhí)行節(jié)點(diǎn)之間無通信無法竊取其他節(jié)點(diǎn)上傳的本地模型,保證數(shù)據(jù)隱私安全。
3)聯(lián)邦學(xué)習(xí)迭代訓(xùn)練。任務(wù)發(fā)布節(jié)點(diǎn)發(fā)送初始全局模型,任務(wù)執(zhí)行節(jié)點(diǎn)收到全局模型在本地?cái)?shù)據(jù)集上訓(xùn)練得到一個(gè)本地模型并上傳到任務(wù)發(fā)布節(jié)點(diǎn);然后任務(wù)發(fā)布節(jié)點(diǎn)對本地模型進(jìn)行篩選(本地模型的具體篩選細(xì)節(jié)在第3章詳細(xì)介紹),將符合要求的數(shù)據(jù)集利用聯(lián)邦平均算法聚合成全局模型。再發(fā)送給任務(wù)執(zhí)行節(jié)點(diǎn),進(jìn)入下一輪的迭代訓(xùn)練,直到最終模型符合任務(wù)發(fā)布節(jié)點(diǎn)的要求,或者迭代次數(shù)達(dá)到上限,訓(xùn)練結(jié)束。
4)生成并存儲聲譽(yù)意見。驗(yàn)證節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)在訓(xùn)練過程中的行為,任務(wù)發(fā)布節(jié)點(diǎn)以及任務(wù)執(zhí)行節(jié)點(diǎn)分別生成聲譽(yù)意見,達(dá)成共識,共識認(rèn)為正確,則記錄為可信行為,共識認(rèn)為錯(cuò)誤則記錄為不可信行為,否則記錄為不確定行為,記錄上聲譽(yù)意見賬本。①生成任務(wù)發(fā)布節(jié)點(diǎn)的聲譽(yù)意見:任務(wù)發(fā)布節(jié)點(diǎn)對任務(wù)執(zhí)行節(jié)點(diǎn)進(jìn)行篩選之后,對任務(wù)執(zhí)行結(jié)果的篩選結(jié)果達(dá)成共識,記錄聲譽(yù)意見;任務(wù)發(fā)布節(jié)點(diǎn)篩選本地模型結(jié)束之后,驗(yàn)證節(jié)點(diǎn)對篩選結(jié)果以及聚合結(jié)果達(dá)成共識,記錄聲譽(yù)意見。②生成任務(wù)發(fā)布執(zhí)行節(jié)點(diǎn)的聲譽(yù)意見:根據(jù)任務(wù)發(fā)布節(jié)點(diǎn)的篩選結(jié)果,參與聚合的任務(wù)執(zhí)行節(jié)點(diǎn)本地模型按照精度利用softmax生成一個(gè)數(shù)值記錄在聲譽(yù)意見中,沒參與聚合的任務(wù)執(zhí)行節(jié)點(diǎn)記錄為0。
在本節(jié)中,將介紹基于信譽(yù)的節(jié)點(diǎn)選擇算法,聲譽(yù)值是根據(jù)節(jié)點(diǎn)之前行為預(yù)測的節(jié)點(diǎn)在接下來的行為中可信的概率,聲譽(yù)值根據(jù)區(qū)塊鏈中存儲的聲譽(yù)意見進(jìn)行計(jì)算,聲譽(yù)值計(jì)算的詳細(xì)介紹在第4章。由于惡意節(jié)點(diǎn)也可能充當(dāng)任務(wù)發(fā)布節(jié)點(diǎn)發(fā)布虛假消息浪費(fèi)系統(tǒng)整體算力,攻擊其他節(jié)點(diǎn),而且本地模型更新的精度決定了最終全局模型的精度,低質(zhì)量的本地模型更新甚至?xí)腿帜P偷木?,所以本文對任?wù)執(zhí)行節(jié)點(diǎn)、任務(wù)發(fā)布節(jié)點(diǎn),根據(jù)節(jié)點(diǎn)的聲譽(yù)值在節(jié)點(diǎn)之間按照角色橫向選擇,同時(shí)還對上傳的本地模型都進(jìn)行篩選。
任務(wù)發(fā)布節(jié)點(diǎn)的篩選在節(jié)點(diǎn)廣播發(fā)布任務(wù)請求之后,由驗(yàn)證節(jié)點(diǎn)進(jìn)行篩選,只有通過篩選的節(jié)點(diǎn)才有資格組織聯(lián)邦學(xué)習(xí)。當(dāng)有任務(wù)需求的聯(lián)盟鏈節(jié)點(diǎn)廣播“任務(wù)發(fā)布請求”申請發(fā)布任務(wù)之后,驗(yàn)證節(jié)點(diǎn)對發(fā)布請求節(jié)點(diǎn)進(jìn)行篩選,具體篩選過程如下:
1)當(dāng)驗(yàn)證節(jié)點(diǎn)收到“任務(wù)發(fā)布請求”廣播,首先檢驗(yàn)該節(jié)點(diǎn)是否有正在執(zhí)行的任務(wù),有的話則忽略該“請求”,沒有其他任務(wù)則進(jìn)入第二步驗(yàn)證。這是由于當(dāng)前計(jì)算機(jī)的算力可能無法滿足同時(shí)進(jìn)行多項(xiàng)訓(xùn)練,而任務(wù)發(fā)布節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)任務(wù)中至關(guān)重要,一旦任務(wù)發(fā)布節(jié)點(diǎn)的算力被分散將會造成整體訓(xùn)練的延時(shí)甚至造成最終模型無法收斂,因此本文中任務(wù)發(fā)布節(jié)點(diǎn)只允許同時(shí)至多參與一項(xiàng)任務(wù)。以后的發(fā)展中節(jié)點(diǎn)算力充足則可以省略這一步的篩選。
2)驗(yàn)證節(jié)點(diǎn)檢驗(yàn)請求發(fā)布節(jié)點(diǎn)的聲譽(yù)值。驗(yàn)證節(jié)點(diǎn)在聯(lián)盟鏈的聲譽(yù)值賬本中查詢該節(jié)點(diǎn)的聲譽(yù)意見并計(jì)算出該節(jié)點(diǎn)的聲譽(yù)值(聲譽(yù)值計(jì)算的具體細(xì)節(jié)在第4章詳細(xì)介紹)。如果節(jié)點(diǎn)聲譽(yù)值低于閾值則忽略該“請求”;否則確定該節(jié)點(diǎn)為任務(wù)發(fā)布節(jié)點(diǎn),同時(shí)廣播帶有簽名的“任務(wù)T啟動請求”,達(dá)成共識記錄上鏈,交易賬本更新。
任務(wù)執(zhí)行節(jié)點(diǎn)接收到任務(wù)發(fā)布節(jié)點(diǎn)發(fā)送的“任務(wù)發(fā)布請求”之后,先在交易賬本中查詢該任務(wù),查詢顯示該任務(wù)通過驗(yàn)證無誤后發(fā)送“申請加入任務(wù)請求”申請加入任務(wù),否則忽略任務(wù)啟動請求。隨后由任務(wù)發(fā)布節(jié)點(diǎn)對申請協(xié)同訓(xùn)練的節(jié)點(diǎn)進(jìn)行篩選。具體步驟如下:
1)節(jié)點(diǎn)發(fā)送“申請加入任務(wù)請求”。聯(lián)盟鏈上節(jié)點(diǎn)根據(jù)任務(wù)發(fā)布節(jié)點(diǎn)發(fā)送的“任務(wù)啟動請求”中的任務(wù)要求,滿足任務(wù)要求的節(jié)點(diǎn)自愿發(fā)送“申請加入任務(wù)請求”,內(nèi)容包括擁有的數(shù)據(jù)集大小、種類以及可以驗(yàn)證數(shù)據(jù)集的證明材料。
2)任務(wù)發(fā)布節(jié)點(diǎn)對申請加入任務(wù)的節(jié)點(diǎn)進(jìn)行篩選。任務(wù)發(fā)布節(jié)點(diǎn)收到“申請加入任務(wù)請求”后,首先在聲譽(yù)意見賬本中查詢該節(jié)點(diǎn)作為任務(wù)發(fā)布節(jié)點(diǎn)的聲譽(yù)意見,然后計(jì)算該申請節(jié)點(diǎn)的聲譽(yù)值,如果聲譽(yù)值不低于閾值,該節(jié)點(diǎn)被選為任務(wù)執(zhí)行節(jié)點(diǎn),否則忽略該節(jié)點(diǎn)請求。直到任務(wù)執(zhí)行節(jié)點(diǎn)數(shù)達(dá)到任務(wù)要求,或者超過截至?xí)r間篩選結(jié)束。
聲譽(yù)值低于閾值說明在之前的訓(xùn)練任務(wù)中存在惡意行為(主動或者被動)、該節(jié)點(diǎn)的數(shù)據(jù)集不適合當(dāng)前任務(wù),通過聲譽(yù)值計(jì)算識別選擇誠實(shí)可信且擁有數(shù)據(jù)集最合適當(dāng)前任務(wù)的任務(wù)執(zhí)行節(jié)點(diǎn)集進(jìn)行協(xié)同訓(xùn)練。
任務(wù)執(zhí)行節(jié)點(diǎn)每輪訓(xùn)練上傳本地模型到任務(wù)執(zhí)行節(jié)點(diǎn),任務(wù)執(zhí)行節(jié)點(diǎn)在訓(xùn)練集上進(jìn)行測試,篩選出符合條件的本地模型進(jìn)行聚合,刪除低精度模型,以得到高質(zhì)量的最終模型。具體過程如下:
1)聚合所有收到的本地模型。任務(wù)發(fā)布節(jié)點(diǎn)收到本地模型之后,將所有本地模型聚合成整體模型M。
2)篩選本地模型。刪除其中第一個(gè)本地模型聚合成檢驗(yàn)?zāi)P蚼l,并將檢驗(yàn)?zāi)P蚼l與整體模型M在測試集上進(jìn)行測試,如果檢驗(yàn)?zāi)P蚼l的精度大于整體模型M,就淘汰該本地模型。按照上述方式遍歷所有本地模型,完成所有本地模型的初步篩選。
3)確定最終參與聚合的本地模型。聚合經(jīng)過上輪篩選保留下來的本地模型得到檢驗(yàn)?zāi)P蚼k,將檢驗(yàn)?zāi)P蚼k與測試集上進(jìn)行測試,比較所有檢驗(yàn)?zāi)P图吓c整體模型M的精度,選擇精度最高的模型作為本輪最終全局模型,而對應(yīng)的本地模型作為最終參與聚合的本地模型。
為了實(shí)現(xiàn)對任務(wù)發(fā)布節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)的分別篩選,又考慮到任務(wù)發(fā)布節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)在聯(lián)邦學(xué)習(xí)中任務(wù)不同,任務(wù)發(fā)布節(jié)點(diǎn)發(fā)布任務(wù)、篩選本地模型、聚合全局模型,只需篩選行為可靠、設(shè)備算力充足的誠實(shí)節(jié)點(diǎn),而任務(wù)執(zhí)行節(jié)點(diǎn)需要利用自己的數(shù)據(jù)集在本地進(jìn)行訓(xùn)練并上傳到任務(wù)發(fā)布節(jié)點(diǎn)處,這不僅需要考慮節(jié)點(diǎn)的行為以及設(shè)備算力,還要考察節(jié)點(diǎn)的數(shù)據(jù)集與當(dāng)前訓(xùn)練主題的貼合度,因?yàn)閿?shù)據(jù)集的類型和質(zhì)量決定了本地模型的精度,本地模型精度不高也將影響去全局模型的精度。所以為了實(shí)現(xiàn)任務(wù)發(fā)布節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)的分別篩選,本文設(shè)計(jì)了一種基于角色的節(jié)點(diǎn)信譽(yù)值計(jì)算模型,細(xì)化不同節(jié)點(diǎn)的聲譽(yù)計(jì)算要素,根據(jù)節(jié)點(diǎn)角色及節(jié)點(diǎn)行為量化節(jié)點(diǎn)在訓(xùn)練中的可信度。而一個(gè)聯(lián)盟鏈中可能儲存這一個(gè)節(jié)點(diǎn)的兩種角色的聲譽(yù)意見。該模型主要包括兩部分:節(jié)點(diǎn)聲譽(yù)意見模型和節(jié)點(diǎn)聲譽(yù)值計(jì)算算法。
在聯(lián)邦學(xué)習(xí)訓(xùn)練任務(wù)中,本文用聲譽(yù)意見直接記錄各節(jié)點(diǎn)在任務(wù)中表現(xiàn)情況量化生成一條聲譽(yù)意見,節(jié)點(diǎn)聲譽(yù)意見模型為(role,result,time,remark,sign,H),其中role表示節(jié)點(diǎn)在任務(wù)中的角色,包括publisher(任務(wù)發(fā)布節(jié)點(diǎn))和worker(任務(wù)執(zhí)行節(jié)點(diǎn));result是節(jié)點(diǎn)行為檢驗(yàn)結(jié)果,任務(wù)執(zhí)行節(jié)點(diǎn)的聲譽(yù)意見記錄為數(shù)值,任務(wù)發(fā)布節(jié)點(diǎn)記錄為:“true”、“false”和“uncertainty”,分別表示可信行為、不可信行為和不確定行為;time是聲譽(yù)意見生成時(shí)間,sign是生成聲譽(yù)意見的驗(yàn)證節(jié)點(diǎn)簽名,remark是聲譽(yù)意見的生成證明材料和任務(wù)主題,H是信譽(yù)意見的加密結(jié)果。接下來本文將分別詳細(xì)介紹任務(wù)發(fā)布節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)的聲譽(yù)意見。
為了縮短每個(gè)任務(wù)開始之前計(jì)算節(jié)點(diǎn)聲譽(yù)值的時(shí)間,本文在每個(gè)任務(wù)結(jié)束后,利用任務(wù)內(nèi)產(chǎn)生的聲譽(yù)意見生成節(jié)點(diǎn)的直接聲譽(yù)值,節(jié)點(diǎn)的聲譽(yù)意見作為可追溯證據(jù)存儲在區(qū)塊鏈中。下次任務(wù)開始之前直接在區(qū)塊鏈中檢索節(jié)點(diǎn)對應(yīng)角色的直接聲譽(yù)值來計(jì)算聲譽(yù)值。又考慮到多次以某身份參與聯(lián)邦學(xué)習(xí)任務(wù)的節(jié)點(diǎn)區(qū)塊鏈中存儲大量對應(yīng)聲譽(yù)值,而初次以某種角色參與任務(wù)的節(jié)點(diǎn)在區(qū)塊鏈中沒有存儲對應(yīng)直接聲譽(yù)值,因此本文基于節(jié)點(diǎn)參加任務(wù)的角色以及該節(jié)點(diǎn)以此角色參與任務(wù)的次數(shù)細(xì)化算法,設(shè)計(jì)了4種節(jié)點(diǎn)信譽(yù)值計(jì)算算法:二次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、首次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、二次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、首次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法。其中“二次”和首次分別指該節(jié)點(diǎn)多次和首次擔(dān)任此角色參與任務(wù)。首先根據(jù)節(jié)點(diǎn)的申請判斷節(jié)點(diǎn)的角色,隨后在區(qū)塊鏈中查詢節(jié)點(diǎn)的對應(yīng)角色的直接聲譽(yù)值,如果查詢到,那么說明節(jié)點(diǎn)是“二次”節(jié)點(diǎn),否則節(jié)點(diǎn)為“首次”節(jié)點(diǎn),按照對應(yīng)算法計(jì)算聲譽(yù)值。
接下來將首先介紹直接聲譽(yù)值計(jì)算算法,隨后分別詳細(xì)介紹二次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、首次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、二次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法、首次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法。
4.2.1 直接聲譽(yù)值計(jì)算
由于任務(wù)發(fā)布節(jié)點(diǎn)與任務(wù)執(zhí)行節(jié)點(diǎn)的聲譽(yù)意見模型中“result”存儲類型不同,本文分別計(jì)算二者的直接聲譽(yù)值。具體計(jì)算過程如下:
(1)
r(publisher)表示該任務(wù)發(fā)布節(jié)點(diǎn)經(jīng)過本次訓(xùn)練任務(wù)的直接聲譽(yù)值,N(result[t])、N(result[f])、N(result[u])分別表示在聯(lián)盟鏈記錄的本輪任務(wù)中該節(jié)點(diǎn)的所有聲譽(yù)意見中result記錄是“true”、“false”和“uncertainty”的數(shù)目,λ,γ,ζ分別表示result中可信行為、不可信行為和不確定行為的影響參數(shù)。
2)任務(wù)執(zhí)行節(jié)點(diǎn)直接聲譽(yù)值計(jì)算模型,即對聲譽(yù)意見中的數(shù)值求平均,具體計(jì)算過程如式(2):
(2)
r(worker)表示該任務(wù)執(zhí)行節(jié)點(diǎn)經(jīng)過本次訓(xùn)練任務(wù)的直接聲譽(yù)值,∑result表示在聯(lián)盟鏈記錄的本輪任務(wù)中該任務(wù)執(zhí)行節(jié)點(diǎn)的所有聲譽(yù)意見result中的,N表示本輪任務(wù)中該任務(wù)執(zhí)行節(jié)點(diǎn)的所有聲譽(yù)意見的數(shù)目。
任務(wù)執(zhí)行節(jié)點(diǎn)和任務(wù)發(fā)布節(jié)點(diǎn)的直接聲譽(yù)值計(jì)算完成后,驗(yàn)證節(jié)點(diǎn)將對此計(jì)算結(jié)果達(dá)成的共識,隨后該驗(yàn)證節(jié)點(diǎn)將本輪任務(wù)中所有節(jié)點(diǎn)的直接聲譽(yù)值按照r=(role,time,score,remark,H)的格式保存在區(qū)塊鏈中,其中r表示所記錄節(jié)點(diǎn)的直接聲譽(yù)值,time記錄為本次任務(wù)結(jié)束的時(shí)間,score表示本次任務(wù)中該節(jié)點(diǎn)的直接聲譽(yù)值,remark是備注信息,存儲本次任務(wù)主題和開始、截止時(shí)間。
4.2.2 二次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法
以二次任務(wù)發(fā)布節(jié)點(diǎn)i為例,介紹二次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算模型。當(dāng)驗(yàn)證節(jié)點(diǎn)接收到申請節(jié)點(diǎn)發(fā)布任務(wù)申請之后,首先在聯(lián)盟鏈中查詢節(jié)點(diǎn)i作為任務(wù)發(fā)布節(jié)點(diǎn)的直接聲譽(yù)值,查詢到相應(yīng)直接聲譽(yù)值,判斷節(jié)點(diǎn)為二次任務(wù)發(fā)布節(jié)點(diǎn)進(jìn)行聲譽(yù)值計(jì)算。在二次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法中,考慮到節(jié)點(diǎn)和網(wǎng)絡(luò)的復(fù)雜性,隨著時(shí)間的推移,節(jié)點(diǎn)先前行為的可信度逐漸降低,對應(yīng)的直接聲譽(yù)值的可參考性也逐漸降低。因此,本文引入時(shí)間衰減函數(shù)來描述時(shí)間對直接聲譽(yù)值可信度的影響。生成的直接聲譽(yù)值與當(dāng)前任務(wù)間隔的時(shí)間越長,該直接聲譽(yù)值的可參考性越低,計(jì)算最終聲譽(yù)值時(shí)的權(quán)重越小,反之該直接聲譽(yù)值的可參考性越高,計(jì)算最終聲譽(yù)值時(shí)的權(quán)重越大。所以任務(wù)發(fā)布節(jié)點(diǎn)的最終聲譽(yù)值如式(3):
(3)
4.2.3 首次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算算法
1)投用了裝置1.0 MPa蒸汽專線,在4月12日停工第二天,配合動力廠投用進(jìn)裝置蒸汽專線,確保裝置吹掃蒸汽供應(yīng)充足。
接下來將以首次任務(wù)發(fā)布節(jié)點(diǎn)g為例,介紹首次任務(wù)發(fā)布節(jié)點(diǎn)聲譽(yù)值計(jì)算模型。當(dāng)驗(yàn)證節(jié)點(diǎn)接收到申請節(jié)點(diǎn)發(fā)布任務(wù)申請之后,首先在聯(lián)盟鏈中查詢節(jié)點(diǎn)g作為任務(wù)發(fā)布節(jié)點(diǎn)的直接聲譽(yù)值,查詢無果之后,判斷節(jié)點(diǎn)為首次任務(wù)發(fā)布節(jié)點(diǎn)并令其聲譽(yù)值等于初始值(任務(wù)發(fā)布方的信譽(yù)值閾值),如式(4):
R(publisherg)=Rinitial(publisher)
(4)
R(publisherg)是節(jié)點(diǎn)g作為任務(wù)發(fā)布方參與本輪訓(xùn)練的聲譽(yù)值,Rinitial(publisher)是對于任務(wù)發(fā)布方的信譽(yù)閾值。
4.2.4 二次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法
以二次任務(wù)執(zhí)行節(jié)點(diǎn)j聲譽(yù)值計(jì)算算法為例計(jì)算其聲譽(yù)值。在一個(gè)任務(wù)中,任務(wù)執(zhí)行節(jié)點(diǎn)的主要工作是在本地訓(xùn)練模型并上傳訓(xùn)練,本地模型的好壞不僅與節(jié)點(diǎn)的行為有關(guān),還與節(jié)點(diǎn)的本地?cái)?shù)據(jù)集有關(guān)。所以想要篩選任務(wù)執(zhí)行節(jié)點(diǎn),需要考慮綜合考慮其行為及數(shù)據(jù)集的可靠性。在本文引入余弦函數(shù)計(jì)算節(jié)點(diǎn)直接聲譽(yù)值記錄的任務(wù)與當(dāng)前任務(wù)的相似度,相似度直接參與最終信譽(yù)值的計(jì)算。相似度越大,表示直接信譽(yù)值記錄的任務(wù)與當(dāng)前任務(wù)越接近,節(jié)點(diǎn)j在直接聲譽(yù)值所記錄的任務(wù)對于當(dāng)前任務(wù)的可參考性越大;反之可參考性越小。節(jié)點(diǎn)j的最終信譽(yù)值的計(jì)算過程如式(5):
(5)
(6)
T(workerj)引入的時(shí)間衰減函數(shù),r[workerj(time)]表示節(jié)點(diǎn)j作為任務(wù)執(zhí)行節(jié)點(diǎn)的直接聲譽(yù)值記錄中的時(shí)間。
4.2.5 首次任務(wù)執(zhí)行節(jié)點(diǎn)聲譽(yù)值計(jì)算算法
對于首次任務(wù)執(zhí)行節(jié)點(diǎn)參加過訓(xùn)練任務(wù)的節(jié)點(diǎn)f,本文結(jié)合他的數(shù)據(jù)集大小、數(shù)據(jù)類型和其他數(shù)據(jù)提供者的中值聲譽(yù)值來計(jì)算他的聲譽(yù)值。如果節(jié)點(diǎn)f的數(shù)據(jù)集較大且數(shù)據(jù)集類型更接近當(dāng)前任務(wù)的主題,則節(jié)點(diǎn)f的聲譽(yù)值越高,具體計(jì)算如下(7):
(7)
workerf指代節(jié)點(diǎn)f作為任務(wù)執(zhí)行節(jié)點(diǎn);s(workerf) 是節(jié)點(diǎn)f的響應(yīng)中記錄的數(shù)據(jù)集大?。籗min是所有參加本任務(wù)的所有任務(wù)執(zhí)行節(jié)點(diǎn)數(shù)據(jù)集大小的中位數(shù);S是任務(wù)要求的數(shù)據(jù)集大?。籖initial(worker)是當(dāng)前任務(wù)中任務(wù)執(zhí)行節(jié)點(diǎn)的聲譽(yù)值初始值;w(workerf)表示節(jié)點(diǎn)f的數(shù)據(jù)集的數(shù)據(jù)類型與任務(wù)規(guī)定數(shù)據(jù)類型的相似情況;S(workerf)表示節(jié)點(diǎn)f數(shù)據(jù)集大小與任務(wù)要求數(shù)據(jù)集大小的比較情況。
為了驗(yàn)證所提方法的有效性,本文選擇兩種對比系統(tǒng)進(jìn)行實(shí)驗(yàn)比較。其中一種方法是一個(gè)傳統(tǒng)聲譽(yù)值節(jié)點(diǎn)選擇算法[16]。另一種是方法是利用基于主觀邏輯的聲譽(yù)值計(jì)算模型篩選任務(wù)執(zhí)行節(jié)點(diǎn),在計(jì)算節(jié)點(diǎn)聲譽(yù)值時(shí)參考所有與篩選節(jié)點(diǎn)共同訓(xùn)練過的節(jié)點(diǎn)對于篩選節(jié)點(diǎn)的評價(jià),并引入?yún)^(qū)塊鏈存儲節(jié)點(diǎn)的聲譽(yù)意見[18],分別簡稱為TRM和SLM,本文的模型稱為RBLNS。設(shè)置了手寫數(shù)字分類和函數(shù)回歸兩類實(shí)驗(yàn)來測試3個(gè)模型的效果。接下來將介紹實(shí)驗(yàn)環(huán)境設(shè)置并分析分類實(shí)驗(yàn)、回歸實(shí)驗(yàn)的結(jié)果。
聯(lián)邦學(xué)習(xí)任務(wù)中存在50個(gè)任務(wù)執(zhí)行節(jié)點(diǎn),其中10個(gè)節(jié)點(diǎn)也擔(dān)任任務(wù)發(fā)布節(jié)點(diǎn)(8個(gè)可靠的和2個(gè)不可靠的任務(wù)發(fā)布節(jié)點(diǎn))。所有任務(wù)執(zhí)行節(jié)點(diǎn)的數(shù)據(jù)集都存儲在IPFS中,便于檢索數(shù)據(jù)集的大小和類型。
對于手寫數(shù)字分類實(shí)驗(yàn),本文使用基于卷積神經(jīng)網(wǎng)絡(luò)的模型來執(zhí)行數(shù)字識別任務(wù),以評估由Pytorch框架實(shí)現(xiàn)的節(jié)點(diǎn)選擇模型。在實(shí)驗(yàn)中,使用MNIST數(shù)據(jù)集,該數(shù)據(jù)集有60 000個(gè)訓(xùn)練示例和10 000個(gè)測試示例,廣泛用于聯(lián)邦學(xué)習(xí)的性能評估實(shí)驗(yàn)[24-25]。在MNIST訓(xùn)練數(shù)據(jù)集中,對于誠實(shí)的高質(zhì)量任務(wù)執(zhí)行節(jié)點(diǎn),分配的數(shù)據(jù)集涵蓋所有10個(gè)類別(0~9),通過為各任務(wù)執(zhí)行節(jié)點(diǎn)有差別隨機(jī)分配每個(gè)類別數(shù)據(jù)的量,模擬誠實(shí)任務(wù)執(zhí)行節(jié)點(diǎn)的數(shù)據(jù)集主題與訓(xùn)練任務(wù)主題之間的差異;通過為各任務(wù)執(zhí)行節(jié)點(diǎn)分配不同數(shù)量的數(shù)據(jù),模擬誠實(shí)任務(wù)執(zhí)行節(jié)點(diǎn)的數(shù)據(jù)集的大小差異。為惡意節(jié)點(diǎn)分配少量或缺失某個(gè)類別的數(shù)據(jù),從而導(dǎo)致上傳低質(zhì)量本地模型。惡意任務(wù)發(fā)布節(jié)點(diǎn)通過發(fā)布虛假任務(wù)、錯(cuò)誤篩選任務(wù)執(zhí)行節(jié)點(diǎn)、錯(cuò)誤聚合最終結(jié)果。
對于回歸函數(shù)的訓(xùn)練,本文選擇了30個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)來共同訓(xùn)練函數(shù)y=cos(2πx),x∈[0,1]是聯(lián)邦學(xué)習(xí)的輸入,y作為輸出。其中25個(gè)誠實(shí)可靠的節(jié)點(diǎn),以及5個(gè)惡意節(jié)點(diǎn)。25個(gè)誠實(shí)節(jié)點(diǎn)有20~30個(gè)相關(guān)訓(xùn)練數(shù)據(jù)樣本,5個(gè)惡意節(jié)點(diǎn)中,2個(gè)節(jié)點(diǎn)有10個(gè)相關(guān)訓(xùn)練樣本,2個(gè)節(jié)點(diǎn)有5個(gè)相關(guān)訓(xùn)練樣本,1個(gè)數(shù)據(jù)節(jié)點(diǎn)有20個(gè)不相關(guān)訓(xùn)練數(shù)據(jù)樣本。惡意節(jié)點(diǎn)的處理與手寫數(shù)字識別實(shí)驗(yàn)一樣對應(yīng)的減少數(shù)據(jù)集的大小。
首先發(fā)布任務(wù)“識別手寫數(shù)字1”,通過調(diào)節(jié)可信任務(wù)執(zhí)行節(jié)點(diǎn)數(shù)據(jù)集中手寫數(shù)字1的圖片比例,來模擬不同任務(wù)執(zhí)行節(jié)點(diǎn)數(shù)據(jù)集的主題與任務(wù)要求的相關(guān)度不同,例如相關(guān)度為60%意味著100張圖片中只有60張是手寫數(shù)字1的圖片。如圖2,可以發(fā)現(xiàn)數(shù)據(jù)集過小或者數(shù)據(jù)集與任務(wù)要求的相似度較低都會影響訓(xùn)練的模型精度。當(dāng)數(shù)據(jù)集大小為200,數(shù)據(jù)集的任務(wù)相關(guān)度在100%時(shí),模型精度為90.1%,而數(shù)據(jù)集的任務(wù)相關(guān)度在60%時(shí),模型精度僅為83.2%,大約降低7個(gè)百分點(diǎn);同樣的當(dāng)數(shù)據(jù)集任務(wù)相關(guān)度在90%,數(shù)據(jù)集大小在1 000時(shí),精度為91.7%,而數(shù)據(jù)集大小在200時(shí),精度僅為89.1%,大約降低了3個(gè)百分點(diǎn)。由此可以看出,擁有低質(zhì)量數(shù)據(jù)集(數(shù)據(jù)集太小或者與任務(wù)相關(guān)性低)的惡意節(jié)點(diǎn)會生成低質(zhì)量本地模型,所以對參與任務(wù)執(zhí)行節(jié)點(diǎn)進(jìn)行篩選。
圖2 數(shù)據(jù)質(zhì)量對于模型精度的影響
5.1.1 手寫數(shù)字識別
本節(jié)將從手寫數(shù)字識別結(jié)果、惡意節(jié)點(diǎn)聲譽(yù)值變化情況、惡意節(jié)點(diǎn)識別能力、聚合模型的準(zhǔn)確率4個(gè)方面對3種模型進(jìn)行比較。
圖3展示了RBLNS、SLM、TRM三種模型對手寫數(shù)字識別結(jié)果。最左邊數(shù)字是RBLNS識別結(jié)果,中間數(shù)字是SLM的識別結(jié)果,最右邊數(shù)字是TRM的識別結(jié)果。對于總共20個(gè)手寫數(shù)字,RBLNS可以正確識別18個(gè)數(shù)字,而TRM和SLM可以分別識別17個(gè)和16個(gè)。一方面是由于RBLNS在篩選任務(wù)執(zhí)行節(jié)點(diǎn)時(shí)不僅以節(jié)點(diǎn)行為為篩選標(biāo)準(zhǔn),還考慮節(jié)點(diǎn)的數(shù)據(jù)集與當(dāng)前任務(wù)的貼合程度,從而篩選出行為可靠、數(shù)據(jù)集與任務(wù)需求高度相匹配的最佳任務(wù)執(zhí)行節(jié)點(diǎn)集合進(jìn)行訓(xùn)練。另一方面是由于RBLNS在聯(lián)邦學(xué)習(xí)聚合模型過程中對本地模型進(jìn)行篩選,通過篩選本地模型再聚合全局模型替代傳統(tǒng)聯(lián)邦學(xué)習(xí)的隨機(jī)聚合,從而提高了識別能力。
圖3 一個(gè)聯(lián)邦學(xué)習(xí)識別手寫數(shù)字的例子
5.1.2 惡意節(jié)點(diǎn)聲譽(yù)值變化情況
在對手寫數(shù)字分類任務(wù)中,為了驗(yàn)證3種方法對于二次任務(wù)執(zhí)行節(jié)點(diǎn)的篩選情況,假設(shè)任務(wù)執(zhí)行節(jié)點(diǎn)在執(zhí)行任務(wù)T之前至少會執(zhí)行6個(gè)任務(wù),且表現(xiàn)誠實(shí)可靠。然后惡意節(jié)點(diǎn)突然出現(xiàn)異常行為,實(shí)驗(yàn)結(jié)果如圖4所示。3種模型中對于突然出現(xiàn)異常行為的節(jié)點(diǎn)聲譽(yù)值都開始下降。而RBLNS在最短時(shí)間下降了最大幅度,可以快速識別惡意節(jié)點(diǎn)。這是由于RBLNS方法中通過對節(jié)點(diǎn)上傳的本地模型進(jìn)行驗(yàn)證生成節(jié)點(diǎn)聲譽(yù)意見,惡意任務(wù)執(zhí)行節(jié)點(diǎn)一旦行為表現(xiàn)異常,即上傳低質(zhì)量本地模型,驗(yàn)證節(jié)點(diǎn)會立即對他生成一個(gè)驗(yàn)證結(jié)果值為0的聲譽(yù)意見,且本文加大了對于惡意行為的權(quán)重,這將導(dǎo)致任務(wù)結(jié)束之后的直接聲譽(yù)值很低,又由于考慮了時(shí)間對于直接聲譽(yù)值的影響,短時(shí)間內(nèi)生成的聲譽(yù)意見在計(jì)算最終聲譽(yù)值的權(quán)重較大,所以RBLSN在短時(shí)間內(nèi)下降的幅度最大。
圖4 惡意節(jié)點(diǎn)在3種模型下聲譽(yù)值隨時(shí)間的變化
5.1.3 惡意節(jié)點(diǎn)識別能力
本文通過調(diào)整惡意節(jié)點(diǎn)相互勾結(jié)的比例來比較3種模型選擇節(jié)點(diǎn)的能力。實(shí)驗(yàn)結(jié)果如圖5所示。實(shí)驗(yàn)設(shè)置了4組具有不同程度勾結(jié)的參與節(jié)點(diǎn),勾結(jié)程度分別是0.0、0.1、0.2、0.3,0.0表示節(jié)點(diǎn)相互勾結(jié)的可能行為0,而0.1表示節(jié)點(diǎn)相互勾結(jié)的可能性為10%,0.2表示節(jié)點(diǎn)相互勾結(jié)的可能行為20%,0.3表示節(jié)點(diǎn)相互勾結(jié)的可能性為30%(此時(shí)被動惡意節(jié)點(diǎn)的數(shù)量小于30%)。
圖5 惡意節(jié)點(diǎn)互相勾結(jié)情況中3種模型的表現(xiàn)
如圖5(a)所示,在惡意節(jié)點(diǎn)之間不相互勾結(jié)的情況下,所有的方法都能在300秒內(nèi)完全識別惡意節(jié)點(diǎn)。然而,當(dāng)惡意節(jié)點(diǎn)之間相互勾結(jié)程度增加到0.2和0.3時(shí),RBLNS識別時(shí)間比其他兩種模型都短。因?yàn)镽BLNS的聲譽(yù)意見由驗(yàn)證節(jié)點(diǎn)生成并達(dá)成共識記錄在區(qū)塊鏈中,少數(shù)惡意節(jié)點(diǎn)相互勾結(jié)并不會影響共識結(jié)果。然后進(jìn)一步比較了3種模型在不同惡意節(jié)點(diǎn)相互勾結(jié)情況下將惡意節(jié)點(diǎn)識別出來的成功率,從圖5(b)中可以看出,當(dāng)所有節(jié)點(diǎn)相互勾結(jié)程度為0.05~0.15時(shí),SLM和RBLNS篩選成功率都比較高,但當(dāng)惡意節(jié)點(diǎn)相互勾結(jié)率上升為0.2~0.3時(shí),SLM的識別成功率明顯降低,RBLNS成功率仍然比較高。
5.1.4 全局模型精度
圖6顯示了在參與節(jié)點(diǎn)中惡意節(jié)點(diǎn)比例為20%的情況下,隨著FL迭代次數(shù)的增加,全局模型精度的變化。從這個(gè)圖,可以看到隨著迭代次數(shù)的增加,3種模型的最終訓(xùn)練精度都有所提高。五角星符號標(biāo)記了模型成功收斂,與TRM和SLM相比,RBLNS的全局模型精度略高于這兩個(gè)模型,收斂所需的迭代次數(shù)也減少。
圖6 當(dāng)惡意節(jié)點(diǎn)比例為20%時(shí),隨著迭代次數(shù)的變化,模型精度發(fā)生的變化
在圖7展示了在擬合回歸函數(shù)y=cos(2πx)的實(shí)驗(yàn)中,利用3種方法分別訓(xùn)練得到的函數(shù)模型隨著輸入的x的變化曲線??梢钥吹剑琑BLNS在最佳擬合函數(shù)方面的表現(xiàn)優(yōu)于TRM和SLM。由于RBLNS為任務(wù)選擇最佳的任務(wù)執(zhí)行節(jié)點(diǎn)集進(jìn)行協(xié)同訓(xùn)練,使得每次迭代的擬合效果更好,提高了學(xué)習(xí)速度。
圖7 聯(lián)邦學(xué)習(xí)回歸函數(shù)圖例
在本文中,本文提出了分布式聯(lián)邦學(xué)習(xí)系統(tǒng)并在此基礎(chǔ)上提出基于聲譽(yù)的學(xué)習(xí)節(jié)點(diǎn)選擇算法。本文使用區(qū)塊鏈的共識節(jié)點(diǎn)生成聲譽(yù)意見,利用區(qū)塊鏈的不易篡改的特性管理聲譽(yù)意見。在每個(gè)任務(wù)開始前,利用基于聲譽(yù)值的節(jié)點(diǎn)選擇算法,對任務(wù)發(fā)布節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)分別進(jìn)行選擇。又考慮到任務(wù)中節(jié)點(diǎn)角色的變化,不同的任務(wù)對應(yīng)不同的角色。針對不同的角色,設(shè)計(jì)了基于角色的聲譽(yù)值計(jì)算模型,計(jì)算任務(wù)發(fā)布節(jié)點(diǎn)以及任務(wù)執(zhí)行節(jié)點(diǎn)的聲譽(yù)值分別計(jì)算,也實(shí)現(xiàn)首次參與任務(wù)的節(jié)點(diǎn)與多次參加任務(wù)的節(jié)點(diǎn)聲譽(yù)值的分別計(jì)算。考慮到不同節(jié)點(diǎn)本地模型更新的異構(gòu)性,而且本地模型的準(zhǔn)確性會干擾模型聚合,本文會對收到本地模型篩選后聚合。實(shí)驗(yàn)結(jié)果表明,該算法能提高訓(xùn)練精度,縮短收斂時(shí)間。