写点什么

联邦学习针对推荐场景化的技术原理解析

  • 2019-12-19
  • 本文字数:2871 字

    阅读完需:约 9 分钟

联邦学习针对推荐场景化的技术原理解析

2019 年 12 月 8 日至 12 月 14 日,微众银行首席人工智能官杨强教授受邀参加于加拿大温哥华举办的人工智能和机器学习领域的国际顶级会议:神经信息处理系统大会(Conference and Workshop on Neural Information Processing Systems,简称 NeurIPS)。在微众银行联合谷歌、卡内基梅隆大学举办的联邦学习国际研讨会上,杨强教授以《Federated Recommendation》为主题,分享了微众银行首创的联邦推荐技术的最新研究成果和应用落地。



图:微众银行首席人工智能官杨强教授发表演讲


推荐系统应用广泛,已经渗透到人们生活各个方面,例如新闻推荐、视频推荐、商品推荐等。为了实现精准的推荐效果,推荐系统会收集海量用户和所推荐内容的数据,一般而言,收集的数据越多,对用户和推荐内容的了解就越全面和深入,推荐效果越精准。在现实场景中,随着用户数据安全和隐私保护相关政策相继出台和日益完善,这些数据通常为保护用户数据隐私而以“数据孤岛”的形式分散在不同的机构。因此在“数据孤岛”与“隐私保护”的现实问题中,在合理合法的前提下使用数据持续优化效果提供优质服务,是当前推荐系统所面的巨大挑战和首要任务。

FATE:首个支持联邦学习架构体系的工业级联邦学习开源框架

