Categories
程式開發

螞蟻金服共享智能技術實踐:如何降低數據共享的難度?


人工智能目前存在的難題是魚與熊掌不可兼得,也就是隱私性跟可用性難以兼顧。如果想要AI系統發揮作用,就可能需要犧牲隱私。但是,在大量真實場景中,如果做不到同時兼顧隱私和可用性,會導致很多AI落地的困境。

隨著對數據安全和重視和隱私保護法案的出台,曾經粗放式的數據共享受到挑戰,各個數據擁有者重新回到數據孤島的狀態。同時,互聯網公司也更加難以收集和利用用戶的隱私數據,數據孤島反而成為了常態。如果希望更好的利用數據,就必須在滿足隱私保護和數據安全的前提下,在不同的組織、公司與用戶之間進行數據共享。

為了解決這一問題,國內外不少科技公司先後推出了解決方案,比如穀歌推出的聯邦學習、螞蟻金服提出的共享智能等。本文,InfoQ對螞蟻金服機器學習算法中台負責人周俊進行了採訪,了解共享智能如何解決金融領域的數據共享問題。

共享智能與聯邦學習的區別

在介紹技術實踐之前,我們需要花些時間釐清共享智能與聯邦學習之間的區別,以方便讀者了解本文的討論範圍。

當前,業界解決隱私洩露和數據濫用的數據共享技術路線主要有兩條。一條是基於硬件可信執行環境(TEE:Trusted Execution Environment)技術的可信計算,另一條是基於密碼學的多方安全計算(MPC:Multi-party Computation)。

TEE字面意思是可信執行環境,核心概念為以第三方硬件為載體,數據在由硬件創建的可信執行環境中進行共享。目前在生產環境可用的TEE技術,比較成熟的基本只有Intel的SGX技術,基於SGX技術的各種應用也是目前業界的熱門方向,微軟、谷歌等公司在這個方向上都有所投入。

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 1

MPC(Multi-party Computation,多方安全計算)一直是學術界比較火的話題,但在工業界的存在感較弱,之前都是一些創業小公司在這個方向上有一些探索,例如Sharemind,Privitar,直到谷歌提出了基於MPC的在個人終端設備的“聯邦學習”(Federated Learning)的概念,使得MPC技術一夜之間在工業界火了起來。

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 2

當前,業界針對數據共享場景,利用如上技術路線推出了一些解決方案,包括隱私保護機器學習PPML、聯邦學習、競合學習、可信機器學習等,不同解決方案採用的技術路線相互也會有一些重疊。周俊表示,螞蟻金服提出的共享智能(又稱:共享機器學習)結合了TEE與MPC兩條路線,同時結合螞蟻的自身業務場景特性,聚焦於金融行業的應用。

簡單來說,共享智能的概念,或者說理念,是希望在多方參與且各數據提供方與平台方互不信任的場景下,能夠聚合多方信息進行分析和機器學習,並確保各參與方的隱私不被洩漏,信息不被濫用。

關於共享智能與聯邦學習的差異,周俊表示,目前,聯邦學習涉及兩個不同的概念:

第一種是谷歌提出的聯邦學習,旨在解決雲 + 端訓練過程中,端上隱私不暴露的問題,這是一個 To C + 數據水平切分的場景。除了保護端上的數據隱私外,其重點還在於如何解決訓練過程中,端自身可能掉線等問題。

第二種是國內提出的聯邦學習,主要用於解決 To B 場景中各方隱私不洩露的問題,既可應用於數據的水平切分場景,也可應用於數據垂直切分的場景。它們側重於不同的數據共享場景,技術上有不同的側重點。

2019年,一篇由多個知名大學和企業撰寫的關於聯邦學習的綜述文章《Advances and Open Problems in Federated Learning》,對聯邦學習的定義和描述是比較清晰的。首先,聯邦學習的架構是由一台中心服務器和多個計算節點構成,中心服務器會參與到整個計算過程,因此不適用於一些不需要中心服務器節點的應用場景(文章中將這種模式稱為Fully Decentralized Distributed Learning )。此外,聯邦學習要求原始數據不能出域,這也限制了其可以使用的技術方案,而共享智能是從問題出發,作為一個新興的技術領域,在面臨當前各種複雜場景的時候,很難用一套技術方案去解決所有問題,因此共享智能的解決方案中不僅包含有類似聯邦學習的有中心服務器參與計算的模式,也包含完全去中心化的方案,還有基於TEE的共享學習方案。

在不同的場景下,不同的方案各有優劣。周俊表示,目前,數據共享下的機器學習仍然還有很多待突破的地方,我們並不糾結於解決問題的是聯邦學習還是去中心化的分佈式學習,或者是其它任何技術方案,最終還是希望大家能夠合力解決這個業界難題。

螞蟻金服共享智能應用實踐

