zoukankan      html  css  js  c++  java
  • "Federated Machine Learning : Concept and Applications"粗略笔记

    1.联邦学习定义

    假设N个数据拥有者{F1, ... ,FN}想要使用他们各自的数据{D1, ... ,DN}来训练一个更好的机器学习模型

    • 传统的方法是整合所有的数据为D=D1∪D2∪ ... ∪DN,并使用数据集D来训练出模型MSUM,记其准确性为VSUM
    • 而联邦学习则是各个数据拥有者使用各自的数据协作训练出模型MFED的过程,其准确性为VFED,在该过程中,任何数据拥有者Fi不暴露自己的数据Di给其他数据拥有者。
    • 此外,模型MFED的性能应该接近模型MSUM,即VFED接近VSUM。记δ为非负实数,则 | VFED-VSUM | < δ ,则记联邦学习算法有δ精度损失。

    2.联邦学习可能中用到的技术

    • 安全多方计算(secure multi-party computation)
    • 差分隐私(differential privacy)
    • 同态加密(homomorphic encryption)
    • 区块链(blockchain)

    3.联邦学习分类

    • 记矩阵Di为被数据拥有者i所拥有的数据,每一行代表一个样本(sample),每一列代表一个特征(feature),某些数据集(data sets)可能包含了标签数据(label data)。
    • 记特征空间(feature space)为X,标签空间(label space)为Y,样本ID空间(sample ID space)为I,则特征(feature)X、标签(label)Y以及样本Ids(sample Ids)I构成了完整的训练数据集(X,Y,I)。
    • 基于各方数据在特征和样本ID空间的分布规律,联邦学习被分为横向联邦学习(horizontally federated learning)、纵向联邦学习(vertically federated learning)和联邦迁移学习(federated transfer learning,FTL)
      • 横向联邦学习
        • 基于样本的联邦学习
        • 数据集享有相同的特征空间,但其样本有差别。即Xi=Xj , Yi=Yj , Ii ≠ Ij , ∀Di , Dj , i ≠ j (这个公式是论文上看见的,没太明白,感觉和上面的叙述有点不一致)
        • 训练结束后,整个模型和所有参数都暴露给所有参与者

     

      • 纵向联邦学习
          • 基于特征的联邦学习
          • 数据集享有共同的样本ID空间,但特征空间有差别。即Xi≠Xj , Yi≠Yj , I= Ij , ∀Di , Dj , i ≠ j
          • 训练结束后,每一方只拥有与自己数据相关的模型参数
      • 联邦迁移学习
        • 数据集在样本空间和特征空间都有差异,即Xi≠Xj , Yi≠Yj , I≠ Ij , ∀Di , Dj , i ≠ j

      

    4.联邦学习系统结构

    • 横向联邦学习
      • 拥有相同数据结构的K个参与者,在云服务器或参数的协助下,进行模型训练
      • 无论服务器是否诚实但好奇(honest-but- curious),数据拥有者都是诚实的,即从数据拥有者到服务器的信息泄露是不被允许的
      • 重复执行以下步骤,直到损失函数收敛,完成训练
        • 数据拥有者在本地计算训练梯度,使用加密、差分隐私或者秘密共享等技术来修饰(mask,暂时没想好咋翻译)梯度的选择,然后将被修饰的结果发送到服务器
        • 服务器在不获取数据拥有者信息的条件下进行安全整合
        • 服务器发送整合结果给数据拥有者
        • 数据拥有者根据接收信息更新各自的模型
    • 纵向联邦学习
      • 假设各自拥有己方数据的公司A和B合作训练一个模型
      • 公司B拥有模型需要预测的标签数据
      • A和B之间不能之间交换数据,所以需要一个诚实且没有与A或B勾结的第三方协作者C
      • 整个联邦学习系统由以下两部分构成
        • 加密整个联盟:由于双方数据不相同,为确保A和B不暴露自己的数据给对方,使用基于加密的用户(来自于A和B的数据)ID联盟来筛选共同用户
        • 加密模型训练:筛选出共同用户后,我们使用这些共同用户的数据来训练模型。主要步骤如下
          • 协作者C创建密钥对,发送公钥给A和B
          • A和B加密并交换梯度和损失计算的中间结果
          • A和B分别计算加密的梯度并增加修饰(mask),同时B计算加密的损失;A和B将加密后的结果发送给C
          • C解密接收到的数据并将解密后的梯度和损失发送给A和B;A和B解释(unmask)梯度,并相应地更新模型参数
    • 联邦迁移学习 

     

     

  • 相关阅读:
    Java网络编程
    loj#6517. 「雅礼集训 2018 Day11」字符串(回滚莫队)
    bzoj4241: 历史研究(回滚莫队)
    洛谷P5050 【模板】多项式多点求值
    loj#6053. 简单的函数(Min_25筛)
    【BZOJ4144】[AMPPZ2014]Petrol(最短路+最小生成树+并查集)
    51nod 1781 Pinball(线段树)
    CF1110D Jongmah
    CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
    20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/wasua/p/15783358.html
Copyright © 2011-2022 走看看