数据是人工智能运转的“石油”,AI发展到现在的阶段,能否获得量大质高的数据已成为制约其进一步发展的重要因素。在这样背景之下,数据共享、融合的需求越来越强烈,但是在数据共享的过程中,遇到以下问题:
另一方面来说,传统的机器学习方法,需要把训练数据集中于某一台机器或是单个数据中心里,为了满足逐渐增加的数据量级,还要不断加机器、不断建设基础设施。而在数据集中的过程中有出现数据泄露的风险。多说一点,目前的AI市场模式是科技巨头在主导,他们提供基于云的AI解决方案以及API,这种模式使用户无法控制AI产品的使用以及个人隐私数据,而通过数据集中公司却可以做到垄断数据。一定要注意这一点,因为未来世界的竞争是基于数据的竞争,而数据的垄断必将带来市场的垄断。而这种集中模式很可能在未来限制初创企业乃至大型企业的创新。
以上提到的问题导致传统的数据共享技术难以满足需求。新的技术应运而生——Federated Learning,在融合安全多方计算以及其他加密技术的基础之上发展越来越成熟。该技术实际上是一种加密的分布式机器学习技术,各个参与方可在不批露底层数据和底层数据的加密(混淆)形态的前提下共建模型。
Federated Learning适合以下任务:
而该技术有很多不同名称,比如UC Berkeley使用的是共享学习(Shared Learning),而谷歌和腾讯系公司微众银行用的Federated Learning,但在中文翻译两者不同,前者用的是联盟学习,后者用的是联邦学习。而Federated Learning是世界范围使用较为普遍的该技术的英文名称。
该技术的发展广受关注,2017年10月16日,UC Berkeley电气工程与计算机科学系(EECS)14位专家联合发布了一份名为《A Berkeley View of Systems Challenges for AI》的报告。该报告明确提出,下一代人工智能系统的问题需要通过体系结构、软件和算法的协同创新来实现,而伯克利也将在从所面临的四大趋势和九大挑战,来解决这些问题。而在保密数据上共享学习(Shared learning on confidential data)便是九大研究方向之一。
The key challenge of shared learning is how to learn a model on data belonging to different (possible competitive) organizations without leaking relevant information about this data during the training process. One possible solution would be to pool all the data in a hardware enclave and then learn the model. However, this solution is not always feasible as hardware enclaves are not yet deployed widely, and, in some cases, the data cannot be moved due to regulatory constraints or its large volume.
最近CMU 博客上有一个白皮书《Federated Learning: Challenges, Methods, and Future Directions》对于该技术做了系统介绍,推荐一看。
引路人———谷歌
2017年4月6日,谷歌科学家Brendan McMahan和Daniel Ramage在GoogleAI上发布名为《 Federated Learning: Collaborative Machine Learning without Centralized Training Data》的博文,介绍了Federated Learning也是一种机器学习,能够让用户通过移动设备交互来训练模型。
Google近期还特别推出中文漫画对于Federated Learning进行介绍,很有趣,推荐大家看一下
其主要工作原理如下:
根据谷歌的官方说明,我们可以对于Federated Learning的优势给出如下总结:
此外Federated Learning的易用性也不断提高。除了Google的tensorFlow,世界上另外一个最流行的深度学习框架Fackbook的PyTorch也在近期开始支持采用联盟学习方案来实现隐私保护。而Facebook的AI研究小组同步推出了Secure and Private AI,这是一个免费为期两个月的Udacity课程,其中专门提到在PyTorch中如何使用联盟学习。国内的微众银行推出Federated AI Technology Enabler(FATE)的开源项目,旨在提供一个安全的计算框架来支持Federated AI生态系统。
使用PyTorch 的 PySyft库,我们可以通过改变10行传统的CNN Pytorch模型来实现联盟学习模型。
在这里,我们创建了两个客户端,名为Alice和Bob,
import syft as sy # <-- import the Pysyft library hook = sy.TorchHook(torch) # <-- hook PyTorch ie add extra functionalities to support Federated Learning bob = sy.VirtualWorker(hook, id="bob") # <-- define remote worker bob alice = sy.VirtualWorker(hook, id="alice") # <-- and alice
我们在两个客户端上分发数据集
federated_train_loader = sy.FederatedDataLoader( # <-- this is now a FederatedDataLoader datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ])) .federate((bob, alice)), #we distribute the dataset across all the workers, it's now a FederatedDataset batch_size=args.batch_size, shuffle=True)
2019年2月,谷歌发布论文《Towards Federated Learning at Scale:System Design》,描述了谷歌基于TensorFlow构建了全球首个产品级可扩展的大规模移动端Federated learning系统。并介绍该系统的设计理念以及面临的挑战,并给出了自己的解决方案。 该进展以至于让Deepmind研究科学家Andrew Trasktwitter惊呼:“这是2019年「年度最激动人心的论文之一」。谷歌公布了他们如何在数千万台手机上手机上实现可扩展的联盟学习,数据安全隐私终于成真,而谷歌是这方面的领跑者!”目前该系统已在数千万台手机上运行。研究人员表示,该系统有望在几十亿部手机上运行。
谷歌目前看重以下的使用场景:
设备上项目排名 (On-device item ranking)
移动应用程序中机器学习中的常见用途是从设备上的库存中选择和排序项目。例如,app可以公开用于信息检索或在app导航的搜索设置。在设备上对搜索结果进行排序,可以免去对服务器的成本高昂的呼叫(原因可能是延迟、带宽限制或高功耗),而且关于搜索查询和用户选择的任何潜在的隐私信息仍然保留在设备上。每个用户与排名特征的交互可以作为标记数据点,可以在完整排序的项目列表中观察用户与其优先选项的交互信息。
移动设备键盘输入内容建议 (Content suggestions for on-device keyboards)
可以通过为用户输入的相关内容提供建议(比如与输入文本相关的搜索查询)来提升对用户的价值。联盟学习可用于训练机器学习模型来触发建议功能,并对可在当前上下文中建议的项目进行排名。谷歌的Gboard移动键盘团队就在使用这个的联盟学习系统,并采用了这种方法。
下一词预测 (Next word prediction)
Gboard还使用联盟学习学习平台训练递归神经网络(RNN)用于下一词预测。该模型具有约140万个参数,在经过5天的训练后,处理了来自150万用户的6亿个句子后,在3000轮联合学习后实现收敛(每轮大约需要2-3分钟)。该模型将基线n-gram模型最高召回率从13.0%提高到16.4%,并且其性能与经过1.2亿步服务器训练的RNN的性能相当。在实时对比实验中,联盟学习模型的性能优于n-gram和服务器训练的RNN模型。
在2019年5月8日的Google I/O开发者大会中,谷歌CEO Sundar Pichai强调了Federated Learning的重要性:“ It allows Google’s AI products to work better for you and work better for everyone without collecting your data from all your devices.”
关于Google联盟学习更多内容可以看一下以下链接:
Google产品中的联盟学习
Gboard的联盟学习
Google联盟学习内容站点
如果说Google的联盟学习的应用侧重在C端,那么跨机构跨组织(B端)的数据融合场景,也有很多机构正在探索:
2018年,英特尔开始与宾夕法尼亚大学的生物医学图像计算与分析中心(CBICA)合作,展示了联盟学习在现实世界医学成像中的第一个概念验证应用。并在Springer上发表了他们的研究结果:《Multi-institutional Deep Learning Modeling Without Sharing Patient Data: A Feasibility Study on Brain Tumor Segmentation》
如上图,使用Intel硬件的联盟学习架构。加密模型被发送到各个机构(数据所有者AC),这些机构在硬件中的安全区域内解密,然后训练本地数据。仅与中央模型聚合器共享模型更新。这为模型和数据提供了保护。原始数据永远不会离开机构,这不仅保护了隐私,而且还降低大量数据集中传输的成本。
目前英特尔正在与宾夕法尼亚大学和其他19家医学研究机构合作开发安全的联盟学习平台,这将使合作者能够在不交换患者数据的情况下训练医疗共享机器学习模型。在这个合作中,因特尔将提供英特尔®至强®可扩展处理器和英特尔®软件保护扩展(英特尔®SGX)的功能为该项目提供支持。
蚂蚁金服在《共享学习:蚂蚁金服数据孤岛解决方案》一文中,对于其该项技术称之为共享机器学习 (Shared Machine Learning),并做了系统的介绍。在文中还比较了共享学习与联邦学习的差异:
经过我们的了解,其实联邦学习目前涉及两个不同的概念:
• 第一种联邦学习,旨在解决云 + 端的训练过程中,端上的隐私不要被暴露的问题,是一个To C + 数据水平切分的场景。除了保护端上的数据隐私外,其重点还在于如何解决训练过程中,端自身可能掉线等问题。
• 第二种联邦学习则主要用于解决To B场景中各方隐私不泄露的问题,即可以应用于数据的水平切分场景,也可以应用于数据垂直切分的场景。
它们侧重于不同的数据共享场景,采用不同的技术,相比之下,蚂蚁金服的共享学习兼容多种安全计算技术,并且支持多种机器学习算法和使用场景。
除此之外,共享学习和联邦学习的差异在于:
1. 联邦学习只解决数据不出域的情况,这就限制了其可以使用的技术(只有严格的MPC算法才符合这个要求),而共享学习目前基于TEE的集中式共享学习技术,是联邦学习没有涉及的;
2. 联邦学习讲究的是参与各方的“身份和地位”的相同,所以叫联邦;而共享学习则不强调各共享方的地位对等,在很多场景下,不同的参与方是拥有不同的角色的。
蚂蚁金服在共享学习领域有较深的积累,有专利50余项,并且其在IEEE正式立项《共享学习系统技术框架及要求》(Standard for Technical Framework and Requirements of Shared Machine Learning)国际标准。
微众银行聚焦在金融领域的机构间的数据共享,其在联邦学习领域的进展公开资料较多,不做专门介绍,可以通过以下资源详细了解:
论文
会议
标准
白皮书及其他
在数据隐私保护的研究应用方面,基于多方安全计算技术,腾讯开展AI创新实践,推出“腾讯云数盾”。数盾以数据安全治理为核心,构建了包含外部攻击防护、数据交换保护、内部防泄露等全流程的数据安全保护方案,用于帮助企业数据安全建设。针对外部攻击,数盾通过全量会话审计,能够快速完成问题事故追责定责,对可能产生的风险和威胁进行实时警告,提供全景视图显示数据流转动向,在数据交换环节,数盾对敏感数据一键智能脱敏。通过使用匿名化、差分隐私、安全多方计算架构等方式,在数据使用安全的基础上,平衡隐私保护与数据挖掘价值,符合金融、政府、运营商等机构对于数据使用和共享环境中的合规需求。
Mesa TEE是由百度公司开发的可信安全计算服务框架,为“函数即服务”(Function-as-a-Service,缩写FaaS)云计算模式提供革命性安全方案。FaaS具有灵活、经济等优点外,通应用Intel SGX技术,云上数据代码的完整性和保密性也得到了芯片级的安全保障,并且允许用户远程对这些安全保护进行验证。
MesaTEE还应用了百度安全实验室的HMS内存安全技术,兼具内存安全带来的不可绕过性,这一世界首创的独特优势让攻击者难以突破,提供了无可比拟的安全保障。
以下是Mesa TEE平台具有的特点:
百度“点石”数据安全融合及应用服务平台
百度基于数据本地和云端隔离技术,采用安全数据融合以及多方联邦学习技术,推出“点石”数据安全融合及应用服务平台。提供安全数据集合、灵活建模、快速服务部署等服务,基于硬件隔离域、多方安全计算的技术能力,支持多场景的数据安全计算。“点石”利用安全方案解决数据打通难与应用成本高等问题。提供减少企业损失的风险识别,帮助企业有效识别在信用卡、贷款、在线支付等场景中的违约、欺诈等潜在风险,帮助企业对销售线索进行甄别与拓展,优化企业营销策略。“点石”的联邦学习应用场景主要是风险识别和营销分析。该平台与清华大学达成合作,利用联邦学习对接政府客户,帮助智慧城市建设。在风控模型建立方面,与狮桥公司合作,协同客户本地训练,结合大数据联合建模平台进行数据融合与分析建模。此外还有的客户案例包括:天闻、卓思、易车等。
蜂巢平台是由平安科技开发的一个联邦学习平台。除了一般的联邦学习平台所具有的功能之外,蜂巢平台希望能够实现的其余功能包括:提供基于联邦学习的医疗影像数据平台、扩接融合用户特征与个性推荐系统和动态车险定价模型系统等。此外,相较于目前已有的联邦学习平台,蜂巢平台能够支持更多的深度学习框架。
以下是蜂巢平台具有的特点:
在联盟学习领域出现了一些新的创业公司,如S20.ai,Owkin和Snips,围绕联盟学习和其他安全计算技术创建了新的工具和企业解决方案。
Snips是一家法国初创公司,其提供的服务主要是为用户建立自定义语音助手。Snips并不使用亚马逊的Alexa语音服务或谷歌助手SDK,而是帮助用户建立自己的语音助手,并嵌入到设备上。此外,由于这个语音助手是离线工作,所以不需要向云端发送任何东西。Snips https://www.zhihu.com/video/1123740040299425792
其中一个挑战是通信带宽。手机上的联盟学习依赖于无线通信来协作学习机器学习模型。虽然手机的计算资源变得越来越强大,但无线通信的带宽并没有增加太多。因此,瓶颈从计算转移到通信。结果,有限的通信带宽可能导致长的通信延迟,因此可能减慢联盟学习过程的收敛时间。
另一个挑战是参与联盟学习过程的终端设备的可靠性。联盟学习是一个迭代过程,它依赖于参与的终端设备在迭代中不断进行通信,直到学习过程收敛。但是,在实际部署中,由于各种实际原因,并非所有终端设备都可以从头到尾完全参与完整的迭代过程。对于在联盟学习过程中退出的终端设备,在学习过程中无法充分利用其数据。因此,联盟学习的学习质量可能会受到严重影响。
最后,数据集中训练模式、为大公司创造孤岛以获得竞争优势的思维方式将成为推动联盟学习采用的一项重大挑战。在有效的数据保护政策以及围绕权力下放数据的适当激励和商业模式下,可以解决这些问题,并开发联盟学习AI生态系统。
最近在看Tim O'Reilly的《未来地图:技术、商业和我们的选择》(WTF? What's the Future and Why It's Up to Us)。其中提到了克莱顿·克里斯坦森的高利润守恒定律:
当模块化和平价化使得价值链上某一环节的高利润消失时候,与之相邻的环节往往会出现高利润的专有产品。
联盟学习硬件的平价化,将为联盟学习的应用带来无限可能的机会。支持联盟学习的手机底层芯片在2018年中后期发生一些变化,从三星S9或Apple X系列开始,在未来3 - 5年内,随着10亿多智能手机配备了AI芯片并拥有强大的计算能力手机上市,许多ML型号将能够在这些移动设备上本地运行。与中央计算设施相比,通过“边缘”智能手机分发分析和计算将大大缩短开发数据产品的时间,例如超个性化推荐引擎,电子商务定价引擎等。
而5G时代的到来,将极大缓解联盟学习的通信带宽的问题,同时联盟学习将可以在物联网中将得到更为广泛的应用。
联想&byteLAKE
总部位于波兰的人工智能咨询公司ByteLake最近发布了与联想合作利用联盟学习进行预测性维护的制造业概念验证。该技术不仅可以使物联网设备相互学习,可以利用在物联网/边缘设备上创建的所有本地AI模型。使用联盟学习可以来预测联想工厂通过逐渐堵塞的过滤器流过的气压变化,从而达到对于进行预测性维修。
联想&byteLAKE 白皮书:www.bytelake.com/en/federated-learning/
华为:车联网通信优化分配解决方案
华为2018年发表了论文《Distributed Federated Learning for Ultra-Reliable Low-Latency Vehicular Communications》
这篇论文中,在通信分配优化方面,华为数字算法实验室利用联邦学习原理解决车联网中可靠低延迟通信的联合功率和资源分配问题,在概率排队延迟方面最小化车辆用户的网络功耗。利用联邦学习技术,华为数字算法实验室提出了一种分布式的学习机制,车辆用户在道路单位的帮助下能够在本地学习网络范围队列,来估计尾部分布,而不实时共享队列长度。这种方法能高精度判断学习网络中的车联网队列分布,并有效减少车载队列长度,优化资源配置。
5G以及终端设备AI芯片组的广泛应用,将极大促进联盟学习的发展。从另一个维度来说,联盟学习其实为人工智能开辟了一个全新的计算范式。人工智能正在从云端和数据中心转向终端设备,联盟学可有效利用终端设备内的分散计算资源来训练机器学习模型。考虑到全球有数十亿的移动设备,从这些移动设备累积的计算资源远远超出了世界上最大的数据中心。从这个意义上说,联邦学习有可能会改变主导地位的计算范式:云计算。
我将技术本身看作一个生命,我现在很好奇一个技术是如何出现,如何发展,然后又如何死亡,这其中又有怎么样的规律。联盟学习是我最近在关注的领域,我发现国内的关于这块技术内容太单一,所以整理一下这些资料,供大家了解。如果你对于我正在探索的问题很感兴趣,欢迎和我交流。
最后,码字不易,如果觉得内容还可以,希望给我点个赞,谢谢!
The New Dawn of AI: Federated Learning
AI Weekly: Google’s federated learning gets its day in the sun
Federated Learning and Privacy
Google engineers work towards large scale federated learning
A Beginners Guide to Federated Learning
Federated Learning: The Future of Distributed Machine Learning
How federated learning could shape the future of AI in a privacy-obsessed world
The Best Way to Avoid Data Leaks and Privacy Scandals: Don't Own Consumer Data