奧推網

選單
科技

策略產品經理必讀系列——第五講聯邦學習

編輯導語:“聯邦學習”可以理解為多方學習或者說共同學習,這一概念也已經在許多領域中應用,那麼作為策略產品經理,你是否理解這一概念?這一概念又可以在哪些領域落地?本文作者進行了總結,一起來看一下。

前言

聯邦學習是近些年研究非常熱門的領域,目前在工業界很多領域已經落地應用了。本篇文章主要面向產品運營等非專業技術人士,通俗易懂地講解什麼是聯邦學習,主要解決什麼問題,以及在工業界的實際落地案例。

一、聯邦學習的發展歷程

提到聯邦(Federation),大家估計首先想到的就是英聯邦或者美聯邦,美國各個州組合在一起形成一個聯邦。聯邦學習( Federated Learning),字面直譯也就是多方參與,共同學習。

1. 最初的起源——橫向聯邦學習

聯邦學習最早是谷歌在2017。4月提出的,谷歌為此專門出了一個漫畫來解釋什麼是聯邦學習:https://zhuanlan。zhihu。com/p/101644082。

谷歌最開始提出聯邦學習時是為了解決C端使用者終端裝置上模型訓練的問題。C端使用者手機上的智慧軟體提供服務時背後都得依靠模型,而模型的訓練學習全部要基於使用者的資料。比如手機上的輸入法,基於不同人的打字拼音習慣,輸入法會不停更新會慢慢和每個人的打字習慣進行匹配,使用者會覺得輸入法越來越智慧。

那麼過去這些手機輸入法是如何進行模型訓練的了?

過去的做法:

將使用者每天產生的行為資料全部上傳至雲端伺服器,部署在伺服器上的模型基於上傳的資料進行訓練,然後更新模型,最終實際應用時本地需要請求雲端服務。大致流程如下圖:

上述這種模型訓練的方式,我們也叫做“集中式模型訓練”,這種方式有兩個弊端:

無法保證使用者的資料隱私

:服務商將使用者的資料全部採集到了伺服器上進行統一管理。這種方式在監管對個人資料隱私管控越來越嚴的情況下,會越來越受限;

實時性難以保證

:模型在應用時需要透過網路請求雲端的模型,在網路延遲或者沒有網路的情況下,模型沒辦法發揮它的作用。

為了解決上述的弊端,谷歌提出了一種新的解決方案,並將它命名為“Federated Learning”。

總的來說就是:

使用者資料不出本地,所有模型的訓練都是在裝置本地進行。本地模型訓練完畢後將得到的模型引數or下降梯度,經過加密上傳至雲端,雲端模型接收到所有上傳的加密引數or梯度後,結合所有的引數值進行統一的聚合,比如透過加權平均得到新的模型引數or下降梯度,然後將新的結果再重新下發到本地,本地更新得到一個全新的模型。

這種方式我們又叫作“分散式模型訓練”,大致的做法如下圖:

上述這種模型訓練的方式有一個基本的要求:

本地模型-Local Model和雲端模型- Global Model的特徵必須一致

:因為我們是彙總了無數本地模型的引數,基於這些引數對雲端模型進行更新。如果這些模型的特徵不一致,那麼引數之間也沒有任何參考意義。

比如一個預測身高的模型,本地模型用“性別+年齡”特徵,雲端模型用“體重+膚色”特徵,本地模型訓練得到的模型引數上傳到雲端,雲端根本毫無參考價值。

所以上述這種聯邦學習我們又叫作

“橫向聯邦學習”

,模型之間使用的特徵一致,只是使用的樣本資料不一樣。比如說下圖本地模型使用的使用者特徵都是一樣的,但是每個本地模型只能使用本地這一個使用者的資料,無法使用其他使用者的資料進行訓練。

谷歌這種“分散式模型訓練”的新模式一方面保護了使用者隱私,使用者資料不離開本地;另一方面訓練好的雲端模型又下放到本地進行應用,這樣即使沒有網路也可以使用。讀者可能還會對上述的聯邦學習方案存在以下幾個疑惑:

1)本地模型如何訓練更新?

很多時候我們的手機都處於閒置的狀態,這個時候本地模型就可以開始訓練和上傳加密引數;就像人體一樣,睡眠的時候長高和做夢來更新大腦的認知系統。

2)模型部署本地會不會佔據太多資源?

很多時候我們在雲端伺服器的模型都是幾個G,下放本地會不會很佔資源。這種模型都是需要經過壓縮和部分的特徵刪減,確實特別大的模型無法下放本地。

3)上傳的資料可以是模型的特徵引數或模型訓練的下降梯度嘛?

