天天看點

《聯邦學習》——個人筆記(四)

第四章 橫向聯邦學習

4.1橫向聯邦學習的定義

橫向聯邦學習也稱為按樣本劃分的聯邦學習,可以應用于聯邦學習的各個參與方的資料集有相同的特征空間和不同的樣本空間的場景。

4.2 橫向聯邦學習架構

  • 4.2.1客戶-伺服器架構

    也被稱為主-從架構或者輪輻式架構。在這種系統中,具有資料結構的K個參與方(也叫做客戶或使用者)在伺服器(也叫做參數伺服器或者聚合伺服器)的幫助下,協作地訓練一個機器學習模型。橫向聯邦學習系統的訓練過程通常由下面四個步驟完成:

    (1)各參與方在本地計算模型梯度,并使用同态加密、差分隐私或秘密共享等加密技術,對梯度資訊進行掩飾,并将掩飾後的結果(簡稱為加密梯度)發送給聚合伺服器。

    (2)伺服器進行安全聚合操作,如使用基于同态加密的權重平均。

    (3)伺服器将聚合後的結果發送給各參與方。

    (4)各參與方對收到的梯度進行解密,并使用解密後的梯度結果更新自己的模型參數。

    上述步驟會持續進行,直到損失函數收斂或者達到允許的疊代次數的上限或允許的訓練時間。

    需要注意的是,上述步驟中參與方将梯度資訊發送給伺服器,伺服器将收到的梯度資訊進行聚合(例如,計算權重平均),再将聚合的梯度資訊發送給參與方。我們稱這種方法為梯度平均。除了共享梯度資訊,聯邦學習的參與方還可以共享模型的參數。參與方在本地計算模型參數,并将它們發送到伺服器。伺服器對收到的模型參數進行聚合(例如,計算權重平均),再将聚合的模型參數發送給參與方。我們稱這種方法為模型平均。

    模型平均和梯度平均都被稱為聯邦平均算法。

    如果聯邦學習使用了安全多方計算或加法同态加密技術,則上述架構便能防範半誠實伺服器的攻擊,并防止資料洩露。然而在協同學習過程中,若有一個惡意的參與方訓練生成對抗網絡(GAN),将可能導緻系統容易遭受攻擊。

  • 4.2.2對等網絡架構

    在這種架構下,不存在中央伺服器或者協調方,橫向聯邦學習系統的K個參與方也被稱為訓練方或分布式訓練方。每一個訓練方負責隻使用本地資料來訓練同一個機器學習模型。此外,訓練方們使用安全鍊路在互相之間傳輸模型參數資訊。為了保證任意兩方之間的通信安全,需要使用例如基于公共密鑰的加密方法等安全措施。

    由于對等網絡架構中不存在中央伺服器,訓練方們必須提前商定發送和接收模型參數的順序,主要有兩種方法可以達到目的:

    (1)循環傳輸

    在循環傳輸模式中,訓練方們被組織成一條鍊。第一個訓練方(即鍊首)将目前的模型參數發送給它的下一個訓練方。該訓練方接收來自上遊的模型參數後,将使用本地資料集的小批量資料更新收到的模型參數。之後,它将更新後的模型參數傳輸給下一方,例如1一直傳輸到K,之後K在傳輸給1。直到模型參數收斂或達到允許的最大訓練時間。

    (2)随機傳輸

    在随機傳輸中,第K個訓練方随機從其他訓練方中選擇一個,将模型參數發送給訓練方。在通過本地資料集訓練更新後再随機選擇一個訓練方。重複這種操作,直到模型參數收斂或達到允許的最大訓練時間。

  • 4.2.3 全局模型評估

    在橫向聯邦學習中,模型訓練和評估是在每個參與方中分布執行的,并且任意方都不能擷取其他方的資料集。是以,每個參與方都能輕易的使用自己的本地測試資料集來測試本地模型的性能,但得到全局模型的性能評價需要耗費更多資源。在這裡,本地模型性能表示某一參與方在本地測試資料集上檢驗得出的橫向學習模型的性能,全局模型性能表示所有參與方在測試資料集上對橫向聯邦學習模型進行測試得出的模型性能。模型性能可以表現為精确度、準确度和召回率等。

    對于客戶-伺服器架構,參與方和協作方能夠協作地獲得全局模型性能。在橫向聯邦學習的模型訓練過程中和模型訓練結束後,我們能根據以下步驟得到全局模型性能:

    (1)參與方使用本地的測試資料集,對現有的橫向聯邦學習模型進行性能評估。對于二分類任務,這一步将會生成本地模型測試結果(TP,FP,TN,FN),其中TP,FP,TN,FN分别表示真陽性、假陽性、真陰性和假陰性的測試結果的數量。

    (2)參與方将自身的模型預測結果發送給協調方

    (3)收集所有的本地模型預測結果後,協調方能夠計算全局模型性能測試結果。

    (4)協調方将計算得到的全局模型性能發送回給所有參與方。

    對于對等網絡架構,由于不存在中央協調方或者中央伺服器,要得到全局模型性能将會更為複雜。一種可能的方式是選取某一個參與方來充當一個臨時的協調方。之後我們能夠根據為上述客戶-伺服器架構設計的解決方案,得到對等網絡架構的全局模型性能。

