[導讀]作者|?徐葳?清華大學交叉信息研究院長聘副教授、華控清交首席科學家前言:目前,“聯(lián)邦學習”這個術語在市場上存在很多認識上的誤解和混淆,主要原因是其既在廣義上表達了保護數據前提下聯(lián)合多方數據訓練模型的需求,又在狹義上表示了一類通過暴露部分數據信息來提升訓練性能的方法。有趣的是,作為...
作者 | 徐葳 清華大學交叉信息研究院長聘副教授、華控清交首席科學家
前言:
目前,“聯(lián)邦學習”這個術語在市場上存在很多認識上的誤解和混淆,主要原因是其既在廣義上表達了保護數據前提下聯(lián)合多方數據訓練模型的需求,又在狹義上表示了一類通過暴露部分數據信息來提升訓練性能的方法。有趣的是,作為廣義上的需求,它強調為了保護數據安全,可以犧牲部分準確性;但作為狹義的方法,它反而強調通過犧牲安全來換取性能提升。
初心:聯(lián)邦學習要達到的目標是什么?
1.聯(lián)邦學習的廣義定義:解決聯(lián)合建模的問題或需求
人們在進行機器學習任務時發(fā)現(xiàn)必須面臨的一個關鍵問題是:需要更多的數據從而才能得到一個好的模型。而更多的數據意味著:
(1)更多樣本點,以便減少模型偏差(bias),提升模型質量;
(2)一個標簽(例如一個用戶是否還錢);
(3)更多維度,以便更全面刻畫一個對象。但是這些額外數據經常由不同人持有,并且可能很敏感,沒人愿意拿出來共享、生怕暴露這些數據(例如用戶身份和某些行為特征),但是大家還都希望從訓練出來的更好的模型中獲益。
上述這一類問題,就是“聯(lián)邦學習”的需求。從廣義上講,能夠解決這一需求的機器學習方法,即多個數據方聯(lián)合訓練一個機器學習模型的技術,都叫做“聯(lián)邦學習”。因此,廣義上的聯(lián)邦學習是一個問題,或者說是需求,而不是一種技術或解決方案。
事實上,這一需求在多年前就已有解決方案。在密碼理論領域,采用多方數據訓練模型是多方安全計算技術的一個具體應用,理論上講我們可以用一個“多方計算”(也叫多方安全計算,Multi-party Computation, MPC)的方案來描述整個訓練過程;在數據挖掘領域,人們很早就提出了如k-匿名、差分隱私等方法;硬件領域,人們試圖做出更可信的硬件芯片來保證數據不泄露;近期人們也嘗試采取遷移學習等手段,試圖隱藏和個人相關的敏感信息。
2.聯(lián)邦學習的狹義定義:一類特定算法
然而現(xiàn)在市場上,聯(lián)邦學習這個術語被局限于一個更狹義的定義。現(xiàn)在人們普遍認為,聯(lián)邦學習是和多方安全計算、可信執(zhí)行環(huán)境、差分隱私等并列的一種隱私保護計算技術,這實際上采用的是一種狹義的定義。這種定義下的聯(lián)邦學習特指一類算法,其本質特征是在多個數據控制方運行,能夠讓各數據方之間只交換了某些模型訓練的中間數據。如果我們假設這些被交換的數據不包含敏感信息,那么這個模型的訓練過程就能達到我們想要的數據隱私保護目標。然而這個假設是否真實成立,目前尚無理論上的證明。
狹義的聯(lián)邦學習,作為一種獨特的方法提出,其主要動機是試圖在此前的幾種方法中取得一種平衡,即解決如下問題:
(1)多方計算等密碼學方法計算和通訊開銷高;
(2)k-匿名暴露信息太多;
(3)在原始數據上加入差分隱私需要的噪聲,對于多次迭代的機器學習結果的準確度影響太大;
(4)硬件可信程度未知。
也就是說,狹義聯(lián)邦學習的主要目標是試圖通過有選擇地暴露一些信息,從而實現(xiàn)訓練精度、訓練速度和數據隱私安全的平衡。本文下述“聯(lián)邦學習”均是基于這一狹義意義上的方法。
設計:聯(lián)邦學習理論上的挑戰(zhàn)
聯(lián)邦學習相比之前的隱私保護計算技術,其本質特征是暴露某些中間數據,并假設了這些數據不泄露敏感信息。然而越來越多的研究發(fā)現(xiàn),這一假設未必成立。
1.聯(lián)邦學習真的能做到“數據不動”么?
聯(lián)邦學習過程中雖然沒有發(fā)送任何原始數據,但它暴露的數據主要有兩類:一是模型迭代訓練中每輪的中間結果,二是在縱向聯(lián)邦學習中暴露的雙方數據交集中的元素。這一節(jié)我們著重探討第一類數據暴露,第二類留到第三節(jié)中討論。
一個常見的認知誤區(qū)是,不發(fā)送原始數據,做到“數據不動”就是安全的。這里實際有個非常強的安全假設,即聯(lián)邦學習每次迭代中暴露的中間結果,不會泄露有價值的信息。很多工作都證明了這個安全假設是不容易達到的。
聯(lián)邦學習每次迭代均會暴露中間結果,這一中間結果可能是每方提供的梯度,或者是多方聚合的梯度,或者是一個本輪結束之后的模型中間結果。這里的核心問題在于,中間結果是一個高維的向量或矩陣,在很多模型里,這個中間結果都缺少可解釋性。一個參與方可以根據這些暴露的結果以及結果之間的差異性去推算一些不應該暴露的信息[1][2][3][4]。中間結果具體會泄露什么信息很難確定,因此其安全性無法得到證明。有一些針對這一問題“打補丁”的方法,例如利用密碼學方法來計算梯度聚合,但無論如何加密,都不可避免地會向各方暴露一個本輪迭代訓練的中間結果,否則就失去了這一方法的核心價值,即通過暴露這個結果,減少加密,從而平衡計算代價與安全。
也有一些方法利用差分隱私來給中間結果加一些噪聲,但是這對于最終訓練結果的準確性影響也是未知的。當然,一個觀察是,參與方數量的增多會緩解噪音對準確性的影響。Google最初提出聯(lián)邦學習應用在2C場景中,含有大量客戶端,參與方數量龐大,每個參與方加上一些專門設計的噪聲(噪聲會互相抵消),從而同時保證了數據隱私安全及計算準確性。但是這一方法對于只有少量參與方的情況是否有效,以及究竟可滿足多少參與方的模型訓練的準確性,往往與具體數據和模型相關,通用的方法仍有待探索。
更為深層次的問題是,聯(lián)邦學習所專注的數據隱私保護一般定義在“原始數據不暴露”的層面上。然而實踐中需要保護的數據特定使用價值,很多情況下在于統(tǒng)計信息,例如某企業(yè)的平均薪資水平、訂單數,某金融機構的投資總額等。聯(lián)邦學習過程中交換的高維向量,顯然泄露了大量的統(tǒng)計信息,至于具體泄露了哪些統(tǒng)計信息,以及泄露這些信息的危害,一般與具體場景有關,因此非常難以判斷,極易形成“虛假的安全感”。無數信息安全領域的實踐證明,虛假的安全比沒有安全造成的后果更加嚴重。
緩解該問題(當然不是根本性的徹底解決)的一種思路是,定義一種通用的明、密文混合計算方式,并根據不同的場景需求(安全需求、性能需求等)靈活地選擇可以暴露什么,以及必須隱藏什么。也就是說,即使對于同一種機器學習算法,由于應用場景不同,也需要對算法的明文計算部分和密文計算部分進行適配性的規(guī)劃和調整。
2.上述聯(lián)邦學習中各參與方真的能誠實地參與計算么?
聯(lián)邦學習和很多隱私保護計算技術都基于一種“半誠實”的假設。從直觀上看,半誠實假設意味著參與方雖然有可能偷看或者泄露別人的數據,但是他們會遵守協(xié)議,即不會對數據造假。理論上,半誠實是一個安全假設,但在實踐中,我們應該有切實有效的機制來引導和制約使各參與方遵守協(xié)議。其中重要的一類方法是通過監(jiān)管,讓不誠實的行為被發(fā)現(xiàn)和被舉證,因此大家就不敢作假;另一類方法是讓不誠實的行為造成的不良后果盡量少(例如只是讓計算不能進行下去了,或者大家都知道結果是錯的等等)。
但遺憾的是,聯(lián)邦學習的分布式特點以及安全聚合機制往往讓數據造假變得更容易,更難被發(fā)現(xiàn)和舉證[5][6][7][8][9]。傳統(tǒng)數據挖掘算法無論是檢測數據造假還是容忍錯誤數據,均依賴于數據中內生的冗余信息,以及人們的先驗知識。由于聯(lián)邦學習交換的中間信息是高度凝練的統(tǒng)計信息,數據中缺乏冗余,又缺乏可解釋性,這些被傳遞的中間結果是否是捏造的假數據,難以確認。另外,攻擊者亦可通過加工假數據以逃避異常值檢測[10],從而對全局模型進行投毒攻擊。由于當前市面上許多方法使用了一種僅支持加法操作的半同態(tài)加密算法來保護各方提供的梯度,造假的檢測能力進一步喪失。退一步說,即使我們發(fā)現(xiàn)了造假行為,造假方完全可以抵賴說這些假數據就是自己的數據隨機采樣算出來的,理論上很難區(qū)分是其惡意造假,還是隨機抽樣造成的噪聲。
更為嚴重的是,每方的中間結果對于模型的訓練影響都很大,因此每一方都可以通過構造“有毒數據”來控制整個模型的訓練結果。例如在模型中留一個后門(即某些特定樣本的推理完全受惡意一方的控制)。相比于傳統(tǒng)的模型訓練,在聯(lián)邦學習過程中人們更難舉證這一后門是哪一方下毒造成的。許多研究已經證明,這樣的攻擊在橫向聯(lián)邦學習中廣泛存在[10][11][12][13][14],此類攻擊方法在縱向聯(lián)邦學習中也已經被發(fā)現(xiàn)。
《周易》上說,“慢藏誨盜”,意思是不把東西藏好了,就是教唆別人偷盜。我們認為一個技術不應該讓造假變得更容易、更難被發(fā)現(xiàn),因此聯(lián)邦學習在這一方面仍需要很多改進。
從監(jiān)管角度看,目前緩解上述問題的一種思路是,采取一些方法來強化聯(lián)邦學習的中心管控功能,具體包括:(1)除了參數聚合,將更多的計算邏輯納入中心化可監(jiān)管的范疇;(2)使用支持密文復雜計算邏輯的密碼學技術,如秘密分享(secret sharing),這樣可以最大程度上通過密文來分析數據的“造假”特征;(3)引入第三方獨立行使計算或監(jiān)管職責,鼓勵針對高價值、敏感數據的場內流通方式,而不僅僅在聯(lián)邦學習參與方之間進行計算;(4)使用存證機制,增強事后回溯和舉證能力。
3.聯(lián)邦學習真的促進了數據的公平共享么?
在一個公平的場景中,參與聯(lián)邦學習的各方,希望共同獲得一個模型,雙方要么獲得了相同的價值,或者獲得價值少的一方能夠獲得額外的補償。然而,聯(lián)邦學習其實并不能達到這個效果,反而會導致數據多的一方獲益更大。
當前國內聯(lián)邦學習主要應用場景是縱向聯(lián)邦學習,縱向聯(lián)邦學習的第一步是隱私求交(PSI),會將交集結果暴露出來。事實上,理論上的PSI方法,本身可以保護交集結果,但是如果不暴露交集,后續(xù)計算無法實現(xiàn)聯(lián)邦學習減少加密數據量的目的,因此我國業(yè)界常見做法就是把交集暴露出來。試想,一個大型互聯(lián)網公司擁有10億用戶上網數據,一個銀行擁有1000萬用戶金融數據?;ヂ?lián)網公司根本不在乎暴露交集,因為幾乎所有客戶信息反正他已經有了,它可以通過聯(lián)邦學習獲得1000萬銀行用戶標簽,至少知道了這1000萬人是這個銀行的客戶,以后不依賴于銀行數據,互聯(lián)網平臺也可對他們進行精準營銷等等。銀行當然也知道了自己的哪些客戶是這一互聯(lián)網產品的客戶,但是這個信息顯然沒有太大價值,因為絕大多數用戶都是這個互聯(lián)網產品的用戶,這個不用訓練也知道。銀行泄露了自己客戶的信息,換來的是一個模型,而且這個模型其實也不能單獨使用,還需要輸入只有互聯(lián)網公司擁有的數據維度才能有用,所以銀行在數據上仍然存在被互聯(lián)網企業(yè)卡脖子的風險。因此這個交易顯然是不公平的。更為有趣的是,當前的市場環(huán)境下,經常是數據少的金融機構向數據多的互聯(lián)網企業(yè)付費,更加加劇了這一不公平性。因此,縱向聯(lián)邦學習技術有利于擁有大量數據的公司獲取數據量相對較小的公司的數據信息。這樣的“聯(lián)邦”,實際上成為了大公司數據壟斷的延伸,難以實現(xiàn)公平合作的共贏生態(tài)。
理想的方式是,交集不暴露給雙方,在不暴露的交集上繼續(xù)完成后續(xù)機器學習過程,乃至后續(xù)推理的過程;但這樣做會完全損失聯(lián)邦學習暴露中間結果而帶來的性能優(yōu)化,喪失了其特性。
一個可行的解決方式也許是允許多種類型的參與方角色加入,促進數據生態(tài)和業(yè)務形態(tài)全面發(fā)展。比如,可以由小公司作為數據使用方提出聯(lián)合建模需求;也可以讓專門從事算法研究的參與方加入,通過貢獻算法模型獲取收益等。這樣每一方都可以貢獻自己的專長,同時也能夠使用他方的資源信息為自己服務。通過這樣不斷創(chuàng)新的技術應用方式,豐富業(yè)務發(fā)展模式,逐步構建良性循環(huán)的數據生態(tài)環(huán)境。
實現(xiàn):聯(lián)邦學習在系統(tǒng)工程與運維上的挑戰(zhàn)
目前聯(lián)邦學習在工程上的架構是一種多個數據源直接互聯(lián)進行計算的模式。這一模式給現(xiàn)有的私有云和企業(yè)網絡的部署帶來了額外挑戰(zhàn)。這些挑戰(zhàn)具體體現(xiàn)在網絡安全、算力可擴展性、易用性和可監(jiān)管性等方面。
1.算力與原始數據的耦合,帶來部署時網絡安全與算力擴展的挑戰(zhàn)
聯(lián)邦學習的主要算力都與原始數據源部署在一起。這里存在兩個問題,即企業(yè)防火墻配置的問題和算力可擴展性的問題。
一般來說,大數據平臺位于企業(yè)內部的后臺,應該部署在企業(yè)防火墻內,不應從外網直接訪問。聯(lián)邦學習的軟件模塊需要直接訪問原始明文大數據(端上的迭代需要在明文上進行),因此也需要進行企業(yè)內網的部署。然而,在訓練過程中,不同數據源方的軟件模塊需要頻繁互相通訊,因此需要在防火墻上對外暴露網絡端口。這一部署模式給企業(yè)的網絡和信息安全帶來了額外挑戰(zhàn)。另一種部署方式是將聯(lián)邦學習軟件模塊部署在企業(yè)防火墻外的DMZ區(qū)域(demilitarized zone,隔離區(qū))中,讓聯(lián)邦學習軟件跨過防火墻與內網中的大數據系統(tǒng)交換任務。這一部署模式安全性略好,但仍然需要給一個處于較低安全區(qū)(DMZ)中,且暴露網絡端口的聯(lián)邦學習模塊授權許多內網大數據平臺的訪問權限,一旦這個模塊被黑客攻破,后果會非常嚴重。
另外,聯(lián)邦學習主要計算都發(fā)生在數據源端,數據源需要的算力與其數據量和計算復雜度成正比。因此每個參與方都需要部署相應的計算能力,具備計算資源的可擴展性。聯(lián)邦學習的穩(wěn)定運行,也依賴于每一參與方的計算執(zhí)行可靠性。這種跨多個參與方的計算資源調度和容錯機制,與通常的云計算等有顯著差別。目前尚缺乏這方面的可靠的系統(tǒng)設計方案。
一種解決思路是,將一部分計算功能獨立出來(比如參數聚合功能),在額外的代理計算方上運行。這樣一來,各數據源方只需主動向代理計算方推送中間參數并適時獲取聚合結果,而無需暴露自身的網絡接口。另外,將算力獨立出來,有利于充分利用云計算的擴展性和容錯性,而不用再依賴于各數據源方的算力水平。
2.算法、系統(tǒng)和業(yè)務邏輯的耦合,帶來開發(fā)門檻高,難學難懂的挑戰(zhàn)
當前使用聯(lián)邦學習系統(tǒng)開發(fā)一個AI算法,開發(fā)者需要在提升模型準確度的同時,時刻牢記“多方”的概念,時刻關注什么信息、可以暴露什么、不可以暴露什么,時刻注意加密了什么數據,加密后的數據可以做什么處理,時刻計算傳輸數據需要多少代價。這就要求開發(fā)者同時了解密碼學、分布式計算、AI等領域知識。這樣的開發(fā)者是非常難于培養(yǎng)的,寫出來的程序非聯(lián)邦學習專業(yè)工程師也很難看懂,更不用說驗證其安全性。當前的聯(lián)邦學習開源代碼都只提供了核心功能,一些對于系統(tǒng)和數據安全缺乏理解的開發(fā)者在進行二次開發(fā)的過程中,極易忽略一些基本的安全策略配置,例如此前提到的防火墻的配置,以及聯(lián)邦學習中關于密鑰管理和分發(fā)的配置方法,從而造成虛假的安全感。
造成這一問題的根源在于,目前聯(lián)邦學習軟件的開發(fā)接口,抽象層級不夠高,把太多的實現(xiàn)細節(jié)暴露給開發(fā)者。這當然有工程成熟度的原因,但更深層次的原因是,為了應對我們在第二節(jié)中提到的聯(lián)邦學習的安全問題,導致現(xiàn)在聯(lián)邦學習的實現(xiàn)上都打上了多種安全補丁。一個常見的補丁方式是結合一些密碼學方法來掩蓋一些梯度,例如半同態(tài)加密,但這些密碼學方法都有比較復雜的密鑰管理機制的要求,并且只能進行一些特定操作(例如加法)。因此許多算法都需要圍繞這些密碼學方法在進行特定的改進,因此導致了更為復雜的軟件接口設計。如何利用更通用的密碼計算方法,定義一套抽象的開發(fā)接口,使得AI算法設計人員和業(yè)務人員不用再去關心系統(tǒng)底層的技術,是一個聯(lián)邦學習亟待解決的工程挑戰(zhàn)。
一個可推薦的實現(xiàn)思路是,逐層級構建算法體系,對外開放友好的編程接口。具體地講,在底層將基礎的密碼學協(xié)議進行封裝,構建基本的密碼操作指令集,支持密文計算引擎以及它與明文計算間的轉換。這樣,聯(lián)邦學習算法的開發(fā)人員,可同時面向明文和密文開發(fā)并提供算法函數庫,而業(yè)務邏輯開發(fā)人員不僅可以直接引用這些算法庫解決問題,而且可以像修改明文算法庫一樣查驗、分析和修改這些聯(lián)邦學習算法,而不需要任何的密碼或者聯(lián)邦學習的專門知識,就像直接在明文數據上開發(fā)大數據算法一樣。在運行時,可定義開發(fā)者自主編程接口和IDE,通過配置數據源,IDE可自動適配程序中的數據指向,使得開發(fā)者就像在一個數據源(可稱為“虛擬的數據中心”)上開發(fā)一樣。
3.P2P架構、半同態(tài)加密與參數聚合算法的耦合,帶來數據監(jiān)管的挑戰(zhàn)
監(jiān)管在數據流通中非常重要。監(jiān)管不僅僅是為了防止數據濫用對社會造成危害,同時也是避免數據造假和數據投毒的重要手段。
然而,聯(lián)邦學習的系統(tǒng)和算法都部署在各個數據源方,之間交換的數據全部通過加密傳輸,即使有一些中心化聚合中間結果的架構設計,這個中心化聚合節(jié)點也僅僅是在中間結果上做了很簡單的匯聚計算(例如求和),并不可能知曉各方在進行什么樣的數據處理,也更無法實現(xiàn)計算過程的存證。因此,一個聯(lián)邦學習的算法是否做了它聲稱的計算,只有參與方自己才知道(而且只知道自己是否做了正確的事情,不知道對方是怎么做的)。這樣的系統(tǒng)會導致在它上面進行的明文數據的直接交易(即打著隱私計算的幌子做明文數據交易)更難被發(fā)現(xiàn)和監(jiān)管。如果采用可驗證計算等手段對P2P系統(tǒng)進行監(jiān)管,會造成非常大的額外開銷。因此,如何做到對數據使用可監(jiān)管的聯(lián)邦學習,在技術和工程上都是很大的挑戰(zhàn)。其根源是,參數聚合階段只能做加法(目前由于全同態(tài)計算性能限制,只能選擇半同態(tài)加密算法),因此參數聚合服務器這個最適合履行監(jiān)管責任的一方,沒有能力分析它所處理的數據。
解決上述問題的一個途徑是采用支持通用密文計算的代理計算架構,在密文上進行數據特征分析。代理計算的通用計算功能越強大,對數據分析面就越大,所能實現(xiàn)的監(jiān)管力度就越強。另外,為了防止參與方超范圍使用其他參與方的數據,應建立多方計算合約機制,由參與計算的各方在計算開始前就數據的具體使用目的和方式簽訂合約進行授權,各方嚴格按照計算合約執(zhí)行,并對計算合約和執(zhí)行過程進行存證,保證事后可回溯、可審計、可舉證,從而防止數據濫用。
總結:需求還是方法?
綜上所述,目前,“聯(lián)邦學習”這個術語在市場上存在很多認識上的誤解和混淆,主要原因是其既在廣義上表達了保護數據前提下聯(lián)合多方數據訓練模型的需求,又在狹義上表示了一類通過暴露部分數據信息來提升訓練性能的方法。有趣的是,作為廣義上的需求,它強調為了保護數據安全,可以犧牲部分準確性;但作為狹義的方法,它反而強調通過犧牲安全來換取性能提升。
因此,作為行業(yè)用戶,選擇是不是存在“聯(lián)邦學習”的需求(也叫做數據融合計算、數據價值流通的需求),是一個純粹的業(yè)務問題,其判斷標準是數據價值流通能否帶來業(yè)務價值;在這一需求基礎上,是不是要選用狹義的“聯(lián)邦學習”方法和系統(tǒng)來滿足這個需求,是個純粹的IT技術和安全合規(guī)問題,需要考慮和平衡的是數據的敏感性、泄露的代價,和進行數據保護所需的技術成本。
也許,這樣才能回歸到我們探索聯(lián)邦學習的初心。
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。