王健宗,孔令煒,黃章成,陳霖捷,劉懿,何安珣,肖京
1. 平安科技(深圳)有限公司,廣東 深圳 518063
2. 中國平安保險(集團(tuán))股份有限公司,廣東 深圳 518031
隨著數(shù)字化技術(shù)進(jìn)入高速發(fā)展期,大數(shù)據(jù)和人工智能等技術(shù)迎來爆發(fā)式發(fā)展[1-2],這一方面為傳統(tǒng)業(yè)態(tài)帶來了升級變革的新機(jī)遇[3-5],另一方面不可避免地給數(shù)據(jù)和網(wǎng)絡(luò)安全帶來了全新的挑戰(zhàn),而數(shù)據(jù)孤島問題[6-7]是關(guān)鍵挑戰(zhàn)之一??v向來看,行業(yè)頂尖的巨頭公司壟斷了大量的數(shù)據(jù)信息,小公司往往很難得到這些數(shù)據(jù),導(dǎo)致企業(yè)間的層級和差距不斷拉大;橫向來看,同一層級不同行業(yè)的公司,由于系統(tǒng)和業(yè)務(wù)的閉塞性與阻隔性,很難實現(xiàn)數(shù)據(jù)信息的交流與整合,聯(lián)合建模需要跨越重重壁壘。
針對上述人工智能行業(yè)目前面臨的痛點,聯(lián)邦學(xué)習(xí)給出了答案。聯(lián)邦學(xué)習(xí)是由谷歌研究院在2016年率先提出的概念[8-10]。該技術(shù)可在數(shù)據(jù)不共享的情況下完成聯(lián)合建模。具體來講,各個數(shù)據(jù)擁有者(個人/企業(yè)/機(jī)構(gòu))的自有數(shù)據(jù)不會離開本地,通過聯(lián)邦系統(tǒng)中加密機(jī)制下的參數(shù)交換方式(即在不違反數(shù)據(jù)隱私法規(guī)的情況下)聯(lián)合建立一個全局的共享模型,建好的模型在各自的區(qū)域只為本地的目標(biāo)服務(wù)[11]。盡管聯(lián)邦學(xué)習(xí)[12-14]和分布式機(jī)器學(xué)習(xí)[15-19]有部分相似的地方,但是在應(yīng)用領(lǐng)域、系統(tǒng)設(shè)計、優(yōu)化算法方面,聯(lián)邦學(xué)習(xí)有自己的特征。在數(shù)據(jù)量龐大、所需計算資源較高時,分布式機(jī)器學(xué)習(xí)(如參數(shù)服務(wù)器)有明顯的優(yōu)勢,它將獨立同分布(independently identically distribution,IID)的數(shù)據(jù)或模型參數(shù)存儲在各個分布式節(jié)點上,中心服務(wù)器調(diào)動數(shù)據(jù)和計算資源,聯(lián)合訓(xùn)練模型。因客戶端的地理、時間等分布差異,聯(lián)邦學(xué)習(xí)經(jīng)常要處理非獨立同分布(non-IID)的數(shù)據(jù)。本文結(jié)合聯(lián)邦學(xué)習(xí)的現(xiàn)狀,對聯(lián)邦學(xué)習(xí)系統(tǒng)進(jìn)行分層,按模塊整理聯(lián)邦學(xué)習(xí)目前取得的相關(guān)成果。
聯(lián)邦學(xué)習(xí)算法結(jié)構(gòu)如圖1所示。
為了整合多個來源的數(shù)據(jù),當(dāng)前比較普遍的做法是通過數(shù)據(jù)預(yù)處理ETL(extracttransform-load)工具將不同源的數(shù)據(jù)移動到關(guān)系數(shù)據(jù)庫中,將具有龐大計算量的任務(wù)部署到多臺機(jī)器上,以提升計算效率,減少任務(wù)耗能。
多用戶{F1,…,FN},每個用戶客戶端擁有當(dāng)前用戶的數(shù)據(jù)集{D1,…,DN}。傳 統(tǒng) 的深度學(xué)習(xí)將這些數(shù)據(jù)收集在一起,得到匯總數(shù)據(jù)集D=U1∪,…∪UN,訓(xùn)練得到模型MSUM。聯(lián)邦學(xué)習(xí)方法則是由參與的用戶共同訓(xùn)練一個模型MFED,同時用戶數(shù)據(jù)Di保留在本地,不對外傳輸。如果存在一個非負(fù)實數(shù)δ,使得MFED的模型精度VFED與MSUM的模型精度VSUM滿足如下不等式:
2016年,谷歌研究院在解決面向用戶個體的鍵盤輸入法優(yōu)化問題時,提出了聯(lián)邦學(xué)習(xí)這一全新的人工智能解決方案。聯(lián)邦學(xué)習(xí)面向的場景是分散式則稱該聯(lián)邦學(xué)習(xí)算法達(dá)到δ-精度損失[4]。聯(lián)邦學(xué)習(xí)允許訓(xùn)練模型存在一定程度的性能偏差,但是為所有的參與方提供了數(shù)據(jù)的安全性和隱私保護(hù)。聯(lián)邦學(xué)習(xí)常用的框架有兩種,一種是客戶端-服務(wù)器架構(gòu)[8],另一種是對等網(wǎng)絡(luò)架構(gòu)[20]。在客戶端-服務(wù)器架構(gòu)中,聯(lián)邦學(xué)習(xí)的訓(xùn)練方式是讓各個數(shù)據(jù)持有方根據(jù)自己的條件和規(guī)則在本地訓(xùn)練模型,然后將脫敏參數(shù)匯總到中央服務(wù)器進(jìn)行計算,之后再下發(fā)回各個數(shù)據(jù)持有方更新自己本地的模型,直至全局模型穩(wěn)健為止。在對等網(wǎng)絡(luò)架構(gòu)中進(jìn)行聯(lián)邦學(xué)習(xí)訓(xùn)練時,參與方之間可以直接通信,不需要借助第三方,安全性得到了進(jìn)一步提高,但是需要更多的計算操作進(jìn)行加密和解密[21-24]。目前的研究更多的是基于第三方服務(wù)器的框架。因此本文著重介紹客戶端-服務(wù)器架構(gòu)的聯(lián)邦學(xué)習(xí)流程。
在物理層面上,聯(lián)邦學(xué)習(xí)系統(tǒng)一般由數(shù)據(jù)持有方和中心服務(wù)器組成。各數(shù)據(jù)持有方的本地數(shù)據(jù)的數(shù)量或特征數(shù)可能并不足以支持一次成功的模型訓(xùn)練,因此需要其他數(shù)據(jù)持有方的支持。而聯(lián)邦學(xué)習(xí)中心服務(wù)器的工作類似于分布式機(jī)器學(xué)習(xí)的服務(wù)器,其收集各數(shù)據(jù)持有方的梯度,并在服務(wù)器內(nèi)進(jìn)行聚合操作后返回新的梯度[25]。在一次聯(lián)邦學(xué)習(xí)的合作建模過程中,數(shù)據(jù)持有方對本地數(shù)據(jù)的訓(xùn)練僅發(fā)生在本地,以保護(hù)數(shù)據(jù)隱私,迭代產(chǎn)生的梯度在脫敏后被作為交互信息,代替本地數(shù)據(jù)上傳給第三方受信任的服務(wù)器,等待服務(wù)器返回聚合后的參數(shù),對模型進(jìn)行更新[8]。圖2展示了客戶端-服務(wù)器架構(gòu)的聯(lián)邦學(xué)習(xí)流程。
步驟1:系統(tǒng)初始化。首先由中心服務(wù)器發(fā)送建模任務(wù),尋求參與客戶端??蛻舳藬?shù)據(jù)持有方根據(jù)自身需求,提出聯(lián)合建模設(shè)想。在與其他合作數(shù)據(jù)持有方達(dá)成協(xié)議后,聯(lián)合建模設(shè)想被確立,各數(shù)據(jù)持有方進(jìn)入聯(lián)合建模過程。由中心服務(wù)器向各數(shù)據(jù)持有方發(fā)布初始參數(shù)。
步驟2:局部計算。聯(lián)合建模任務(wù)開啟并初始化系統(tǒng)參數(shù)后,各數(shù)據(jù)持有方將被要求首先在本地根據(jù)己方數(shù)據(jù)進(jìn)行局部計算,計算完成后,將本地局部計算所得梯度脫敏后進(jìn)行上傳,以用于全局模型的一次更新。
步驟3:中心聚合。在收到來自多個數(shù)據(jù)持有方的計算結(jié)果后,中心服務(wù)器對這些計算值進(jìn)行聚合操作,在聚合的過程中需要同時考慮效率、安全、隱私等多方面的問題。比如,有時因為系統(tǒng)的異構(gòu)性,中心服務(wù)器可能不會等待所有數(shù)據(jù)持有方的上傳,而是選擇一個合適的數(shù)據(jù)持有方子集作為收集目標(biāo),或者為了安全地對參數(shù)進(jìn)行聚合,使用一定的加密技術(shù)對參數(shù)進(jìn)行加密,這些方法將會在后面的章節(jié)中詳細(xì)討論。
步驟4:模型更新。中心服務(wù)器根據(jù)聚合后的結(jié)果對全局模型進(jìn)行一次更新,并將更新后的模型返回給參與建模的數(shù)據(jù)持有方。數(shù)據(jù)持有方更新本地模型,并開啟下一步局部計算,同時評估更新后的模型性能,當(dāng)性能足夠好時,訓(xùn)練終止,聯(lián)合建模結(jié)束。建立好的全局模型將會被保留在中心服務(wù)器端,以進(jìn)行后續(xù)的預(yù)測或分類工作。
上述過程是一個典型的基于客戶端-服務(wù)器架構(gòu)的聯(lián)邦學(xué)習(xí)過程。但并不是每個聯(lián)邦學(xué)習(xí)任務(wù)都一定要嚴(yán)格按照這樣的流程進(jìn)行操作,有時可能會針對不同場景對流程做出改動,例如,適當(dāng)?shù)販p少通信頻率來保證學(xué)習(xí)效率[26-31],或者在聚合后增加一個邏輯判斷,判斷接收到的本地計算結(jié)果的質(zhì)量[32-35],以提升聯(lián)邦學(xué)習(xí)系統(tǒng)的魯棒性[36]。
基于客戶端-服務(wù)器架構(gòu)的聯(lián)邦學(xué)習(xí)和分布式機(jī)器學(xué)習(xí)[37]都是用來處理分布式數(shù)據(jù)的,但在應(yīng)用領(lǐng)域、數(shù)據(jù)屬性和系統(tǒng)構(gòu)成等方面,其與分布式機(jī)器學(xué)習(xí)存在差異,主要如下。
(1)應(yīng)用領(lǐng)域
大量的數(shù)據(jù)或者較大的模型往往對計算資源有較高的要求。單一的計算節(jié)點已經(jīng)不能滿足需求。分布式機(jī)器學(xué)習(xí)將訓(xùn)練數(shù)據(jù)或模型參數(shù)分布在各個計算或存儲節(jié)點,利用中心服務(wù)器對節(jié)點進(jìn)行調(diào)度,加速模型的訓(xùn)練。而當(dāng)數(shù)據(jù)具有隱私敏感屬性時,分布式機(jī)器學(xué)習(xí)的中心調(diào)度將會給用戶數(shù)據(jù)帶來極大的隱私泄露風(fēng)險[38]。聯(lián)邦學(xué)習(xí)始終將數(shù)據(jù)存儲在本地,相比需要將數(shù)據(jù)上傳到服務(wù)器的方式,可以最大限度地保障數(shù)據(jù)隱私。
(2)數(shù)據(jù)屬性
機(jī)器學(xué)習(xí)的主要目的是尋找數(shù)據(jù)的概率分布,這在數(shù)據(jù)集滿足獨立同分布的情況下相對比較容易。分布式機(jī)器學(xué)習(xí)與經(jīng)典機(jī)器學(xué)習(xí)處理的數(shù)據(jù)往往是獨立同分布的,聯(lián)邦學(xué)習(xí)則有所不同。由于客戶端的地理位置、時間等分布的差異性,聯(lián)邦學(xué)習(xí)系統(tǒng)的原始數(shù)據(jù)往往是非獨立同分布的。同時,橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)也是根據(jù)客戶端數(shù)據(jù)的不同屬性來進(jìn)行分類的??蛻舳酥g的數(shù)據(jù)特征和分類標(biāo)簽差異較大,在進(jìn)行訓(xùn)練時需要進(jìn)行對齊工作。
(3)系統(tǒng)構(gòu)成
在物理組成上,聯(lián)邦學(xué)習(xí)系統(tǒng)和分布式系統(tǒng)較為相似,都由中心服務(wù)器和多個分布式節(jié)點構(gòu)成。在分布式系統(tǒng)中,數(shù)據(jù)計算和模型更新統(tǒng)一由中心服務(wù)器進(jìn)行調(diào)度,節(jié)點和中心服務(wù)器之間的數(shù)據(jù)時延較小,模型訓(xùn)練時間主要由計算時間決定。而在聯(lián)邦系統(tǒng)中,各個參與方地位平等,可以自主決定是否參與模型訓(xùn)練。且由于分布式節(jié)點多為計算能力差異較大、網(wǎng)絡(luò)環(huán)境不同以及所處狀態(tài)不可控的客戶端,在系統(tǒng)設(shè)計上,需要考慮數(shù)據(jù)傳遞時延、數(shù)據(jù)非獨立同分布以及隱私安全等眾多因素,這就要求系統(tǒng)對聯(lián)邦學(xué)習(xí)算法做出適應(yīng)性的改變[39-41]。聯(lián)邦聚合是聯(lián)邦學(xué)習(xí)系統(tǒng)中不同于分布式機(jī)器學(xué)習(xí)的優(yōu)化算法,為解決數(shù)據(jù)非獨立同分布和減輕數(shù)據(jù)異構(gòu)提供了新的思路。同時,由于聯(lián)邦學(xué)習(xí)具有極好的隱私保護(hù)能力,在系統(tǒng)的各個環(huán)節(jié)都要注意加密算法的應(yīng)用。加密數(shù)據(jù)的傳遞、目標(biāo)函數(shù)損失的計算、梯度的計算與傳遞模型參數(shù)的傳遞等都對傳統(tǒng)的算法提出了新的要求。
聯(lián)邦學(xué)習(xí)的孤島數(shù)據(jù)有不同的分布特征。對于每一個參與方來說,自己所擁有的數(shù)據(jù)可以用一個矩陣來表示。矩陣的每一行表示每一個用戶或者一個獨立的研究對象,每一列表示用戶或者研究對象的一種特征。同時,每一行數(shù)據(jù)都會有一個標(biāo)簽。對于每一個用戶來說,人們希望通過他的特征X,學(xué)習(xí)一個模型來預(yù)測他的標(biāo)簽Y。在現(xiàn)實中,不同的參與方可能是不同的公司或者機(jī)構(gòu),人們不希望自己的數(shù)據(jù)被別人知道,但是人們希望可以聯(lián)合訓(xùn)練一個更強大的模型來預(yù)測標(biāo)簽Y。
根據(jù)聯(lián)邦學(xué)習(xí)的數(shù)據(jù)特點(即不同參與方之間的數(shù)據(jù)重疊程度),聯(lián)邦學(xué)習(xí)可被分為橫向聯(lián)邦學(xué)習(xí)[42]、縱向聯(lián)邦學(xué)習(xí)[43]、遷移聯(lián)邦學(xué)習(xí)[44]。
當(dāng)兩個參與方的用戶重疊部分很少,但是兩個數(shù)據(jù)集的用戶特征重疊部分比較多時,這種場景下的聯(lián)邦學(xué)習(xí)叫作橫向聯(lián)邦學(xué)習(xí)。比如一個銀行系統(tǒng)在深圳和上海的分部為參與方,兩邊業(yè)務(wù)類似,收集的用戶數(shù)據(jù)特征比較類似,但是兩個分部的用戶大部分是本地居民,用戶重疊比較少,當(dāng)兩個分部需要做聯(lián)邦模型對用戶進(jìn)行分類的時候,就屬于橫向聯(lián)邦學(xué)習(xí)。
當(dāng)兩個參與方的用戶重疊部分很多,但是兩個數(shù)據(jù)集的用戶特征重疊部分比較少時,這種場景下的聯(lián)邦學(xué)習(xí)叫作縱向聯(lián)邦學(xué)習(xí)。比如同一個地區(qū)的兩個機(jī)構(gòu),一個機(jī)構(gòu)有用戶的消費記錄,另一個機(jī)構(gòu)有用戶的銀行記錄,兩個機(jī)構(gòu)有很多重疊用戶,但是記錄的數(shù)據(jù)特征是不同的,兩個機(jī)構(gòu)想通過加密聚合用戶的不同特征來聯(lián)合訓(xùn)練一個更強大的聯(lián)邦學(xué)習(xí)模型,這種類型的機(jī)器學(xué)習(xí)模型就屬于縱向聯(lián)邦學(xué)習(xí)。
當(dāng)兩個參與方的用戶重疊部分很少,兩個數(shù)據(jù)集的用戶特征重疊部分也比較少,且有的數(shù)據(jù)還存在標(biāo)簽缺失時,這種場景下的聯(lián)邦學(xué)習(xí)叫作遷移聯(lián)邦學(xué)習(xí)。比如兩個不同地區(qū)的機(jī)構(gòu),一個機(jī)構(gòu)擁有所在地區(qū)的用戶消費記錄,另一個機(jī)構(gòu)擁有所在地區(qū)的銀行記錄,兩個機(jī)構(gòu)具有不同的用戶,同時數(shù)據(jù)特征也各不相同,在這種情況下聯(lián)合訓(xùn)練的機(jī)器學(xué)習(xí)模型就是遷移聯(lián)邦學(xué)習(xí)。
目前大部分的研究是基于橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)的,遷移聯(lián)邦學(xué)習(xí)領(lǐng)域的研究暫時還不多。因此,本文將重點討論橫向聯(lián)邦學(xué)習(xí)和縱向聯(lián)邦學(xué)習(xí)的算法類型。橫向聯(lián)邦學(xué)習(xí)中數(shù)據(jù)特征重疊維度較多,根據(jù)重合維度進(jìn)行對齊,取出參與方數(shù)據(jù)中特征相同而用戶不完全相同的部分進(jìn)行聯(lián)合訓(xùn)練;縱向聯(lián)邦學(xué)習(xí)用戶重合較多,根據(jù)用戶ID進(jìn)行匹配,取出參與方數(shù)據(jù)中用戶相同而特征不完全相同的部分進(jìn)行聯(lián)合訓(xùn)練。
基于上述對聯(lián)邦學(xué)習(xí)的介紹,總結(jié)出以下幾點聯(lián)邦學(xué)習(xí)算法的特點。
● 支持非獨立同分布數(shù)據(jù):這是聯(lián)邦學(xué)習(xí)算法的一個很重要的特性。聯(lián)邦學(xué)習(xí)算法必須在非獨立同分布數(shù)據(jù)中有良好的表現(xiàn)。在聯(lián)邦學(xué)習(xí)的實際使用中,數(shù)據(jù)持有方的數(shù)據(jù)質(zhì)量和分布是不可控的,無法要求數(shù)據(jù)持有方的數(shù)據(jù)滿足獨立同分布[45],因此聯(lián)邦學(xué)習(xí)算法需要支持非獨立同分布數(shù)據(jù)。
● 通信高效:聯(lián)邦學(xué)習(xí)算法需要考慮數(shù)據(jù)持有方的系統(tǒng)異構(gòu)性,并在不損失準(zhǔn)確率或損失很小的情況下提高通信效率,降低通信損耗。
● 快速收斂:在聯(lián)合建模過程中,首先需要保證模型收斂,同時需要提高收斂速度。
● 安全性和隱私性:數(shù)據(jù)隱私安全是聯(lián)邦學(xué)習(xí)的重要特點,因此安全性和隱私性是對聯(lián)邦梯度更新的必要要求。安全性和隱私性可以通過加密等方式在聚合過程中進(jìn)行,也可以反映在單機(jī)優(yōu)化的過程中。
● 支持復(fù)雜用戶:復(fù)雜用戶指用戶本身數(shù)量大,且用戶數(shù)據(jù)存在不均衡性或偏移。這在聯(lián)邦學(xué)習(xí)的實際應(yīng)用中是非??赡艿?,聯(lián)邦優(yōu)化算法需要對這種情況具有很好的兼容效果。
聯(lián)邦學(xué)習(xí)系統(tǒng)是面向多客戶端的模型訓(xùn)練系統(tǒng),各個客戶端在參與訓(xùn)練時,數(shù)據(jù)保留在本地,不會被發(fā)送給其他客戶端或中心服務(wù)器。中心服務(wù)器通過對客戶端發(fā)送的本地模型更新進(jìn)行整合,最終完成共享模型的訓(xùn)練??蛻舳嗽谶M(jìn)行本地模型訓(xùn)練時,由于設(shè)備間計算能力的差異,各個客戶端完成計算的時間不同。同時由于本地數(shù)據(jù)和全局?jǐn)?shù)據(jù)之間的分布差異,部分異常數(shù)據(jù)會對共享模型造成破壞,導(dǎo)致模型精度降低。聯(lián)邦學(xué)習(xí)算法針對以上問題,在機(jī)器學(xué)習(xí)算法和深度學(xué)習(xí)的基礎(chǔ)上做出修改,滿足非獨立同分布數(shù)據(jù)、網(wǎng)絡(luò)時延以及隱私保護(hù)的需求。
聯(lián)邦機(jī)器學(xué)習(xí)算法指在聯(lián)邦學(xué)習(xí)框架下的經(jīng)典機(jī)器學(xué)習(xí)算法實現(xiàn)。聯(lián)邦機(jī)器學(xué)習(xí),尤其是橫向聯(lián)邦學(xué)習(xí),在整體模式上與分布式機(jī)器學(xué)習(xí)類似[16]。但是,相較于傳統(tǒng)的機(jī)器學(xué)習(xí)算法,由于聯(lián)邦學(xué)習(xí)特有的迭代模式和特點,即需要在數(shù)據(jù)不出本地的基礎(chǔ)上雙方交換訓(xùn)練參數(shù)以完成聯(lián)合建模,聯(lián)邦學(xué)習(xí)框架下的機(jī)器學(xué)習(xí)算法實現(xiàn)更加復(fù)雜。聯(lián)邦機(jī)器學(xué)習(xí)算法的實現(xiàn)往往基于上述聯(lián)邦優(yōu)化算法的框架,但因為機(jī)器學(xué)習(xí)算法之間的差異性,有時又需要做一些針對性的修改,同時也需要考慮實際過程中的安全性等因素。下面介紹幾種目前常見的聯(lián)邦機(jī)器學(xué)習(xí)算法。
3.1.1 聯(lián)邦線性算法
Yang K等人[30]提出了一種中心聯(lián)邦學(xué)習(xí)框架下的縱向聯(lián)邦邏輯回歸實現(xiàn)方法,這種方法實現(xiàn)了縱向聯(lián)邦學(xué)習(xí)中的邏輯回歸,其目標(biāo)函數(shù)是:
其中,ω為模型的參數(shù),xn為模型的特征,yn為模型的標(biāo)簽,n∈{1,N}為數(shù)據(jù)的數(shù)量,為模型損失函數(shù)。在縱向聯(lián)邦學(xué)習(xí)中,通常假設(shè)數(shù)據(jù)持有方分為有標(biāo)簽數(shù)據(jù)持有方和無標(biāo)簽數(shù)據(jù)持有方。這種算法在聯(lián)邦優(yōu)化算法的框架下結(jié)合了同態(tài)加密的思想,訓(xùn)練過程通過同態(tài)加密的方法對雙方的數(shù)據(jù)和梯度進(jìn)行加密。假設(shè)無標(biāo)簽數(shù)據(jù)持有方α的數(shù)據(jù)為其中表示第τ輪狀態(tài)下的無標(biāo)簽數(shù)據(jù)持有方的模型參數(shù)。用[dα]表示對dα的同態(tài)加密,整個訓(xùn)練過程可以描述如下。
無標(biāo)簽數(shù)據(jù)持有方α首先向有標(biāo)簽數(shù)據(jù)持有方β發(fā)送及β計算梯度與損失,加密后回傳。中心服務(wù)器收集來自α、β的加密梯度后,輔助α、β進(jìn)行模型更新。為減少通信次數(shù),降低通信損耗,這種方法引入了一個向量s來體現(xiàn)模型的變化,輔助更新,并且使用了周期性梯度更新。
Yang S W等人[41]提出了一種去中心聯(lián)邦學(xué)習(xí)框架下的縱向聯(lián)邦邏輯回歸實現(xiàn)方法。他們認(rèn)為在現(xiàn)實生活中,找到合作雙方共同信任的第三方輔助方是很難的,并且這也在無形中提高了數(shù)據(jù)泄露的風(fēng)險和系統(tǒng)的整體復(fù)雜性,因此他們認(rèn)為取消第三方的參與對整個過程有很大的積極意義。
在這種方法中,有標(biāo)簽數(shù)據(jù)持有方在訓(xùn)練過程中起主導(dǎo)作用。從某種意義上講,有標(biāo)簽數(shù)據(jù)持有方承擔(dān)了被取消的中心服務(wù)器的責(zé)任。假設(shè)有標(biāo)簽數(shù)據(jù)持有方α和無標(biāo)簽數(shù)據(jù)持有方β協(xié)定合作建模,α首先向β發(fā)送建模密鑰,α、β分別初始化參數(shù)ω1、ω2,并計算ωixi,其中i∈{{1,2}。計算完畢后β將計算結(jié)果發(fā)送給α,α對雙方計算結(jié)果取和,并利用邏輯回歸方程求取最終輸出,在對相同標(biāo)簽值計算損失結(jié)果后,加密損失并返回。之后雙方分別計算梯度(對于β來說是加密后的梯度)。β將加密后的梯度添加噪聲后交由α解密返回,雙方分別進(jìn)行梯度更新。在整個過程中,雙方彼此之間始終對數(shù)據(jù)進(jìn)行保密,傳輸通道中也均為保密信息,這就使得數(shù)據(jù)的隱私性不止針對合作方,也擁有了一定的對抗外部異常攻擊的能力。
3.1.2 聯(lián)邦樹模型
Liu Y等人[46]提出了一種基于中心縱向聯(lián)邦學(xué)習(xí)框架的隨機(jī)森林實現(xiàn)方法——聯(lián)邦森林。在建模過程中,每棵樹都實行聯(lián)合建模,其結(jié)構(gòu)被存儲在中心服務(wù)器及各個數(shù)據(jù)持有方,但是每個數(shù)據(jù)持有方僅持有與己方特征匹配的分散節(jié)點信息,無法獲得來自其他數(shù)據(jù)持有方的有效信息,以保障數(shù)據(jù)的隱私性。最終整個隨機(jī)森林模型的結(jié)構(gòu)被打散存儲,中心服務(wù)器中保留完整的結(jié)構(gòu)信息,節(jié)點信息被分散在各數(shù)據(jù)持有方。在使用模型進(jìn)行預(yù)測時,首先獲取本地存儲的節(jié)點信息,然后通過中心節(jié)點聯(lián)合調(diào)用樹結(jié)構(gòu)中其他客戶端的節(jié)點信息。這種方法減少了預(yù)測時每棵樹的通信頻率,對提高通信效率有一定的幫助。
SecureBoost[47]是一種基于梯度提升決策樹(gradient boosting decision tree,GBDT)的去中心縱向聯(lián)邦學(xué)習(xí)框架,同樣包含有標(biāo)簽數(shù)據(jù)持有方和無標(biāo)簽數(shù)據(jù)持有方。梯度提升決策樹算法中聯(lián)邦學(xué)習(xí)需要交換的參數(shù)與聯(lián)邦線性算法有很大區(qū)別,涉及二階導(dǎo)數(shù)項。根據(jù)一般的梯度提升決策樹算法,目標(biāo)函數(shù)為:
其中,τ為回歸樹的第τ次迭代,τL為目標(biāo)函數(shù)的最小化損失值,j(·,·)為每個葉子節(jié)點上損失的計算函數(shù),F(xiàn)(x)為預(yù)測殘差的一階、二階導(dǎo)數(shù)之和,即泰勒二次展開式。為防止過擬合,在損失函數(shù)中添加正則項:
其中,γ和λ為超參數(shù),分別控制樹和特征的數(shù)量,ω為權(quán)重值,T為原始損失函數(shù)。
在一般分布式機(jī)器學(xué)習(xí)中,可以通過向參與方發(fā)送F(x)實現(xiàn)聯(lián)合建模。但是由于使用F(x)可以反推出數(shù)據(jù)標(biāo)簽,這樣的方法顯然不適用于聯(lián)邦學(xué)習(xí)框架,因此,SecureBoost采用一種在保護(hù)數(shù)據(jù)隱私的同時,保證訓(xùn)練性能的聯(lián)合建模方法。有標(biāo)簽數(shù)據(jù)持有方α首先計算F(x),并將結(jié)果加密后發(fā)送給無標(biāo)簽數(shù)據(jù)持有方β。β根據(jù)同態(tài)加密求和方法進(jìn)行局部求和,并將結(jié)果回傳。收到計算結(jié)果后,α將數(shù)據(jù)按照特征分桶,并進(jìn)行聚合操作,將加密結(jié)果發(fā)送給β。最終由α將從β中收集的局部最優(yōu)解進(jìn)行聚合,產(chǎn)生最優(yōu)解,并下發(fā)回β,完成聯(lián)合建模的過程。需要說明的是,SecureBoost支持多方合作,即無標(biāo)簽數(shù)據(jù)持有方β表示所有無標(biāo)簽數(shù)據(jù)持有方的集合,但是有標(biāo)簽數(shù)據(jù)持有方僅為一方。與分布式XGBoost相比,SecureBoost在保障模型準(zhǔn)確率的情況下,保護(hù)了數(shù)據(jù)的隱私,成功地將縱向GBDT應(yīng)用到聯(lián)邦學(xué)習(xí)框架中。
Li Q B等人[48]提出了一種實現(xiàn)多方GBDT建模的去中心橫向聯(lián)邦學(xué)習(xí)框架——基于相似度的聯(lián)邦學(xué)習(xí)(similarity-based federated learning,SimFL)。這種方法總體分為兩個步驟。首先,在預(yù)訓(xùn)練時,各個數(shù)據(jù)持有方在本地對數(shù)據(jù)進(jìn)行哈希分類,分類依據(jù)為局部敏感哈希(locality sensitive hashing,LSH);之后對各個本地哈希表進(jìn)行聚合,生成全局哈希表,并向所有數(shù)據(jù)持有方發(fā)布。因此各個數(shù)據(jù)持有方在訓(xùn)練階段可以基于全局哈希表進(jìn)行建模,而不會直接接觸到其他數(shù)據(jù)持有方的數(shù)據(jù)。LSH還可以用于獲得不同數(shù)據(jù)持有方之間數(shù)據(jù)的相似性,數(shù)據(jù)的相似度越高,在哈希表中表現(xiàn)相同值的可能性就越大。
當(dāng)某個數(shù)據(jù)持有方表現(xiàn)出與多個數(shù)據(jù)持有方有高度的數(shù)據(jù)相似性時,可以認(rèn)為這個數(shù)據(jù)持有方的數(shù)據(jù)是很重要的,因此SimFL使用一種加權(quán)梯度上升(weighted gradient boosting)的方法進(jìn)行單棵樹建模,具體思想表現(xiàn)為將相似程度與梯度權(quán)值關(guān)聯(lián),相似程度越大,梯度權(quán)值越高,聚合時產(chǎn)生的表現(xiàn)力就越強。
這種通過哈希表加密的方法單從隱私保護(hù)性能上來講,無法超越差分隱私等方法,但是在犧牲小部分隱私保護(hù)強度的情況下,該方法在通信效率方面得到了補償,是一種聯(lián)邦學(xué)習(xí)框架下樹類算法實現(xiàn)的新方向。
3.1.3 聯(lián)邦支持向量機(jī)
Hartmann V等人[49]提出了一種將支持向量機(jī)(support vector machine,SVM)安全部署在聯(lián)邦學(xué)習(xí)中的方法,主要通過特征哈希、更新分塊等方式對數(shù)據(jù)隱私性進(jìn)行保障。其目標(biāo)函數(shù)如下:
其中,N為訓(xùn)練數(shù)據(jù),ω為模型參數(shù),L(ω,xi,yi)為在點(xi,yi)的損失,λR(ω)為損失函數(shù)的正則項,超參數(shù)λ控制懲罰力度。在支持向量機(jī)中,其損失函數(shù)為:L(ω,xi,yi)=max{0,1-ωτxiyi}。類似于SimFL,這里也對特征值進(jìn)行降維哈希處理,以隱藏實際的特征值。除此之外,由于在線性支持向量機(jī)中,中心服務(wù)器有可能根據(jù)更新梯度反推出數(shù)據(jù)標(biāo)簽,為了保護(hù)數(shù)據(jù)的隱私性,這里采用次梯度更新的更新方式。在實際表現(xiàn)中,這種支持向量機(jī)在聯(lián)邦框架下的應(yīng)用具有不亞于單機(jī)支持向量機(jī)的性能。
為了保障數(shù)據(jù)隱私安全,聯(lián)邦學(xué)習(xí)客戶端在進(jìn)行數(shù)據(jù)通信時,往往會對傳輸?shù)男畔⑦M(jìn)行編碼和加密,同時因為原始用戶數(shù)據(jù)對中心服務(wù)器不可見,所以在模型搭建時訓(xùn)練樣本對中心服務(wù)器以及模型設(shè)計人員不可觀測。之前用于經(jīng)典深度學(xué)習(xí)的相關(guān)模型在聯(lián)邦學(xué)習(xí)系統(tǒng)中不一定是最優(yōu)設(shè)計。為了避免網(wǎng)絡(luò)模型的冗余,需要對經(jīng)典深度學(xué)習(xí)模型進(jìn)行相應(yīng)的修改,如神經(jīng)網(wǎng)絡(luò)(neural network,NN)、卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)、長短期記憶網(wǎng)絡(luò)(long shortterm memory,LSTM)等。同時,為了適應(yīng)聯(lián)邦學(xué)習(xí)的流程,提高訓(xùn)練效果,學(xué)習(xí)訓(xùn)練的一些環(huán)節(jié)(如參數(shù)初始化、損失計算以及梯度更新等)也需要相應(yīng)的調(diào)整。
3.2.1 聯(lián)邦神經(jīng)網(wǎng)絡(luò)
McMahan HB等人[10]分別用NN和CNN在MNIST數(shù)據(jù)集上進(jìn)行了測試。對于NN,模型的具體結(jié)構(gòu)為含有兩個隱藏層的神經(jīng)網(wǎng)絡(luò),每個隱藏層包含200個神經(jīng)元,且隱藏層用ReLU激活函數(shù)進(jìn)行激活。然后將MNIST數(shù)據(jù)集分配到兩個計算節(jié)點,每個計算節(jié)點含有樣本量大小為600且無交集的子數(shù)據(jù)集。在進(jìn)行聯(lián)邦訓(xùn)練時,為了驗證模型參數(shù)初始化和聚合比例帶來的影響,實驗分為具有不同初始化方式的兩組:一組使用相同的隨機(jī)種子初始化分配在兩個計算節(jié)點的模型參數(shù),另外一組使用不同的隨機(jī)種子初始化模型參數(shù)。每組實驗對來自不同節(jié)點的模型參數(shù)采用不同的權(quán)重比例進(jìn)行加權(quán)整合,獲取最終的聯(lián)邦共享模型,即:
其中,ωFL為聯(lián)邦模型參數(shù),ω和ω’為分布在不同節(jié)點的模型參數(shù),θ用來調(diào)整兩個模型參數(shù)之間的比例。實驗發(fā)現(xiàn),在達(dá)到相同的精度時,相比于單一數(shù)據(jù)本地訓(xùn)練,使用模型平均方法的聯(lián)邦學(xué)習(xí)模型需要的訓(xùn)練回合更少,訓(xùn)練效率更高。在都使用聯(lián)邦學(xué)習(xí)時,使用相同的隨機(jī)初始化種子的聯(lián)邦模型具有較好的效果,同時在模型參數(shù)比例為1:1時,達(dá)到最優(yōu)損失。
3.2.2 聯(lián)邦卷積神經(jīng)網(wǎng)絡(luò)
Zhu X H等人[50]使用簡單的CNN訓(xùn)練隱私場景中的中文字體識別模型來測試現(xiàn)有的聯(lián)邦學(xué)習(xí)框架(TensorFlow federated(TFF)和PySyft)以及數(shù)據(jù)集和客戶端數(shù)量對聯(lián)邦模型的影響。雖然對于文本識別問題常采用遞歸網(wǎng)絡(luò),但過于復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu)往往會影響聯(lián)邦學(xué)習(xí)的收斂效率,于是采用含有4個卷積層和2個全連接層的簡單CNN來訓(xùn)練模型。然后根據(jù)樣本ID將數(shù)據(jù)集隨機(jī)分配到不同的客戶端,形成不同子集來模擬分布式數(shù)據(jù)。在進(jìn)行訓(xùn)練時,客戶端先在本地數(shù)據(jù)集上進(jìn)行梯度計算和參數(shù)更新。在每個訓(xùn)練迭代結(jié)束后,匯總每個客戶端累積的參數(shù)更新,用來更新最終的聯(lián)邦模型。
作為對比,首先采用非聯(lián)邦學(xué)習(xí)模式進(jìn)行訓(xùn)練,將所有數(shù)據(jù)放在TensorFlow上進(jìn)行模型訓(xùn)練,獲得的基礎(chǔ)對比模型的準(zhǔn)確率為42.65%。當(dāng)客戶端數(shù)量固定,改變每個客戶端擁有的數(shù)據(jù)子集大小時,模型精度基本上隨著數(shù)據(jù)集的增大而上升。不過在PySyft上,最佳精度始終無法達(dá)到基線(baseline)精度,且網(wǎng)絡(luò)迭代次數(shù)多于基線模型的迭代次數(shù)。但TFF的模型收斂效果要優(yōu)于PySyft,且在客戶端樣本數(shù)量達(dá)到一定程度時,聯(lián)邦模型表現(xiàn)出優(yōu)于基線模型的成績,迭代次數(shù)也顯著減少。兩個框架下不同模型的效果差異可能是由于采用了不同的優(yōu)化算法。針對聯(lián)邦深度學(xué)習(xí)模型的框架還有很多限制,很多技術(shù)問題需要進(jìn)一步解決,如TFF上對GPU卷積和池化計算的支持、PySyft上對更多優(yōu)化器的支持。
影響卷積網(wǎng)絡(luò)效果的因素還有很多,例如,客戶端和服務(wù)器之間進(jìn)行參數(shù)傳遞時,為了減輕對帶寬的占用,往往對卷積網(wǎng)絡(luò)模型的參數(shù)進(jìn)行壓縮。Sattler F等人[36]利用視覺幾何組網(wǎng)絡(luò)11(visual geometry group 11,VGG11)[51]發(fā)現(xiàn),具有參數(shù)壓縮的聯(lián)邦聚合算法受non-IID數(shù)據(jù)的影響比較大,而在IID數(shù)據(jù)上則表現(xiàn)出幾乎與非壓縮聚合算法相同的收斂速度。用于聯(lián)邦學(xué)習(xí)系統(tǒng)的稀疏三元壓縮(sparse ternary compression,STC)[52]證明,在聯(lián)邦學(xué)習(xí)環(huán)境中,該編碼技術(shù)的通信協(xié)議優(yōu)于聯(lián)邦平均算法FedAvg(federated averaging)。
3.2.3 聯(lián)邦LSTM
也有許多學(xué)者將LSTM運用到聯(lián)邦語言模型中,用于預(yù)測字符[53-54]。他們將數(shù)據(jù)集人工分割為分配在多個客戶端的聯(lián)邦學(xué)習(xí)數(shù)據(jù)集,在合適的超參數(shù)設(shè)置下,這些模型在non-IID數(shù)據(jù)集上均達(dá)到了常規(guī)情況下的模型精度[8]。Sahu AK等人[39]在聯(lián)邦數(shù)據(jù)集中訓(xùn)練LSTM分類器,提出了解決統(tǒng)計異質(zhì)性的聯(lián)邦學(xué)習(xí)框架FedProx,用于情感分析和字符預(yù)測。實驗表明,相比于FedAvg,F(xiàn)edProx具有更快的收斂速度。Sattler F等人[36]也在卷積網(wǎng)絡(luò)的基礎(chǔ)上研究了優(yōu)化模型參數(shù)壓縮在non-IID數(shù)據(jù)集上的應(yīng)用。在客戶端與中心服務(wù)器通信時,相較于無壓縮基線的2422 MB網(wǎng)絡(luò)參數(shù)量,使用基于STC編碼通信協(xié)議的聯(lián)邦學(xué)習(xí)系統(tǒng)可以在保證模型收斂效果的同時,將上行通信參數(shù)量壓縮至10 MB左右,將下行參數(shù)量壓縮到100 MB左右。
聯(lián)邦學(xué)習(xí)算法目前的主要研究方向和瓶頸是如何提升聯(lián)邦聚合的優(yōu)化效率和性能,以達(dá)成模型的快速收斂和精準(zhǔn)訓(xùn)練。因此,目前關(guān)于聯(lián)邦深度學(xué)習(xí)模型的研究主要是如何優(yōu)化聯(lián)邦聚合,而針對聯(lián)邦深度學(xué)習(xí)模型的研究還相對較少。
表1從算法、框架和特點等角度,對比了聯(lián)邦機(jī)器學(xué)習(xí)和聯(lián)邦深度學(xué)習(xí)的算法。
相對于分布式學(xué)習(xí),聯(lián)邦學(xué)習(xí)有一些獨特的屬性,具體如下:
● 聯(lián)邦學(xué)習(xí)的通信是比較慢速且不穩(wěn)定的;
● 聯(lián)邦學(xué)習(xí)的參與方設(shè)備異構(gòu),不同設(shè)備有不同的運算能力;
● 聯(lián)邦學(xué)習(xí)更關(guān)注隱私和安全,目前大部分的研究假設(shè)參與方和服務(wù)器方是可信的,然而在現(xiàn)實生活中,其可能是不可信的。
在實現(xiàn)聯(lián)邦學(xué)習(xí)的過程中,需要考慮如何優(yōu)化聯(lián)邦學(xué)習(xí)的算法,從而解決存在的現(xiàn)實問題。本文將從通信成本、客戶端選擇、異步聚合的角度介紹優(yōu)化聯(lián)邦學(xué)習(xí)的算法。在介紹優(yōu)化算法之前,先介紹最傳統(tǒng)的聯(lián)邦學(xué)習(xí)算法——FedAvg算法。
表1 聯(lián)邦學(xué)習(xí)算法對比
FedAvg算法[8]是目前最常用的聯(lián)邦學(xué)習(xí)優(yōu)化算法。與常規(guī)的優(yōu)化算法[37-38]不同,其本質(zhì)思想是對數(shù)據(jù)持有方采用局部隨機(jī)梯度下降的方法進(jìn)行本地模型優(yōu)化,在中心服務(wù)器方[39]進(jìn)行聚合操作。目標(biāo)函數(shù)定義如下:
其中,M表示參與聯(lián)合建模的數(shù)據(jù)持有方的數(shù)量,ω表示模型當(dāng)前的參數(shù),表示均方差函數(shù)。FedAvg算法是一種比較基礎(chǔ)的聯(lián)邦優(yōu)化算法,其部署相對來說比較簡單,應(yīng)用領(lǐng)域很廣泛[36]。
機(jī)器學(xué)習(xí)算法,特別是復(fù)雜的深度學(xué)習(xí)算法,在訓(xùn)練的過程中需要訓(xùn)練大量的參數(shù),比如CNN可能需要訓(xùn)練上百萬個參數(shù),每一次更新過程需要更新上百萬個參數(shù);其次,網(wǎng)絡(luò)通信的狀態(tài)也可能導(dǎo)致很高的通信成本,比如不穩(wěn)定的網(wǎng)絡(luò)情況、參數(shù)上傳和下載的過程中速度不一致都會導(dǎo)致整個算法的模型訓(xùn)練成本過大。因此需要根據(jù)這些特性來考慮如何從通信成本的角度優(yōu)化聯(lián)邦學(xué)習(xí)算法[8]??梢詮囊韵陆嵌瓤紤]減少通信成本。
4.1.1 增加客戶端計算成本
在聯(lián)邦學(xué)習(xí)體系中,有時終端節(jié)點只會在有Wi-Fi時參與聯(lián)邦學(xué)習(xí)訓(xùn)練,或者有時網(wǎng)絡(luò)狀況不佳,在這些情況下,更多的計算可以在本地進(jìn)行,從而減少通信的次數(shù)。很多算法是從這個角度來優(yōu)化通信成本的。比如Kone?ny J[21]考慮了優(yōu)化FedAvg算法,增加每一輪迭代在每個客戶端的本地更新參數(shù)的計算次數(shù),并且與每一輪服務(wù)器參數(shù)更新只需要一次客戶端本地更新的FedSGD算法進(jìn)行了對比,實驗通過MINSTCNN模型測試表明,當(dāng)數(shù)據(jù)為IID時,算法可以明顯減少通信成本,當(dāng)數(shù)據(jù)為non-IID時,算法只能輕微地減少通信成本。Sahu AK等人[39]提出了一種更通用的FedProx算法,這種算法在數(shù)據(jù)為non-IID時優(yōu)化效果更明顯,因為聯(lián)合訓(xùn)練的終端參與方的數(shù)據(jù)、運算能力都是不均衡的,因此每一次參數(shù)更新時,不同的參與方要參與的運算次數(shù)都統(tǒng)一的話,會導(dǎo)致客戶端的計算資源不能充分利用。為了避免這種情況,優(yōu)化通信效率,F(xiàn)edProx算法可以動態(tài)地更新不同客戶端每一輪需要本地計算的次數(shù),使得算法更適合非獨立同分布的聯(lián)合建模場景。Liu Y等人[54]使用同樣的優(yōu)化思路優(yōu)化聯(lián)邦優(yōu)化算法,并且在縱向聯(lián)邦學(xué)習(xí)的框架下進(jìn)行學(xué)習(xí)。LIX等人[56]則分析了FedAvg算法的收斂性,并證明了數(shù)據(jù)的異質(zhì)性會導(dǎo)致聯(lián)邦學(xué)習(xí)收斂速度降低。
4.1.2 模型壓縮
有的優(yōu)化算法目的是減少每一輪通信的參數(shù)量,例如通過模型壓縮的技術(shù)(比如量化、二次抽樣的方式)來減少每一次參數(shù)更新要傳遞的參數(shù)總量。Kone?ny J等人[9]提出了一種結(jié)構(gòu)化的模型更新方式來更新服務(wù)器參數(shù),在每一輪的參數(shù)通信過程中,減小參與方傳遞給服務(wù)器的模型更新參數(shù)的大小,從而減少通信。結(jié)構(gòu)化更新是指通過提前定義上傳模型參數(shù)的矩陣結(jié)構(gòu)來上傳模型,輪廓更新是指每次更新的參數(shù)需要在參與方進(jìn)行壓縮編碼;模型最后通過CIFAR-10圖像算法進(jìn)行驗證,實驗表明,參與方越多,壓縮效果越好;Caldas S等人[57]考慮的是從服務(wù)器到參與方的模型參數(shù)傳遞優(yōu)化,通過有損壓縮以及聯(lián)邦參數(shù)篩選(federated dropout)的方式來減少從服務(wù)器到客戶端需要傳遞的參數(shù)數(shù)量,降低通信成本的代價是在一定程度上降低模型的準(zhǔn)確率。
在實現(xiàn)聯(lián)邦學(xué)習(xí)時,通信是一個瓶頸。降低通信成本是非常重要的一個優(yōu)化環(huán)節(jié)。有的優(yōu)化以增加參與方的本地計算為代價,有的優(yōu)化以降低整個模型的準(zhǔn)確性為代價。在實際優(yōu)化的過程中,可以根據(jù)實際情況和需求決定采用何種方式降低通信成本。
聯(lián)邦學(xué)習(xí)的客戶端設(shè)備具有異構(gòu)性的特征,并且不同的客戶端的資源是有限的。通常,客戶端隨機(jī)選擇參與聯(lián)邦學(xué)習(xí)的模型訓(xùn)練過程。因此,在聯(lián)邦學(xué)習(xí)訓(xùn)練的過程中,有的算法會考慮從客戶端選擇的角度進(jìn)行優(yōu)化。
不同的客戶端的網(wǎng)絡(luò)速度、運算能力等不同,每個客戶端擁有的數(shù)據(jù)分布也是不平衡的,如果讓所有的客戶端都參與聯(lián)邦學(xué)習(xí)的訓(xùn)練過程,將會有迭代落后的參與方出現(xiàn),某些客戶端長時間沒有響應(yīng)可能會導(dǎo)致整個系統(tǒng)無法完成聯(lián)合訓(xùn)練。因此,需要考慮如何選擇參與訓(xùn)練的客戶端。FedAvg算法隨機(jī)選擇參與訓(xùn)練的客戶端。但在網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜以及數(shù)據(jù)非獨立同分布的情況下,F(xiàn)edAvg算法模型并不一定有好的表現(xiàn)。下面兩篇參考文獻(xiàn)介紹了一些優(yōu)化方案。
Nishio T等人[58]提出了一種FedCS算法,設(shè)計了一種貪心算法的協(xié)議機(jī)制,以達(dá)到在聯(lián)合訓(xùn)練的每一次更新中都選擇模型迭代效率最高的客戶端進(jìn)行聚合更新的目的,從而優(yōu)化整個聯(lián)邦學(xué)習(xí)算法的收斂效率。實驗表明,F(xiàn)edCS算法可以達(dá)到更高的準(zhǔn)確性,但缺點是只有在模型比較基礎(chǔ)的情況下,如基礎(chǔ)的動態(tài)神經(jīng)網(wǎng)絡(luò),才有好的表現(xiàn),對于網(wǎng)絡(luò)結(jié)構(gòu)或參數(shù)數(shù)量較為復(fù)雜的情況來說,F(xiàn)edCS選擇最優(yōu)的聚合客戶端的效率會降低,造成通信次數(shù)的增多和時間效率的降低。
Yoshida N等人[59]提出了一種Hybrid-FL的協(xié)議算法,該協(xié)議可以處理數(shù)據(jù)集為non-IID的客戶端數(shù)據(jù),解決基于non-IID數(shù)據(jù)在FedAvg算法上性能不好的問題。Hybrid-FL協(xié)議使得服務(wù)器通過資源請求的步驟來選擇部分客戶端,從而在本地建立一種近似獨立同分布的數(shù)據(jù)集用于聯(lián)邦學(xué)習(xí)的訓(xùn)練和迭代。他們通過實驗表明,對于non-IID數(shù)據(jù)類型的聯(lián)邦學(xué)習(xí)分類算法來說,Hybrid-FL有較好的準(zhǔn)確率表現(xiàn)。
在FedAvg的算法中,聚合是與模型的更新保持同步的。每一次更新,服務(wù)器都同步聚合模型參數(shù),然后將聚合參數(shù)發(fā)送給每一個客戶端。在同步聚合中,服務(wù)器需要在接收到所有參與訓(xùn)練的客戶端的參數(shù)之后才可以開始聚合,但是有的客戶端運算傳輸快,有的客戶端運算傳輸慢,為了避免出現(xiàn)通信遲滯現(xiàn)象,有研究者考慮用異步的方式進(jìn)行聚合,從而優(yōu)化聯(lián)邦學(xué)習(xí)算法。
Sprague MR等人[60]提出了一種在聯(lián)邦訓(xùn)練的過程中加入客戶端的異步聚合方法,并且通過實例證明了這種方法的魯棒性。當(dāng)服務(wù)器接收到任何客戶端的更新參數(shù)時,就進(jìn)行一次聚合。但是這種算法的弊端是當(dāng)模型數(shù)據(jù)為non-IID的時候,模型的收斂會出現(xiàn)很大的問題。
Xie C等人[61]為了解決異步同步的算法在non-IID數(shù)據(jù)上的適用性的問題,提出了另一種FedAsync算法,加入加權(quán)聚合的方法,使得服務(wù)器在接收到客戶端的參數(shù)后,會通過當(dāng)前訓(xùn)練的更新次數(shù)來設(shè)計加權(quán)聚合,從而解決non-IID數(shù)據(jù)的異步聚合的算法收斂問題。該參考文獻(xiàn)理論上證明了在非凸性問題上FedAsync算法具有更好的收斂性。
聯(lián)邦學(xué)習(xí)算法的優(yōu)化分類方法見表2。
表2 聯(lián)邦學(xué)習(xí)算法的優(yōu)化分類方法
本文討論了聯(lián)邦學(xué)習(xí)目前的發(fā)展?fàn)顩r,從聯(lián)邦學(xué)習(xí)算法的角度出發(fā),將聯(lián)邦學(xué)習(xí)相關(guān)算法分為聯(lián)邦優(yōu)化算法和聯(lián)邦機(jī)器學(xué)習(xí)算法,對適合中心和去中心兩種聯(lián)邦學(xué)習(xí)結(jié)構(gòu)的相關(guān)算法進(jìn)行了論述,同時將聯(lián)邦學(xué)習(xí)框架下的機(jī)器學(xué)習(xí)算法和聯(lián)邦深度學(xué)習(xí)模型分別進(jìn)行總結(jié)討論。在聯(lián)邦算法優(yōu)化的過程中,從降低通信成本、最優(yōu)客戶端選擇以及優(yōu)化模型聚合方式的角度討論了現(xiàn)有的聯(lián)邦優(yōu)化算法之間的差異和優(yōu)缺點。
聯(lián)邦學(xué)習(xí)目前依然處于快速發(fā)展的階段,關(guān)于聯(lián)邦學(xué)習(xí)在實際中的應(yīng)用有大量的研究與討論,但是在實現(xiàn)聯(lián)邦學(xué)習(xí)的過程中,還有很多難題和挑戰(zhàn),本文給出了以下3類主要難題,即通信難題、系統(tǒng)異構(gòu)難題以及數(shù)據(jù)異構(gòu)難題。
● 通信難題。在聯(lián)邦學(xué)習(xí)系統(tǒng)中,聯(lián)邦網(wǎng)絡(luò)可能由大量的設(shè)備組成。因此網(wǎng)絡(luò)中的通信效率會對整體速度產(chǎn)生較大的影響。因此,開發(fā)通信效率高的方法就顯得尤為重要。通??梢詮慕档蛡鬏旑l率和減少每輪傳輸?shù)男畔⒘恐帧=档蛡鬏旑l率主要依靠減少客戶端與中心服務(wù)器梯度的交換次數(shù),為此可以適當(dāng)提高一次全局迭代中客戶端本地優(yōu)化的次數(shù)。而減少信息量則主要依靠降低客戶端與中心服務(wù)器的交換次數(shù)來實現(xiàn)。為此可以進(jìn)行適當(dāng)?shù)奶荻葔嚎s或者量化,以減少通信占用的帶寬。
● 系統(tǒng)異構(gòu)難題。在聯(lián)邦學(xué)習(xí)系統(tǒng)中,另一大問題就是眾多客戶端設(shè)備之間的異構(gòu)性,包括存儲、CPU計算能力、網(wǎng)絡(luò)傳輸?shù)榷鄠€方面的差異。這些異構(gòu)性使得設(shè)備的計算時間不同,甚至導(dǎo)致個別設(shè)備直接掉線。異步通信解決了設(shè)備完成一次本地更新的時間不同、中心服務(wù)器等待過久的問題。此前分布式機(jī)器學(xué)習(xí)的研究已經(jīng)充分應(yīng)用了異步通信的方式。此外,提升系統(tǒng)的魯棒性同樣也能減輕系統(tǒng)異構(gòu)對聯(lián)邦學(xué)習(xí)產(chǎn)生的影響。在眾多設(shè)備參與的情況下,需要提高系統(tǒng)的容錯能力,提升系統(tǒng)的冗余度。
● 數(shù)據(jù)異構(gòu)難題。聯(lián)邦學(xué)習(xí)中設(shè)備經(jīng)常以非獨立同分布的方式在網(wǎng)絡(luò)中生成和收集數(shù)據(jù),例如,移動端的用戶在進(jìn)行輸入法下一單詞預(yù)測的任務(wù)時,使用不同的語言會導(dǎo)致數(shù)據(jù)異構(gòu)問題。此外,跨設(shè)備的數(shù)據(jù)持有方持有的數(shù)據(jù)數(shù)量很可能分布不均勻。因此,許多常見的針對獨立同分布數(shù)據(jù)假設(shè)的優(yōu)化算法對于聯(lián)邦學(xué)習(xí)來說都是不適用的。因此,如何使優(yōu)化算法更加兼容聯(lián)邦學(xué)習(xí)實際使用中復(fù)雜的數(shù)據(jù)結(jié)構(gòu),成為聯(lián)邦學(xué)習(xí)未來發(fā)展的一個研究方向。元學(xué)習(xí)和多任務(wù)學(xué)習(xí)的思想都支持個性化或基于特定設(shè)備的建模,是處理數(shù)據(jù)統(tǒng)計異質(zhì)性的一種有效的方法。元學(xué)習(xí)通過使參與聯(lián)邦學(xué)習(xí)的各客戶端本地模型學(xué)習(xí)獨立但相關(guān)的模型,實現(xiàn)各個參與方本地模型的個性化,是一種應(yīng)對聯(lián)邦學(xué)習(xí)數(shù)據(jù)異構(gòu)性的可行方案。
最后,筆者針對聯(lián)邦學(xué)習(xí)的未來發(fā)展提出以下展望。
● 增加算法的聯(lián)邦部署。本文討論了目前存在的聯(lián)邦學(xué)習(xí)算法,但是有關(guān)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法在聯(lián)邦框架下的部署研究問題還處于發(fā)展階段。使用聯(lián)邦學(xué)習(xí)框架進(jìn)行機(jī)器學(xué)習(xí)、深度學(xué)習(xí)算法實現(xiàn)是人工智能領(lǐng)域落地的一個可行方案,也是更高效、更全面的邊緣數(shù)據(jù)利用方法。
● 聯(lián)邦學(xué)習(xí)的隱私性保證。數(shù)據(jù)隱私性的保證是聯(lián)邦學(xué)習(xí)理念的關(guān)鍵點之一。盡管目前有許多與聯(lián)邦學(xué)習(xí)隱私性相關(guān)的研究,但是在聯(lián)邦學(xué)習(xí)實際應(yīng)用的過程中,依然會面臨許多復(fù)雜的隱私性挑戰(zhàn)。聯(lián)邦學(xué)習(xí)系統(tǒng)需要時刻提升對各類不良攻擊的防御能力,保障用戶數(shù)據(jù)的隱私性。
● 聯(lián)邦學(xué)習(xí)的多領(lǐng)域協(xié)同發(fā)展。聯(lián)邦學(xué)習(xí)的系統(tǒng)發(fā)展與多個領(lǐng)域有所關(guān)聯(lián),如邊緣計算[62-63]、區(qū)塊鏈[64-65]、網(wǎng)絡(luò)安全[66-67]等。多領(lǐng)域的協(xié)同發(fā)展可以提升聯(lián)邦學(xué)習(xí)的性能,同時更好地發(fā)揮聯(lián)邦學(xué)習(xí)的便捷性、隱私性等優(yōu)勢。