2016年開始,螞蟻金服就開始投入到共享智能的研究中,出發點是為了解決業務中遇到的問題,比如機構與螞蟻金服的信息協同問題。基於此,螞蟻金服調研了差分隱私、矩陣變換等多種方案,確定了目前的技術大方向。

縱觀整個研發階段,周俊認為大致可以分為探索期、技術攻堅和技術應用三個時期。

  • 探索期:對業界相關技術進行全面摸底,並設計了上百個方案,逐一驗證可行性,並在真實場景反复錘煉技術,實現從0到1的突破;
  • 技術攻堅期,經過前面的摸索,確定了幾個可能適用於工業界的方案,進一步在大規模工業場景下,對這些方案的安全性和性能等逐一優化提升;
  • 技術應用期,開始大規模在真實業務場景中應用,直面業務需求,進一步淬煉技術,接受市場檢驗。

在共享智能的技術細節上,周俊表示,可以按照TEE和MPC兩條路線來理解。

基於TEE的共享學習

螞蟻共享學習底層使用Intel的SGX技術,並可兼容其它TEE實現。下面著重介紹一下
基於TEE的共享學習中的一種數據加密出域的方案,目前,這種方案已支持集群化的模型在線預測和離線訓練。

1.模型在線預測

預測通常是在線服務。相對於離線訓練,在線預測在算法複雜度上面會相對簡單,但是對穩定性的要求會更高。提昇在線服務穩定性的關健技術之一就是集群化的實現——通過集群化解決負載均衡,故障轉移,動態擴容等穩定性問題。

但由於SGX技術本身的特殊性,傳統的集群化方案在SGX上無法工作。

為此,螞蟻金服設計瞭如下分佈式在線服務基本框架:

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 3

該框架與傳統分佈式框架不同的地方在於,每個服務啟動時會到集群管理中心(ClusterManager,簡稱CM)進行註冊,並維持心跳,CM發現有多個代碼相同的Enclave進行了註冊後,會通知這些Enclave進行密鑰同步,Enclave收到通知後,會通過遠程認證相互確認身份。當確認彼此的Enclave簽名完全相同時,會通過安全通道協商並同步密鑰。

2.模型離線訓練

模型訓練階段,除了基於自研的訓練框架支持了LR和GBDT的訓練外,螞蟻金服還借助於LibOS Occlum(螞蟻主導開發,已開源)和自研的分佈式組網系統,成功將原生Xgboost移植到SGX內,並支持多方數據融合和分佈式訓練。通過上述方案,不僅可以減少大量的重複性開發工作,並且在Xgboost社區有了新的功能更新後,可以在SGX內直接復用新功能,無需額外開發。目前,螞蟻金服正在利用這套方案進行TensorFlow框架的遷移。

此外,針對SGX當下詬病的128M內存限制問題(超過128M會觸發換頁操作,導致性能大幅下降),螞蟻金服通過算法優化和分佈式化等技術,大大降低內存限制對性能的影響。

上述方案在多方數據共享學習訓練流程如下:

1.  機構用戶從Data Lab下載加密工具
2.  使用加密工具對數據進行加密,加密工具內嵌了RA流程,確保加密信息只會在指定的Enclave中被解密
3.  用戶把加密數據上傳到雲端存儲
4.  用戶在Data Lab的訓練平台進行訓練任務的構建
5.  訓練平台將訓練任務下發到訓練引擎
6.  訓練引擎啟動訓練相關的Enclave,並從雲端存儲讀取加密數據完成指定的訓練任務。

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 4

此外,針對有一些數據提供方不希望數據出域的場景,螞蟻還提供了使用TEE對訓練過程中的參數信息進行加密的技術方案,篇幅原因,就不在這裡展開了。

基於MPC的共享學習

螞蟻基於MPC的共享學習框架分為三層:

  • 安全技術層:安全技術層提供基礎的安全技術實現,比如在前面提到的秘密分享、同態加密、混淆電路,另外還有一些跟安全密切相關的,例如差分隱私技術、DH算法等;
  • 基礎算子層:在安全技術層基礎上,螞蟻金服會做一些基礎算子的封裝,包括多方數據安全求交、矩陣加法、矩陣乘法,以及在多方場景下,計算sigmoid函數、ReLU函數等;同一個算子可能會有多種實現方案,用以適應不同的場景需求,同時保持接口一致;
  • 安全機器學習算法:有了基礎算子,就可以很方便的進行安全機器學習算法的開發,這裡的技術難點在於,如何盡量復用已有算法和已有框架,螞蟻金服在這裡做了一些有益的嘗試,但也遇到了很大的挑戰。

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 5

目前,這套基於MPC的共享學習框架已支持了包括LR、GBDT、DNN等頭部算法,後續一方面會繼續根據業務需求補充更多的算法,同時也會為各種算子提供更多的技術實現方案,以應對不同的業務場景。

