2016年Google提出了Federated Learning(聯邦學習),能夠讓所有用戶的手機「合作式」訓練一個強大的模型,同時資料可以只要存在用戶自己的手機中,維持了資料的隱私性,在這幾年,隨著隱私意識與法規的提升,Federated Learning也受到了各大公司、研究機構的重視。
要搞懂Federated Learning有兩個必備的知識,1. 資料隱私,2. 分布式機器學習(Distributed Machine Learning),接下來我會分別簡單介紹這兩者,並介紹Federated Learning的研究問題與第一個演算法FedAvg。
Google在多年前推出一個服務,能夠整合Google mail, map, calendar等應用的資訊,提供用戶更自動化的服務[18],什麼意思呢?
想像你今天暑假想要到荷蘭阿姆斯特丹遠離都市生活看著名的風車村,從你訂好機票的那一個,信件中收到航空公司的確認信,同時Google用他的人工智慧系統從信件中也抓到了這個資訊,幫你把來回的機票時間標在Google Calendar上,並且把你下飛機後會搭的接駁車、想要居住的旅館都標在Google Maps上,你不用再一個一個手動,Google一次幫你做好。
很方便吧,那這有侵犯隱私嗎?
在下結論之前想請你快速想像另一個情景,今天Google Map同時也有你過去的用餐地點的資料,知道你喜歡吃什麼、不喜歡吃什麼,所以把阿姆斯特丹你喜歡的餐廳全部都標出來推薦給你。Google從你的搜尋紀錄也知道你喜歡什麼類型的景點,所以也幫你把在阿姆斯特丹的行程規劃好。
雖說Google貼心地安排了所有的行程,但也順勢地藉由GPS定位或是搜尋紀錄,投放了周邊商家的廣告,在無形之中旅遊行程的客製化與人們的隱私權之間的界線開始變得更模糊了。 也許我們可以稍微反思,當人們的定位或搜尋紀錄被利用在投放廣告等其他用途的同時,是不是也代表著人們的隱私正在一點一滴的流失呢?
但是客製化跟隱私的界線在哪?
客製化的前提是使用個人資料,問題是哪些資料可以被使用,哪些不可以被使用,被如何使用,應該要能由使用者決定
2018年紐約時報揭露,劍橋分析公司使用5000萬個FB上用戶的資料進行建模,進而研究出每個用戶的個性、偏好,進而應用在psychographic targeting(心理變數行銷),針對每個人最容易被煽動的角度客製化行銷文宣,進而影響大選結果。[1]
2019年Netflix將這個事件改編成短影集「個資風暴:劍橋分析事件」,引起了大眾對個人資料在網路上流通的重視度。[2]
2020年哈佛大學社會心理學教授Shoshana Zuboff出版了「監控資本主義時代(The Age of Surveillance Capitalism: The Fight for a Human Future at the New Frontier of Power)」,講解了在高度數位化、智能化的現在,企業如何使用個人資料來改變我們的行為。[3]
這一系列的事件其實都顯示出了,大家意識到了隨著科技快速發展,現有法規對個人資料的保護已經不夠完整。
所幸在2016年歐盟就率先制定了GDPR(General Data Protection Regulation)來限制企業對個人資料(Personal Data)的使用,訂立出了一個高標準要求企業,GDPR的核心是「給用戶自由選擇資料是否被使用」,包含了「被遺忘權」(right to be forgotten)、「限制處理權」(right to restriction of processing)
而GDPR的出現也衝擊了現今最火熱的兩大技術「深度學習」、「區塊鏈」。
隨著越來越高的隱私意識,深度學習研究者們也相對應的開啟了Privacy ML的研究熱潮,而Federated Learning的核心就是為了保有隱私,讓用戶在「不用上傳自己資料到企業端的同時可以訓練模型、使用智能化服務」。
分布式機器學習其實不是新議題了,本質就是distributed system(分布式系統)跟機器學習的結合。
那為什麼我們需要分布式系統,其實就像是GPU的邏輯,當一個程式先後要做的很多工作,分攤給多個處理器、多台電腦來進行運算,那分工合作的結果就應該要縮短時間,得到更快速的結果。
但是在分布式系統大家最大的困難其實是如何讓不同台機器能夠「相互溝通(Communication)」,假設今天我寫了一個程式來運算Mergesort,演算法的課程讓我們知道我們可以在多個電腦中分別去一部份資料的Mergesort,最後再Merge起來,但是問題是:怎麼把每台電腦資料快速、穩定的傳輸到其他電腦。
溝通(Communication)是分布式系統的核心瓶頸。
就像是我們大學在做團體報告的時候,為了讓每個人的編輯狀況能夠同步,我們會使用Google doc、Google Slides、Google Spreadsheet...等共編軟體,來同步每個人的進度。但是在過去這些軟體不發達的時候,我們能做的就是用word做好自己的部分,然後用隨身碟帶到出去傳到別人電腦裡再進行整合。
在以前我們只能用隨身碟來傳輸檔案,而從我家到組員小明家需要2小時車程,那這個溝通瓶頸就會讓我覺得「還不如我自己把報告做完」,因為2小時的通訊時間實在太久了。所以很多時候分布式系統會像通識課程一樣,分組比不分組還忙。
而Federated Learning其實就是讓每個用戶用自己的裝置進行訓練,得出「個人小模型」,訓練結果再統整到雲端上,統整出一個「多用戶通用大模型」,藉此用戶可以保有自己資料不用上傳,同時又可以享受到智能化服務。
而Federated Learning核心困難也是如何讓溝通的成本變得盡量低。
所以講完資料隱私跟分布式機器學習,那我們來統整一下Federated Learning(聯邦學習)是什麼?
而這個第4點其實就是論文中最常提到的公式
代表用Federated Learning訓練出來的performance,代表用傳統方法(所有資料上傳雲端)訓練出來的performance,兩者差距要夠小。
這邊如果對分布式機器學習比較熟習的朋友可能已經想到,這不就是data parallelism嗎?
複習一下data parallelism [16, 17]
因為deep learning主要的運算瓶頸是在算出gradient,所以在這步我們進行大量平行,而用gradient去更新weight很快,所以我們交由server一個來做,所以data parallelism可以大幅度提升訓練速度。
Federated learning其實的確就是一種特殊的data parallelism,但是比起data parallelism有多4個特點[5]
同時因為用戶端的溝通成本更高,我們隨便一個現在的模型動輒就2 3GB大,如果很頻繁的溝通,會佔據用戶的網路頻寬,所以我們希望更大幅度的減少溝通次數,用運算換溝通。
2016年Google發表了Federated learning of deep networks using model averaging[5]這篇論文,為Federated Learning奠定了研究方向。而論文裡面也提出了第一個Federated Learning的演算法FedAvg。
FedAvg的邏輯其實就是從Data Parallelism出發,再更進一步去減少溝通次數,而為了減少溝通次數,FedAvg讓每個裝置進行多次的更新才溝通。
每個用戶裝置update多個batch後,得到新的Model Weight,再把多個用戶的Model平均起來。
因為每個用戶都update多個batch,所以得到的都是更「成熟」的模型,只需要溝通較少次就能得到好的模型。
詳情可以看演算法Pseudocode。
但是因為NonIID的特質,每個「成熟」的模型可能長相差異極大,所以FedAvg實際上需要更多的運算才能收斂好,但是只要減少溝通次數就是最終的勝利。
從初始的FedAvg被提出後,研究者後來進而提出了Federated Learning的3種分類[6]
1. Horizontal Federated Learning(橫向聯邦學習)
每個client的資料有相同的「feature set(特徵集)」,而彼此之間比較少用戶重疊,實際上我前面講的Federated Learning準確都是在講Horizontal Federated Learning。
包含Google的FedAvg可以讓每個用戶手機不上傳你的訊息資料到雲端上依舊訓練出一個好的模型。同時像多個醫療機構也可以在不共用病患個資的前提下結合多家醫院的模型來得到更精準的模型。
2. Vertical Federated Learning(縱向聯邦學習)
每個client比較少重複的feature set(特徵集),但是會有大比例重疊的用戶,像是一個地區的醫療機構跟政府機關可能面對的用戶都是同一群用戶,但是醫療機構的資料上可能以病歷為主,政府機關則是以公民資料為主,裡面有一部份特徵重疊,但是更多是沒有重疊的特徵,這種時候就不能使用以往的data parallelism訓練方法。
先假設我們把所有資料都收集到雲端上,這種時候我們可以用資料中那些重疊的特徵,去對齊來自於不同機構的資料,這不是大問題,但是這在Federated Learning的設定下就做不到了,因此Vertical Federated Learning更多是使用特徵加密的方法來保護用戶隱私。[7, 8]
3. Federated Transfer Learning(聯邦遷移學習)
如果client之間feature set(特徵集)跟用戶都重疊較少,那就屬於Federated Transfer Learning,訓練的難度也急遽上升,目前也還是一個非常初期的研究領域。
可以看到除了最基礎的Horizontal Federated Learning以外,其他兩種Federated Learning的應用場景也非常複雜,但是如果能夠達成利用任意機構的資料都能提升模型performance,甚至用戶跟feature set(特徵集)都沒有重疊,那就能同時保有每個機構資料的隱密性,又更進一步提升人工智能的威力。
Federated Learning有很多研究的困難點,這邊提幾個常被討論的觀點給大家參考
Federated Learning是一個從2016開始的研究領域,初期本質其實跟分布式機器學習很像,擴展了幾個獨有的特質,而現在Federated Learning的基礎方法其實已經很多了,包含tensorflow、pytorch、MXNET都有辦法使用federated learning,但是隨機而來的挑戰也變得更複雜,如何真正保護用戶隱私並面對各種挑戰,是Federated Learning最大的困難與機會。