纵向联邦学习
本博客地址:https://security.blog.csdn.net/article/details/123527977
一、縱向聯邦學習的定義
縱向聯邦學習(VFL)一般是適用于數據集上具有相同的樣本空間、不同的特征空間的參與方所組成的聯邦學習場景,縱向聯邦學習也可以理解為按特征劃分的聯邦學習。
舉個例子,我們假設有兩家公司A和B想要協同地訓練一個機器學習模型,每一家公司都擁有各自的數據。例如保險公司與銀行合作,根據同一用戶的購買歷史與消費習慣,為該用戶提供定制化的服務;醫院與制藥公司合作,通過利用同類患者的醫療記錄,從而治療患者的慢性疾病,并降低患者未來住院治療的風險。
由于用戶隱私和數據安全的原因,A方和B方不能直接交換數據,為了保證訓練過程中的數據保密性,此時需要加入了一個第三方的協調者C。C是一個半誠實的第三方,它主要用來幫助參與方進行安全的聯邦學習,C獨立于各參與方,它將會收集中間結果用來計算梯度和損失值,并將結果轉發給每一參與方。C收到的來自參與方的信息是被加密過或者被混淆處理過的,因此各方的原始數據并不會暴露給彼此,并且各參與方只會收到與其擁有的特征相關的模型參數。
二、縱向聯邦學習的架構
還是剛才的例子,我們假設C方是誠實的且不與A方或B方共謀,但A方和B方都是誠實但好奇的。被信任的第三方C是一個合理的假設,因為C方的角色可以由權威機關(如政府)扮演或由安全計算節點代替。
縱向聯邦學習的訓練過程一般由兩部分組成:首先對齊具有相同ID但分布于不同參與方的實體,然后基于這些已對齊的實體執行加密的或隱私保護的模型訓練。
縱向聯邦學習系統的架構:
?第一部分:加密實體對齊
由于A方和B方公司的用戶群體不同,系統使用一種基于加密的用戶ID對齊技術來確保A方和B方不需要暴露各自的原始數據便可以對齊共同用戶。在實體對齊期間,系統不會將屬于某一家公司的用戶暴露出來。
第二部分:加密模型訓練
在確定共有實體后,各方可以使用這些共有實體的數據來協同地訓練一個機器學習模型。訓練過程可以被分為以下四個步驟:
1、協調者C創建密鑰對,并將公共密鑰發送給A方和B方;
2、A方和B方對中間結果進行加密和交換,中間結果用來幫助計算梯度和損失值;
3、A方和B方計算加密梯度并分別加入附加掩碼,B方還會計算加密損失,A方和B方將加密的結果發送給C方;
4、C方對梯度和損失信息進行解密,并將結果發送回A方和B方。A方和B方解除梯度信息上的掩碼,并根據這些梯度信息來更新模型參數。
三、縱向聯邦學習算法之安全聯邦線性回歸
安全聯邦線性回歸算法主要是利用同態加密方法,在聯邦線性回歸模型的訓練過程中保護屬于每一個參與方的本地數據。
根據前文所述,一般會在A方和B方之間會加入一個第三方C方,但在實際中,將一個第三方加入此過程中并不總是可行的,因為第三方的合法性和可問責性難以得到保障,此時可以使用安全多方計算技術來移除第三方以及讓聯邦學習去中心化。不過在這里,我們依然以存在第三方的情況來探討這個算法。
3.1、安全聯邦線性回歸模型的訓練過程
在表述訓練過程前,我們先明確一下所使用的符號及含義:
| 符號 | 含義 |
| 學習率 | |
| 正則化參數 | |
| B方的標簽空間 | |
| 分別表示A方和B方的特征空間 | |
| 分別表示A方和B方的本地模型參數 | |
| 定義為? | |
| 定義為? | |
| 定義為 | |
| A方的本地數據集 | |
| B方的本地數據集和標記 | |
| 加法同態加密 | |
| 分別表示A方和B方的隨機掩碼 |
線性回歸模型訓練的過程:
●?步驟一:
A方:初始化?
B方:初始化?
C方:創建加密密鑰對,并將公共密鑰發送給A方和B方
●?步驟二:
A方:計算??和??,并將其發送給B方
B方:計算??、?、?,將??發送給C方
C方:無
●?步驟三:
?A方:初始化,計算,并將其發送給C方
B方:初始化,計算,并將其發送給C方
C方:解密??、、,將?發送給A方,將 發送給B方
●?步驟四:
A方:更新?
B方:更新?
C方:無
●?最終獲得的數據:
A方:?
B方:?
C方:無
在實體對齊和模型訓練期間,A方和B方所擁有的數據存儲在本地,并且模型訓練中的交互不會導致數據隱私泄露。需要注意的是,由于C方是受信任的,所以C方的潛在信息泄露可能會或可能不會被認為是隱私侵犯。為了進一步防止C方從A方或B方學習到相關信息,A方和B方可以將它們的梯度信息加上加隨機掩碼。
在上面的過程中,A方在每一步都會學習它的梯度,這對于A方來說并不足以學習到關于B方的任何信息,因為標量積協議的安全性建立在僅用 n 個方程無法解出 n 個以上的未知數的基礎上。類似地,B方也不能學習到關于A方的任何信息。由此可以證明該協議的安全性。
3.2、安全聯邦線性回歸模型的預測過程
在預測期間,兩方需要協作地計算預測結果,在預測過程中,屬于每一方的數據不會暴露給其他方。預測步驟如下:
●?步驟一:
A方:無
B方:無
C方:將?i (i代指用戶ID)發送給A方和B方
●?步驟二:
A方:計算??并將其發送給C方
B方:計算??并將其發送給C方
C方:計算??的結果
四、安全聯邦提升樹
4.1、安全聯邦提升樹的訓練過程
每一個被動方首先要對其所有的特征進行分桶,然后將每個特征的特征值映射至每個桶中,基于分桶后的特征值,被動方將聚合相應的加密梯度統計信息。通過這種方法,主動方只需要從所有被動方處收集聚合的加密梯度統計信息,從而主動方可以更高效地確定全局最優分割。
尋找最優分割算法的過程:
全局最優分割可以表示為:[參與方id(i),特征id(),閾值id()]。具體步驟如下:
●?步驟一:
從主動方開始,首先計算和,i∈{1,···,N},并使用加法同態加密對其進行加密。其中N為樣本個數。主動方將加密的和發送給所有的被動方。
●?步驟二:
對于每一個被動方,將當前節點樣本空間中樣本的特征映射至桶中,并以此為基礎將加密梯度統計信息聚合起來,將結果發送給主動方。
●?步驟三:
主動方對各被動方聚合的梯度信息進行解密,并根據以上算法確定全局最優分割,并將和返回給相應的被動方。
●?步驟四:
被動方根據從主動方發送的和確定特征的閾值,并對當前的樣本空間進行劃分。然后,該被動方在查找表中記錄選中特征的閾值,形成記錄:[記錄id,特征,閾值],并將記錄id和返回給主動方。
●?步驟五:
主動方將會根據收到的[記錄id,]對當前節點進行劃分,并將當前節點與[參與方id,記錄id]關聯。主動方將當前節點的劃分信息與所有被動方同步,并進入對下一節點的分割。
●?步驟六:
迭代步驟2--5,直至達到訓練停止條件。
4.2、安全聯邦提升樹的預測過程
那如何對新的樣本或未標注的樣本進行分類呢?新樣本的特征也分散于各個參與方中,并且不能對外公開,每個參與方知道自己的特征,但是對其他參與方的特征一無所知。因此,分類過程需要在隱私保護的協議下,由各參與方協調進行,分類過程從主動方的root節點開始,步驟如下:
●?步驟一:
主動方查詢與當前節點相關聯的[參與方id,記錄id]記錄?;谠撚涗?#xff0c;主動方向相應參與方發送待標注樣本的id和記錄id,并且詢問下一步的樹搜索方向(即向左子節點或右子節點)。
●?步驟二:
被動方接收到待標注樣本的id和記錄id后,將待標注樣本中相應特征的值與本地查找表中的記錄[記錄id,特征,閾值]中的閾值進行比較,得出下一步的樹搜索方向。然后,該被動方將搜索決定發往主動方。
●?步驟三:
主動方接收到被動方傳來的搜索決定,前往相應的子節點。
●?步驟四:
迭代步驟1--3,直至到達一個葉節點得到分類標簽以及該標簽的權值。
總結
- 上一篇: 性能测试之JMeter断言
- 下一篇: Android设置文字中粗