譚榮杰,洪智勇,余文華,曾志強
五邑大學 智能制造學部,廣東 江門 529020
目前人工智能的算法、算力處于快速發展中,數據量的缺失成為了人工智能進一步發展的瓶頸。在實際的情況中,數據分散在許多不同的組織下,出于對數據隱私的保護,組織之間無法共享所有數據來訓練人工智能模型,聯邦學習[1-2]應運而生。聯邦學習讓大量邊緣設備能在本地上使用私有數據計算自己的模型,并通過聚合算法在云端把邊緣設備上傳的模型進行聚合得到一個共享模型。聯邦學習不需要邊緣設備之間的數據共享,這在某種程度上保護了數據的隱私和安全,因此逐漸成為機器學習中的熱門研究領域。但傳統聯邦學習仍存在挑戰:中心服務器在聚合邊緣設備的本地模型時發揮著重要作用,在中心服務器受到安全挑戰的情況下,不穩定的中心服務器會導致系統崩潰。區塊鏈有去中心化,不可篡改等安全特性,能解決聯邦學習里中心服務器的安全問題,因此其與聯邦學習的結合研究引起了廣泛關注。
區塊鏈是一種去中心化的分布式數據庫。與傳統中心化系統不同,區塊鏈不需要任何中心服務器,由于“最長鏈法則”和“梅克爾樹”結構的存在,它存儲的數據是不可篡改的,這兩個特性讓它成為分布式環境中可靠且值得信賴的系統,也讓很多研究工作把區塊鏈作為聯邦學習的底層基礎,通過在區塊鏈上層設計共識算法或者聚合算法來滿足模型聚合的需求。Kim等[3]提出一種基于區塊鏈的聯邦學習框架,在本地訓練過后將本地模型上傳至區塊鏈網絡,在經過礦工節點共識后在使用聯邦平均(Fedavg)[1]進行聚合,并且可以根據設備的產出速率等參數為設備提供獎勵。美國NEC實驗室和佐治亞理工學院的研究者提出了基于區塊鏈的自由聯邦學習框架(BAFFLE)[4],他們在私有的以太坊框架上實現了一個實用的,生產級別的BAFFLE,并使用大型的深度神經網絡展示BAFFLE的優點。在BAFFLE中可以評估每個用戶對模型的貢獻大小,進而決定用戶的獎勵。Zhou等[5]提出了一個基于區塊鏈和5G網絡的分布式機器學習安全框架,用5G網絡的通訊速度解決了聯邦學習的可用性問題,同時引入了區塊鏈分片技術和設計了一套梯度異常檢測策略。2021年,Li等[6]提出了基于區塊鏈的聯邦學習框架BFLC。詳細制定了模型的存儲方式,重新設計了新的訓練過程和新的共識機制。在論文中探討了BFLC的社區節點管理,防御惡意節點攻擊和優化存儲問題,通過在聯邦學習數據集上的實驗證明了BFLC的有效,并通過模擬惡意攻擊驗證了BFLC的安全性。2021年,Cao等[7]提出了DAG-FL架構,使用DAG區塊鏈架構改進去中心化聯邦學習的模型驗證機制,有效監測異常節點,并通過實驗證明其有效性。
目前已有的基于區塊鏈的聯邦學習框架工作研究主要集中在降低系統通信運算成本,改善資源分配,加強數據的安全性和可靠性,加強聯邦學習的魯棒性等方面。但隨著框架的大規模使用,協同數以萬計的設備及其私有數據集進行模型訓練,還會面臨由于場景和用戶不同帶來的數據非獨立同分布問題。聯邦學習可以分為橫向聯邦學習、縱向聯邦學習和聯邦遷移學習三類,其中橫向聯邦學習特點為每個客戶端的數據特征相同,用戶不同,理解為對樣本數量的擴充;縱向聯邦和聯邦遷移學習特點為用戶相同,但是數據特征不同,是對樣本數據特征的擴充。聯邦學習的數據非獨立同分布問題研究集中于橫向聯邦學習分類中[8]。同分布代表著數據趨勢平穩,分布沒有波動,所有數據的分布都遵循同一個概率。獨立性則代表每個樣本視作獨立的,相互之間無任何聯系。對于傳統的分布式機器學習來說,每個子數據集都是由總數據集劃分出來的,這些子數據集能夠代表著整體的分布。但對聯邦學習而言,每個設備上的私有數據都并非隨機收集或生成的,這導致了其有一定的關聯性,因此不具有獨立性。而每個設備的私有數據本地數據量不同,因此也違背了同分布性。這種由非獨立同分布數據引起的不平衡數據分布會給模型訓練帶來偏差,并可能導致聯邦學習的性能下降。
目前橫向聯邦學習的非獨立同分布數據的問題在進行中心化聯邦學習框架上有許多解決方法。Zhao等[8]提出一種策略,創建一個在所有私有數據集之間共享的數據子集來縮小每個模型之間的差距,從而提高非獨立同分布數據的訓練精度。Yoshida等[9]提出了新的聯邦學習機制Hybrid-FL,該機制設計了一種啟發式算法,讓中心服務器從隱私敏感度低的設備中收集數據來構造獨立同分布數據,并利用構造的數據訓練模型并聚合到全局模型。Wang等[10]提出了一種模型選擇的聚合算法,通過識別并排除對本地更新有偏差的模型來提高聚合后的全局模型精度。但這些方法和算法都是基于中心化的聯邦學習框架,利用中心服務器共享一部分數據或者挑選模型進行聚合,去中心化聯邦學習框架對非獨立同分布數據的精度下降問題依然存在。
因此,針對去中心化聯邦學習框架的非獨立同分布數據問題,本文受文獻[8]啟發,提出了一種模型相似度的計算方法,并根據該模型相似度設計新的去中心化聯邦學習策略。該策略將一個用少量獨立同分布數據訓練的模型放于智能合約中,并通過智能合約給每個上傳的邊緣模型計算模型相似度,本地設備可以根據模型相似度的排序挑選區塊鏈內的模型使用聯邦平均算法進行聚合。利用智能合約的測試集,由全局模型不斷更新替換用于比較的模型。實驗表明,與文獻[8]的原模型相似度相比,本文改進后的模型相似度能達到更好的效果,并通過對比實驗驗證,本文設計的去中心化聯邦學習策略在橫向聯邦學習的非獨立同分布數據環境下性能優于傳統去中心化聯邦學習策略。
本節介紹一種去中心化聯邦學習框架。如圖1所示,該框架主要由邊緣學習層、后端接口層、智能合約層和存儲層組成。