這二者均可,本身模型上的特徵引數也是透過梯度下降法計算出來的,所以給下降梯度也是可以得到最終模型的特徵引數。

4)上傳的資料為什麼還要加密?加密的資料又如何使用?

如果這些資料不進行加密的話,有可能透過這些資料進行反推導,將原始資料推匯出來,當然這個難度也很大,但為了保險起見還是將所有的資料都進行加密上傳。

雲端得到的是一個加密資料包,基於加密狀態下的資料包雲端模型即開始更新計算,這裡面有大量密碼學的知識在此不詳細展開,是一種“同態加密”的演算法。整個計算過程中雲端模型均不知道加密資料包裡面的具體內容。

2. B端的延伸——縱向聯邦學習

聯邦學習最開始被谷歌提出時是為了解決C端使用者上傳資料隱私問題。但是在實際工業界的問題是B端企業之間的資料孤島問題。比如京東和騰訊之間的合作。京東和騰訊之間的使用者肯定有絕大一部分是重疊的,京東有這部分使用者的電商資料,騰訊有這部分使用者的社交資料。如果二者將彼此之間的資料共享,那麼彼此各項模型上的效果都會有大幅提升,但是實際開展時二者肯定不會共享彼此之間的資料。

那麼我們如何讓雙方在不交換源資料的前提下,彼此提升各自模型的效果了?

谷歌的聯邦學習方案是

“橫向“

的,就像我們Part1。1裡面說的,本地模型和雲端模型用的特徵都是一樣的,模型的目標也是一樣的。但是B端企業之間的模型目標不一樣,特徵也不一樣,就像京東和騰訊,二者的使用者存在重疊,但是場景不同,採集到的使用者特徵也存在一定差異。這種情況下的聯邦學習方案我們叫做

“縱向”

比如京東&騰訊的使用者有ABCDE五個使用者是重疊的,騰訊有使用者的“性別”&“年齡”資料,京東有“常住區域”、“消費水平”&“購物頻次”的資料,二者結合起來可以使用樣本資料的所有特徵建立一個效果更優的模型。縱向聯邦學習的研究是由香港科技大學計算機科學與工程學系主任,第一位華人國際人工智慧協會(AAAI)院士&AAAI執行委員會委員-楊強教授牽頭髮起的。

楊強教授的整體縱向聯邦學習架構分為以下幾個大的部分。

上圖是楊強教授縱向聯邦學習裡面的架構,大家可以在眾多聯邦學習的文章中看到,整體還是比較抽象,我們以一個具體的案例來進行講解。還是拿京東&騰訊合作的這個案例。

第一步:樣本對齊;

騰訊和京東肯定都不會願意暴露自己的原始資料。所以二者要在一起聯合建模,首先需要對齊二者重疊的樣本資料;在不暴露原始資料的前提下,雙方如何對齊重疊的樣本資料了,其實就是對齊哪些使用者是共有的。這裡同樣需要應用到一種基於加密的使用者ID對齊技術。

第二步:標籤統一;

樣本對齊以後,因為這個場景下我們是結合騰訊的資料來訓練京東的模型,所以整個訓練過程中資料的標籤即“是否點選”Label由京東側管控。所有需要Label值參與的計算,都由京東側來完成,騰訊側不參與任何需要Label值的計算。

第三步:加密訓練;

最終要構建的聯合模型是擁有X1-X5所有特徵的,但是X1-X2特徵資料在騰訊側,X3-X5特徵資料在京東側,同時Label在京東側。所以在模型最開始訓練時,兩邊模型各自使用自己有的特徵和資料,初始化自己的引數w,然後開始計算。

整個訓練我們需要引入一個第三方也就是“協作者C”,這裡的“協作者C”,並不是說要引入一家新的公司來參與到訓練中,一箇中間可以處理資料的地方即可。“協作者C”最開始需要下發一個公鑰給到騰訊和京東,騰訊計算出來的中間結果經過公鑰加密發給京東,京東也是如此。

然後彼此再計算各自的下降梯度,再進行加密上傳給協作者C,這中間一般京東&騰訊都會加一些隨機數防止C直接獲取梯度資訊,協作者C進行解密後彙總雙方結果得到一個最終的梯度值然後再回傳給京東&騰訊,二者收到後減去最開始加上的隨機數得到真實最終的梯度值,再更新模型的引數。

第四步:訓練結束,聯合模型更新;

步驟三重複迴圈,直到最終模型收斂訓練完畢,最終京東&騰訊側的模型引數都更新完畢,二者結合在一起就是一個聯合模型。後面京東側就使用該聯合模型來進行線上應用。後續有使用者來訪問京東APP,如果該使用者在二者重疊的樣本中就訪問聯合模型來從京東&騰訊兩側獲取加密資料,最終給出預測結果。

