联邦学习——学习笔记1:FedAvg算法

文章目录


本笔记参考自b站up主:丸一口

原视频链接

在这里插入图片描述

如上图,现有6个医院:眼科、儿科、妇科、骨科、综合医院1、综合医院2。中间节点为政府。

现政府要求用各个医院的数据训练某个模型,希望对某些疾病进行一些预测,数据如下图:
在这里插入图片描述
如果是传统方法,那就是六个医院直接把数据发送到政府处,然后政府那边做机器学习。

如果用联邦学习,那政府是不能直接接收其他医院的所有数据的,因为如果直接接收数据,会有一个严重问题,就是隐私泄露的问题。因为传数据的过程中可能会被拦截,并且大量数据传送过程中对带宽也是有较高要求。

联邦学习的具体解决方案:中心节点初始化一个模型,把这个初始模型发给其他节点,其他节点在自己的地方做训练,训练结束后,把训练好的模型传到中心节点。然后中心节点做一个加权平均。然后中心节点再把模型发给其他节点,重复上述广播模型,上传模型操作。一直到中心节点认为准确率达到要求后,停止操作。

可以看到,联邦学习的过程中,中心节点是没有在本地存储数据的,这样就保证了数据的隐私。并且中心节点在没有数据的情况下,也能达到训练所有其他节点数据的效果。

在这里插入图片描述
再来看数据分布的问题:IID和Non-IID
ps:IID:independent identical distribution

这里的独立同分布
独立:就类似概率论里面两个事件发生互不影响。
同分布:如上图的综1和综2,它两个的数据分布情况都相同,都是均匀分布。

对于上图中的数据,如果我们仅仅用综合医院1的数据是不是也可以做到各个方面数据的训练?那为什么还需要其他的医院数据一起训练?

因为我们在机器学习训练的过程中,数据是训练的越多,对一些疾病的预测是更准确的,拟合效果也是更好的。

另外,虽然综合医院1可以对眼CT、胸CT、腿CT的数据分别训练。但是单眼CT来说,眼科医院的数据一方面更多,另一方面肯定也是更精确的。
在这里插入图片描述

在这里插入图片描述

在神经网络中,其实就是一个带权无向图。以上图中h1为例
前向传播
在这里插入图片描述
在这里插入图片描述
利用公式IN=i1w1+i2w2,我们得到h1的IN的数据,把这个数据称之为net值
在这里插入图片描述
而h1数据从第二层传给第三层时,还需要经过一个处理,也就是激活函数。
激活函数的作用就是不让网络数据线性的往下传递,每一层进行一点干扰,这样非线性的传递,才能拟合非线性的曲线。
在这里插入图片描述
这里用到的激活函数是ReLu,负数为0,正数是它本身,ReLu曲线如下:
在这里插入图片描述
在这里插入图片描述
然后计算出h1的out值。然后以此类推,依次往下传,直到传播到final。

在这里插入图片描述

比如我们这个神经网络是做一个猫狗识别,我们input进去一个图片,然后final出来一个猫或狗的结果。假设猫是1,狗是0。

然后final出来一个值是0.35,那么就是产生了一个误差,我们确定真实值为r,final值为f,然后使用误差函数,我们这里就简单的做误差就是r和f差的绝对值。具体误差函数看工业要求
在这里插入图片描述

后向传播
如果是猫狗检测,得到上述0.35这种非猫非狗的数据,肯定要再来一轮。下一轮经过神经网络的各个节点就需要调整各路的权重了。因为第一轮权重是随机出来的,后续就是要把这些路径的权重训练成所需,比如这里传入猫图片训练成1,传入成狗图片训练成0

在这里插入图片描述
所以我们在经历一轮前向传播之后,要立即接一轮后向传播来改变各路权重。
ps:如果不做后向传播改变各路权重,那么前向传播得到的值会一直不变。

后向传播具体做法:
在这里插入图片描述
等式右侧三个偏导解释分别如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后更新w5,新的w5=旧的w5-学习率*刚跟求的偏导
在这里插入图片描述
学习率可以认为是一个步长,如果不设置学习率就相当于学习率是1,对准确率影响较大,一般学习率设为0.01或者其他接近0的数。

在这里插入图片描述

其他的w和前面介绍的w5都是一样的步骤做GD梯度下降,即权重更新。

SGD就是在神经网络中每次随机选一个数据做梯度下降训练。

注:
SGD:随机选一个数据
BGD:全批量数据,比如数据集1000个,每次训练都全部1000个
MBGD:比如数据集1000个,分成几个组,比如分成20组,每组50个。做20轮梯度下降,每次取1组50个出来。

在这里插入图片描述
下面对FedAvg联邦平均算法进行一个具体的解释:
Client:
在这里插入图片描述

Server:
在这里插入图片描述



  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劲夫学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值