圖1 框架架構圖Fig.1 Frame architecture diagram
1.1.1 邊緣學習層
邊緣設備用自己的處理器和私有數據訓練模型。每個邊緣設備會自行訓練本地模型和聚合全局模型。
1.1.2 后端接口層
后端接口層處理邊緣設備傳輸上來的模型數據和http數據并轉發至智能合約層。
1.1.3 智能合約層
智能合約層部署超級賬本的智能合約節點,超級賬本是由Liunx基金會托管和管理的區塊鏈開源框架。可以在智能合約層對聯邦學習進行特殊操作,如檢驗精度,發放模型等。
1.1.4 存儲層
存儲層部署了超級賬本的存儲節點和星際文件系統。超級賬本框架會為一條聯盟鏈中的成員組建一個子網絡,子網絡的成員才能看到該鏈的交易數據和智能合約,以此來保證隱私性。而星際文件系統是一個集成了P2P網絡技術、DHT分布式Hash、BitTorrent傳輸技術、自認證文件系統SFS和Git版本控制系統的文件系統,其分片和哈希存儲的特性非常適合用于聯邦學習這種模型參數多,讀寫多的場景。
大部分去中心化聯邦學習研究都是基于文獻[3]提出的BlockFL架構進行改良,用于橫向聯邦學習。應用到上述框架中,BlockFL架構的去中心化聯邦學習策略步驟如下:
步驟1權威機構設定聯邦學習目前的輪數e,初始模型M0。由智能合約發放初始模型M0給邊緣節點,邊緣節點用自己的私有數據訓練初始模型M0得到本地模型Mn
步驟2每個邊緣節點上傳Mn至智能合約處,智能合約根據自己的測試集對模型精確度進行工作量證明,并發放上鏈許可。若一輪聯邦學習時間到或收集夠足夠的邊緣模型,智能合約給邊緣節點發出聚合信號。
步驟3每個邊緣節點從區塊鏈處讀出一輪聯邦學習中的邊緣模型隊列,對邊緣模型隊列使用聯邦平均算法進行聚合,得到一個全局模型Mg,并存入區塊鏈。
步驟4智能合約發送下一輪學習開始的信號至邊緣節點,邊緣節點用自己聚合好的全局模型開始下一輪的去中心化聯邦學習。
與原論文相比,以上策略將礦工驗證改為了智能合約驗證,并使用raft[11]算法進行區塊鏈節點的共識。但依然保留了其去中心化的思想和機制。
前文基于一種框架設計闡述了普通去中心化聯邦學習策略的流程,本章介紹一種基于同樣框架的去中心化聯邦學習的改進策略用于橫向聯邦學習。
通常來說,如果一個設備的私有數據都具備獨立同分布特性,則訓練出來深度學習模型參數應該都有一定的相似性,又如果一個設備的模型是由非獨立同分布特性的數據訓練出來的,其模型與標準模型的相似度一定小于獨立同分布數據訓練出來的模型。文獻[8]中為了研究非獨立同分布數據對聯邦平均聚合算法的影響,提出并推導了模型的權值差異:

其中,WFedAvg為使用聯邦平均聚合算法的聯邦學習后得到的全局模型里一層的參數,WSGD為使用隨機梯度下降,即傳統深度學習后得到的模型里一層的參數。
受此啟發,本文在公式(1)的基礎上,經過實驗比較,放大每一層之間的參數差,并把每一層的權值差異進行求和,作為兩個模型的模型相似度,并以此作為篩選模型的指標:

其中,n為模型的層數,Pak為模型a于第k層的參數,Pbk為模型b于第k層的參數。
基于該模型相似度,提出的策略步驟如下:
步驟1權威機構設定聯邦學習目前的輪數e,初始模型M0,并用收集或購買來的接近獨立同分步數據訓練一個比較模型Ms,得到精確度acc0。由智能合約發放初始模型M0給邊緣節點,邊緣節點用自己的私有數據訓練初始模型M0得到本地模型Mn。
步驟2每個邊緣節點上傳Mn至智能合約處,智能合約接收Mn后,給每個模型計算其與比較模型的模型相似度:,發送模型相似度至邊緣節點,邊緣節點將Mn和SMnM0存入區塊鏈。若一輪聯邦學習時間到或收集夠足夠的邊緣模型,智能合約給邊緣節點發出聚合信號。
步驟3每個邊緣節點從區塊鏈處讀出一輪聯邦學習中的邊緣模型隊列,對本輪邊緣模型的模型相似度進行升序排序,取前η個模型相似度對應的模型組成新的子集mi。對新邊緣模型隊列mi使用聯邦平均算法進行聚合,得到一個全局模型Mg,并存入區塊鏈,且至智能合約。
步驟4智能合約接受邊緣節點發來的全局模型后,用自己的測試集得出全局模型的精確度accn,如果accn>acc0,取Mg為比較模型,acc0=accn。
步驟5智能合約發送全局模型的準確率排序和下一輪學習開始的信號至邊緣節點,每個邊緣節點用準確率最高的全局模型開始下一輪的去中心化聯邦學習。
以上步驟如圖2所示。