基於MPC的多方數據共享學習訓練流程如下:

1.  機構用戶從Data Lab下載訓練服務並本地部署
2.  用戶在Data Lab的訓練平台上進行訓練任務的構建
3.  訓練平台將訓練任務下發給訓練引擎
4.  訓練引擎將任務下發給機構端的訓練服務器Worker
5.  Worker加載本地數據
6.  Worker之間根據下發的訓練任務,通過多方安全協議交互完成訓練任務

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 6

訓練引擎的具體架構如下:

螞蟻金服共享智能技術實踐:如何降低數據共享的難度? 7

其中Coordinator部署於螞蟻平台,用於任務的控制和協調,本身並不參與實際運算。 Worker部署在參與多方安全計算的機構,基於安全多方協議進行實際的交互計算。

用戶在建模平台構建好的訓練任務流會下發給Coordinator的Task Flow Manager,Task Flow Manager會把任務進行拆解,通過Task Manager把具體算法下發給Worker端的Task Executor,Task Executor根據算法圖調用Worker上的安全算子完成實際的運算。

利用這套方法,可以做到數據不出域就可以完成數據共享,訓練工具可以部署在本地的服務器。

對金融領域的重要意義

無論是聯邦學習還是共享智能,很多技術實踐都優先選擇了在金融領域落地。相較於其他領域,金融領域對數據的管控更為嚴格,對數據隱私更加重視,因此也是最需要通過技術手段解決數據孤島問題的領域。

周俊表示,在金融領域,共享智能側重在解決“開放”這個大領域中的問題,比如聯合營銷、聯合風控等,這兩個場景相對更容易看到具體實施效果。相比其他領域,金融領域對數據保護看的更重,數據的流轉在該領域中更難,因此採用共享智能技術,可以做到更好的隱私保護,實現數據可用不可見,是一個關鍵的助推器。

舉例來說,通過數據融合,螞蟻金服的共享智能幫助中和農信大幅度提高了風控性能,把原來傳統的線下模式,變成線上自動過審模式,完成授信只需5分鐘,8個月累計放款31.9億,授信成功人數44萬人,業務覆蓋20多個省區,300多縣城,10000多個鄉村。

企業落地難,如何解決?

雖然該技術的落地對金融企業有著重要意義,但很多公司在實際的落地過程中遇到了問題,可能是技術原因,也可能是處於對結果的擔憂。

採訪中,周俊表示,共享智能技術屬於交叉領域,涉及到密碼學、機器學習等技術,有一定的門檻,企業部署這樣的技術,需要結合自身技術能力以及業務需求來綜合考量。當然,螞蟻金服也在積極探索降低企業落地門檻的技術和方案,隨著越來越多的企業一起參與進來,相信不遠的將來,共享智能的技術落地將不再會有太高的門檻。

此外,螞蟻金服的共享智能是一個開放的生態,希望更多的企業能參與進來一起共建,而不需要重新再去走螞蟻金服之前走過的很多彎路。金融企業可以根據自身業務發展的需要,及時跟進業界最新進展,從而選擇更合適的技術和合作方來解決業務難題。能夠讓業務贏,解決業務痛點,是這裡面最重要的因素。

更為重要的是,共享智能解決的是信任問題,所以大規模落地的前提是用戶對共享智能有一個全面的認知和信任。螞蟻金服通過立標杆、推標準、定向開源等方式來逐步建立用戶對共享智能的信任。目前,螞蟻金服已經在智能信貸領域的多家機構落地了標杆型業務場景。同時,牽頭在推進共享智能的行業標準、聯盟標準、國家標準以及IEEE、ITU-T等國際標準。周俊表示,我們相信,隨著技術和用戶心智的同步發展,共享智能的大規模落地將會很快發生,而最先受益的,是數據驅動的、並且對隱私保護有強需求的金融科技和醫療科技行業。

結束語

面向未來,周俊表示,重點還是繼續推動全行業共同解決數據共享問題。螞蟻金服會逐步開放技術能力,賦能行業中有需求的企業,同時會聯合更多單位,包括研究機構、企業等共同推進解決技術難題。最終希望全行業能夠共同打造一個可以在保護用戶隱私和防止數據濫用的前提下實現數據互聯互通的共享智能網絡,更好的實現普惠金融。

專家介紹:

周俊,負責螞蟻金服機器學習算法中台,包括共享機器學習、圖機器學習、自動機器學習、對抗機器學習等方向。在阿里8年多時間裡,開發過阿里雲-飛天分佈式操作系統、大數據處理平台MaxCompute以及人工智能平台PAI,做過廣告、推薦、搜索等CTR預估方面的工作,目前聚焦在將智能技術更好應用在用戶增長、風險智能等核心場景上。