4.3聯邦平均算法介紹

  • 4.3.1 聯邦優化

    (1)資料集的非獨立同分布

    對于一個在資料中心内的分布式優化,確定每一台機器都有着獨立同分布的資料集是容易辦到的,是以所有參與方的模型參數更新操作非常相似。而在聯邦優化中,這一條件難以實作,因為由不同參與方的擁有的資料可能有着完全不同的分布,即我們不能對分布式資料集進行IID假設。例如,相似的參與方可能擁有相似的本地訓練資料,而兩個随機選取的參與方可能擁有不同的訓練資料,因而他們會産生非常不同的模型參數更新。

    (2)不平衡的資料量

    聯邦學習的不同參與方通常擁有不同規模的訓練資料集。例如,相似的參與方可能擁有相似體量的本地訓練資料集,而兩個随機選取的參與方可能會擁有不同大小的訓練資料集

    (3)數量很大的參與方

    使用聯邦學習的應用可能需要涉及許多參與方,尤其是使用移動裝置的參與方。每一個使用者都可以在理論上參與到聯邦學習中來,這使得會出現參與方的數量和分散程度遠遠超過資料中心的情況。

    (4)慢速且不穩定的通信連接配接

    在資料中心裡,人們期望計算節點彼此間能夠快速通信,并且丢包率很低。然而,在聯邦學習中,客戶和伺服器間的通信依賴于現有的網絡連接配接。

    聯邦平均算法适用于下列有限加和形式的損失函數:

    Min f(w) = 1/n ∑fi(w)

    n表示訓練資料的數量,

    w∈Rd 表示d維的模型參數 。

    對于機器學習問題,我們一般選取 fi(w) = L(xi,yi;w)。其中L(xi,yi;w)表示在給定模型參數w上對樣本(xi,yi)進行預測所得到的的損失結果,xi和yi分别表示第i個訓練資料點及其相關标簽。

    假設有K個參與方在一個橫向聯邦學習系統中,設Dk表示由第k個參與方所擁有的資料集,Pk表示位于客戶k的資料點的索引集。設nk = |Pk|,表示Pk的基數(即集合的大小)。也就是說,我們假設第k個參與方有nk個資料點。是以,當總共有K個參與方時,上式可以寫為:

    F(w) = ∑nk/n Fk(w) , Fk(w) = 1/nk ∑fi(w)

    如果聯邦學習的K個參與方擁有的資料點是獨立同分布的,我們可以得到EDk[Fk(w)] = f(w),其中期望值EDk[.]表示對第k個參與方所擁有的資料點進行求期望。

    随機梯度下降可以友善的用于聯邦優化中,其中一個簡單的小批量梯度計算在每一輪訓練中都會被執行。在這裡一輪表示将本地模型更新從參與方發送至伺服器和從伺服器将聚合的結果發回參與方的步驟。這種方法在計算上式非常有效的,但需要非常多輪次的訓練才能得到令人滿意的模型。但,我們可以增加額外的計算來減少訓練模型所需的通信輪次,有兩種主要的增加計算方法:

    (1)增加并行度。我們可以加入更多的參與方,讓它們在通信輪次間各自獨立地進行模型訓練。

    (2)增加每一個參與方的計算。每一個參與方可以在兩個通信輪次之間進行更複雜的計算,例如進行多次本地模型更新疊代,而不是僅僅進行如單個批次的梯度計算這類簡單的計算。

  • 4.3.2 聯邦平均算法

    -聯邦平均算法允許我們能夠使用上述兩種方法來增加計算,計算量由三個關鍵參數控制:

    (1)參數ρ。指在每一輪中進行計算的客戶的占比。

    (2)參數S。指在每一輪中,每一個客戶在本地資料集上進行訓練的步驟數。

    (3)參數M。指客戶更新時使用的小批量的大小。我們使用M = ∞來表示完整的本地資料集被作為一個批量來處理。

    ρ控制着全局批的大小,當ρ=1時,表示所有參與方擁有的所有資料上試用全部訓練資料梯度下降。我們仍然通過標明的在參與方上使用所有的資料來選擇批量,我們稱這種簡單的基線算法為FederatedSGD。假設由不同參與方擁有的資料集符合IID條件,且批量的選取機制與通過随機選取樣本的方式不同,由FederatedSGD算法得到的批梯度g仍然滿足E[g] = ∇f(w)

    假設協作方或伺服器擁有初始模型,且參與方了解優化器的設定。對于擁有固定學習率μ 的分布式梯度下降的典型實作,在第t輪更新全局模型參數時,第k個參與方将會計算gk = ∇Fk(wt),即它在目前模型參數wt的本地資料的平均梯度,并且協調方将會根據以下公式聚合這些梯度并使用模型參數更新資訊:

    Wt+1 ←wt - μ∑nk/n gk

    式中,∑nk/n gk = ∇f(wt),假設由不同參與方擁有的資料集符合IID條件。協調方之後能夠将更新後的模型參數Wt+1送給各個參與方。或者協調方可将平均梯度gt= ∑nk/n gk 發送給各參與方,且參與方将根據上式計算更新後的模型參數wt+1。這種方法被叫做梯度平均。