圖2 改進策略流程圖Fig.2 Improvement strategy flowchart
本章將對模型相似度的改進進行實驗分析,并對非獨立同分布下的去中心化聯邦學習策略的性能提升進行對比實驗。下面從實驗環境設置、實驗設置、實驗評估指標、實驗參數、對比實驗五個方面展開論述。
實驗環境:GPU服務器環境有1個QuadroP5000GPU(16 GRAM),裝載centos7系統環境,機器學習功能使用基于python3.7的pytorch框架進行編程。后端編程使用gin框架,并使用golang語言編寫超級賬本的智能合約。超級賬本方面,實驗使用hyperledgefabric1.4版本,并把peer節點分為了3個組織,每個組織各有2個peer節點,且每個組織選一個節點部署智能合約,并啟用5個order節點執行raft共識服務。聯邦學習中每次使用GPU單機訓練一個模型并上傳到其中一個智能合約節點。
本文總共進行了5個訓練任務用于評價該策略的性能。第一個訓練任務是用一個簡單的CNN[12]模型對FashionMNIST[13]圖片數據集進行分類,CNN模型有兩個5×5的卷積層,第一個輸出通道為20,第二個輸出通道為50,兩個卷積層都由ReLU函數激活,每個之間使用2×2的最大池化層,再使用linear層和softmax層輸出。FashionMNIST具有60 000個樣本的訓練集和10 000個樣本的訓練集,里面包括T恤、褲子、外套等10個分類的圖片。獨立同分布數據組的設置方法為訓練集數據平均分給每個客戶端,即每個客戶端隨機分到1 200條數據。非獨立同分布數據組的設置方法為,首先,實驗對數據標簽進行排序,然后把排序后的訓練集分為1 200組,每一組有50個圖片,然后設置50個邊緣節點,每個邊緣節點先分到4個組的數據,然后剩余的數據隨機分給邊緣節點。通過使用這種分配方案,每個節點都被分配一個本地數據集,其中包括兩個大的分類和其他一些零碎的分類,而且每個節點的數據數量也不一樣。本任務設置每個邊緣節點用0.005的學習率訓練10輪,比較模型由被分配到最多數據的客戶端訓練10輪得出。
第二個訓練任務是用Alexnet[14]模型對cifar10數據集進行圖片分類。cifar10數據集有50 000個訓練樣本和10 000個測試樣本與FashionMNIST數據集的區別在于,cifar10是3通道的彩色圖片,而且是現實世界中的真實物體,噪聲大,物體比例和特征都不同,這讓識別更加復雜困難。同FashionMNIST的實驗設置相似,獨立同分布數據組為平均分給50個客戶端,即每個客戶端隨機分到1 000條數據。非獨立同分布數據組的設置先對cifar10的標簽進行排序,然后把排序后的訓練集分為1 000組,每一組有50個圖片。設置50個邊緣節點,每個節點分到兩組數據,剩下的組隨機分配。本任務設置邊緣節點用0.000 1的學習率訓練10輪,比較模型由被分配到最多數據的客戶端訓練10輪得出。
第三個訓練任務是用TextRNN[15]模型對THUnews[16]數據集進行新聞分類。THUnews數據集有74萬篇新聞文檔,并劃分出了財經、彩票、房產等14類類別。本任務隨機抽取50 000條數據作為訓練集的和,抽取了10 000條數據作為測試集,并設置了50個邊緣節點。在獨立同分布數據組設置上,把訓練集數據平均分給50個客戶端。在劃分非獨立同分布數據方面,本任務先對10 000條數據的標簽進行排序,并平均分配到邊緣節點中,剩下的數據進行隨機分配。本任務選擇使用TextRNN模型,邊緣節點以0.001的學習率訓練5輪,比較模型由被分配到最多數據的客戶端訓練5輪得出。
第四個訓練任務是用Resnet18[17]模型對SVHN[18]數據集進行圖片分類。SVHN數據集包含20多萬張由谷歌街景車拍攝的房屋門牌號的RGB圖像。每幅圖像中均包含有1到3位0~9的數字。本任務設置了50個邊緣節點。在獨立同分布數據組設置上,把73 257張訓練集數據幾乎平均分給50個客戶端,即每個客戶端分到1 465或1 466張圖片。在劃分非獨立同分布數據方面,實驗對數據標簽進行排序,然后把排序后的訓練集分為1 465組,每一組有50個圖片,然后設置50個邊緣節點,每個邊緣節點選4組數據,剩下的組隨機分配到不同節點。訓練參數方面,本任務設置每個邊緣節點以0.1的學習率用殘差網絡Resnet18訓練1輪,比較模型由被分配到最多數據的客戶端用同樣學習率訓練1輪得出。
第五個訓練任務是用LSTM[19]模型對sentiment140[20]數據集進行情感分類。sentiment140包含了1 600 000條從推特爬取的推文,并有正面、中立、負面3種標簽。本次任務隨機挑選30 000條作為訓練集,10 000條作為測試集,并設置50個邊緣節點。在獨立同分布數據組設置中,把訓練集數據平均分給50個客戶端,即每個客戶端有600條數據。在劃分非獨立同分布數據方面,本任務先對10 000條數據的標簽進行排序,并平均分配到邊緣節點中,剩下的數據進行隨機分配。本任務設置每個邊緣節點使用傳統的LSTM模型,以0.001的學習率訓練一輪,比較模型由被分配到最多數據的客戶端用同樣學習率訓練一輪得出。
模型相似度的性能評價指標為每輪聯邦學習之中邊緣模型與標準模型之間的模型相似度的方差,求方差是為了觀測每個邊緣模型與標準模型之間的模型相似度的離散程度,從而判斷該模型相似度計算方法的性能。公式如下:

其中si為一輪中每個邊緣模型與標準模型的相似度,sˉ為該輪中邊緣模型與標準模型的相似度的平均數,n為該輪中參與聯邦學習任務的設備數。
本文采用準確率作為該去中心化聯邦學習策略在五個深度學習任務的性能指標。本文用acc表示,計算如下:

其中TP為模型正確標注的數據,FP為模型錯誤標注的數據。
在實驗中,分別測試原模型相似度與改造后的模型相似度的性能,原模型相似度計算方法與改造模型相似度計算方法如下:

首先測試原模型相似度和改造模型相似度在非獨立同分布數據組下的方差,然后測試改造模型相似度在獨立同分布數據組下的方差。其中模型a為邊緣模型,模型b為標準模型,標準模型由每個任務的全部訓練集數據,并采用與邊緣設備相同的訓練參數得出。測試中5個任務中邊緣設備訓練參數相同,結果如圖3~7所示。然后使用兩個不同的模型相似度計算方法應用于本文去中心化聯邦學習策略中,在數據集分配,訓練模型相同,訓練參數相同的情況下,5個任務設置50個節點使用不同的模型相似度計算方法的策略在非獨立同分布數據集上進行50輪聯邦學習,設置模型聚合數量為η=25,展示每輪區塊鏈中存在的準確率最高的全局模型在測試集上的準確率變化,結果如圖8~12所示。

圖3 CNN模型相似度方差Fig.3 CNN model similarity variance

圖4 Alexnet模型相似度方差Fig.4 Alexnet model similarity variance

圖5 TextRNN模型相似度方差Fig.5 TextRNN model similarity variance

圖7 LSTM模型相似度方差Fig.7 LSTM model similarity variance

圖8 CNN模型訓練準確率變化Fig.8 Changes in training accuracy of CNN model
觀察圖3~7,在同樣的非獨立同分布數據集上進行聯邦學習,開始的時候由于每個邊緣數據的不同,所以邊緣模型差別大,對應模型相似度的方差也高。隨著輪數的增加,經過幾次模型聚合,邊緣模型的差別越來越小,模型相似度的方差也趨于比較穩定。

圖9 Alexnet模型訓練準確率變化Fig.9 Changes in training accuracy of Alexnet model

圖10 TextRNN模型訓練準確率變化Fig.10 Changes in training accuracy of TextRNN model

圖11 Resnet18模型訓練準確率變化Fig.11 Changes in training accuracy of Resnet18 model

圖12 LSTM模型訓練準確率變化Fig.12 Changes in training accuracy of LSTM model
在原模型相似度和改造模型相似度的對比實驗中,CNN任務改造模型相似度的方差比原模型相似度的方差平均高0.008 4,Alexnet任務改造模型相似度的方差比原模型相似度的方差平均高0.111 5,TextRNN任務改造模型相似度的方差比原模型相似度的方差平均高1.139 9,Resnet18任務改造模型相似度的方差比原模型相似度的方差平均高7 968,LSTM任務改造模型相似度的方差比原模型相似度的方差平均高0.053 4。在不同任務中,改造模型相似度的方差都比原模型相似度的方差高,即改造模型相似度的分離度比原模型相似度所得分離度大,這種更大的分離度更有利于策略中對模型相似度進行比較。
觀察圖6~8的準確率變化趨勢,雖然最后結果的相差并不大,但本文策略使用改造模型相似度后,節點能挑選出更多接近于獨立同分布數據訓練的邊緣模型進行聚合,導致訓練準確率的收斂速度顯著快于使用原模型相似度的策略。因此可以認為改造的模型相似度計算方法效果更佳。

