聯(lián)邦學(xué)習(xí)——突破隱私障礙,釋放數(shù)據(jù)價(jià)值
一、聯(lián)邦學(xué)習(xí)產(chǎn)生的背景
傳統(tǒng)的機(jī)器學(xué)習(xí)方法需要將數(shù)據(jù)集中在一個(gè)機(jī)器或數(shù)據(jù)中心進(jìn)行訓(xùn)練,但隨著移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)等科技的崛起,個(gè)人數(shù)據(jù)分布在各種機(jī)構(gòu),包括政府機(jī)構(gòu)、醫(yī)療機(jī)構(gòu)、保險(xiǎn)機(jī)構(gòu)以及各個(gè)互聯(lián)網(wǎng)巨頭的平臺(tái)等。數(shù)據(jù)在不同的管理機(jī)構(gòu)之間流通往往充滿泄漏的風(fēng)險(xiǎn),另外,近年來(lái)數(shù)據(jù)的隱私權(quán)越來(lái)越受重視,涉及個(gè)人隱私的數(shù)據(jù)很難有效共享,要將所需要的數(shù)據(jù)集中在一起訓(xùn)練非常困難,導(dǎo)致許多領(lǐng)域存在著數(shù)據(jù)孤島問(wèn)題。
其實(shí)在國(guó)外大數(shù)據(jù)應(yīng)用也同樣面臨這個(gè)挑戰(zhàn)。早在2016年,Google就提出了聯(lián)邦學(xué)習(xí)(Federated Learning)的概念,是指多源數(shù)據(jù)不需要離開(kāi)自己的設(shè)備,而是分別在自己的設(shè)備訓(xùn)練模型,并通過(guò)特定的加密機(jī)制在云上建立一個(gè)共享模型的機(jī)制更新模型,通過(guò)聯(lián)邦學(xué)習(xí),所有的訓(xùn)練數(shù)據(jù)都仍然保留在各自的設(shè)備上,而最終訓(xùn)練出來(lái)的模型又能夠達(dá)到想要的效果。
二、什么是聯(lián)邦學(xué)習(xí)?
假設(shè)要訓(xùn)練某種疾病的輔助診斷模型,為了診斷更加準(zhǔn)確,我們需要有更大的樣本,因此需要用到三家醫(yī)院A、B和C的數(shù)據(jù),這些醫(yī)院有不同的患者,有相同類型的患者數(shù)據(jù)(例如:CT、癥狀描述、病史等),醫(yī)院為了保護(hù)患者隱私和他們各自的病例數(shù)據(jù)安全,沒(méi)辦法全部共享。在數(shù)據(jù)準(zhǔn)備不充分的狀態(tài)下其實(shí)很難建立一個(gè)效果良好的模型。
而聯(lián)邦學(xué)習(xí)的目的,就是希望實(shí)現(xiàn)各個(gè)醫(yī)院用自己的數(shù)據(jù)來(lái)訓(xùn)練模型,并通過(guò)加密的機(jī)制建立一個(gè)共享的模型,并進(jìn)行模型的更新,這樣做不僅保護(hù)了院方數(shù)據(jù)安全和患者隱私,還降低大量集中數(shù)據(jù)傳輸?shù)某杀尽?/p>
聯(lián)邦學(xué)習(xí)是一種帶有隱私保護(hù)、安全加密技術(shù)的分布式機(jī)器學(xué)習(xí)框架,旨在讓分散的各參與方在不向其他參與者披露隱私數(shù)據(jù)的前提下,協(xié)作進(jìn)行模型訓(xùn)練。
三、聯(lián)邦學(xué)習(xí)訓(xùn)練過(guò)程
經(jīng)典聯(lián)邦學(xué)習(xí)框架的訓(xùn)練過(guò)程可以簡(jiǎn)單概括為以下幾個(gè)步驟:
- 協(xié)調(diào)方建立基本模型;
- 將模型的基本結(jié)構(gòu)與參數(shù)發(fā)送各參與方;
- 各參與方利用本地?cái)?shù)據(jù)進(jìn)行模型訓(xùn)練
- 各方將模型參數(shù)結(jié)果發(fā)給協(xié)調(diào)方;
- 協(xié)調(diào)方匯總各參與方的模型,構(gòu)建更精準(zhǔn)的全局模型;
- 將全局參數(shù)發(fā)給各參與方以提升模型性能和效果。
四、聯(lián)邦學(xué)習(xí)核心技術(shù)
聯(lián)邦學(xué)習(xí)框架包含多方面的技術(shù),比如:
- 機(jī)器學(xué)習(xí)與模型訓(xùn)練;
- 參數(shù)整合的算法;
- 各方數(shù)據(jù)傳輸通信技術(shù);
- 隱私保護(hù)技術(shù);
此外,在一些聯(lián)邦學(xué)習(xí)框架中還借鑒了區(qū)塊鏈思路,使用激勵(lì)機(jī)制,數(shù)據(jù)持有方均可參與,收益具有普遍性。
值得一提的是隱私保護(hù)技術(shù),如何在數(shù)據(jù)傳輸中保護(hù)數(shù)據(jù)的隱私安全,一直是密碼學(xué)領(lǐng)域的一大研究熱點(diǎn)。
五、聯(lián)邦學(xué)習(xí)隱私保護(hù)
聯(lián)邦學(xué)習(xí)當(dāng)中增強(qiáng)隱私保護(hù)和減少威脅的方法,主要包含以下四種:
- Secure multi-party computation(MPC多方安全計(jì)算);
- Differential privacy(差分隱私);
- VerifyNet;
- Adversarial training(對(duì)抗訓(xùn)練);
1.多方安全計(jì)算
多方安全計(jì)算(Secure Multi-Party Computation,SMPC)用于解決一組互不信任的參與方各自持有秘密數(shù)據(jù),協(xié)同計(jì)算一個(gè)既定函數(shù)的問(wèn)題。安全多方計(jì)算在保證參與方獲得正確計(jì)算結(jié)果的同時(shí),無(wú)法獲得計(jì)算結(jié)果之外的任何信息。在整個(gè)計(jì)算過(guò)程中,參與方對(duì)其所擁有的數(shù)據(jù)始終擁有絕對(duì)的控制權(quán)。
例如,在一個(gè)分布式網(wǎng)絡(luò)中,有n個(gè)互不信任的參與方P1,P2,…,Pn,每個(gè)參與方Pi持有秘密數(shù)據(jù)Xi(i=1,2,3,…,n)。這n個(gè)參與方協(xié)同執(zhí)行既定函數(shù),f(x1,x2,…,xn) -> (y1,y2,…,yn),其中yi為參與方Pi得到的輸出結(jié)果。任意參與方Pi除yi之外無(wú)法獲得關(guān)于其他參與方Pj(i !=j)的任何輸入信息。如果y1= y2 = … =yn,則可以簡(jiǎn)單表示為f:(x1,x2,…,xn) -> y。如下圖所示:
2.差分隱私
差分隱私是為了對(duì)抗差分攻擊而引入的一種隱私保護(hù)的方案。通過(guò)添加噪聲來(lái)擾動(dòng)原本特征清晰的數(shù)據(jù),使得單條數(shù)據(jù)失去其獨(dú)特性,隱藏在大量數(shù)據(jù)當(dāng)中,防止敏感數(shù)據(jù)泄漏,DP仍能夠使得數(shù)據(jù)具備原有的分布式特點(diǎn)。聯(lián)邦學(xué)習(xí)當(dāng)中,為了避免數(shù)據(jù)的反向檢索,對(duì)客戶端上傳的參數(shù)進(jìn)行差分隱私,這樣可能會(huì)給上傳的參數(shù)帶來(lái)不確定性,影響模型的訓(xùn)練效果。
例如:有一個(gè)包含“非典”疾病信息的數(shù)據(jù)庫(kù)。我們要研究分析這種疾病,但是又怕泄漏個(gè)人隱私,有一個(gè)方法是把姓名、身份證號(hào)從數(shù)據(jù)庫(kù)中脫敏,但是如果這個(gè)城市只有少數(shù)這種疾病的病人,如果有人知道一個(gè)人在數(shù)據(jù)庫(kù)中,這可能會(huì)泄漏這個(gè)人有“非典”和他的治理情況。我們可以增加一些具有類似該疾病信息的噪音樣本書(shū)籍,以防止個(gè)人信息被識(shí)別出來(lái)。
3.VerifyNet
VerifyNet是一個(gè)隱私保護(hù)和可信驗(yàn)證的聯(lián)邦學(xué)習(xí)框架。VerifyNet的雙隱蔽協(xié)議保證用戶在聯(lián)邦學(xué)習(xí)過(guò)程中局部梯度的機(jī)密性,另外,中心服務(wù)器需要向每個(gè)用戶提供關(guān)于聚合結(jié)果的正確性證明。在VerifyNet中,攻擊者很難偽造證據(jù)來(lái)欺騙其他用戶。此外VerifyNet還支持用戶在訓(xùn)練過(guò)程中退出,發(fā)現(xiàn)威脅迅速回退,多方面保護(hù)用戶的隱私安全。
4.對(duì)抗訓(xùn)練
對(duì)抗訓(xùn)練是增強(qiáng)神經(jīng)網(wǎng)絡(luò)魯棒性的重要方式,是一種主動(dòng)防御技術(shù)。在聯(lián)邦學(xué)習(xí)對(duì)抗訓(xùn)練過(guò)程中,樣本當(dāng)中會(huì)混合一些微小的擾動(dòng)(可能導(dǎo)致誤分類),然后使得神經(jīng)網(wǎng)絡(luò)適應(yīng)這種變換,因此,最終生成的聯(lián)邦學(xué)習(xí)的全局模型對(duì)已知的對(duì)抗樣本具有魯棒性。
六、聯(lián)邦學(xué)習(xí)的種類
聯(lián)邦學(xué)習(xí)根據(jù)數(shù)據(jù)的類型可以劃分橫向聯(lián)邦學(xué)習(xí)(horizontal federated Learning)、縱向聯(lián)邦學(xué)習(xí)(vertical federated Learning)、聯(lián)邦遷移學(xué)習(xí)(federatedtransfer Learning)。
1.橫向聯(lián)邦學(xué)習(xí)
橫向聯(lián)邦學(xué)習(xí)適用于數(shù)據(jù)特征重疊性高且樣本重疊少的場(chǎng)景,比如:不同地區(qū)的醫(yī)院,他們的診療內(nèi)容相似,但病人不同。
首先,每個(gè)參與方都會(huì)得到相同的模型定義,并且統(tǒng)一模型的初始化參數(shù)。不斷迭代以下步驟訓(xùn)練模型:
- 每個(gè)參與方利用自己的數(shù)據(jù)訓(xùn)練模型,分別計(jì)算梯度,再將加密過(guò)的梯度、參數(shù)上傳至協(xié)調(diào)方服務(wù)器。
- 由協(xié)調(diào)方服務(wù)器整合各參與方的梯度參數(shù)并更新模型。
- 協(xié)調(diào)方更新模型將更新后的梯度回傳給各個(gè)參與方。
- 參與方更新各自的模型。
目前橫行聯(lián)邦學(xué)習(xí)技術(shù)架構(gòu)相對(duì)簡(jiǎn)單,落地可行性較高。
2.縱向聯(lián)邦學(xué)習(xí)
縱向聯(lián)邦學(xué)習(xí)適用于樣本重疊多,但是特征重疊少的場(chǎng)景。比如同一地區(qū)的醫(yī)院、藥店或者保險(xiǎn)機(jī)構(gòu),他們服務(wù)的患者大部分居住在該地區(qū),因此樣本相同,但藥店和醫(yī)院的業(yè)務(wù)不同,它們有不同的數(shù)據(jù)特征。
由于隱私保護(hù)法規(guī)問(wèn)題,不能直接公開(kāi)交換數(shù)據(jù)進(jìn)行訓(xùn)練。因此,如上圖所示,A與B需要利用加密對(duì)齊技術(shù)加密樣本,以確認(rèn)雙方共享的客戶存在重疊,之后再利用這些數(shù)據(jù)進(jìn)行加密。
A:參與方 ;B:參與方;C:協(xié)調(diào)方
① C 將公鑰發(fā)給 A 和 B(用來(lái)加密);
② A 和 B 分別計(jì)算和自己相關(guān)的特征中間結(jié)果,并交換結(jié)果,用來(lái)求得各自的最小值和損失值(loss)。
③ A和B分別將計(jì)算后且加密的最小值參數(shù)傳送給C,同時(shí)B根據(jù)標(biāo)簽計(jì)算損失值并將結(jié)果匯整給C。
④ C將解密后的參數(shù)分別回傳給A和B,更新雙方的模型。
在整個(gè)過(guò)程中參與方都不知道對(duì)方的數(shù)據(jù)和特征,且訓(xùn)練結(jié)束后參與方也只能得到自己估計(jì)的模型參數(shù)。
縱向聯(lián)邦學(xué)習(xí)雖然解決了特征重疊少的問(wèn)題,但是只要參與方越多,計(jì)算架構(gòu)就會(huì)越加復(fù)雜難以執(zhí)行,落地難度較大。
3.聯(lián)邦遷移學(xué)習(xí)
當(dāng)參與方擁有的數(shù)據(jù)的特征和樣本重疊的情況都很少時(shí),可以利用聯(lián)邦遷移學(xué)習(xí)(transfer Learning)來(lái)克服數(shù)據(jù)與標(biāo)簽短缺的狀況。
七、聯(lián)邦學(xué)習(xí)、分布式學(xué)習(xí)、多智能體
1.分布式機(jī)器學(xué)習(xí)
分布式機(jī)器學(xué)習(xí)(distributed machine learning),是指利用多個(gè)計(jì)算/任務(wù)節(jié)點(diǎn)(Worker)協(xié)同訓(xùn)練一個(gè)全局的機(jī)器學(xué)習(xí)/深度學(xué)習(xí)模型(由主節(jié)點(diǎn)(Master)調(diào)度)。需要注意的是,分布式機(jī)器學(xué)習(xí)和傳統(tǒng)的HPC領(lǐng)域不太一樣。傳統(tǒng)的HPC領(lǐng)域主要是計(jì)算密集型,以提高加速比為主要目標(biāo)。而分布式機(jī)器學(xué)習(xí)還兼具數(shù)據(jù)密集型特性,會(huì)面臨訓(xùn)練數(shù)據(jù)大(單機(jī)存不下)、模型規(guī)模大的問(wèn)題。此外,在分布式機(jī)器學(xué)習(xí)也需要更多地關(guān)注通信問(wèn)題。
當(dāng)我們利用多個(gè)計(jì)算節(jié)點(diǎn)并行化訓(xùn)練模型時(shí),工作負(fù)載被劃分到多個(gè)處理器或工作器上,以加快訓(xùn)練過(guò)程。并行化主要有兩種類型。數(shù)據(jù)并行是指我們將訓(xùn)練數(shù)據(jù)分配給可用的worker,并在每個(gè)worker上運(yùn)行模型的副本。然后,每個(gè)worker在同一個(gè)模型上運(yùn)行不同的數(shù)據(jù)片段。相比之下,模型(或網(wǎng)絡(luò))并行是指我們將模型劃分為不同的工作者,每個(gè)工作者在模型的不同部分上運(yùn)行相同的數(shù)據(jù)。
2.多智能體
多智能體系統(tǒng)(multi-agent system) 是一組自主的,相互作用的實(shí)體,它們共享一個(gè)共同的環(huán)境(environment),利用傳感器感知,并利用執(zhí)行器作動(dòng)。多智能體系統(tǒng)提供了用分布式來(lái)看待問(wèn)題的方式,可以將控制權(quán)限分布在各個(gè)智能體上。
3.聯(lián)邦學(xué)習(xí)、分布式學(xué)習(xí)和多智能體的區(qū)別
分布式機(jī)器學(xué)習(xí) | 聯(lián)邦學(xué)習(xí) | 多智能體 | |
解決的問(wèn)題 | 針對(duì)運(yùn)算量大、數(shù)據(jù)量大等問(wèn)題使用計(jì)算機(jī)集群來(lái)訓(xùn)練大規(guī)模機(jī)器學(xué)習(xí)模型。 | 針對(duì)保護(hù)用戶隱私保護(hù),數(shù)據(jù)安全等問(wèn)題,通過(guò)高效的算法、加密算法等進(jìn)行機(jī)器學(xué)習(xí)建模,打破數(shù)據(jù)孤島。 | 主要在多機(jī)器人、多無(wú)人機(jī)協(xié)同編隊(duì)以及多目標(biāo)跟蹤與監(jiān)控中發(fā)揮作用。 |
數(shù)據(jù)處理方案 | 數(shù)據(jù)并行:先將訓(xùn)練數(shù)據(jù)劃分為多個(gè)子集(切片),然后將各子集置于多個(gè)計(jì)算實(shí)體中,并行訓(xùn)練同一個(gè)模型。 | 聯(lián)邦建模各方,本地?cái)?shù)據(jù)不出庫(kù),先在本地訓(xùn)練模型參數(shù)(或梯度),然后通過(guò)同態(tài)加密技術(shù)交互其參數(shù),更新模型。 | 可以預(yù)先收集好環(huán)境數(shù)據(jù)然后采用經(jīng)驗(yàn)回放技術(shù)進(jìn)行訓(xùn)練,也可以直接采用在線學(xué)習(xí)的形式,即多個(gè)智能體在環(huán)境中進(jìn)行交互學(xué)習(xí)。 |
訓(xùn)練方案 | 工業(yè)應(yīng)用中,大部分還是以數(shù)據(jù)并行為主:各個(gè)節(jié)點(diǎn)取不同的數(shù)據(jù),然后各自完成前向和后向的計(jì)算得到梯度用以更新共有的參數(shù),然后把update后的模型再傳回各個(gè)節(jié)點(diǎn)。 | 各方在本地初始化模型參數(shù),經(jīng)過(guò)訓(xùn)練獲得梯度(或參數(shù)),交由可信第三方進(jìn)行模型的更新,然后分發(fā)到各方本地進(jìn)行更新,如此反復(fù),獲得做種的模型。 | 每個(gè)智能體獨(dú)立與環(huán)境交互,利用環(huán)境反饋的獎(jiǎng)勵(lì)改進(jìn)自己的策略,以獲得更高的回報(bào)(即累計(jì)獎(jiǎng)勵(lì))。此外多個(gè)智能體是相互影響的,一個(gè)智能體的策略不能簡(jiǎn)單依賴于自身的觀測(cè)、動(dòng)作,還需要考慮到其他智能體的觀測(cè)、動(dòng)作。常采用中心化訓(xùn)練+去中心化執(zhí)行[7][8]這一訓(xùn)練模式。 |
通信方式 | MPI(常用于超算,底層基于高速網(wǎng)絡(luò)如IB網(wǎng))、NCCL、gRPC(常用于廉價(jià)集群,底層基于TCP和以太網(wǎng)) | gRPC(大部分) | 高速網(wǎng)絡(luò) |
數(shù)據(jù) | IID(獨(dú)立同分布)數(shù)據(jù),數(shù)據(jù)均衡 | 非IID數(shù)據(jù),數(shù)據(jù)不均衡甚至異構(gòu) | 多智能體處于統(tǒng)一環(huán)境,數(shù)據(jù)滿足IID |
成本 | 有專用的通信條件,所以通信代價(jià)往往較小 | 通信的代價(jià)遠(yuǎn)高于計(jì)算的代價(jià) | 智能體之間常由傳感器高速網(wǎng)絡(luò)連接,通信代價(jià)小 |
容錯(cuò)性 | 很少考慮容錯(cuò)問(wèn)題 | 容錯(cuò)性問(wèn)題非常重要 | 基本不考慮容錯(cuò)性 |
八、聯(lián)邦學(xué)習(xí)架構(gòu)
聯(lián)邦學(xué)習(xí)的架構(gòu)分為兩種,一種是中心化聯(lián)邦(客戶端/服務(wù)器)架構(gòu),一種是去中心化聯(lián)邦(對(duì)等計(jì)算)架構(gòu)。
1.中心化聯(lián)邦學(xué)習(xí)架構(gòu)
中心化聯(lián)邦學(xué)習(xí)架構(gòu)主要用于需要聯(lián)合多方用戶進(jìn)行聯(lián)邦學(xué)習(xí)場(chǎng)景,協(xié)調(diào)方機(jī)構(gòu)作為中央服務(wù)器,起著協(xié)調(diào)全局模型的作用。
2.去中心化聯(lián)邦學(xué)習(xí)架構(gòu)
在多家參與機(jī)構(gòu)面臨數(shù)據(jù)孤島,又難以從多家機(jī)構(gòu)中選出協(xié)調(diào)方的場(chǎng)景,一般可以采用去中心化的聯(lián)邦學(xué)習(xí)架構(gòu)(對(duì)等架構(gòu))。
九、總結(jié)
雖然聯(lián)邦學(xué)習(xí)解決了分布在不同機(jī)構(gòu)的數(shù)據(jù)在不泄漏隱私的情況下得以應(yīng)用,突破數(shù)據(jù)隱私障礙,提升了數(shù)據(jù)價(jià)值。但聯(lián)邦學(xué)習(xí)距離落地仍然存在許多技術(shù)難點(diǎn):
- 通信開(kāi)銷問(wèn)題:聯(lián)邦學(xué)習(xí)中的通信開(kāi)銷問(wèn)題是影響聯(lián)邦學(xué)習(xí)效率的主要瓶頸之一。
- 數(shù)據(jù)的非獨(dú)立同分布: 通常情況下,機(jī)器學(xué)習(xí)的數(shù)據(jù)集是獨(dú)立同分布的,而聯(lián)邦學(xué)習(xí)的數(shù)據(jù)集卻常常以非獨(dú)立同分 布(Non-Independent Identically Distribution,Non-IID)的方式存在,這就對(duì)聯(lián)邦學(xué)習(xí)的實(shí)際落地形成了挑戰(zhàn)。
- 系統(tǒng)和數(shù)據(jù)的異質(zhì)性:聯(lián)邦學(xué)習(xí)網(wǎng)絡(luò)中的客戶端系統(tǒng)通常會(huì)有多種類別,系統(tǒng)的異質(zhì)性以及來(lái)自設(shè)備的數(shù)據(jù)的不平衡、不一致分布會(huì)顯著影響聯(lián)邦學(xué)習(xí)模型的性能。并且客戶端的龐大數(shù)量和不一致性可能會(huì)使模型的可靠性下降。經(jīng)典的 FedAvg 對(duì)系統(tǒng)異構(gòu)性不夠健壯。
另外,除了技術(shù)難點(diǎn)之外,參與方的合作機(jī)制也需要探索,例如:
- 如何打破同類機(jī)構(gòu)之間的數(shù)據(jù)競(jìng)爭(zhēng)?
- 如何說(shuō)服擁有敏感數(shù)據(jù)的一方加入?
- 如何維持參與方的穩(wěn)定,同時(shí),若中途若有參與方退出,如何維持模型的穩(wěn)定?
總體來(lái)說(shuō),在數(shù)字化不斷發(fā)展的今天,可預(yù)見(jiàn)未來(lái)聯(lián)邦學(xué)習(xí)仍將是一個(gè)重要的研究領(lǐng)域。但目前聯(lián)邦學(xué)習(xí)還有待進(jìn)一步提升相關(guān)技術(shù)并增加成功落地案例。