"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 , Ii = Ij , ?Di , Dj , i ≠ j
- 训练结束后,每一方只拥有与自己数据相关的模型参数
-
- 纵向联邦学习
-
- 联邦迁移学习
-
-
- 数据集在样本空间和特征空间都有差异,即Xi≠Xj , Yi≠Yj , Ii ≠ 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)梯度,并相应地更新模型参数
- 联邦迁移学习