文章目录
- 1 联邦学习与隐私计算
- 1.0 联邦学习背景
- 1.1 横向联邦学习(HorizontalFederatedLearning,HFL)
- 1.2 纵向联邦学习(VerticalFederatedLearning,VFL)
- 1.3 联邦迁移学习(FederatedTransferLearning,FTL)
- 1.4 联邦学习问题:攻击与防御
- 1.4.1 投毒攻击
- 1.4.2 联邦学习问题:对抗攻击
- 1.4.3 攻击与防御策略
- 1.5 隐私保护密码技术
- 1.5.1 隐私泄露的场景
- 1.5.2 常见的隐私保护密码技术
- 1.5.2.1 安全多方计算
- 1.5.2.2 同态加密
- 1.5.2.3 差分隐私
- 2 相关开源框架
- 2.1 FATE
- 2.1.1 FATE介绍
- 2.1.2 横向联邦建模
- 2.1.3 纵向联邦建模
- 2.1.4 联邦深度学习
- 2.2 百度:PaddleFL
- 2.3 阿里:FederatedScope
- 2.4 腾讯:PowerFL
- 2.4.1 PowerFL介绍
- 2.4.2 广告投放场景
- 2.5 TensorFlow Federated (TFF)
- 2.6 PySyft
- 2.7 coMind
- 2.8 XAIN
- 3 使用案例
- 3.1 阿里:数据安全流通的解决方案
- 3.2 联邦学习怎样应用在推荐系统中?
- 3.3 京东九数:数据安全共享&模型共建解决方案
- 3.4 腾讯云:神盾联邦学习
- 3.5 度小满:浅谈联邦学习场景中的数据去标识化
- 3.6 腾讯音乐:联邦学习RTA在全民K歌投放系统中的应用
1 联邦学习与隐私计算
Federated Learning - 联邦学习 参考文献: 小白也能通俗易懂的联邦学习! 关于联邦学习建模过程中算法交互内容的研究
1.0 联邦学习背景
谷歌最开始提出联邦学习时是为了解决C端用户终端设备上模型训练的问题。 C端用户手机上的智能软件提供服务时背后都得依靠模型,而模型的训练学习全部要基于用户的数据。比如手机上的输入法,基于不同人的打字拼音习惯,输入法会不停更新会慢慢和每个人的打字习惯进行匹配,用户会觉得输入法越来越智能;
那么过去这些手机输入法是如何进行模型训练的? 过去的做法: 将用户每天产生的行为数据全部上传至云端服务器,部署在服务器上的模型基于上传的数据进行训练,然后更新模型,最终实际应用时本地需要请求云端服务。大致流程如下图:
上述这种模型训练的方式,我们也叫做“集中式模型训练”,这种方式有两个弊端:
- 无法保证用户的数据隐私:服务商将用户的数据全部采集到了服务器上进行统一管理。这种方式在监管对个人数据隐私管控越来越严的情况下,会越来越受限;
- 实时性难以保证:模型在应用时需要通过网络请求云端的模型,在网络延迟或者没有网络的情况下,模型没办法发挥它的作用;
谷歌提出了一种新的解决方案,并将它命名为“Federated Learning”。总的来说就是:用户数据不出本地,所有模型的训练都是在设备本地进行。本地模型训练完毕后将得到的模型参数or下降梯度,经过加密上传至云端,云端模型接收到所有上传的加密参数or梯度后,结合所有的参数值进行统一的聚合,比如通过加权平均得到新的模型参数or下降梯度,然后将新的结果再重新下发到本地,本地更新得到一个全新的模型; 这种方式我们又叫作“分布式模型训练“,大致的做法如下图:
上述这种模型训练的方式有一个基本的要求: 本地模型-Local Model和云端模型- Global Model的特征必须一致:因为我们是汇总了无数本地模型的参数,基于这些参数对云端模型进行更新。
1.1 横向联邦学习(HorizontalFederatedLearning,HFL)
“横向联邦学习” ,模型之间使用的特征一致,只是使用的样本数据不一样。比如说下图本地模型使用的用户特征都是一样的,但是每个本地模型只能使用本地这一个用户的数据,无法使用其他用户的数据进行训练。
横向联邦学习系统的训练过程通常由如下四个步骤组成:
- 步骤1:各参与方在本地计算模型梯度,并使用同态加密、差分隐私等加密技术,对梯度信息进行掩饰并将掩饰后的结果(简称为加密梯度)发送给聚合服务器。
- 步骤2:服务器进行安全聚合操作,如使用基于同态加密的加权平均。
- 步骤3:服务器将聚合后的结果发送给各参与方。
- 步骤4:各参与方对收到的梯度进行解密,并使用解密后的梯度结果更新各自的模型参数。
上述步骤将会持续迭代进行,直到损失函数收敛或者达到允许的迭代次数的上限或允许的训练时间,这种架构不依赖于特定的机器学习算法(如逻辑回归和深度神经网络),并且所有参与方将会共享最终的模型参数。 需要注意的是,上述步骤中参与方将梯度信息发送给服务器,服务器将收到的梯度信息进行聚合(例如,计算加权平均),再将聚合的梯度信息发送给参与方。我们称这种方法为梯度平均,除了共享梯度信息,联邦学习的参与方还可以共享模型的参数。参与方在本地计算模型参数,并将它们发送至服务器。服务器对收到的模型参数进行聚合(例如,计算加权平均),再将聚合的模型参数发送给参与方。我们称这种方法为模型平均。
以下几个疑惑:
- 本地模型如何训练更新? 很多时候我们的手机都处于闲置的状态,这个时候本地模型就可以开始训练和上传加密参数;就像人体一样,睡眠的时候长高和做梦来更新大脑的认知系统;
- 模型部署本地会不会占据太多资源? 很多时候我们在云端服务器的模型都是几个G,下放本地会不会很占资源。这种模型都是需要经过压缩和部分的特征删减,确实特别大的模型无法下放本地;
- 上传的数据可以是模型的特征参数或模型训练的下降梯度嘛? 这二者均可,本身模型上的特征参数也是通过梯度下降法计算出来的,所以给下降梯度也是可以得到最终模型的特征参数。(对于梯度下降法不太了解的读者可以阅读:https://zhuanlan.zhihu.com/p/335191534)
- 上传的数据为什么还要加密?加密的数据又如何使用? 如果这些数据不进行加密的话,有可能通过这些数据进行反推导,将原始数据推导出来,当然这个难度也很大,但为了保险起见还是将所有的数据都进行加密上传。云端得到的是一个加密数据包,基于加密状态下的数据包云端模型即开始更新计算,这里面有大量密码学的知识在此不详细展开,是一种“同态加密”的算法。整个计算过程中云端模型均不知道加密数据包里面的具体内容。
1.2 纵向联邦学习(VerticalFederatedLearning,VFL)
B端的延伸—纵向联邦学习 联邦学习最开始被谷歌提出时是为了解决C端用户上传数据隐私问题。但是在实际工业界的问题是B端企业之间的数据孤岛问题。比如京东和腾讯之间的合作。京东和腾讯之间的用户肯定有绝大一部分是重叠的,京东有这部分用户的电商数据,腾讯有这部分用户的社交数据。如果二者将彼此之间的数据共享,那么彼此各项模型上的效果都会有大幅提升,但是实际开展时二者肯定不会共享彼此之间的数据。
B端企业之间的模型目标不一样,特征也不一样,就像京东和腾讯,二者的用户存在重叠,但是场景不同,采集到的用户特征也存在一定差异。这种情况下的联邦学习方案我们叫做 “纵向”。
比如京东&腾讯的用户有ABCDE五个用户是重叠的,腾讯有用户的“性别”&“年龄”数据,京东有“常住区域”、“消费水平”&“购物频次”的数据,二者结合起来可以使用样本数据的所有特征建立一个效果更优的模型。纵向联邦学习的研究是由香港科技大学计算机科学与工程学系主任,第一位华人国际人工智能协会(AAAI)院士&AAAI执行委员会委员-杨强教授牵头发起的。 杨强教授的整体纵向联邦学习架构分为以下几个大的部分。
整体还是比较抽象,我们以一个具体的案例来进行讲解。还是拿京东&腾讯合作的这个案例。
- 第一步:样本对齐; 腾讯和京东肯定都不会愿意暴露自己的原始数据。所以二者要在一起联合建模,首先需要对齐二者重叠的样本数据;在不暴露原始数据的前提下,双方如何对齐重叠的样本数据了,其实就是对齐哪些用户是共有的。这里同样需要应用到一种基于加密的用户ID对齐技术;
- 第二步:标签统一; 样本对齐以后,因为这个场景下我们是结合腾讯的数据来训练京东的模型,所以整个训练过程中数据的标签即“是否点击”Label由京东侧管控。
- 第三步:加密训练; 最终要构建的联合模型是拥有X1-X5所有特征的,但是X1-X2特征数据在腾讯侧,X3-X5特征数据在京东侧,同时Label在京东侧。所以在模型最开始训练时,两边模型各自使用自己有的特征和数据,初始化自己的参数w,然后开始计算。整个训练我们需要引入一个第三方也就是“协作者C”,这里的“协作者C”,并不是说要引入一家新的公司来参与到训练中,一个中间可以处理数据的地方即可。“协作者C”最开始需要下发一个公钥给到腾讯和京东,腾讯计算出来的中间结果经过公钥加密发给京东,京东也是如此。然后彼此再计算各自的下降梯度,再进行加密上传给协作者C,这中间一般京东&腾讯都会加一些随机数防止C直接获取梯度信息,协作者C进行解密后汇总双方结果得到一个最终的梯度值然后再回传给京东&腾讯,二者收到后减去最开始加上的随机数得到真实最终的梯度值,再更新模型的参数;
- 第四步:训练结束,联合模型更新; 步骤三重复循环,直到最终模型收敛训练完毕,最终京东&腾讯侧的模型参数都更新完毕,二者结合在一起就是一个联合模型。后面京东侧就使用该联合模型来进行线上应用。后续有用户来访问京东APP,如果该用户在二者重叠的样本中就访问联合模型来从京东&腾讯两侧获取加密数据,最终给出预测结果。
1.3 联邦迁移学习(FederatedTransferLearning,FTL)
联邦迁移学习适用于参与方的数据样本和数据特征重叠都很少的情况。在实践中,我们经常会面临的情况是,各参与方间并没有足够的共同特征和样本。联邦学习可以结合迁移学习技术,帮助只有少量数据(较少重叠的样本和特征)和弱监督(较少标记)的应用建立有效且精确的机器学习模型,使其可以应用于更广的业务范围。
1.4 联邦学习问题:攻击与防御
1.4.1 投毒攻击
投毒攻击主要是指在训练或再训练过程中,恶意的参与者通过攻击训数据集来操纵机器学习模型的预测。联邦学习中,攻击者有两种方式进行投毒攻击:数据投毒和模型投毒。
(1)数据投毒
数据投毒是指攻击者通过对训练集中的样本进行污染,如添加错误的标签或有偏差的数据,降低数据的质量,从而影响最后训练出来的模型,破坏其可用性或完整性。例如,攻击者使学习模型的参数值接近他所期望的值,同时使模型输出对某些测试样本的错误预测。有研究显示,采用混合辅助注入策略,通过注入少量有毒样本到训练集就获得了90%以上的攻击成功率。也有研究指出,针对支持向量机算法(SVM)产生的优化梯度,预测其目标函数的变化方向,使用梯度上升策略显著提高了SVM分类器的错误率。
(2)模型投毒
模型投毒不同于数据投毒,攻击者不直接对训练数据进行操作,而是发送错误的参数或是损坏的模型来破坏全局聚合期间的学习过程,比如控制某些参与方传给服务器的更新参数,从而影响整个学习模型参数的变化方向,减慢模型的收敛速度,甚至破坏整体模型的正确性,严重影响模型的性能,有研究者只假设了一个恶意代理(参与方),就实现了对整体模型的隐蔽性的攻击,使得目标模型无法对某类数据正确分类。
1.4.2 联邦学习问题:对抗攻击
对抗攻击是指恶意构造输入样本,导致模型以高置信度输出错误结果。这种通过在原始样本中添加扰动而产生的输入样本称为对抗样本。
从攻击环境来说,对抗攻击可以分为黑盒攻击和白盒攻击。若知道机器学习模型中的参数与内部结构,攻击者可以把所需的干扰看作一个优化问题计算出来。这种情况下的对抗攻击属于白盒攻击。而另一种常见的情境下,攻击者不知道任何模型的信息,只能跟模型互动,给模型提供输入然后观察它的输出,这种情形下的对矿攻击属于黑盒攻击。对抗攻击还可以根据攻击目的分为目标攻击和非目标攻击。根据干扰的强度大小分为无穷范数攻击、二范数攻击和零范数攻击等。
对抗攻击可以帮助恶意软件逃避检测,生成投毒样本,已经被攻击者广泛应用于图像分类、语义分割、机器识别以及图结构等多个领域,称为系统破坏者的一个有力攻击武器。
1.4.3 攻击与防御策略
针对联邦学习面临的多重安全威胁,下表列出了防御上述攻击的一些最新对策。
1.5 隐私保护密码技术
1.5.1 隐私泄露的场景
在各上述各类攻击中,对隐私的攻击威胁性最大,隐私的泄露可能在任何阶段发生,包括数据收集和预处理、模型训练和模型预测。
- (1)在数据收集阶段,用户数据在多个数据集之间存在着一定的关联性,大数据的多样性带来的多源数据融合,使得隐私泄露风险大大增加。此阶段面临的最大隐私挑战在于如何保护用户原始数据,避免因数据挖掘而导致隐私泄露。
- (2)在数据预处理阶段,在某些场景之下,不同数据集的所有者,可能需要共同完成数据清洗、集成、转换等操作,还要保证参与数据处理的各方及彼此之间不能泄露数据的隐私。此阶段最主要的任务是隐私保护的集合运算,包括集合求交、并、差等运算。
- (3)在模型训练和测试阶段,鉴于训练数据、测试数据,以及训练所使用的计算资源,可能分属不同参与方,因此,此阶段的隐私分为训练数据隐私、模型隐私和模型输出隐私。此阶段的主要挑战在于如何在多个参与方之间安全地完成各类不同的机器学习计算任务。
- (4)在预测阶段,由于预测所使用的模型是在大数据集上经过高性能计算而得到,一般由服务器端拥有,而用户希望利用服务器端的模型,来计算自己的私有数据,并且仅有自己可以得到预测结果。此阶段需要保护模型的隐私性及输出结果的隐私性。
1.5.2 常见的隐私保护密码技术
常见的隐私保护密码技术有:安全多方计算、同态加密、隐私保护的集合运算、差分隐私、秘密共享等。
1.5.2.1 安全多方计算
安全多方计算最初是针对一个安全两方计算问题,并于1982年由姚期智提出和推广在安全多方计算中,目的是协同地从每一方的隐私输入中计算函数的结果,而不用将这些输入展示给其他方。例如,假设一个私有的数值x被分给n位共享方,则每一方P_i只能获知X_i的内容,所有方能够协同地计算
所以,P_i只能根据自己的输入X_i来获知输出值y_i,而不能得知任何额外的信息。安全多方计算的研究大致可以划分为两个类别:通用安全多方计算,以及特定的安全多方计算。
1.5.2.2 同态加密
从抽象代数的角度来讲,同态(映射)指的是不同代数系统之间保持运算关系的映射。以带有一个二元运算的代数系统为例,对于两个代数系统<X,>和<Y,?>,如果映射f:X->Y,满足 f(ab)=f(a)?f(b),称f为<X,>到<Y,?>的同态,并称f把<X,>同态映射到<Y,?>。如果一个加密算法能够把明文空间及其运算形成的代数系统同态映射到密文空间及相对应运算形成的代数系统,则称该加密算法为同态加密算法。当然,明文空间带有的运算一般不止1个,比如常用的模n剩余环Zn带有模n加法和乘法两种运算。从定义上可以看到,同态加密算法不需要对密文解密,而可直接对密文进行运算,得到的运算结果,等同于对应明文所作相应运算计算结果的密文。不解密而进行计算,对于隐私保护,具备得天独厚的优势。
1.5.2.3 差分隐私
差分隐私最开始被开发用来促进在敏感数据上的安全分析,中心思想是,当敌手试图从数据库中查询个体信息时将其混淆,使得敌手无法从查询结果中辨别个体级别的敏感性。它提供了一种信息理论安全性保障,即函数的输出结果对数据集中的任何特定记录都不敏感。因此,差分隐私能被用于抵抗成员推理攻击。差分隐私在向数据引入噪声的同时,权衡了实用性和隐私性。现有的用于机器学习的差分隐私机制,很少能具有可接受的实用性隐私性权衡程度,提供较好隐私保护的设置会导致较多的精度损失。
主要有两种方法给数据加上噪声实现差分隐私:一种是根据函数的敏感性增加噪声,另一种是根据离散值的指数分布选择噪声。在联邦学习中,为了使各方能在各自的分散数据集上进行模型训练,可以使用本地差分隐私,每一个输入方将会扰乱自己的数据,然后将已混淆的数据发布至不受信任的服务器。
2 相关开源框架
2.1 FATE
参考: 2020 DataFunCON技术实践案例分享会:《 云原生联邦学习的开源框架》 《 FATE: 联邦学习技术落地与应用实践》
文档地址:
- 开源develop readthedocs
- github:https://github.com/FederatedAI
- tutorial
2.1.1 FATE介绍
2.1.2 横向联邦建模
2.1.3 纵向联邦建模
2.1.4 联邦深度学习
2.2 百度:PaddleFL
AI数据获取难?飞桨PaddleFL开源纵向联邦学习方案,进一步降低企业AI应用门槛…
官网地址 基于数据并行的联邦学习方案请参考 基于多方安全计算的联邦学习方案请参考 PaddleFL GitHub 飞桨开源框架项目地址
飞桨PaddleFL意在帮助联邦学习的探索者更方便地实现不同的策略及算法,在较短的时间内完成框架搭建、算法实现和业务调研等工作。本次PaddleFL 1.0版本主要开源了MPC安全共享计算方案,支持横向、纵向、迁移等多个联邦学习场景,进一步降低企业联邦学习的门槛,使更多数据获取难的企业可以通过联邦学习受益。
Paddle FL MPC (简称PFM)中的安全训练和推理任务是基于多方计算协议ABY3实现的。ABY3论文地址:https://dl.acm.org/doi/10.1145/3243734.3243760
在ABY3协议中,参与方可分为:数据拥有方(以下简称:输入方)、计算方和结果方,三者关系如下图所示:
- 输入方:为训练数据及模型的持有方,负责加密数据和模型,并将其发送到计算方。根据ABY3要求,数据输入方数据量≥2个。
- 计算方:模型训练的执行方,基于ABY3协议完成训练任务,计算方只能得到加密后的数据及模型,以保证数据隐私,根据ABY3要求,计算方的数量为3个。
- 结果方:计算结束后,结果方获取到计算结果并恢复出明文数据。
PFM的整个训练及推理过程主要由如下三个部分组成:数据准备、训练/推理和结果解析,三者关系如下图所示:
数据对齐:PFM允许输入方在不泄露数据的情况下,基于同样的User ID,找出多个输入方的样本集合,在此过程中保证数据加密。这个功能在纵向联邦学习中非常必要。为啥这么说呢?因为在纵向联邦学习中,不同输入方拥有不同的Feature Space,所以需要找到多个数据集中相同的用户。
例如:三个做商品推荐的公司做联邦学习,一个公司持有歌曲相关的数据;一个持有电影相关的数据;一个公司持有用户点击相关的数据。在进行联邦学习之前,三家公司需要找出相同用户的集合,并且保证相同位置(第n条)对应相同的用户。数据对齐后,输入方将数据和模型用Secret Sharing方式加密,并传递给计算方。因为每个计算方只拿到数据的一部分,因此任意一方都无法还原真实数据。
- 训练/推理: PFM 拥有与飞桨相同的运行模式。在训练前,用户需要定义MPC协议、训练模型以及训练策略。PFM中提供了可以操作加密数据的算子,在运行时算子的实例会被创建并被执行器依次运行。
- 结果解析:安全训练和推理工作完成后,模型(或预测结果)将由计算方以加密形式输出。结果方收集到加密的结果后,使用PFM中的工具对其进行解密,并将明文结果传递给用户。
2.3 阿里:FederatedScope
今日开源:阿里达摩院最新框架FederatedScope来了!让联邦学习从可用到好用
介绍网站:https://federatedscope.io/; 开源地址:https://github.com/alibaba/FederatedScope
达摩院团队对 FederatedScope 训练模块进行抽象,使其不依赖特定的深度学习后端,能兼容 PyTorch、Tensorflow 等不同设备运行环境,大幅降低了联邦学习在科研与实际应用中的开发难度和成本。
相比传统的联邦学习框架,FederatedScope 易用性尤为突出,以下几个例子可具体说明:
- (1)对于初次接触联邦学习的使用者来说,FederatedScope 提供了详尽的教程、文档和运行脚本,能够引导用户快速入门上手联邦学习。FederatedScope 也包含了常用的模型架构实现,对一些基准数据集也做了统一的预处理和封装,以帮助用户便捷地开展实验。
- (2)对于希望将经典联邦学习应用在不同下游任务的开发者,如使用不同的数据和模型架构,FederatedScope 允许通过注册的方式使用准备好的新数据集和模型架构,而不需要修改其他的细节。另外,FederatedScope 也支持根据任务类型定制不同的性能监控和评价指标。
- (3)对于希望深入研究和开发联邦学习算法的用户,需要足够的自由度在联邦学习中添加异质信息交换和多样的处理行为,在FederatedScope中只需定义消息的类型和相应的处理函数。相比现有的联邦学习框架,FederatedScope的优点在于不需要开发者将联邦学习的过程用顺序执行的视角来完整描述,而只需采用事件驱动的方式增加新的消息类型和消息处理行为,系统协助完成自动调参和高效异步训练,降低了所需的开发量以及复杂度。
2.4 腾讯:PowerFL
来自2021 DataFunSummit 《腾讯音乐:联邦学习RTA在全民K歌投放系统中的应用》
2.4.1 PowerFL介绍
PowerFL是TEG基于腾讯开源的智能学习平台Angel( https://github.com/Angel-ML/angel )构建,内部开源。
2.4.2 广告投放场景
2.5 TensorFlow Federated (TFF)
2.6 PySyft
2.7 coMind
2.8 XAIN
3 使用案例
3.1 阿里:数据安全流通的解决方案
来自《数据安全流通的解决方案V1.0》
案例,应用在高购买意向会员:
3.2 联邦学习怎样应用在推荐系统中?
联邦学习怎样应用在推荐系统中?
推荐模型的联邦化具有一定的共性,一个联邦推荐模型的训练框架通常适用于具有相同训练方式的其他模型。 对于模型的联邦化,可以划分为基于协同过滤的推荐算法的联邦化、基于深度学习的推荐算法的联邦化和基于元学习的推荐算法的联邦化三个类别。
在此分类下,一些经典的和前沿的推荐模型的联邦化例子及其特点如图 3 所示。
基于不同的隐私保护技术,联邦推荐算法可以分为基于同态加密的联邦推荐算法、基于差分隐私的联邦推荐算法、基于本地差分隐私的联邦推荐算法和基于安全多方计算的联邦推荐算法。图 4 总结了一些隐私保护技术在联邦推荐算法设计中的应用。
推荐系统的联邦化
- 传统的推荐模型的联邦化方面的相关工作仍存在其他的隐私问题
- 在联邦推荐模型中,通过隐私保护技术来保护隐私方面会带来通信成本增加、计算复杂度增大和推荐性能下降等新的问题
- 联邦模型的训练方式与非联邦版本等价的同时,算法的训练效率较低
- 在对基于深度学习的推荐算法进行联邦化方面,客户端的存储资源和计算能力通常无法与庞大的神经网络相匹配,并且客户端自身的数据量有限,难以训练出较好的深度学习模型。边缘计算和知识蒸馏是两个解决客户端资源受限的研究思路
联邦推荐系统的优化
- 模型压缩、通信策略的改进、激励机制和客户端采样等优化方法如何在联邦推荐模型中应用
- 如何为特定的推荐模型设计更有效的优化算法
3.3 京东九数:数据安全共享&模型共建解决方案
来自京东九数的《联邦学习介绍》
3.4 腾讯云:神盾联邦学习
2020 DataFunCON技术实践案例分享会:《用神盾保护客户隐私非对称联邦解决经典联邦学习的问题》
技术背景-联邦IV
非对称联邦逻辑回归
非对称联邦梯度提升树
操作界面:
3.5 度小满:浅谈联邦学习场景中的数据去标识化
来自2021 DataFunSummit
xID去标识化技术
如何通过xID技术保护样本交集信息
3.6 腾讯音乐:联邦学习RTA在全民K歌投放系统中的应用
来自2021 DataFunSummit