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