<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          小白也能通俗易懂的聯(lián)邦學習!

          共 5480字,需瀏覽 11分鐘

           ·

          2021-12-09 14:19

          ?Datawhale干貨?
          作者:知乎King James,倫敦國王大學

          知乎 |?https://www.zhihu.com/people/xu-xiu-jian-33

          前言:聯(lián)邦學習是近些年研究非常熱門的領域,目前在工業(yè)界很多領域已經(jīng)落地應用了。本篇文章同樣面向產(chǎn)品運營等非專業(yè)技術(shù)人士,通俗易懂地講解什么是聯(lián)邦學習,主要解決什么問題,以及在工業(yè)界的實際落地案例。

          01 聯(lián)邦學習的發(fā)展歷程

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

          1.1 最初的起源— 橫向聯(lián)邦學習

          聯(lián)邦學習最早是谷歌在2017.4月提出的,谷歌為此專門出了一個漫畫來解釋什么是聯(lián)邦學習。(鏈接:https://zhuanlan.zhihu.com/p/101644082)

          谷歌最開始提出聯(lián)邦學習時是為了解決C端用戶終端設備上模型訓練的問題。C端用戶手機上的智能軟件提供服務時背后都得依靠模型,而模型的訓練學習全部要基于用戶的數(shù)據(jù)。比如手機上的輸入法,基于不同人的打字拼音習慣,輸入法會不停更新會慢慢和每個人的打字習慣進行匹配,用戶會覺得輸入法越來越智能;

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

          過去的做法: 將用戶每天產(chǎn)生的行為數(shù)據(jù)全部上傳至云端服務器,部署在服務器上的模型基于上傳的數(shù)據(jù)進行訓練,然后更新模型,最終實際應用時本地需要請求云端服務。大致流程如下圖:

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

          • 無法保證用戶的數(shù)據(jù)隱私:服務商將用戶的數(shù)據(jù)全部采集到了服務器上進行統(tǒng)一管理。這種方式在監(jiān)管對個人數(shù)據(jù)隱私管控越來越嚴的情況下,會越來越受限;
          • 實時性難以保證:模型在應用時需要通過網(wǎng)絡請求云端的模型,在網(wǎng)絡延遲或者沒有網(wǎng)絡的情況下,模型沒辦法發(fā)揮它的作用;

          為了解決上述的弊端,谷歌提出了一種新的解決方案,并將它命名為“Federated Learning”??偟膩碚f就是:用戶數(shù)據(jù)不出本地,所有模型的訓練都是在設備本地進行。本地模型訓練完畢后將得到的模型參數(shù)or下降梯度,經(jīng)過加密上傳至云端,云端模型接收到所有上傳的加密參數(shù)or梯度后,結(jié)合所有的參數(shù)值進行統(tǒng)一的聚合,比如通過加權(quán)平均得到新的模型參數(shù)or下降梯度,然后將新的結(jié)果再重新下發(fā)到本地,本地更新得到一個全新的模型;

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

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

          • 本地模型-Local Model和云端模型- Global Model的特征必須一致:因為我們是匯總了無數(shù)本地模型的參數(shù),基于這些參數(shù)對云端模型進行更新。如果這些模型的特征不一致,那么參數(shù)之間也沒有任何參考意義。比如一個預測身高的模型,本地模型用“性別+年齡”特征,云端模型用“體重+膚色”特征,本地模型訓練得到的模型參數(shù)上傳到云端,云端根本毫無參考價值。

          所以上述這種聯(lián)邦學習我們又叫作 “橫向聯(lián)邦學習” ,模型之間使用的特征一致,只是使用的樣本數(shù)據(jù)不一樣。比如說下圖本地模型使用的用戶特征都是一樣的,但是每個本地模型只能使用本地這一個用戶的數(shù)據(jù),無法使用其他用戶的數(shù)據(jù)進行訓練。

          關于模型特征和模型參數(shù)不了解的讀者可以閱讀我這篇:https://zhuanlan.zhihu.com/p/110166255

          谷歌這種“分布式模型訓練”的新模式一方面保護了用戶隱私,用戶數(shù)據(jù)不離開本地;另一方面訓練好的云端模型又下放到本地進行應用,這樣即使沒有網(wǎng)絡也可以使用。讀者可能還會對上述的聯(lián)邦學習方案存在以下幾個疑惑:

          • 本地模型如何訓練更新? 很多時候我們的手機都處于閑置的狀態(tài),這個時候本地模型就可以開始訓練和上傳加密參數(shù);就像人體一樣,睡眠的時候長高和做夢來更新大腦的認知系統(tǒng);
          • 模型部署本地會不會占據(jù)太多資源? 很多時候我們在云端服務器的模型都是幾個G,下放本地會不會很占資源。這種模型都是需要經(jīng)過壓縮和部分的特征刪減,確實特別大的模型無法下放本地;
          • 上傳的數(shù)據(jù)可以是模型的特征參數(shù)或模型訓練的下降梯度嘛? 這二者均可,本身模型上的特征參數(shù)也是通過梯度下降法計算出來的,所以給下降梯度也是可以得到最終模型的特征參數(shù)。(對于梯度下降法不太了解的讀者可以閱讀:https://zhuanlan.zhihu.com/p/335191534)
          • 上傳的數(shù)據(jù)為什么還要加密?加密的數(shù)據(jù)又如何使用? 如果這些數(shù)據(jù)不進行加密的話,有可能通過這些數(shù)據(jù)進行反推導,將原始數(shù)據(jù)推導出來,當然這個難度也很大,但為了保險起見還是將所有的數(shù)據(jù)都進行加密上傳。云端得到的是一個加密數(shù)據(jù)包,基于加密狀態(tài)下的數(shù)據(jù)包云端模型即開始更新計算,這里面有大量密碼學的知識在此不詳細展開,是一種“同態(tài)加密”的算法。整個計算過程中云端模型均不知道加密數(shù)據(jù)包里面的具體內(nèi)容。

          1.2 B端的延伸—縱向聯(lián)邦學習

          聯(lián)邦學習最開始被谷歌提出時是為了解決C端用戶上傳數(shù)據(jù)隱私問題。但是在實際工業(yè)界的問題是B端企業(yè)之間的數(shù)據(jù)孤島問題。比如京東和騰訊之間的合作。京東和騰訊之間的用戶肯定有絕大一部分是重疊的,京東有這部分用戶的電商數(shù)據(jù),騰訊有這部分用戶的社交數(shù)據(jù)。如果二者將彼此之間的數(shù)據(jù)共享,那么彼此各項模型上的效果都會有大幅提升,但是實際開展時二者肯定不會共享彼此之間的數(shù)據(jù)。那么我們?nèi)绾巫岆p方在不交換源數(shù)據(jù)的前提下,彼此提升各自模型的效果了?

          谷歌的聯(lián)邦學習方案是“橫向”?的,就像我們Part1.1里面說的,本地模型和云端模型用的特征都是一樣的,模型的目標也是一樣的。但是B端企業(yè)之間的模型目標不一樣,特征也不一樣,就像京東和騰訊,二者的用戶存在重疊,但是場景不同,采集到的用戶特征也存在一定差異。這種情況下的聯(lián)邦學習方案我們叫做 “縱向”。

          比如京東&騰訊的用戶有ABCDE五個用戶是重疊的,騰訊有用戶的“性別”&“年齡”數(shù)據(jù),京東有“常住區(qū)域”、“消費水平”&“購物頻次”的數(shù)據(jù),二者結(jié)合起來可以使用樣本數(shù)據(jù)的所有特征建立一個效果更優(yōu)的模型??v向聯(lián)邦學習的研究是由香港科技大學計算機科學與工程學系主任,第一位華人國際人工智能協(xié)會(AAAI)院士&AAAI執(zhí)行委員會委員-楊強教授牽頭發(fā)起的。

          楊強教授的整體縱向聯(lián)邦學習架構(gòu)分為以下幾個大的部分。

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

          • 第一步:樣本對齊; 騰訊和京東肯定都不會愿意暴露自己的原始數(shù)據(jù)。所以二者要在一起聯(lián)合建模,首先需要對齊二者重疊的樣本數(shù)據(jù);在不暴露原始數(shù)據(jù)的前提下,雙方如何對齊重疊的樣本數(shù)據(jù)了,其實就是對齊哪些用戶是共有的。這里同樣需要應用到一種基于加密的用戶ID對齊技術(shù);
          • 第二步:標簽統(tǒng)一; 樣本對齊以后,因為這個場景下我們是結(jié)合騰訊的數(shù)據(jù)來訓練京東的模型,所以整個訓練過程中數(shù)據(jù)的標簽即“是否點擊”Label由京東側(cè)管控。
          • 第三步:加密訓練; 最終要構(gòu)建的聯(lián)合模型是擁有X1-X5所有特征的,但是X1-X2特征數(shù)據(jù)在騰訊側(cè),X3-X5特征數(shù)據(jù)在京東側(cè),同時Label在京東側(cè)。所以在模型最開始訓練時,兩邊模型各自使用自己有的特征和數(shù)據(jù),初始化自己的參數(shù)w,然后開始計算。整個訓練我們需要引入一個第三方也就是“協(xié)作者C”,這里的“協(xié)作者C”,并不是說要引入一家新的公司來參與到訓練中,一個中間可以處理數(shù)據(jù)的地方即可。“協(xié)作者C”最開始需要下發(fā)一個公鑰給到騰訊和京東,騰訊計算出來的中間結(jié)果經(jīng)過公鑰加密發(fā)給京東,京東也是如此。然后彼此再計算各自的下降梯度,再進行加密上傳給協(xié)作者C,這中間一般京東&騰訊都會加一些隨機數(shù)防止C直接獲取梯度信息,協(xié)作者C進行解密后匯總雙方結(jié)果得到一個最終的梯度值然后再回傳給京東&騰訊,二者收到后減去最開始加上的隨機數(shù)得到真實最終的梯度值,再更新模型的參數(shù);
          • 第四步:訓練結(jié)束,聯(lián)合模型更新; 步驟三重復循環(huán),直到最終模型收斂訓練完畢,最終京東&騰訊側(cè)的模型參數(shù)都更新完畢,二者結(jié)合在一起就是一個聯(lián)合模型。后面京東側(cè)就使用該聯(lián)合模型來進行線上應用。后續(xù)有用戶來訪問京東APP,如果該用戶在二者重疊的樣本中就訪問聯(lián)合模型來從京東&騰訊兩側(cè)獲取加密數(shù)據(jù),最終給出預測結(jié)果。

          1.3 進一步延伸—聯(lián)邦遷移學習

          聯(lián)邦遷移學習其實就是將聯(lián)邦學習的思想和遷移學習的思想結(jié)合在了一起。橫向聯(lián)邦學習是特征一樣,樣本數(shù)據(jù)不一樣。縱向聯(lián)邦學習是樣本有重疊,但是特征不一樣。實際工業(yè)界還會有一些情況就是特征不一樣,樣本數(shù)據(jù)還沒有重疊,這種情況下我們能不能聯(lián)合建模?傳統(tǒng)的方式其實就是遷移學習了,將這些數(shù)據(jù)進行升維或者降維,在子空間中可能會存在特征重疊或者用戶重疊。子空間中的交互就可以進行遷移學習。那如何在遷移學習過程中保護各方的數(shù)據(jù)隱私,這時候引入聯(lián)邦學習的思想即可。關于遷移學習后續(xù)會專門寫一篇文章進行講解,歡迎大家持續(xù)關注。

          02 聯(lián)邦學習概述

          上面介紹了聯(lián)邦學習的發(fā)展起源和各種分類,下面我們正式對于聯(lián)邦學習進行一下定義。

          2.1 聯(lián)邦學習的定義

          我們采用微眾銀行發(fā)布的《聯(lián)邦學習白皮書》里面的定義:

          2.2 聯(lián)邦學習的特征

          通過我們總結(jié)一下聯(lián)邦學習的主要特征

          • 多方協(xié)作: 有兩個或以上的聯(lián)邦學習參與方協(xié)作構(gòu)建一個共享的機器學習模型。每一個參與方都擁有若干能夠用來訓練模型的訓練數(shù)據(jù)。
          • 各方平等: 聯(lián)邦學習的參與方各方之間都是平等的,并不存在高低貴賤;
          • 數(shù)據(jù)隱私保護: 在聯(lián)邦學習模型的訓練過程中,每一個參與方擁有的數(shù)據(jù)都不會離開該參與方,即數(shù)據(jù)不離開數(shù)據(jù)擁有者。
          • 數(shù)據(jù)加密: 聯(lián)邦學習模型相關的信息能夠以加密方式在各方之間進行傳輸和交換,并且需要保證任何一個參與方都不能推測出其他方的原始數(shù)據(jù)。

          2.3 聯(lián)邦學習涉及到的學科

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

          • 基本的機器學習算法
          • 分布式機器學習;
          • 加密算法;
          • 模型壓縮;
          • 數(shù)據(jù)通信;
          • 經(jīng)濟學;

          2.4 聯(lián)邦學習的激勵機制

          如何更好地激勵聯(lián)邦學習中作出重要貢獻的參與方?雖然參與的各方都是平等的,但是各方的貢獻是完全不一樣的。比如阿里和一些很小的互聯(lián)網(wǎng)公司合作一起建立一個聯(lián)邦學習模型,肯定阿里的用戶數(shù)據(jù)更加豐富和更有價值,如何去激勵這些在聯(lián)邦學習生態(tài)中做出更多貢獻的參與方,如何建立一種激勵機制,這也是聯(lián)邦學習未來重點研究的方向。

          3 聯(lián)邦學習落地案例

          聯(lián)邦學習目前在工業(yè)界落地最大的兩個領域就是廣告&金融風控;

          3.1 廣告領域

          互聯(lián)網(wǎng)企業(yè)中的RTB廣告,基于用戶的實時請求為用戶推薦他感興趣的商品,這里面的推薦模型就需要大量用到用戶的特征數(shù)據(jù)。就像Part1.2中介紹的,很多互聯(lián)網(wǎng)企業(yè)只擁有用戶的一部分特征數(shù)據(jù),如果可以接入更多其他互聯(lián)網(wǎng)企業(yè)的數(shù)據(jù)或者是投放廣告主關于用戶的數(shù)據(jù),那么將大幅提升廣告推薦的效果,既能提升點擊率也可以提升廣告主的ROI;聯(lián)邦學習的出現(xiàn)就很好的解決了這個問題;

          3.2 金融風控領域

          金融領域同樣如此,很多用戶在多家銀行擁有信貸記錄,甚至在一些互聯(lián)網(wǎng)金融機構(gòu)上擁有借貸記錄。單個金融機構(gòu)需要對該用戶做出全面客觀的資質(zhì)評判就需要結(jié)合用戶歷史所有的金融記錄才可以。但是各大金融機構(gòu)之間除了央行統(tǒng)一管理的個人征信,其他數(shù)據(jù)之間彼此是不互通的,這些數(shù)據(jù)既是用戶的個人隱私也是銀行重要的資產(chǎn)。聯(lián)邦學習的出現(xiàn)同樣讓各大金融機構(gòu)之間可以聯(lián)合建模,對于用戶的資質(zhì)進行全面客觀的評價,降低貸款的違約率和資產(chǎn)的不良率。

          關于更多案例可以詳細閱讀文章最后的引用《聯(lián)邦學習白皮書》;

          4.橫向聯(lián)邦學習和邊緣計算的區(qū)別

          有些小伙伴可能會把橫向聯(lián)邦學習和邊緣計算混淆,尤其是看了谷歌的這個漫畫以后,覺得橫向聯(lián)邦學習和邊緣計算有點像。橫向聯(lián)邦學習的出現(xiàn)是為了解決數(shù)據(jù)隱私的問題,將一些敏感數(shù)據(jù)在不離開數(shù)據(jù)原有方的基礎上,讓模型在本地完成訓練后,然后上傳加密的參數(shù)。而邊緣計算的本意是將計算能力部署在設備上,設備請求實時響應,減少云計算中的網(wǎng)絡延遲,這其中確實數(shù)據(jù)本身也不離開本地也保護了數(shù)據(jù)隱私。雖然二者有些交集但是出發(fā)點完全不一樣。橫向聯(lián)邦學習是為了保護用戶數(shù)據(jù)隱私,而邊緣計算是為了確保服務可以及時響應降低減少云計算中的網(wǎng)絡延遲。

          最后感謝大家對于原創(chuàng)的支持,希望大家一鍵三連~

          參考文獻:

          聯(lián)邦學習誕生1000天的真實現(xiàn)狀:https://www.leiphone.com/category/DataSecurity%20/rfPSGIjbS38DqTsm.html

          關于聯(lián)邦學習建模過程中算法交互內(nèi)容的研究:https://youwuqiong.top/325471.html

          縱向聯(lián)邦學習簡介及實現(xiàn):https://segmentfault.com/a/1190000024464891

          聯(lián)邦學習白皮書-微眾銀行.pdf:https://pan.baidu.com/link/zhihu/7BhFzRuVhrijStITJTSTJt0CVDNOd1QwdFVn==

          相關推薦:通俗講解深度學習和神經(jīng)網(wǎng)絡!

          整理不易,三連
          瀏覽 138
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲视频天天射 | 国内爱爱视频 | 无码内射中文字幕岛国片 | 亚洲AV无码秘 翔田 | 喷水在线观看 |