微众银行提出的联邦学习解决方案能够让多个机构同时协作,通过交换加密的模型参数进行综合训练持续优化模型,以合理合法的方式跨越数据鸿沟,解决“数据孤岛”的问题。微众银行开发的工业级的联邦学习开源框架–FATE(Federated AI Technology Enabler,https://www.fedai.org),作为联邦学习全球首个工业级开源框架,支持联邦学习架构体系,为机器学习、深度学习、迁移学习提供了高性能联邦学习机制,FATE 本身还支持多种多方安全计算协议,如同态加密、秘密共享、哈希散列等,具有友好的跨域交互信息管理方案。

联邦推荐

推荐系统中算法的目标是挖掘用户和内容、商品之间的联系,根据问题的特点,微众银行将联邦推荐算法总结成三类,如下图所示,包括横向联邦推荐算法(也可称为基于商品的联邦推荐)、纵向联邦推荐算法(也可称为基于用户的联邦推荐)和迁移联邦推荐。




图:联邦推荐算法分类


纵向联邦推荐(即基于用户的联邦推荐)主要解决参与方(机构)拥有大量相同的用户但是不同的商品或用户特征时如何协作构建推荐系统的问题,例如新闻推荐服务商和视频推荐服务商的联邦,或者推荐服务商和用户数据提供商的联邦。横向联邦推荐(即基于商品的联邦推荐)主要解决在参与方拥有大量相同的商品但是不同用户群体时如何协作构建推荐系统的问题,例如不同地区相同推荐服务之间的联邦。迁移联邦推荐主要解决参与方在相同用户和商品都不多的情况,如何协作分享经验构建推荐系统的问题。


针对不同的分类,基于当前推荐系统最常用的矩阵分解(matrix factorization)和因子分解机(factorization machine)算法,微众银行提出联邦矩阵分解、联邦因子分解机等算法。这些联邦推荐算法基于 FATE 框架开发,使用统一的优化流程。以纵向联邦推荐的两个场景为例子,给大家介绍纵向联邦矩阵分解和纵向联邦因子分解机的思路和优化方法。

联邦推荐场景一:参与机构为大量相同用户分别提供书籍和电影推荐服务

具有相同观影兴趣的用户很可能有相同的阅读兴趣。因此双方的联邦是非常有必要的,结合双方数据构建的推荐系统在性能上会优于仅仅使用一方数据构建的系统。



图:纵向联邦推荐场景一,多个参与机构为大量相同用户提供不同推荐服务


在这个场景下,以常用的矩阵分解为例子,给出纵向联邦推荐的一个解决方案,我们让两个参与方在机构内部分别进行矩阵分解,将用户在商品上的评分矩阵分解成 user profile 和 item profit 的乘积,如下图中的公式所示:



图:纵向联邦矩阵分解示意图


其中 user profile 由双方共享,为此我们引入一个可信的第三方 server 来维护共享的 user profile,并帮助各方推荐算法的构建 (在这里需要说明的是,在最新的 FATE 技术中,可信的第三方可以去除,基于加密技术以及多次通讯,双方在安全可靠的方式下进行参数共享)。算法的优化流程如下图所示:



图:纵向联邦矩阵分解优化流程


  • 首先由 server 初始化 user profile 并加密,参与方分别初始化自己的 item profiles

  • Server 将加密的 user profile 发送给参与方

  • 参与方解密 user profile 并更新自己的 item profile;同时计算 user profile 的梯度,加密后发送给 server

  • Server 汇总接收到 user profile 梯度,在密文状态下更新 user profile。

  • 重复步骤 2-4,直到收敛


从更新过程,我们可以看出,参与方的数据完全保持在本地,双方仅交换 user profile 参数,同时 server 也是在密文环境下操作双方计算出来的 user profile 梯度,对内容不知情,不存在隐私泄漏风险。最后,双方都有了自己的模型,而且模型是结合双方的数据优势后共同构建。

联邦推荐场景二:参与机构为推荐服务提供方和用户数据提供方

以书籍推荐服务商和用户兴趣数据提供商的联邦为例,书籍推荐服务商对用户了解越深入推荐越精准。数据服务提供商在合理合法的前提下,进一步扩大数据的应用价值。



图:纵向联邦场景二示意图


在有用户特征的场景下,交叉特征对推荐系统效果的提升帮助非常大,例如交叉地区特征和运动兴趣特征,可以给不同地区有不同运动兴趣的用户推荐合适的明星传记。因子分解机(factorization machine)是推荐领域处理特征交叉的较常用算法。在联邦推荐场景下,我们提出联邦因子分解机,如下图所示,在数据不出本地的情况下,同时完成参与方内部的特征交叉和参与方相互之间的特征交叉。



图:纵向联邦因子分解机示意图


联邦因子分解机的优化过程如下图所示,


  • 首先参与方初始化自己的模型

  • 参与方分别计算部分预估结果,部分损失值,部分特征的梯度等中间结果,加密后传送给对方

  • 双方将加密并加入掩码的梯度发送给 server

  • Server 解密带掩码的梯度汇总后发送给参与方

  • 参与方去除掩码并更新模型

  • 重复步骤 2-5,直到模型收敛



图:纵向联邦因子分解机优化流程


经过联合建模,参与方分别得到部分训练好的联邦 FM 模型,当对新样本进行预测时,需要两方一起完成预测任务


第一步,A、B 双方各自完成本身中间结果的计算,加密并传到服务器


第二步,服务器聚合双方中间结果,解密得到预测值


第三步,服务器将预测值发回给 A 方进行推荐


推荐系统是数据驱动的,数据对效果的提升有很大帮助。在使用数据的过程中,如何有效的保护隐私和安全是急需解决的问题。微众银行在该方向上做了初步的探索和应用,同时,也在积极推进关于联邦学习国家和国际标准的建立。


2019-12-19 08:262741

评论

发布
暂无评论
发现更多内容

中国最可靠的 Go 模块代理

happlyfox

学习 3月日更

前端开发:数据处理方法分享(其一)

三掌柜

vue.js 大前端 3月日更

渣硕试水字节跳动,本以为简历都过不了,123+HR面直接拿到意向书

Java 程序员 架构 面试

区块链圈频现百万元年薪招聘 现金+股票仍难觅良才

CECBC

区块链人才

Python API 邮件发送测试

HoneyMoose

《Redis 核心技术与实战》学习笔记 07

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

2021春招Java后端开发面试总结:25个技术专题(最全面试攻略)

比伯

Java 编程 架构 面试 程序人生

moviepy音视频剪辑:moviepy中的剪辑基类Clip的属性和方法详解

老猿Python

教你如何用霍夫变换完成扭曲车牌识别

程序媛观澜

机器学习 图像识别

moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解

老猿Python

Python 编程语言 音视频 Moviepy

域名和服务器的购买和配置

空城机

阿里云 轻量级服务器 云翼计划

「产品经理训练营」作业 06:用户路径地图与漏斗模型

狷介

产品经理训练营

时间复杂度总结

我是程序员小贱

3月日更

纸币会消失吗:数字货币如何走进我们生活

CECBC

货币

uni-app跨端开发H5、小程序、IOS、Android(七):uni-app渲染

程序员潘Sir

html5 uni-app 大前端 3月日更

领跑行业!浪潮云斩获“2021云管和云网大会”多项殊荣

云计算 云原生

Three.js杂记(十一)—— 精灵与粒子(绘制中国地图)

空城机

大前端 WebGL 3D渲染 3D可视化 three.js

去了解一下区块链

空城机

区块链 笔记 区块链发展

如何减少加班导致的离职?

石云升

项目管理 28天写作 职场经验 管理经验 3月日更

Three.js杂记(十一)—— 精灵与粒子(绘制中国地图)

空城机

大前端 WebGL 3D渲染 3D可视化 three.js

开启Python学习之旅,分享学习路上的神器集合!

王小王-123

Python 学习 资源分享 工具分享

面试拜佛保过?圈内罕见阿里面试官手册,2021最强面试笔记非它莫属

Java 程序员 架构 面试

Python-计算机视觉-OpenCV-video

Aldeo

Python OpenCV Video

区块链下乡

CECBC

区块链

产品经理能力不够,产品方法论来凑

lenka

3月日更

Kubernetes认证管理员

云原生

Kubernetes 云原生 k8s CKA

一个有情怀的PPT模板下载网站

happlyfox

学习 3月日更 工具分享

Wireshark数据包分析学习笔记Day19

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

(Day30) 谁来驱动变革

mtfelix

28天写作 bewriting

【Axure9百例NO.45】中继器的不同场景下的样式处理

zhuchuanming

原型设计 Axure 交互原型

开源的 Switch 模拟器——GitHub 热点速览 v.21.12

HelloGitHub

GitHub 开源

联邦学习针对推荐场景化的技术原理解析_开源_Geek_684d95_InfoQ精选文章