聯盟式學習 (Federated Learning)

突破隱私權的重圍!

Sherry Su
Sherry.AI
8 min readFeb 4, 2020

--

如果要用一句話說明聯盟式學習,那就是 state-of-the-art machine learning without centralizing data, and with privacy by default. (by Google)

一、介紹

傳統的機器學習方法需要將訓練數據集中在一台機器或數據中心,但科技的進步使得資料無所不在,近年來各國更加重視資料的隱私權,紛紛制定了嚴格的隱私條款,取得數據更加困難,數據整合也面臨著重重的阻力,很難有效的共享,導致許多領域存在著數據孤島問題。若要符合隱私權又要將這些資料集中到數據中心需要耗費非常大。

補充說明:
在 2018年 5月歐盟通過 General Data Protection Regulation(GDPR)法案,法案明確指出所有與個人相關的信息都是個人數據,對數據的使用行為必須要有用戶的明確授權與同意。

在這樣的挑戰下,Google 在 2016 年提出了一個嶄新的概念「聯盟式學習(Federated Learning)」,資料不需要離開設備端各自在自己的設備訓練模型,並且通過特定的加密的機制在雲上建立一個共有的模型與進行模型的更新,用以改善產品設備的品質,透過這樣子的聯盟式學習的概念所有的訓練數據都仍然保留在原本的設備上。

二、什麼是聯盟式學習

假設有不同的企業 A、B 與 C,這些企業都有相同的特徵(feature) 與不同的客戶(sample),根據隱私權的相關法規是不能將雙方的數據加以合併,因為他們各自的客戶並沒有同意授權讓這些企業這樣做,在這樣數據不充分的狀態下其實是很難建立一個效果好的模型。

而聯盟式學習的目的,就是希望做到各個企業的自有的數據不出自己的公司各自訓練模型,並且通過加密的機制建立一個共有的模型與進行模型的更新,這不僅保護了隱私,還降低大量數據集中傳輸的成本。

聯盟式學習強調的是數據擁有方在不用給出自己的數據的情況下,也可進行訓練得到模型。

此外,Google 為了讓大眾更容易了解聯盟式學習的概念,也出版了一版漫畫:

三、 聯盟式學習的種類

聯盟式學習又根據資料的型態分為橫向聯盟式學習(horizontal federated learning)、縱向聯盟式學習(vertical federated learning)、聯盟式遷移學習(federated transfer learning)。

🌿 橫向聯盟式學習

橫向聯盟式學習適用於特徵重疊性高且樣本重疊少時的情境,比如不同地區的醫院,他們的業務相似(特徵相似),但病患不同(樣本不同)。

圖片來源:Federated Machine Learning: Concept and Applications

首先, 每個參與方會得到同樣的模型定義,並且統一模型的初始化參數。
不斷迭代以下步驟訓練模型:
① 每個參與端(企業或設備用戶)利用自己的資料訓練模型,各自計算梯度,再將加密過的梯度修正量上傳至 Server。
② 由 Server 整合各參與端的梯度並且更新模型。
③ Server 回傳模型更新後的梯度給各個參與端。
④ 參與端更新各自的模型。

目前橫向聯盟式學習因為他的架構簡單,因此也被運用的最為廣泛。

🌿 縱向聯盟式學習

縱向聯盟式學習適用於樣本重疊多且特徵重疊少的情境,而其中某一方還擁有模型需要預測的標籤(label)。比如同一地區的醫院和藥局,他們接觸的病患都為該地區的居民(樣本相同),但業務不同(特徵不同)。

圖片來源:Federated Machine Learning: Concept and Applications

基於隱私權規範與安全考量,不能直接公開交換數據。因此, A與B需要利用加密樣本對齊的技術(Encrypted entity alignment)確認雙方共有的客戶,之後再利用這些數據進行加密訓練。

