最近,我和隐私计算干上了。
最近一段時間,我除了寫業務代碼之外,還整了個新鮮玩意,那就是參與搞了一下隱私計算相關的事情。
現在有空了,剛好總結一下。因為隱私計算可能對于很多工程開發朋友來說很陌生,所以,**我這篇文章主要是給大家科普一下,讓大家知道有這么個技術以及現在的主要方向。**這里面不會有太多的算法內容和底層原理,相信大家應該都能看得懂。
隨著移動互聯網、云計算、物聯網等信息技術的蓬勃發展,世界進入了數據爆炸的"大數據時代"。在各行各業,數據都發揮著至關重要的作用,越來越多的場景需要多方數據的流通和共享。如我們所在的金融部門,則需要借助外部金融數據,結合我們的場景業務數據進行聯合建模,實現聯合風控、數字營銷、智能反詐、精準獲客等。
所以,站在這個歷史節點上,在數據合作、共享方面,橫亙在我們面前的有幾個重要的問題需要解決:
1、“數據孤島“現象普遍存在;數據流通安全性風險高;
2、數據合規監管日趨嚴格;隱私泄露導致信任鴻溝;
其中,隨著個人信息保護法在2021年11月的推出,監管問題更是我們亟待解決的。
但是近幾年,隨著電子商務法、數據安全法、《個人信息保護法》等一些列法律法規的推出,使得我們不得不重視個人隱私的問題。
雖然個人信息的保護越來越嚴格,但是,從很多的法規中我們可以解讀出來,其實,大的形式上,官方還是比較支持我們合規的進行數據的利用和開發的。
那么,如何解決這些問題呢?
其實,從《個保法》中我們可以找到一些切入口,根據中對個人信息的定義是這樣的:
以電子或者其他方式記錄的與已識別或者可識別的自然人有關的各種信息,不包括匿名化處理后的信息。
可見,如果我們能夠對個人信息進行去標識化和匿名化處理,那么,就可以利用這些信息了。
所以,很多相關的技術也就誕生了,這些技術主要解決的就是通過數據可用不可見的方式幫助我們進行跨機構間的數據協同。這類技術,統稱為隱私計算技術。
隱私保護計算經過很多年的發展,在具體的落地實現的技術上,主要有三個主流的方向:
1、基于密碼學的多方安全計算(MPC) 2、基于可信硬件的可信執行環境(TEE) 3、基于混合技術方案的聯邦學習(FL)
想要實現去標識化和匿名化,主要的方式就是讓原始的用戶數據無法被識別。
其中多方安全計算主要是基于密碼學的方式,把數據進行加密處理,這樣我們就可以使用加密后的數據進行算法建模了。
另外,可信執行環境是一種基于硬件的數據,大概就是把數據放到一個硬件中,只在這個硬件內部使用,外部無法直接讀取。
還有一種技術那就是混合了多種方案的技術,那就是聯邦學習。
其中聯邦學習因為其不依賴硬件、可以解決復雜的算法建模問題等優勢,雖然相比其他方案存在著一定的效率問題,但是隨著技術的發展,如何突破性能瓶頸,達到實用性、安全性的平衡,并進一步提升安全性,這些問題終將被解決。所以,這項技術被認為是"人工智能的最后一公里"、“下一代人工智能協同算法和協作網絡的基礎”。
聯邦學習
聯邦學習(Federated Learning)是一種新興的人工智能基礎技術,在 2016 年由谷歌最先提出,原本用于解決安卓手機終端用戶在本地更新模型的問題,其設計目標是在保障大數據交換時的信息安全、保護終端數據和個人數據隱私、保證合法合規的前提下,在多參與方或多計算結點之間開展高效率的機器學習。
我們把每個參與共同建模的企業稱為參與方,根據多參與方之間數據分布的不同,把聯邦學習分為三類:橫向聯邦學習、縱向聯邦學習和聯邦遷移學習。
橫向聯邦學習的本質是樣本的聯合,適用于參與者間業態相同但觸達客戶不同,即特征重疊多,用戶重疊少時的場景,比如不同地區的銀行間,他們的業務相似(特征相似),但用戶不同(樣本不同)。主要解決樣本不足的問題。
縱向聯邦學習的本質是特征的聯合,適用于用戶重疊多,特征重疊少的場景,比如同一地區的商超和銀行,他們觸達的用戶都為該地區的居民(樣本相同),但業務不同(特征不同)。主要解決特征不足的問題。
因為我們這面主要是金融業務,隱私計算的應用場景是基于聯邦學習和外部銀行、機構等做聯合風控,多頭借貸等金融業務。所以我們基本上是想用我們具有的用戶的電商數據、和外部機構具有的信貸數據、征信數據等進行縱向連邦學習。
縱向聯邦學習的主要流程如下:
第一步:加密樣本對齊。是在系統級做這件事,因此在企業感知層面不會暴露非交叉用戶。 第二步:對齊樣本進行模型加密訓練: step1:由第三方C向A和B發送公鑰,用來加密需要傳輸的數據; step2:A和B分別計算和自己相關的特征中間結果,并加密交互,用來求得各自梯度和損失; step3:A和B分別計算各自加密后的梯度并添加掩碼發送給C,同時B計算加密后的損失發送給C; step4:C解密梯度和損失后回傳給A和B,A、B去除掩碼并更新模型。
FATE 框架
因為目前關于聯邦學習的技術,很多大廠都有在投入,其中阿里、螞蟻、字節、騰訊等都很多成功的案例。
我們此次在進行聯邦學習相關調研的時候,有不同的同事分別調研不同的框架。我這面主要負責基于開源的框架進行調研。
因為關于聯邦學習,最重要的還是解決數據的安全性問題,目前看來,很多外部機構,對于開源的框架接受度更高一些。市面上也有很多聯邦學習框架,如微眾銀行開源的FATE、字節開源的FedLearner、百度開源的PaddleFL等。其中 FATE 被使用的最廣泛,被認為是聯邦學習的樣板項目。
FATE (Federated AI Technology Enabler) 是微眾銀行AI部門發起的開源項目,為聯邦學習生態系統提供了可靠的安全計算框架。FATE項目使用多方安全計算 (MPC) 以及同態加密 (HE) 技術構建底層安全計算協議,以此支持不同種類的機器學習的安全計算,包括邏輯回歸、基于樹的算法、深度學習和遷移學習等。
FATE 有4種部署方式,分別是基于Docker-Compose的部署、Standalone部署、Native的集群部署、基于KubeFATE的部署。
-
基于Docker-Compose:快速體驗一下FATE,跑的模型和數據在單臺機器就夠了,部署起來比較簡單。
-
Standalone單機部署:只是想開發算法,而開發機器性能又不高。
-
基于KubeFATE:對FATE的使用需求因數據集和模型變大,需要擴容,并且里面有數據需要維護一個FATE集群,則考慮使用基于KubeFATE在Kubernetes集群的部署方案。
-
Native的集群部署:一般是在特殊原因下才會用,如內部無法部署Kubernetes,或者需要對FATE的部署進行自己的二次開發等。 為了快速驗證,我們此次部署主要是采用了基于Docker-Compose和基于KubeFATE兩種部署方式。部署過程中還是遇到了很多的問題的。
關于這兩種部署方式的部署過程以及一些問題的解決,不是本文的重點,我把他們單獨放到我的博客中了,大家如果感興趣可以去我的博客中閱讀。
下面這張就是 FATE 的一個部署架構圖:
太多的細節就不在這里深入介紹了。
我們基于 FATE,和外部機構合作搞了一套聯邦學習的環境,阿里作為一方、外部機構作為另外一方,對大概十幾萬的數據做了聯邦學習的建模。
最終結果還是比較符合我們的預期的,聯邦學習的建模方式和本地建模,在性能上的損耗很小,小到幾乎可忽略。
其他
以上,算是我對這段時間關于隱私計算&聯邦學習的一些調研以及實踐的一些總結。
之所以要研究這個,一方面是工作中需要,另外一方面,對于新技術,我們還是要多多接觸了解一下。尤其是這些對于當下以及未來都是很重要的東西。
就像我在阿里內網,給自己的簽名一樣:不設限。
對于這部分內容,目前我剛剛接觸不久,很多內容都是基于我自己的理解表達的,如文中有錯誤之處,歡迎大家幫忙指出。同時也歡迎有相關經驗的朋友一起交流。
總結
以上是生活随笔為你收集整理的最近,我和隐私计算干上了。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python求解多元方程最优解_Pyth
- 下一篇: 噢,老天爷! 属于Java的协程终于来了