聯邦平均算法:

在協調方執行:
初始化模型參數w0,并将原始的模型參數w0廣播給所有的參與方。
For 每一全局模型更新輪次t = 1,2.....do
	協調方确定Ct,即确定随機選取的max(Kρ,1)個參與方的集合。
	For 每一參與方k∈Ct并行do
		本地更新模型參數:w(k)t+1  ←  參與方更新(k,wt)
		将更新後的模型參數w(k)t+1  發送給協調方。
	End for
	協調方将收到的模型參數進行聚合,即對收到的模型參數使用權重平均:wt+1 = 	∑nk/n w(k)t+1 (權重平均隻考慮對于k∈Ct的參與方)。
	協調方檢查模型參數是否已經收斂。若收斂 ,則協調方給各個參與方發送信号,使	其停止模型訓練。
	協調方将聚合後的模型參數wt+1廣播給所有參與方。
End for


在參與方更新(k,wt):
從伺服器擷取最新的模型參數,即設w1,1(k) = wt
For 從1到疊代次數S的每一本地疊代i do
	批量(batches)←随機将資料集Dk劃分為批量M的大小
	從上一次疊代獲得本地模型參數,即設w1,i(k)  = wB,i-1(k)
	For 從1到批量數量B = nk/M的批量序号b do
		計算批量梯度gk(b)
		本地更新模型參數:wb+1,i(k) = wb,i(k)-μgk(b)
   End for
End for
獲得本地模型參數更新wt+1(k) = wB,S(k),并将其發送給協調方。
           
  • 4.3.3安全的聯邦平均算法

    聯邦平均算法會暴露中間結果的明文内容,例如從SGD或DNN模型參數等優化算法中産生的梯度資訊。他沒有提供任何安全保護,如果資料結構也被洩露,模型梯度或者模型參數的洩露可能會導緻重要資料和模型資訊的洩露。我們可以利用隐私保護技術,進而保護聯邦平均中的使用者隐私和資料安全。

    下面我們以同态加密為例:

安全的聯邦平均算法:
在協調方執行:
初始化模型參數w0,并将原始的模型參數w0廣播給所有的參與方。
For 每一全局模型更新輪次t = 1,2.....do
	協調方确定Ct,即确定随機選取的max(Kρ,1)個參與方的集合。
	For 每一參與方k∈Ct并行do
		本地更新模型參數:[[w(k)t+1]]  ←  參與方更新(k,[[wt]])
		将更新後的模型參數[[w(k)t+1  ]]以及相關的損失函數Lt+1(k)發送給協調方。
	End for
	協調方将收到的模型參數進行聚合,即對收到的模型參數使用權重平均:[[wt+1]] = ∑nk/n [[w(k)t+1]] (權重平均隻考慮對于k∈Ct的參與方)。
	協調方檢查損失函數 ∑nk/n Lt+1(k)是否已經收斂。若收斂 ,則協調方給各個參與方發送信号,使其停止模型訓練。
	協調方将聚合後的模型參數[[wt+1]]廣播給所有參與方。
End for


在參與方更新(k,[[wt]]):
從伺服器擷取最新的模型參數,即設w1,1(k) = [[wt]]
For 從1到疊代次數S的每一本地疊代i do
	批量(batches)←随機将資料集Dk劃分為批量M的大小
	從上一次疊代獲得本地模型參數,即設w1,i(k)  = wB,i-1(k)
	For 從1到批量數量B = nk/M的批量序号b do
		計算批量梯度gk(b)
		本地更新模型參數:wb+1,i(k) = wb,i(k)-μgk(b)
   End for
End for
獲得本地模型參數更新wt+1(k) = wB,S(k),在wt+1(k)上執行同态加密得到[[wt+1(k)]],并将[[wt+1(k)]]和相關損失Lt+1(k)發送給協調方。
           

4.4 聯邦平均算法的改進

  • 4.4.1 通信效率的提升

    (1)壓縮的模型參數更新 參與方正常計算模型更新,之後進行本地壓縮。壓縮的模型參數更新通常是真正更新的無偏估計值,這意味着它們在平均之後是相同的。一種執行模型參數更新壓縮的可行方法是使用機率分層。參與方之後給協調方發送壓縮更新,這樣可以降低通信開銷。

    (2)結構化的模型參數更新 在聯邦模型訓練過程中,模型參數更新被限制為允許有效壓縮操作的形式。例如,模型參數可能被強制要求是稀疏的或者低階的,或者可能被要求在一個使用更少變量進行參數化的限制空間内進行模型參數更新計算,之後優化過程将找出這種形式下最有可能的更新資訊,再将這個模型參數更新發送給協調方,以便降低通信開銷。

  • 4.4.2 參與方選擇

    參與方選擇的方法被推薦用來降低聯邦學習系統的通信開銷和每一輪全局模型訓練所需的時間。一種用于參與方選擇的方法,共包含兩個步驟。第一步是資源檢查,即向随機篩選出來的參與方發送資源查詢資訊,詢問他們的本地資源以及與訓練任務相關的資料規模。第二步是協調方使用這些資訊估計每一個參與方計算本地模型更新所需的時間,以及上傳更新所需的時間。之後,協調方将基于這些估計決定選擇哪一參與方。在給定一個全局疊代輪次所需的具體時間預算下,協調方希望選擇盡可能多的參與方。

4.5 挑戰和展望

第一個主要挑戰是在橫向聯邦學習系統裡,我們無法檢視或者檢查分布式的訓練的資料。這導緻了我們面對的主要問題之一,就是很難選擇機器學習模型的超參數以及設定優化器,尤其是在訓練DNN模型時。

第二個主要挑戰是如何有效的激勵公司和機構參與到橫向聯邦學習系統中來。

第三個主要挑戰是如何防止參與方的欺騙行為。我們通常假設參與方都是誠實的,然而在現實生活場景中,誠實隻有在法律和法規的限制下才會存在。例如,一個參與方可能欺騙性地宣傳自己能夠給模型貢獻訓練的資料點的數量,并謊報訓練模型的測試結果,以此獲得更多的益處。為了解決這種問題,我們需要涉及一種着眼全局的保護誠實參與方的方法。

繼續閱讀