联邦学习 Federated Learning
應該很多人聽過但是始終都沒懂啥是聯邦學習?百度一下發現大篇文章都說可以用來解決數據孤島,那它又是如何來解決數據孤島問題的?
1、聯邦學習的背景介紹
近年來人工智能可謂風風火火,掀起一波又一波浪潮,從人臉識別、活體檢驗發現刑事案件報警到阿爾法狗大戰人類圍棋手李世石、再到無人駕駛、以及已被普遍應用的精準營銷,AI逐步進入人們生活的方方面面。當然也不免出現部分過度吹捧,導致對AI的誤解–AI無所不能,既然這么好用,為啥我不能拿來用一下?在追逐AI的同時卻忽略了一點,AI是靠數據來喂的,而且是大量優質數據。
現實生活中,除了少數巨頭公司能夠滿足,絕大多數企業都存在數據量少,數據質量差的問題,不足以支撐人工智能技術的實現;同時國內外監管環境也在逐步加強數據保護,陸續出臺相關政策,如歐盟最近引入 的新法案《通用數據保護條例》(GDPR),我國國家互聯網信息辦公室起草的《數據安全管理辦法(征求意見稿)》,因此數據在安全合規的前提下自由流動,成了大勢所趨;在用戶和企業角度下,商業公司所擁有的數據往往都有巨大的潛在價值。兩個公司甚至公司間的部門都要考慮利益的交換,往往這些機構不會提供各自數據與其他公司做與單的聚合,導致即使在同一個公司內,數據也往往以孤島形式出現。
基于以上不足以支撐實現、不允許粗暴交換、不愿意貢獻價值三點,導致了現在大量存在的數據孤島,以及隱私保護問題,聯邦學習應運而生。
1.1 目前面臨的一些問題:
系統部署:移動手機和可穿戴設備是現代十分常見的數據產生設備。這些設備每天都會產生巨量的各種形式的數據。考慮到算力需求,數據傳輸以及個人隱私的限制,系統部署越來越傾向于在本地存儲數據,模型計算由邊緣設備完成。
數據孤島:在大多數行業中,數據是以孤島的形式存在的,由于行業競爭、隱私安全、行政手續復雜等問題,即使是在同一個公司的 不同部門之間實現數據整合也面臨著重重阻力,在現實中想要將分散在各地、各個機構的數據進行整合幾乎是不可能的,或者說所需的成本是巨大的。
1.2 聯邦學習成為可行方案
如何在滿足數據隱私、安全和監管要求的前提下,設計一個機器學習框架,讓人工智能系統能夠更加高效、準確的共同使用各自的數據,是當前人工智能發展的一個重要課題。我們倡議把研究的重點轉移 到如何解決數據孤島的問題。我們提出一個滿足隱私保護和數據安全的一個可行的解決方案,叫做聯邦學習.
2、聯邦學習的概念
Build machine learning models based on data sets that are distributed across multiple devices while preventing data leakage.
分布在不同設備的數據擁有者在不暴露自己數據的基礎上聯合訓練出模型的方法
本質:聯邦學習本質上是一種分布式機器學習技術,或機器學習框架。
目標:聯邦學習的目標是在保證數據隱私安全及合法合規的基礎上,實現共同建模,提升AI模型的效果。
前身:聯邦學習最早在 2016 年由谷歌提出,原本用于解決安卓手機終端用戶在本地更新模型的問題;
2.1 聯邦學習公式化定義
2.2 聯邦學習與現有研究的區別
聯邦學習而言,首先在于聯邦學習中的工作節點代表的是模型訓練的數據擁有方,其對本地的數據具有完全的自治權限,可以自主決定何時加入聯邦學習進行建模,相對地在參數服務器中,中心節點始終占據著主導地位。
聯邦學習的過程分為自治和聯合兩部分。
- 自治的部分:首先,兩個或兩個以上的的參與方們在各自終端安裝初始化的模型,每個參與方擁有相同的模型,之后參與方們可以使用當地的數據訓練模型。由于參與方們擁有不同的數據,最終終端所訓練的模型也擁有不同的模型參數。
- 聯合的部分:不同的模型參數將同時上傳到云端,云端將完成模型參數的聚合與更新,并且將更新好的參數返回到參與方的終端,各個終端開始下一次的迭代。以上的程序會一直重復,直到整個訓練過程的收斂。
3、聯邦學習的分類
聯邦學習可以用在C端,也可以用在B端。
3.1 聯邦學習用在C端
FL應用在推薦系統 https://www.jianshu.com/p/770708d35b19
3.2 聯邦學習用在B端
我們把每個參與共同建模的企業稱為參與方,根據多參與方之間數據分布的不同,把聯邦學習分為三類:橫向聯邦學習、縱向聯邦學習和聯邦遷移學習。
3.2.1 橫向聯邦學習
3.2.1.1 適用場景:
橫向聯邦學習的本質是樣本的聯合,適用于參與者間業態相同但觸達客戶不同,即特征重疊多,用戶重疊少時的場景,比如不同地區的銀行間,他們的業務相似(特征相似),但用戶不同(樣本不同)
3.2.1.2 學習過程:
step1:參與方各自從服務器A下載最新模型;
step2:每個參與方利用本地數據訓練模型,加密梯度上傳給服務器A,服務器A聚合各用戶的梯度更新模型參數;
step3:服務器A返回更新后的模型給各參與方;
step4:各參與方更新各自模型。
由于各個參與方貢獻的是數據的樣本,因此對參與方貢獻評估的思路就是看看它提供的樣本對于訓練有沒有用,采用的方法是——刪除法。
每次刪掉一個參與方提供的樣本,重新訓練模型,計算刪前刪后兩個模型預測能力的變化,記為影響度(Infuence Measure),用該指標衡量各個參與方的貢獻。
步驟解讀:在傳統的機器學習建模中,通常是把模型訓練需要的數據集合到一個數據中心然后再訓練模型,之后預測。在橫向聯邦學習中,可以看作是基于樣本的分布式模型訓練,分發全部數據到不同的機器,每臺機器從服務器下載模型,然后利用本地數據訓練模型,之后返回給服務器需要更新的參數;服務器聚合各機器上的返回的參數,更新模型,再把最新的模型反饋到每臺機器。
在這個過程中,每臺機器下都是相同且完整的模型,且機器之間不交流不依賴,在預測時每臺機器也可以獨立預測,可以把這個過程看作成基于樣本的分布式模型訓練。谷歌最初就是采用橫向聯邦的方式解決安卓手機終端用戶在本地更新模型的問題的。
3.2.2 縱向聯邦學習
3.2.2.1 適用場景:
縱向聯邦學習的本質是特征的聯合,適用于用戶重疊多,特征重疊少的場景,比如同一地區的商超和銀行,他們觸達的用戶都為該地區的居民(樣本相同),但業務不同(特征不同)。
3.2.2.2 學習過程:
縱向聯邦學習的本質是交叉用戶在不同業態下的特征聯合,比如商超A和銀行B,在傳統的機器學習建模過程中,需要將兩部分數據集中到一個數據中心,然后再將每個用戶的特征join成一條數據用來訓練模型,所以就需要雙方有用戶交集(基于join結果建模),并有一方存在label。其學習步驟如上圖所示,分為兩大步:
第一步:加密樣本對齊。是在系統級做這件事,因此在企業感知層面不會暴露非交叉用戶。
第二步:對齊樣本進行模型加密訓練:
step1:由第三方C向A和B發送公鑰,用來加密需要傳輸的數據;
step2:A和B分別計算和自己相關的特征中間結果,并加密交互,用來求得各自梯度和損失;
step3:A和B分別計算各自加密后的梯度并添加掩碼發送給C,同時B計算加密后的損失發送給C;
step4:C解密梯度和損失后回傳給A和B,A、B去除掩碼并更新模型。
步驟解讀:我們以線性回歸為例具體說明其訓練過程。
具體訓練步驟如下:
在整個過程中參與方都不知道另一方的數據和特征,且訓練結束后參與方只得到自己側的模型參數,即半模型。
3.2.2.3 預測過程:
由于各參與方只能得到與自己相關的模型參數,預測時需要雙方協作完成,如下圖所示:
3.2.2.4 共同建模的結果:
- 雙方均獲得數據保護
- 共同提升模型效果
- 模型無損失
3.2.3 聯邦遷移學習
3.2.3.1 適用場景:
當參與者間特征和樣本重疊都很少時可以考慮使用聯邦遷移學習,如不同地區的銀行和商超間的聯合。主要適用于以深度神經網絡為基模型的場景。
3.2.3.2 遷移學習介紹:
遷移學習,是指利用數據、任務、或模型之間的相似性,將在源領域學習過的模型,應用于 目標領域的一種學習過程。
其實我們人類對于遷移學習這種能力,是與生俱來的。比如,我們如果已經會打乒乓球,就可以類比著學習打網球。再比如,我們如果已經會下中國象棋,就可以類比著下國際象棋。因為這些活動之間,往往有著極高的相似性。生活中常用的“舉一反三”、“照貓畫虎”就很好地體現了遷移學習的思想。
遷移學習的核心是,找到源領域和目標領域之間的相似性,舉一個楊強教授經常舉的例子來說明:我們都知道在中國大陸開車時,駕駛員坐在左邊,靠馬路右側行駛。這是基本的規則。然而,如果在英國、香港等地區開車,駕駛員是坐在右邊,需要靠馬路左側行駛。那么,如果我們從中國大陸到了香港,應該如何快速地適應 他們的開車方式呢?訣竅就是找到這里的不變量:不論在哪個地區,駕駛員都是緊靠馬路中間。這就是我們這個開車問題中的不變量。 找到相似性 (不變量),是進行遷移學習的核心。
3.2.3.3 學習過程:
聯邦遷移學習的步驟與縱向聯邦學習相似,只是中間傳遞結果不同(實際上每個模型的中間傳遞結果都不同)。這里重點講一下聯邦遷移的思想:
4. 聯邦學習與分布式學習的不同之處
分布式學習,參數服務器將數據存儲在分布式工作節點上,通過中央調度節點分配數據和計算資源。一切都由中央節點控制,工作節點沒有決策權。
聯邦學習,工作節點代表數據所有者。它具有本地數據的完全自治權,并且可以決定何時以及如何加入聯合學習。
最后,附上聯邦學習開源github:https://github.com/webankfintech/fate
https://zhuanlan.zhihu.com/p/79284686
https://www.jianshu.com/p/770708d35b19
總結
以上是生活随笔為你收集整理的联邦学习 Federated Learning的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家庭两个路由器上网设置两个路由器的如何设
- 下一篇: 线性代数之——行列式及其性质