3. 進一步延伸——聯邦遷移學習

聯邦遷移學習其實就是將聯邦學習的思想和遷移學習的思想結合在了一起。橫向聯邦學習是特徵一樣,樣本資料不一樣。縱向聯邦學習是樣本有重疊,但是特徵不一樣。

實際工業界還會有一些情況就是特徵不一樣,樣本資料還沒有重疊,這種情況下我們能不能聯合建模?

傳統的方式其實就是遷移學習了,將這些資料進行升維或者降維,在子空間中可能會存在特徵重疊或者使用者重疊。子空間中的互動就可以進行遷移學習。那如何在遷移學習過程中保護各方的資料隱私,這時候引入聯邦學習的思想即可。

二、聯邦學習概述

上面介紹了聯邦學習的發展起源和各種分類,下面我們正式對於聯邦學習進行一下定義。

1. 聯邦學習的定義

我們採用微眾銀行釋出的《聯邦學習白皮書》裡面的定義:

2. 聯邦學習的特徵

透過我們總結一下聯邦學習的主要特徵

多方協作:

有兩個或以上的聯邦學習參與方協作構建一個共享的機器學習模型。每一個參與方都擁有若干能夠用來訓練模型的訓練資料。

各方平等:

聯邦學習的參與方各方之間都是平等的,並不存在高低貴賤。

資料隱私保護

:在聯邦學習模型的訓練過程中,每一個參與方擁有的資料都不會離開該參與方,即資料不離開資料擁有者。

資料加密:

聯邦學習模型相關的資訊能夠以加密方式在各方之間進行傳輸和交換,並且需要保證任何一個參與方都不能推測出其他方的原始資料。

3. 聯邦學習涉及到的學科

聯邦學習的框架中涉及到了各種各樣的學科,需要各個方面一起進步進而推動聯邦學習的發展;

基本的機器學習演算法;

分散式機器學習;

加密演算法;

模型壓縮;

資料通訊;

經濟學。

4. 聯邦學習的激勵機制

如何更好地激勵聯邦學習中作出重要貢獻的參與方?雖然參與的各方都是平等的,但是各方的貢獻是完全不一樣的。比如阿里和一些很小的網際網路公司合作一起建立一個聯邦學習模型,肯定阿里的使用者資料更加豐富和更有價值,如何去激勵這些在聯邦學習生態中做出更多貢獻的參與方,如何建立一種激勵機制,這也是聯邦學習未來重點研究的方向。

三、聯邦學習落地案例

聯邦學習目前在工業界落地最大的兩個領域就是廣告&金融風控。

1. 廣告領域

網際網路企業中的RTB廣告,基於使用者的實時請求為使用者推薦他感興趣的商品,這裡面的推薦模型就需要大量用到使用者的特徵資料。

就像Part1。2中介紹的,很多網際網路企業只擁有使用者的一部分特徵資料,如果可以接入更多其他網際網路企業的資料或者是投放廣告主關於使用者的資料,那麼將大幅提升廣告推薦的效果,既能提升點選率也可以提升廣告主的ROI;聯邦學習的出現就很好的解決了這個問題。

2. 金融風控領域

金融領域同樣如此,很多使用者在多家銀行擁有信貸記錄,甚至在一些網際網路金融機構上擁有借貸記錄。單個金融機構需要對該使用者做出全面客觀的資質評判就需要結合使用者歷史所有的金融記錄才可以。

但是各大金融機構之間除了央行統一管理的個人徵信,其他資料之間彼此是不互通的,這些資料既是使用者的個人隱私也是銀行重要的資產。聯邦學習的出現同樣讓各大金融機構之間可以聯合建模,對於使用者的資質進行全面客觀的評價,降低貸款的違約率和資產的不良率。

四、橫向聯邦學習和邊緣計算的區別

有些小夥伴可能會把橫向聯邦學習和邊緣計算混淆,尤其是看了谷歌的這個漫畫以後,覺得橫向聯邦學習和邊緣計算有點像。

橫向聯邦學習的出現是為了解決資料隱私的問題,將一些敏感資料在不離開資料原有方的基礎上,讓模型在本地完成訓練後,然後上傳加密的引數。而邊緣計算的本意是將計算能力部署在裝置上,裝置請求實時響應,減少雲計算中的網路延遲,這其中確實資料本身也不離開本地也保護了資料隱私。

雖然二者有些交集但是出發點完全不一樣。橫向聯邦學習是為了保護使用者資料隱私,而邊緣計算是為了確保服務可以及時響應降低減少雲計算中的網路延遲。

本文由 @King James 原創釋出於人人都是產品經理。未經許可,禁止轉載。

題圖來自 Pexels,基於 CC0 協議