仍没有进展,耐心读论文!
这次总结两篇文章去中心化的联邦学习
第一篇可以运行他的代码,非常开心。GFL: Galaxy Federated Learning
(1)假设每一个节点同时完成本地训练,并使用IPFS对对应的文件进行操作。A,B,C,D,E,F 参数分别为 MA, MB , MC , MD, ME , MF .
依据一致性hash算法,各个节点要将参数传输到可信节点上,如果可信节点宕机了,就会寻找最近的诚实节点。
(不诚实节点——————>诚实节点)(减少了节点数)
上述3轮过程,一次移动一步
这里引入知识蒸馏技术和环约减技术,将可信节点的参数做平均,缩减了参数。
L s t u d e n t = L C E + D K L ( p t e a c h e r ∣ ∣ p s t u d e n t ) L_{student} = L_{CE}+D_{KL}(p_{teacher}||p_{student}) Lstudent=LCE+DKL(pteacher∣∣pstudent)
L C E L_{CE} LCE 是交叉熵, D K L D_{KL} DKL是散度. p t e a c h e r p_{teacher} pteacher和 p s t u d e n t p_{student} pstudent表示激活函数后输出的模型。
p t e a c h e r = e z / T ∑ i e x p ( z i / T ) p_{teacher} = \frac{e^{z/T}}{\sum _{i}exp(z_{i}/T)} pteacher=∑iexp(zi/T)ez/T
T是蒸馏的温度, z是逻辑输出,此处用欧几里得距离代替散度去测量模型之间的分布差异。
L s t u d e n t = L C E + D E D ( z t e a c h e r ∣ ∣ z s t u d e n t ) L_{student} = L_{CE}+D_{ED}(z_{teacher}||z_{student}) Lstudent=LCE+DED(zteacher∣∣zstudent)
举得例子不知恰不恰当: 取A为学生模型,剩余部分的百分之多少为教师模型,进行蒸馏学习。
第二篇去中心化交互迁移的联邦学习在物联网系统中应用。
1.对于不同的模型直接平均,可能会产生客户漂移-----异构
2. 可以缩减通信成本和保证数据隐私
3. 中心服务器各方面都很强,很难找到。
4. 可以解决单个点失败的情形,增强稳定性。
引用 2 ^2 2(熵平均)
Gossip算法被称反熵,熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机的与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点。只要这些节点可以通过网络连通,最终他们的状态都是一致的,当然这个也是疫情传播的特点。Gossip 平均用在深度学习模型中,有很好的收敛性质。
原文链接.
蒸馏
两个学生网络学习同一个数据集,另一个教另一个学习,初始化不同,学到更多知识。
D k = ( x i k , y i k ) D_{k} = {(x_i{^k},y_{i}^{k})} Dk=(xik,yik), y i k ∈ { 1 , 2 , 3 , . . , C } y_i^k \in \{1,2,3,..,C\} yik∈{1,2,3,..,C}, N k N_{k} Nk 表示第k个用户的训练总数, P k 表 示 不 同 的 分 布 , k ∈ { 1 , 2 , . . . , K } P_k表示不同的分布,k \in \{1,2,...,K\} Pk表示不同的分布,k∈{1,2,...,K} .
第t轮,随机选择Q个用户(2Q<
w ˙ t k t j < − S G D B 1 , M ( w t k t j , D k t j ) … … … … … … ( 1 ) \dot w_t^{k_t^j}<-SGD_{B_1,M}(w_t^{k_t^j},D_{k_t^j}) \dots \dots \dots \dots \dots \dots (1) w˙tktj<−SGDB1,M(wtktj,Dktj)………………(1)
P 1 , l = m o d e l ( B l , w ˙ t k t j ) , P 2 , l = m o d e l ( B l , w ˙ t k t j + Q ) P_{1,l} = model (B_l, \dot w_t^{k_t^j}), P_{2,l} = model(B_l, \dot w_t^{k_t^{j+Q}}) P1,l=model(Bl,w˙tktj),P2,l=model(Bl,w˙tktj+Q)
损失函数:
L o s s 1 ( w ˙ t k t j ) , B l , P 2 , l ) = L c ( P 1 , l , y l ) + D k l ( P 2 , l ∣ ∣ P 1 , l ) Loss_1(\dot w_t^{k_t^j}),B_l,P_{2,l}) = L_c(P_{1,l},y_l)+D_{kl}(P_{2,l}||P_{1,l}) Loss1(w˙tktj),Bl,P2,l)=Lc(P1,l,yl)+Dkl(P2,l∣∣P1,l)
L o s s 2 ( w ˙ t k j + Q j ) , B l , P 1 , l ) = L c ( P 2 , l , y l ) + D k l ( P 1 , l ∣ ∣ P 2 , l ) Loss_2(\dot w_t^{k_{j+Q}^j}),B_l,P_{1,l}) = L_c(P_{2,l},y_l)+D_{kl}(P_{1,l}||P_{2,l}) Loss2(w˙tkj+Qj),Bl,P1,l)=Lc(P2,l,yl)+Dkl(P1,l∣∣P2,l)
L c , D K L L_c,D_{KL} Lc,DKL公式就不展开了,
对于上图白话解释:
1.2Q分成两组, I t A = { k t 1 , k t 2 , . . . , k t Q } I_t^A =\{k_t^1,k_t^2,...,k_t^Q\} ItA={kt1,kt2,...,ktQ}, I t B = { k t Q + 1 , k t Q + 2 , . . . , k t 2 Q } I_t^B = \{k_t^{Q+1},k_t^{Q+2},...,k_t^{2Q}\} ItB={ktQ+1,ktQ+2,...,kt2Q}
2. I t A I_t^A ItA组中的用户训练模型,将权重参数传输到对应的 I t B I_t^B ItB组中的某一用户
3. I t B I_t^B ItB中的用户以 B 2 B_2 B2大小分割数据集
4. 对初始参数 I t A I_t^A ItA传输的参数在本地数据集上计算激活函数softmax P 1 , l , P 2 , l P_{1,l},P_{2,l} P1,l,P2,l
5. 在k+Q上更新 w ˙ t k t j \dot w_t^{k_t^j} w˙tktj 和 w t k t j + Q w_t^{k_t^{j+Q}} wtktj+Q
6. w ˙ t k t j \dot w_t^{k_t^j} w˙tktj存储在 k t j + Q k_t^{j+Q} ktj+Q中
7. 收敛时,停止
这是发一半,各算各的。
优势
以上是两篇去中心化的回顾。