圖6 Resnet18模型相似度方差Fig.6 Resnet18 model similarity variance
本文也測試了在非獨立同分布數據集與獨立同分布數據集下改造模型相似度的性能,CNN任務非獨立同分布數據集下改造模型相似度方差比在獨立同分布數據集下使用改造模型相似度的方差平均高0.010 6,Alexnet任務改造模型相似度的方差比原模型相似度的方差平均高0.078 7,TextRNN任務改造模型相似度的方差比原模型相似度的方差平均高1.164 9,Resnet18任務改造模型相似度的方差比原模型相似度的方差平均高7 967,LSTM任務改造模型相似度的方差比原模型相似度的方差平均高0.017 8。在不同任務中,非獨立同分布數據集下改造模型相似度方差都比在獨立同分布數據集下使用改造模型相似度的方差高,即改造模型相似度在非獨立同分布數據集下分離度更大,這也符合非獨立同分布數據集下每個邊緣模型差異度大的現象,因此可以選用公式(2)作為本策略的模型相似度計算方法。
本節使用文獻[3]中BlockFl的原始去中心化聯邦學習框架的策略與本文的改進策略在不同任務,不同設置模型聚合數下的性能對比。在數據集分配,訓練模型相同,訓練參數相同的情況下,展示5個任務設置50個節點使用原始策略和使用本文的策略在非獨立同分布數據集,獨立同分布數據集上進行50輪聯邦學習中每輪區塊鏈中存在的準確率最高的全局模型在測試集上的準確率。同時為了明確選擇模型數量與該策略精度的關系,分別進行設置模型聚合數量為η=40,η=35,η=30,η=25和η=20的實驗,結果如圖13~17及表1所示。

表1 各任務精度比較Table 1 Accuracy comparison for each task 單位:%

圖13 CNN模型訓練準確率Fig.13 Training accuracy of CNN model

圖14 Alexnet模型訓練準確率Fig.14 Training accuracy of alexnet model

圖16 Resnet18模型訓練準確率Fig.16 Training accuracy of Resnet18 model

圖17 LSTM模型訓練準確率Fig.17 Training accuracy of LSTM model
實驗結果表明,采用本文提出這種去中心化聯邦學習策略比起原始策略在5個不同領域任務的非獨立同分布數據集下的去中心化聯邦學習精度都有不同程度的提高,在使用簡單CNN模型訓練FashionMNIST的任務中準確率最高提升了2.51個百分點,在使用Alexnet模型訓練cifar10任務中準確率最高提升了5.16個百分點,在使用TextRNN模型訓練THUnews任務中準確率最高提升17.58個百分點,使用Resnet18模型訓練SVHN任務中準確率最高提升2.46個百分點,使用LSTM模型訓練sentiment140任務中準確率最高提升5.23個百分點。證明該策略不同的任務下都能通過改造的模型相似度挑選數據非獨立同分布程度更高的邊緣模型進行聚合,不讓獨立同分布數據訓練的邊緣模型聚合時污染全局模型,從而提高去中心化聯邦學習性能。值得注意的是,并非選擇的邊緣設備數量越少越好,如實驗所示,η太小會讓聯邦學習任務的數據不足,從而也會使全局模型收斂的速度降低。這啟示了該策略的劣勢為某些極端情況下,可能存在訓練數據不足從而影響聯邦學習性能。因此在使用該策略時需要選擇合適的η值。
本文提出了一種非獨立同分布數據下的去中心化聯邦學習策略,該策略可以使去中心化聯邦學習克服橫向聯邦學習中非獨立同分布數據的挑戰,盡量逼近單機深度學習的精度。其能在不處理訓練數據的情況下,篩選出近似獨立同分布的聯邦學習模型集進行聚合,并以此提高聯邦設備的數據質量。基本思想是在智能合約處使用改進的模型相似度比較模型訓練所用數據的非獨立同分布程度。實驗表明,使用該策略的去中心化聯邦學習性能在不同任務上都能得到了明顯提高。下一步研究方向為智能合約動態選擇策略中的參數問題,并加入基于模型相似度的激勵機制等內容,來加強區塊鏈在聯邦學習中的作用。