A:參與端 1、B:參與端 2、C:協作者
① C 將公鑰發給 A 和 B(公鑰是用來加密的)。
② A 和 B 分別計算和自己相關的特徵中間結果,並加密交互,用來求得各自梯度和損失值(loss)。
③ A 和 B 分別將計算後且加密的梯度修正量傳送給 C,同時 B 根據標籤計算損失值並把結果彙整給 C。
④ C 將解密後的梯度修正量分別回傳給 A 和 B,更新雙方的模型。

在整個過程中參與方都不知道另一方的數據和特徵,且訓練結束後參與方只會得到自己估計的模型參數。縱向聯盟雖然解決特徵重疊少的問題,但是只要參與端越多流程架構就會越複雜,更難以執行。

🌿 聯盟式遷移學習

當擁有數據者間的特徵和樣本重疊都很少時,則是可以使用聯盟式遷移學習, 這種狀況就不會針對數據進行切割,而會引入遷移式學習(transfer learning)來克服資料與標籤不足的狀況。

四、聯盟式學習與分散式機器學習的比較

聽到這裡一定不免懷疑,這不就是分散式機器學習(distributed ML)的概念嗎?兩者到底差再哪裡呢?這裡就根據 Federated Machine Learning: Concept and Applications 統整了兩者的差異:

橫向聯盟式學習跟分散式機器學習最大的差別在於它的每個結點(node)都是獨立的參與端(data owner),因此在建模的過程中可能會因為參與端(data owner)的偏好而有動態的改變,並且整個學習過程都受到加密的保護。但基本上我認為橫向聯盟式學習聯盟式學習的概念就是加密過後的分散式學習而已 😕。

五、聯盟式學習在Google的應用實例

Google 在 Android 的 Google Gboard 鍵盤中,採用了橫向聯盟式學習的技術。Gboard 主要會根據使用者打的單詞推薦下個可能打出來的單詞,來加快使用者的打字速度。導入在 Gboard 的聯盟式學習則會根據設備上的歷史記錄,在下一次迭代中改進模型的性能。

Photo by Edho Pratama on Unsplash

但其實 Google 將聯盟式學習應用在 Gboard 產品上,也碰到了許多需要克服的困難與技術挑戰(例如:數據以非常不均勻的方式分佈在數百萬個手機中),而 Google 也承認並不是所有的機器學習應用都適用於聯盟式學習。

此外,Google 也提供了聯盟式學習相關的範例程式碼,簡單的教導大家如何在自己的資料集使用聯盟式學習,在 TensorFlow 的網站上都能找到相關的資訊與程式碼。

若想更深入了解 Google 在聯盟式學習的應用可以參考2019年 Krzysztof Ostrowski 在 TensorFlow Dev Summit 的主題演講《TensorFlow Federated (TFF): Machine Learning on Decentralized Data》。

五、 總結

雖然聯盟式學習解決了部分隱私權的問題,但是聯盟式學習仍然有許多挑戰需要要克服:

  1. 如何打破企業間的數據孤島競爭?
  2. 如何說服擁有敏感數據端的人加入?
  3. 若中途若有參與端退出,該如何維持模型的效能與穩定度?

因此,為了克服這些困難,Google 仍然繼續深入研究與隱私權相關的機器學習技術,同時他們也持續致力於推廣與擴大聯盟式學習應用範圍。

最後,感謝你認真讀完這篇文章,如果你喜歡我的文章,請給我一些「掌聲👏🏻「追蹤我的專欄」,你的支持會是我持續分享的動力。若有希望我分享的主題,也歡迎在下面留言 📝讓我知道。

參考資料

  1. https://ai.googleblog.com/2017/04/federated-learning-collaborative.html
  2. Qiang Yang, Yang Liu, Tianjian Chen, Yongxin Tong. Federated Machine Learning: Concept and Applications. ACM Transactions on Intelligent Systems and Technology 10(2):1–19, 2019.

--

--

Sherry Su
Sherry.AI

Data Scientist @Trend Micro. Graduated from National Taiwan University.