天天看點

聯邦學習[縱向聯邦學習中兩方解決方案]

聯邦學習大火,主要是解決資料孤島問題,即如何在符合資料隐私的基礎上,實作多方資料不出本地,但是卻能聯合訓練一個共有大模型的目的,對于需要中心的縱向聯邦學習,是需要中心先下發公鑰,而後期會出現中心能夠完全掌握整個模型的情況。那麼在更嚴格情況,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\),得:

\[L=(u_i^A+\Theta_A)+(u_i^B+\Theta_B)

\]

\[d_i=u_i^A+u_i^B

\]

\[\frac{ \partial L }{\partial \Theta_A}=d_i*x_i^A+\Theta_A

\]

\[\frac{ \partial L }{\partial \Theta_B}=d_i*x_i^B+\Theta_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\)加密得:

\[\begin{bmatrix}

u_i^A

\end{bmatrix}_{pubA}

\]

\[\begin{bmatrix}

L_A

\end{bmatrix}_{pubA}\]

3)将這兩個部分發送給B;

2.2 AB完成資訊互動

聯邦學習[縱向聯邦學習中兩方解決方案]
4)B方計算\(u_i^B\)和\(\Theta_B\),然後可計算\(L_B\),并\(u_i^B\)和\(L_B\)用\(Pub_A\)加密得:

\[\begin{bmatrix}

u_i^B

\end{bmatrix}_{pubA}

\]

\[\begin{bmatrix}

L_B

\end{bmatrix}_{pubA}\]

通過同态加密,進而得到

\[\begin{bmatrix}

L

\end{bmatrix}_{pubA}=\begin{bmatrix}

L_A

\end{bmatrix}_{pubA}+\begin{bmatrix}

L_B

\end{bmatrix}_{pubA}\]

并且,\(d_i=u_i^A+u_i^B\),故而得到

\[\begin{bmatrix}

d_i

\end{bmatrix}_{pubA}=\begin{bmatrix}

u_i^A

\end{bmatrix}_{pubA}+\begin{bmatrix}

u_i^B

\end{bmatrix}_{pubA}\]

且因為\(\frac{ \partial L }{\partial \Theta_B}=d_i*x_i^B+\Theta_B\),得到B的梯度

\[\begin{bmatrix}

\frac{ \partial L }{\partial \Theta_B}

\end{bmatrix}_{pubA}\]

5)從4中可知,如果此時将資料發送給A則A可以通過私鑰A,\(Pri_A\)完成解密,獲得B的模型資訊,為了防止此事發生,通過差分隐私方式(就是加噪音),得到

\[\begin{bmatrix}

L+M^B

\end{bmatrix}_{pubA}\]

\[\begin{bmatrix}

\frac{ \partial L }{\partial \Theta_B}+R^B

\end{bmatrix}_{pubA}\]

為了防止\(d_i\),從

\[\begin{bmatrix}

d_i

\end{bmatrix}_{pubA}\]

中解密,B對其用\(Pub_B\)做一次加密得到

\[\begin{bmatrix}

\begin{bmatrix}

d_i

\end{bmatrix}_{pubA}

\end{bmatrix}_{pubB}\]

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}\)計算自己的梯度得到

\[\begin{bmatrix}

\frac{ \partial L }{\partial \Theta_A}

\end{bmatrix}_{pubB}\]

為了獲得B的解密,但是又擔心B知道自己梯度,故而對其進行加密得到

\[\begin{bmatrix}

\begin{bmatrix}

\frac{ \partial L }{\partial \Theta_A}

\end{bmatrix}_{pubB}

\end{bmatrix}_{pubA}\]

7)A将差分隐私的\(L+M^B\),\(\frac{ \partial L }{\partial \Theta_B}+R^B\)直接給B,并将自己需要解密的

\[\begin{bmatrix}

\begin{bmatrix}

\frac{ \partial L }{\partial \Theta_A}

\end{bmatrix}_{pubB}

\end{bmatrix}_{pubA}\]

發送給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