“联邦学习(Federated Learning)”作为一种加密的分布式机器学习范式,可以使得各方在不披露原始数据的情况下达到共建模型的目的,即在不违反数据隐私保护法规的前提下,连接数据孤岛,建立性能卓越的共有模型。
假如你养了一只小羊,想给它吃各种不同营养成分的草料,你需要去各地收集草料再运送回来喂它。但是有一天,各地不再允许将草料向外运输了,你该怎么办?
在此情况下,联邦学习提供了新的思路:让羊群在各地移动,而草不出本地。
也就是机器学习模型以分布式的方式构建,而不需要数据在本地区域之外移动,这种“数据不动,模型动”的优势在于,对于每只羊的所有者而言,并不知道羊吃到肚子里的草到底是什么样,也就实现了在隐私保护和数据安全的前提下,机器学习模型不断完善。
随着算法的不断创新,训练数据的不断收集、硬件算力的不断增强,机器学习(Machine Learning, ML)技术,特别是深度学习(Deep Learning, DL)在人工智能(Artifical Intellingence, AI)应用领域取得了巨大的成功。例如,在图像识别领域,Google在 2018年提出的视觉算法在识别率上早已超过人类;当前深度学习所取得的成功,无一不是建立在大量数据基础之上的,如下图1-1,展示了互联网数据中心(IDC)对当前互联网每年产生的数据总量的统计预测,预计2021年全球将产生超过50ZB的数据,到2025年更是达到了175ZB。
图1-1 互联网数据中心对互联网数据总量的预测
在过去很长的一段时间里,数据的价值主要体现是作为一种燃料,为人工智能模型提供大量的样本训练数据,帮助提升模型的效果。但随着互联网的快速发展,数据的规模变得越来庞大、复杂,数据的价值已经不再局限于训练数据,而是以资产的形式服务于企业,并给企业带来经济效益。
正是因为数据具有资产的属性,政府、企业乃至个人,都越来越重视数据。但由于相互之间的竞争,各方的数据很难进行共享,导致数据呈现出割裂的状态,影响了极度依赖数据的人工智能的发展。
此外,人们对于用户隐私和数据安全的关注度也在不断提高。用户开始更加关注个人隐私信息的使用是否经过本人允许,许多互联网企业由于泄露用户数据而被重罚。在法律法规层面,立法机构和监管机构正在考虑出台新的法律来规范数据的管理和使用。
由于以上各方面的原因,使得我们过去使用的大数据正面临着严重的数据割裂问题,并呈现出“数据孤岛”的现状,导致在进行人工智能模型训练时无法有效利用各参与方的数据,阻碍了算法模型的效果提升。
为此,人们开始寻求一种方法,它不必将所有数据集中到一个中心存储点就能够训练机器学习模型。一种可行的方法是由每一个拥有数据源的机构训练一个小模型,之后各机构的模型彼此之间进行交互,最终通过模型聚合得到一个全局模型。为了确保用户隐私和数据安全,各机构间交换模型信息的过程将会被精心设计,使得没有机构能够猜测其他任何机构的隐私数据内容。同时,在构建全局模型时,其效果与数据源被整合在一起进行集中式训练的效果几乎一致,这便是联邦机器学习(Federated Machine Learning, FML)提出的动机和核心思想。
联邦学习是利用分散在各参与方的数据集,通过隐私保护技术融合多方数据信息,协同构建全局模型的一种分布式训练方式。在模型训练过程中,模型的相关信息(如模型参数、模型结构、参数梯度等)能够在各参与方之间交换(交换方式可以是明文、数据加密、添加噪声等),但本地训练数据不会离开本地。这一交换不会暴露本地的用户数据,降低了数据泄露的风险。
联邦学习具有以下特点:
1. 两个或两个以上参与方,协作构建共享的机器学习模型。
2. 模型训练过程中,每个参与方数据都不会离开本地。
3. 模型相关信息以加密方式传输,且保证任何参与方都不能推测其他方的原始数据。
4. 联邦学习模型的性能要充分逼近理想模型(所有数据集中一起训练获得的模型)的性能。
根据训练数据在不同参与方之间的数据特征空间和样本ID空间的分布情况,联邦学习可被分为横向联邦学习(Horizontal Federated Learning,HFL)、纵向联邦学习(Federated Transfer Learning,FTL) 和迁移联邦学习(Vertical Federated Learning,VFL)。
横向联邦学习也被称为按样本划分的联邦学习(Sample-Partitioned Federated Learning或Example-Partitioned Federated Learning),可以应用于联邦学习的各个参与方的数据集有相同的特征空间和不同的样本空间的场景,类似于在表格视图中对数据进行水平划分的情况。
横向联邦学习适用于联邦学习的参与方的数据有重叠的数据特征,即数据特征在参与方之间是对齐的,但是参与方拥有的数据样本是不同的。横向联邦学习中数据特征重叠维度较多,根据重合维度进行对齐,取出参与方数据中特征相同而用户不完全相同的部分进行联合训练。比如有两家不同地区银行,他们的用户群体分别来自各自所在的地区,相互的交集很小。但是,他们的业务很相似,因此,记录的用户特征是相同的。此时,就可以使用横向联邦学习来构建联合模型。Google在2017年提出了一个针对安卓手机模型更新的数据联合建模方案:是在单个用户使用安卓手机时,不断在本地更新模型参数并将参数上传至安卓云上,从而使特征维度相同的数据拥有方建立联合模型的一种联邦学习方案。
图2-1 横向联邦学习(按样本划分的联邦学习)
纵向联邦学习适用于联邦学习参与方的训练数据有重叠的数据样本,即参与方之间的数据样本是对齐的,但是在数据特征上有所不同。纵向联邦学习用户重合较多,根据用户ID进行匹配,取出参与方数据中用户相同而特征不完全相同的部分进行联合训练。
比如有两个不同机构,一家是某地银行,另一家是同一个地方的电商。他们的用户群里很有可能包含该地的大部分居民,因此用户的交集很大。但是,由于银行记录的都是用户的收支行为与信用评级,而电商则保有用户的游览与购买历史,因此他们的用户特征交集较小。纵向联邦学习就是将这些不同特征在加密的状态下加以聚合,以增强模型能力的联邦学习。目前,逻辑回归模型,树型结构模型和神经网络模型等众多机器学习模型已经逐渐被证实能够建立在这个联邦体系上。
图2-2 纵向联邦学习(按特征划分的联邦学习)
联邦迁移学习适用于参与方的数据样本和数据特征重叠都很少的情况。目前大部分的研究是基于横向联邦学习和纵向联邦学习的,迁移联邦学习领域的研究暂时还不多。
图2-3 联邦迁移学习
比如有两个不同机构,一家是位于中国的银行,另一家是位于美国的电商。由于受到地域限制,这两家机构的用户群交集很小。同时,由于机构类型的不同,二者的数据特征也只有小部分重合。在这种情况下,要想进行有效的联邦学习,就必须引入迁移学习,来解决单边数据规模小和标签样本少的问题,从而提升模型的效果。
目前业界中主要的联邦学习框架有FATE,TensorFlow Federated,PaddleFL,Pysyft等。
2019年2月,微众银行开源FATE开源项目,覆盖横向联邦学习、纵向联邦学习、联邦迁移学习,得到了社区内广泛的关注与应用。同时,FATE提供20多个联邦学习算法组件,涵盖LR、GBDT、DNN等主流算法,覆盖常规商业应用场景建模需求。尤其值得注意的是,FATE提供了一站式联邦模型服务解决方案,涵盖联邦特征工程,联邦机器学习模型训练,联邦模型评估,联邦在线推理,相比其他开源框架,其在工业应用上有显著的优势。
OpenMinded开源的Pysyft框架,较好地支持了横向联邦学习。该框架同时支持TensorFlow、Keras、Pytorch,为使用人员快速上手提供了较多的选择。Pysyft提供了安全加密算子,数值运算算子及联邦学习算法,用户也可以高效搭建自己的联邦学习算法。相比较FATE,OpenMinded尚未提供高效的部署方案及serving端解决方案,相比工业应用,更适合作为高效的学术研究、原型开发的工具。
谷歌开源的TensorFlow Federated框架,较好地支持了横向联邦学习。其中,可以通过Federated Learning API,与TensorFlow、Keras进行交互,完成分类、回归等任务。用户也可以通过其提供的Federated Core API,通过在强类型函数编程环境中将TensorFlow与分布式通信运算符相结合,简洁地表达新的联合算法。目前TensorFlow Federated在安全加密算子上缺少开放实现,同时缺少对线上生产的完善支撑。
2019年11月,百度宣布开源其联邦学习框架PaddleFL。该框架中包含了DiffieHellman等安全算子及LR等机器学习算法。由于其开源时间较短,算子丰富程度逊于上述三个框架。该框架的优势在于通过与百度机器学习框架PaddlePaddle的交互,吸引相关生态开发者加入开发。
开源框架 |
FATE |
TensorFlow Federated |
PaddleFL |
Pysyft |
受众定位 |
工业产品 学术研究 |
学术研究 |
学术研究 |
学术研究 |
牵头公司 /机构 |
微众银行 |
|
百度 |
OpenMined |
联邦学习类型 |
横向联邦学习 纵向联邦学习 联邦迁移学习 |
横向联邦学习 |
横向联邦学习 纵向联邦学习 |
横向联邦学习 |
联邦特征 工程算法 |
特征分箱 特征选择 特征相关性分析 |
不支持 |
不支持 |
不支持 |
机器学习算法 |
LR、GBDT、DNN等 |
LR、DNN等 |
LR、DNN等 |
LR、DNN等 |
安全协议 |
同态加密 SecretShare RSA DiffieHellman |
DP |
DP |
同态加密 SecretShare |
联邦在线推理 |
支持 |
不支持 |
不支持 |
不支持 |
Kubernetes |
支持 |
不支持 |
不支持 |
不支持 |
推荐系统到底是什么?简单地说,它是一种信息过滤工具,可以利用整个社区的用户画像和习惯给特定用户呈现其可能感兴趣的最相关内容。一个有效的推荐系统具备以下三个主要功能:
克服信息过载问题。由于互联网信息的爆炸性增长,推荐系统可以帮助用户过滤掉低价值的信息,从而节省用户的时间。
提供定制化推荐。帮助用户更好地根据自己的品味找到真正感兴趣的商品。
合理利用资源。平衡受欢迎程度和实用性,让人们对这些不那么受欢迎的商品给予更多关注。
推荐系统在各种信息检索系统中都发挥着至关重要的作用,可以促进业务的发展和决策制定。然而,在推荐系统中,仍然有许多尚未解决的问题,冷启动和用户数据隐私是其中的两个问题。用联邦学习同时解决这两个问题是可行的。假设我们正通过联邦学习,用多方数据来训练一个全局模型,对于冷启动问题,我们可以从其他参与方借鉴相关信息和知识,以帮助对新商品进行评分或对新用户进行预测;对于数据隐私问题,用户的私有数据会被保存在客户端设备中,只有更新的模型才会通过安全协议上传。此外,联邦学习将模型的学习过程分布到各个客户端上,大大降低了中央服务器的运算压力。
假设一个电子商务公司想要训练一个协同过滤(Collaborative Filtering, CF)模型,让用户可以根据个人喜好和商品流行程度来找到想要的商品。由于数据的隐私安全问题等原因,无法直接收集到用户的原始数据,因此可以利用联邦学习训练协同过滤模型。通常,一个协同过滤模型可以表示为多个用户因子向量(每个向量表示一个用户)组成的用户因子矩阵(user factor matrix)和多个商品因子向量(每个向量表示一件商品)组成的商品因子矩阵(item factor matrix)的组合。联邦协同过滤由所有用户共同地学习这两个矩阵得到,如图4-1所示,包含以下五个步骤:
图4-1 联邦协同过滤示例
STEP1:每一个客户(例如,用户的本地设备)从服务器下载全局商品因子矩阵。该矩阵可以是随机初始化的模型或预训练模型。
STEP2:每一个客户聚合显式数据和隐私数据。显式数据包括用户的反馈,例如对商品的评分和评论。隐私数据由用户订单历史、购物车清单、浏览历史、点击历史、搜索日志等信息组成。
STEP3:每一个客户使用本地数据和全局商品因子矩阵对本地用户因子向量进行更新。
STEP4:每一个客户使用本地数据和本地用户因子向量,计算全局商品因子矩阵,然后进行本地更新,并通过一个安全协议将更新上传至服务器。
STEP5:服务器通过联邦加权算法(如联邦平均算法)聚合从各个客户端上传的本地模型,并使用聚合的结果对全局商品因子矩阵进行更新。之后,服务器将全局商品因子矩阵发送给各个客户。
上述过程是联邦协同过滤的一般情况。我们可以利用更强大的模型来代替协同过滤模型,如深度因子分解机(Factorziation Machine,FM)模型以进一步提高性能。除了定制化的推荐任务,联邦推荐系统还可以利用来自不同参与方的不同特征来提高推荐的精确度。
当今互联网的推荐产品多种多样,有以内容为核心的音乐推荐、短视频推荐等,也有传统的新闻推荐、书籍推荐等。虽然形态各异,但他们的推荐流程一般都是先收集用户的行为数据,统一上传到服务端,然后利用常见的推荐算法进行集中训练,最后将训练的模型部署到线上。
显然,这样的模式会在个人数据传输过程中以及在服务器存储环节中出现隐私泄露以及安全问题。因此基于联邦学习的推荐算法登上了历史舞台。
假设一个场景,公司A以书籍为内容进行推荐,公司B以电影为内容进行推荐,根据协同过滤思想,具有相同观影爱好的用户会有相同的阅读爱好,如果能够在不泄露用户隐私的前提下,联合多方数据进行训练,将会明显提升推荐效果。公司A和B的用户群体高度重合,且分别有用户对物品的评分矩阵,但产品不同,由于数据隐私保护等原因,我们无法直接共享不同公司之间的数据,因此适用于纵向联邦学习场景。
图4-2 跨公司联邦推荐
多机构之间的推荐系统目标函数为:
由于两家公司的用户群体相同,也就是说他们共享用户的隐向量P,为了求解该目标函数,我们先引入一个可信的第三方服务端来维护共享的用户隐特征向量信息,即矩阵p;
步骤一:由可信第三方服务端初始用户隐向量矩阵p,并使用公钥对其进行加密[[p]]。同时,各家参与公司分别初始化自己的物品隐向量矩阵q。
步骤二:服务端将加密的用户隐向量矩阵[[p]]分别发送给所有参与联合建模的公司。
步骤三:各参与方利用私钥解密用户隐向量矩阵,我们以公司A为例,对目标函数求取梯度之后,先利用梯度下降,更新自己的本地物品隐向量
其中L表示目标函数,其余各客户参与方本地物品隐向量更新,可以参考以上步骤。
同时对目标函数求导,计算用户隐向量矩阵p的梯度
步骤五:重复步骤二~四,直到算法收敛。
以上步骤,可以通过下图进行可视化查看。
图4-3 纵向矩阵分解算法
联邦学习诞生于人们对数据碎片化、数据孤岛、用户隐私泄露以及机器学习面临的数据短缺问题的日益关注,逐渐意识到大公司侵犯用户隐私的严重影响,政府和监管机构正在收紧监管共享私人数据的法律。通过联邦学习,数据不需要离开参与方,因此可以更好地保护用户隐私和数据安全。
随着探索更多的联邦学习应用场景,该领域变得越来越具有包容性。它涵盖了分布式机器学习、统计学、信息安全、加密算法、模型压缩、博弈论和经济学原理,以及激励机制设计等方面的研究和实践。
联邦学习生态系统在将来会进一步扩展。将会出现更多联邦学习开源平台软件,例如FATE和PySyft。从业人员将习惯于建立具有社会期望的所有必要方面的解决方案,联邦学习将成为人工智能造福社会的一个典范。