Communication-Efficient Learning of Deep Networks from Decentralized Data

international conference on artificial intelligence and statistics

Summary
  • 当前机器学习模型训练中存在着数据隐私保护问题,所以作者提出了FL概念。通过分布式+隐私保护进行训练模型。对不平衡、non-IID的数据也更合适。

  • 主要提出了FedSGD和FedAvg算法。FedAvg通信代价要小于FedSGD

  • 实验中使用了MNIST数字识别和语言模型,通过改变E和B(client本地训练的轮次、每次训练小批量数据的size)来探究最优的E和B,而且在non-IID和IID两种数据中都进行了相关实验。

Problem and Background
  • 目前我们拥有的一些设备(手机、PC)具有一定的算力,也可以接触到大量的包含个人隐私的数据。而且这些数据相较于传统的分布式学习是unbalanced and non-IID。每个client的数据肯定是不同规模,不同倾向的。
  • 所以我们希望提出一种模型训练的方法,可以在不同的设备上利用本地隐私数据进行模型训练。
Contributions
  • 提出Federal Learning这一概念。可用于人工智能隐私保护和安全多方计算。
  • FedAvg算法有一定的实用性,用于unbalanced and non-IID dataset,可以用较少的通信轮次获取不错的训练模型。
Method
  • FedSGD and FedAvg

    • C-fraction of clients on each round

    • E-本地客户端训练local data的次数

    • B-训练时本地数据小批量的大小,就是每次训练用多少数据。当B无穷大就代表每次训练本地的所有数据都要用。

    • 当B无穷大,E为1的时候,就是用所有数据每轮训练一次,那就是FedSGD Algorithm。

    • img - fedsgd:client发送给server的是g(梯度) - fedavg:client直接用g求出要更新的ω发送给server。
  • algorithm 1 FedAvg

    • image-20221002195325525
    • 其中服务器平均更新的权重是每个client的数据集占总的数据集的比重。(但是这里有client谎报自己的数据集怎么办,让自己用比较少的dataset占大的比重)
Experimental
  • MNIST digit recognition
    • MNIST 2NN
      • 具有2个隐藏层的多层感知器,每个层使用ReLu激活200个单元(总计199,210个参数)
    • CNN
      • CNN有两个5x5卷积层(第一个有32个通道,第二个有64个,每个都有2x2个最大池化),一个有512个单元和ReLu激活的完全连接层,以及一个最终的Softmax输出层(总参数为1,663,370)。
    • 两种数据分发方式:IID and non-IID
      • IID
        Each client随机获得600样例。
      • non-IID
        将用例按数字先分好类,再分成300size的200份。最后每个client只有两个数字的样例。
  • Language Modeling
    • dataset:莎士比亚作品集
    • 为作品集中所有说话的角色建立一个client,共1146个。将每个client的数据集八二分,80用于训练,20用于测试。与MNIST数据集不同的是这个每个client的数据是不平衡的,就是训练可用数据多少不同。
    • 该模型将一系列字符作为输入,并将每个字符嵌入到学习的 8 维空间中。然后通过 2 个 LSTM 层处理嵌入的字符,每个层有 256 个节点。最后,第二个 LSTM 层的输出被发送到 softmax 输出层,每个字符一个节点。完整模型有 866,578 个参数,我们使用 80 个字符的展开长度进行训练。
  • Result
    • 论文中讲解了相关实验的结果,主要研究了当B和E变化时对实验的影响,当B为10,E为5的时候效果比较好,因为B正无穷,E为1的时候就成立FedSGD。
Related Knowledge
  • SGD

    • 利用梯度觉得接下来迭代的方向,使代价函数越来越小。

    • SGD为随机梯度下降法。用数学式可以将 SGD 写成如下的式(6.1)。

      在这里插入图片描述

      这里把需要更新的权重参数记为W,把损失函数关于W的梯度记为 ∂L/∂W 。η ηη 表示学习率,实际上会取 0.01 或 0.001 这些事先决定好的值。式子中的←表示用右边的值更新左边的值。
      ————————————————
      版权声明:本文为CSDN博主「赵孝正」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/weixin_46713695/article/details/123198293

    • import matplotlib.pyplot as plt
      #一元四次函数 f(x) = x^4 - 3x^3+2
      xold = 0
      xnew = 6
      
      #误差
      eps = 0.00002
      #步长,学习率
      alpha = 0.01
      #function
      x = []
      y = []
      plt.title="TrendofSGD"
      plt.xlabel('x')
      plt.ylabel('y')
      
      def f(x):
          return x ** 4 - 3 * x ** 3 + 2
      def f_prime(x):#倒数
          return 4 * x ** 3 - 9 * x ** 2
      while abs(f(xold)-f(xnew)) > eps:
          xold = xnew
          xnew = xold - alpha * f_prime(xold)
          x.append(xnew)
          y.append(f(xnew))
          plt.scatter(xnew,f(xnew))
          plt.pause(0.2)
      plt.plot(x,y)
      plt.show()
      print(x)
      print("Result:",xnew,f(xnew))
      
  • 卷积层

  • 池化

  • 完全连接层

  • ReLu activation

  • softmax output

    • [(27条消息) 神经网络中的softmax层为何可以解决分类问题——神经网络之softmax(3)_石头1666的博客-CSDN博客_softmax分类层](
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值