HOME
联邦学习这件小事(二)
作者简介

严杨

来自数据网格实验室BitXMesh团队,PirvAIの修道者

前 言

上一篇我们讲述了人工智能,机器学习与联邦学习的关系。

回顾上文?《联邦学习这件小事》

这篇我们将继续探索联邦学习方法的分类。联邦学习方法被分为横向联邦学习纵向联邦学习迁移联邦学习三类,适用于解决不同的实际问题。

横向联邦学习

在两个数据集的用户特征重叠较多而用户重叠较少的情况下,把数据集按照用户维度切分,并取出双方用户特征相同而用户不完全相同的那部分数据进行训练。这种方法叫做横向联邦学习(如下图)。

应用场景

横向联邦学习的本质是样本的联合,适用于参与者间业态相同但触达客户不同,即特征重叠多,用户重叠少时的场景,比如不同地区的银行间,他们的业务相似(特征相似),但用户不同(样本不同)。

比如,有两家不同地区银行 — 上海与杭州两地的两家银行,它们的用户群体分别来自上海与杭州的居住人口,用户的交集相对较小。由于银行间的业务相似,记录的用户特征大概率是相同的。因此,横向联邦学习可以被考虑用来构建联合模型。

于2017年,Google提出了一个针对安卓手机模型更新的数据联合建模方案:在单个用户使用安卓手机时,不断在本地更新模型参数并将参数上传到安卓云上,从而使特征维度相同的各数据拥有方建立联合模型的一种联邦学习方案。

学习过程

Step1. 参与方各自从协调方上下载最新模型;

Step2. 每个参与方利用本地数据训练模型,加密梯度上传给协调方,协调方聚合各用户的梯度以更新模型参数;

Step3. 协调方返回更新后的模型给各参与方;

Step4. 各参与方更新各自模型。

纵向联邦学习

在两个数据集的用户重叠较多而用户特征重叠较少的情况下,把数据集按照特征维度切分,并取出双方用户相同而用户特征不完全相同的那部分数据进行训练。这种方法叫做纵向联邦学习(如下图)。

适用场景

纵向联邦学习的本质是特征的联合,适用于用户重叠多,特征重叠少的场景,比如同一地区的商超和银行,他们触达的用户都为该地区的居民(样本相同),但业务不同(特征不同)。

比如,有两个不同机构,一家是某地的银行,另一家是同一个地方的电商。它们的用户群体很有可能包含该地的大部分居民,用户的交集可能较大。由于银行记录的都是用户的收支行为与信用评级,而电商则保有用户的浏览与购买历史,因此它们的用户特征交集较小。纵向联邦学习就是将这些不同特征在加密的状态下加以聚合,以增强模型能力的联邦学习。

习过程

介绍一种简单通用的纵向联邦学习的建模学习过程,加密方式也以半同态加密的Pallier Encryption为主。

训练前:

先采用加密文本对齐(PSI)的技术手段,在系统内筛选出不同企业之间的共同用户。

训练时:

Step1. 协调方C向企业A与B发送公钥,用来加密所需传输的数据;

Step2. A和B分别计算和自己相关特征的中间结果,并加密完后进行交互,用来求解各自的梯度结果和损失结果;

Step3. A和B分别计算各自加密后的梯度并添加掩码后发送给C,同时B计算加密后的损失先发送给C;

Step4. C解密梯度和损失后回传给A和B,A、B去除掩码并更新模型。

迁移联邦学习

在两个数据集的用户与用户特征重叠都较少的情况下,不对数据进行切分,而可以利用迁移学习来克服数据或标签不足的情况。这种方法叫做联邦迁移学习(如下图)。

适用场景

当参与者间特征和样本重叠都很少时可以考虑使用联邦迁移学习,如不同地区的银行和商超间的联合。主要适用于以深度神经网络为基模型的场景。

迁移学习的核心是,找到源领域和目标领域之间的相似性。举一个杨强教授经常举的例子来说明:我们都知道在中国大陆开车时,驾驶员坐在左边,靠马路右侧行驶。这是基本的规则。然而,如果在英国、香港等地区开车,驾驶员是坐在右边,需要靠马路左侧行驶。那么,如果我们从中国大陆到了香港,应该如何快速地适应他们的开车方式呢?诀窍就是找到这里的不变量:不论在哪个地区,驾驶员都是紧靠马路中间。这就是我们这个开车问题中的不变量。找到相似性 (不变量),是进行迁移学习的核心。

比如有两个不同机构,一家是位于中国的银行,另一家是位于美国的电商。由于受到地域限制,这两家机构的用户群体交集很小。同时,由于机构类型的不同,二者的数据特征也只有小部分重合。在这种情况下,要想进行有效的联邦学习,就必须引入迁移学习,来解决单边数据规模小和标签样本少的问题,从而提升模型的效果。

学习过程

联邦迁移学习的步骤与纵向联邦学习相似,只是中间传递结果不同(实际上每个模型的中间传递结果都不同)。

以上是常见的几种联邦学习类型,联邦学习这件“小事”能用在什么场景中,带来怎样的价值,会在下一篇文章中详细介绍。也欢迎各位与我们一起对以上三种类型的联邦学习进行更深一步的讨论,添加小助手桔子(微信:18458407117)加入技术交流群。