聯邦學習大火,主要是解決數據孤島問題,即如何在符合數據隱私的基礎上,實現多方數據不出本地,但是卻能聯合訓練一個共有大模型的目的,對於需要中心的縱向聯邦學習,是需要中心先下發公鑰,而后期會出現中心能夠完全掌握整個模型的情況。那么在更嚴格情況,AB都互不信任,C放在哪都不合適。
1 准備部分
這里以線性回歸為例子,參考自《聯邦學習的研究與應用,劉洋 范濤》,介紹在沒有中間人的情況下,直接2方交互的過程。為了直觀介紹過程,下述式子中都省略了一些累加,\(\lambda\)等部分。
如圖所示,紅框中為LR的loss公式,其中涉及
A方的):\(u_i^A\), \(\Theta_A\)
B方的):\(u_i^B\), \(y_i\), \(\Theta_B\)
所以整個模型的loss:\(L=(u_i^A+u_i^B-y_i)+(\Theta_A+\Theta_B)\),且其中\(u_i^B\), \(y_i\)一起出現,所以只標注下\(u_i^B\),得:
2 聯合模型訓練
2.1雙方交換公鑰然后A發送自己部分給B
1)先互相交換各自的公鑰,這里標記為\(Pub_A\),\(Pub_B\);
2)A方先計算\(u_i^A\)和\(\Theta_A\),然后可計算\(L_A\);此時將\(u_i^A\)和\(L_A\)用\(Pub_A\)加密得:
3)將這兩個部分發送給B;
2.2 AB完成信息交互
4)B方計算\(u_i^B\)和\(\Theta_B\),然后可計算\(L_B\),並\(u_i^B\)和\(L_B\)用\(Pub_A\)加密得:
通過同態加密,從而得到
並且,\(d_i=u_i^A+u_i^B\),故而得到
且因為\(\frac{ \partial L }{\partial \Theta_B}=d_i*x_i^B+\Theta_B\),得到B的梯度
5)從4中可知,如果此時將數據發送給A則A可以通過私鑰A,\(Pri_A\)完成解密,獲得B的模型信息,為了防止此事發生,通過差分隱私方式(就是加噪音),得到
為了防止\(d_i\),從
中解密,B對其用\(Pub_B\)做一次加密得到
6)A方用自己的私鑰\(Pri_A\)完成解密獲得\(L+M^B\),\(\frac{ \partial L }{\partial \Theta_B}+R^B\),\(\begin{bmatrix} d_i \end{bmatrix}_{pubB}\),然后通過\(\begin{bmatrix} d_i \end{bmatrix}_{pubB}\)計算自己的梯度得到
為了獲得B的解密,但是又擔心B知道自己梯度,故而對其進行加密得到
7)A將差分隱私的\(L+M^B\),\(\frac{ \partial L }{\partial \Theta_B}+R^B\)直接給B,並將自己需要解密的
發送給B。
2.3 AB雙方互相解密完成最終信息交換
8)B此時可以計算得到\(L\)(此時B能獲得整個模型的loss值),和自己的梯度\(\frac{ \partial L }{\partial \Theta_B}\)(這樣B模型部分就能正常更新了),然后幫A解密A的梯度得到\(\begin{bmatrix} \frac{ \partial L }{\partial \Theta_A} \end{bmatrix}_{pubA}\)
9)將A需要更新的梯度\(\begin{bmatrix} \frac{ \partial L }{\partial \Theta_A} \end{bmatrix}_{pubA}\)傳給A
10)A完成自己梯度的解密,並正常更新自己模型部分。
3 互相合作完成推理
1)假設B收到一個測試樣本,將其加密傳遞給A
2)A和B各自計算自己部分的結果
3)A將自己結果發送給B
4)B完成結果計算
ps:遺留問題,在上述過程中,B可以通過暴力循環完成A方結果的欺騙,咋辦?但是回想一下,不論怎么互相加密,最終總是需要一方獲得最后結果(比如是否推薦該商品1/0),並完成自己解密獲得最終預測值。那么無法避免的會出現一方通過暴力循環完成所有用戶的預測值映射,從而終止合作(當然沒法升級是另一回事)
附錄:
這里介紹下當前收集到的聯邦學習的企業
1-開源
1)微眾銀行Fate; https://cn.fedai.org/
2)百度PaddleFL; https://github.com/PaddlePaddle/PaddleFL
3)TensorFlow; https://github.com/tensorflow/federated
4)字節; https://github.com/bytedance/fedlearner
5) 京東; https://github.com/jd-9n/9nfl
2-非開源
1)螞蟻Morse; https://antchain.antgroup.com/products/morse
2)富數FMPC(Avatar); https://www.fudata.cn/federated-machine-learning
3)華控PrivPy; https://www.tsingj.com/
4)平安蜂巢;
5)矩陣元JUGO; https://jugo.juzix.net/home
6)騰訊T-Sec; https://cloud.tencent.com/product/fele
7)nvidia clare;
8)華為NAIE;
3-其他
1)京東數科聯邦魔盒; https://www.jddglobal.com/products/union-learn
2)同盾科技-智邦; https://www.tongdun.cn/ai/solution/aiknowledge
3)冰鑒;
4)光之樹科技-天機; https://www.guangzhishu.com/
5)數犢科技 ;https://www.sudoprivacy.com/
6)翼方健數-翼數坊; https://www.basebit.me/
7)鍩崴科技-鍩崴信 ; https://www.nvxclouds.com/
8)同態科技-迷霧計算: https://www.ttaicloud.com/
9) TalkingData; https://sdmk.talkingdata.com/#/home/datasecurity
10)融數聯智; https://www.udai.link/
11)算數力科技-CompuTa: https://www.computa.com/
12)摩聯科技 ; https://www.aitos.io/index/index/index.html
13) ARPA-ARPA隱私計算協議; https://arpachain.io/
14)趣鏈科技-BitXMesh可信數據網絡; https://bitxmesh.com/
15)藍象智聯
16)沖量網絡; http://www.impulse.top/
17)數牘科技;https://www.sudoprivacy.com/#/home