漫談聯邦學習

本文作者:數秦科技首席科學家&VP 崔偉博士

“聯邦學習” 是什麼?有什麼用?

大家可能知道,我們目前常用的人工智能應用(例如人臉識別、語音識別、圖像識別、智能推薦等)已經相當成熟,它們通常都依賴於大量的訓練樣本。也就是說,已知一個X(“樣本”),要判別它是否具備Y(“特徵”),我們需要大量已知的X、Y來反覆訓練我們的模型(這個過程叫做“學習”)。

很多企業、組織,通過各種方式採集到了這樣的數據樣本,在內部進行訓練,不斷優化自己的模型(常見的如神經網絡)。樣本越多,預測就可能越精確,這是很多互聯網公司都非常熱衷於獲取用戶數據的原因。

但是在很多時候,這些數據樣本是分散在多個地方,由不同機構持有的。

譬如一家銀行,希望分析自己客戶的貸款能力,它希望和保險公司(有客戶的保險數據)、互聯網公司(有客戶的上網行爲數據)等合作,匯聚更多的樣本和特徵信息,這樣自己的模型就會更加精確。但是,因爲法律規定和商業競爭的要求,這些保險公司、互聯網公司顯然不希望把自己的數據交出去(這就叫做“數據孤島”),但是它們可能也都希望通過彙總更多的數據來優化自己的模型。

這時候怎麼辦呢?

“聯邦學習”(Federated Learning, FL)就是爲了解決這個問題,即讓互相不信任的各方,可以把樣本和特徵匯聚到一起,共同獲得更好的預測模型。或者說白了,就是大家聯起手來學習。

“聯邦學習” 是怎麼實現的?

“聯邦學習”主要分爲三種,下面概要講講它們的實現方法。

1、橫向聯邦學習

如果是幾家業務類似的機構進行合作,也就是它們需要學習、預測的特徵是類似的,但是用戶、樣本是不同的,例如一個地區的不同銀行之間,他們各有各的客戶,但是需要分析的數據特徵都是存款額度、貸款額度等,那麼它們之間的合作,就叫做“橫向聯邦學習”(HFL)。

它的實現方法如下圖所示,簡單來說就是五個步驟:1)每個參與方從中央聚合器下載最新模型,然後在本地計算模型參數(又稱“梯度”);2)每個參與方將經過加密的梯度信息發送到位於聚合器;3)聚合器進行聚合操作(“安全聚合”,常見算法爲FedAvg),更新模型;4)聚合器把綜合更新後的模型分發到各個參與方;5)參與方更新自己的模型。6)經過若干次迭代,直到模型精確度(“損失函數”)達到設定值,模型就大功告成。

你看,就是這麼簡單。通過這種方式,實現了幾個目的:1)雖然每家的數據量有限,但是通過聚合,實現了數據樣本的共享。2)每家看不到別家的數據;聚合器也看不到各家的樣本數據;3)因爲聚合器有可能被攻擊(“DLG攻擊”),所以客戶端發給聚合器的梯度信息需要用同態加密(即加密後操作可以還原爲樣本操作,這個以後細說)或者差分隱私(例如加一個隨機數)的方法進行加密。

這就叫做“數據可用不可見,數據不跑模型跑”。

這種方式適用於同類機構之間的合作,例如銀行之間聯合建立風控模型,醫院之間聯合開發診斷模型,政府部門之間聯合開發政務管理模型等。

2、縱向聯邦學習

另外一種情況,則是組織的客戶羣體是類似的,但是特徵並不相同。譬如有一家銀行和一家保險公司同在一個城市,它們的客戶羣體很多是重合的,但是銀行的數據是用戶的資產信息,而保險公司的數據是用戶的保險信息,如果它們想要在不互相披露數據的情況下,聯合開發一個風控模型。這時候採用的方法叫做“縱向聯邦學習”(VFL)。

縱向聯邦學習主要分爲兩步:1) 對齊不同參與方的相同用戶樣本(“加密實體對齊”);2)對這些樣本進行加密的模型訓練(即下圖中右側部分)。

這裡面最難的部分,是如何在雙方都看不到對方用戶的情況下,實現“對齊”,即找到共同的用戶。這裡的算法是非對稱加密的RSA算法和哈希機制的結合。

訓練步驟爲:1)協調方負責分發公鑰,私鑰不發,這樣只有C可以解密(關於公私鑰機制,以後也會單獨寫篇文章)。2) A、B將對齊後的樣本進行同態加密和交互,分別計算各自的梯度和損失值。3)A、B算好以後,發給C(這時會加上掩碼或者噪聲,避免C泄密)。4)C進行解密,再發回給A、B。A、B解除掩碼,更新自己的模型。

這種方式適用於客戶羣體類似的不同機構之間的合作,例如一個城市的銀行和保險公司之間,醫院和保險公司之間等等。

3、聯邦遷移學習(FTL)

遷移學習是機器學習中的一種特殊門類,即用戶樣本和特徵都不同,類似於騎摩托車和自行車完全不同,我們希望通過學習,將騎自行車的技能遷移到騎摩托車上。

聯邦遷移學習針對的是兩家機構之間,樣本數據不同,特徵也不同的情況,例如兩個城市的銀行和保險公司。它們如何想要合作開發一個風控模型,就需要採用聯邦遷移學習。

聯邦遷移學習的架構類似於縱向聯邦學習,但是採用的梯度計算方法、損失函數、交換結果有所不同。這個領域目前相對較不成熟,不贅述。

“聯邦學習” 可以用於哪些領域?

根據上面的介紹可以知道,它可以起到下列作用:1)金融機構可以結合多方數據,建立更加全面的風控模型,對貸款人的信用進行評估;2)醫療機構可以整合不同醫院的數據,開發疾病檢測模型、影像分析模型或者疫情防控模型;3)監管機構可以通過組合不同部門、機構的數據,對洗錢、欺詐等行爲建立更加精確的預警模型。

“聯邦學習” 和隱私計算是什麼關係?

“隱私計算”是指在處理、分析數據的過程中保持數據的不透明、不泄露。聯邦學習是隱私計算的一種實現方法,另外還有多方安全計算(MPC)、差分隱私等方法。

“聯邦學習”有哪些優點和缺點?

優點:

在保障數據不出客戶端的情況下,兼顧分佈式計算和聯合計算的優勢。

各方只需要在本地進行訓練,數據體量不增加,算力成本壓力小。

缺點:

安全性的代價是性能。與不需要加密的分佈式機器學習相比,聯邦學習的性能顯然要低得多。

聯邦學習默認各個參與方是可信的,雖然採取了一些防範措施,但是仍然難以有效防範惡意參與方或者“誠實但是好奇”的參與方,引入虛假數據或者有害數據。

聯邦學習的各個參與方的計算能力不同,網絡連接不穩定,數據機構差異大等,而過程中又需要進行大量的互相通信,因而通信效率很容易成爲性能瓶頸。

這些不足,也正是各個院校、企業的計算機研發人員正在努力優化的方向。這些方面的成果可謂層出不窮,如Google方案、微衆銀行FATE方案、PATE方法、SecureBooster等等,都試圖在安全性、訓練性能、網絡效率等方面取得一定的平衡和突破。

*以上僅代表作者個人觀點