【论文解读】FedFast: Going Beyond Average for Faster Training of Federated 推荐系统遇上联邦学习

FedFast: Going Beyond Average for Faster Training of Federated

Recommender Systems
该论文发表于KDD2020,本文针对联邦学习推荐系统最开始的结构FedAvg进行改进。以提高推荐效果并降低学习轮次和学习资源的消耗。(本文为本人对原论文的理解和分析,如有错误欢迎指正或讨论)
原文下载



一、引言

虽然说自联邦学习(Federal learning)的思路问世以来,FL的卖点一直都是在隐私保护方面的收益,但是本文并不关心FL系统对隐私的保护,本文的重点就是改进原来基础的FedAvg算法存在的推荐效果差和收敛速度慢所导致的通信轮次过多和客户端通信资源浪费的问题。不了解FedAvg算法的可以看论文:Communication-Efficient Learning of Deep Networks from Decentralized Data


二、FL推荐系统的结构

FL推荐系统架构
   FL推荐系统作为分布式的系统,系统中存在几个角色:中心服务器、客户端、用户和推荐物。FL推荐系统与传统集中式推荐系统最大的不同就是FL推荐系统的训练数据不需要集中到中心服务器中,用户数据分布在不同的客户端,在训练系统的时候每次迭代中会选择几个客户端进行训练然后把训练到的模型的参数传给中心服务器。中心服务器将得到的各个客户端的参数做处理之后得到一个完整推荐模型。之后中心服务器将得到的模型的参数发送给所有客户端进行更新。


FedAvg

  在FedAvg算法中每个轮次在选择客户端的时候采用随机的方式进行选择,并且在一轮迭代完成中心服务器获得所选的客户端的训练的参数的时候采用的是求平均的方式整合获得完整的模型参数。


FedFast

  根据上面的介绍我们可以知道FedAvg 算法在选择用户的时候采用随机过程,但是仔细想想在实际生活中用户与用户之间很有可能具有相似的兴趣,那么对于具有相似兴趣的用户群中的两个用户来说在采样的时候只需要选择其中的一个就可以了,这样就可以降低迭代轮次。具体来说FedFast主要改进系统的两个方面,

  1. ActvSAMP用于更好地选择参与每轮培训的用户
  2. ActvAGG以智能方式组合本地培训的模型,以加快培训过程。
    下面具体介绍一下两个算法的思路。

三、算法理解

1.变量约定

K:客户端集合
w:全部参数集合
w[j] :第j个参数,j为索引
w[J] :参数子集,J 是一个索引集合
U:所有用户(user)索引集合
Uk :客户端k中相关联的用户嵌入对应的索引
I:所有推荐物(item)索引的集合
N:所有非嵌入的索引
U ∪ I ∪N :所有索引集合
Ik :特定轮次期间由客户端k更新的item嵌入
G :客户群分区状态
p :客户群数量
α :每轮中抽样的客户端(user)比例


2.FedFast算法

伪代码:
在这里插入图片描述
  简单解读一下FedFast算法思路:
1)初始化权重和客户群分布,这里作者提到初始客户群分布的获取是对用户嵌入集合做聚类实现的,并且客户群分布的获取是在中心服务器中进行的。
2)从p个用户集合中总计取出m个客户端,并保证不同客户集合中取出的客户端数量相等。在一个客户集合内部采用随机的方式取出。
3)使用取出的客户端的数据分布式的学习,学习之后将学习的权重发送至中心服务器。
4)中心服务器整合收到的客户端学习权重和参数使用ActvAGG 算法获得完整模型参数并发送给所有客户端。
5)客户端更新自己的模型参数。
6)2-5过程称为一个轮次,重复多个轮次直至收敛

  从上面的算法流程我们可以知道,每个迭代过程分为两部分,第一部分称作采样,也就是选取参与训练模型的用户,第二部分称为参数更新。作者针对这两部分分别提出了ActvSAMP 算法 和ActvAGG 算法,下面详细讲解一下这两个算法和FedAvg的不同之处。


3.ActvSAMP

  在FedAvg中采样算法 是使用基础的随机算法,也就是不分用户群直接随机选取。作者的思路是先聚类获得多个用户集群,然后从用户集群中随机选取同数量的用户。
ActvSAMP伪代码:
ActvSAMP伪代码
  这里需要注意的是ActvSAMP只负责取样,客户群分区的更新是由ActvAGG负责的。这里我在一开始看到这里的时候发现一个问题,那就是我们在用聚类进行客户群分区的时候,当聚类结果稳定之后你下次再在同样数据集中聚类那么获得的结果是一样的或者说差距极小。那我们重复分区的意义就不大了。这里作者之后解决了这个问题,作者通过更新用户嵌入使用户的表示在每一轮次都会发生改变,从而确保将相同兴趣的用户聚类到统一用户群中。具体如何更新的下面的ActvAGG算法有说明。


4.ActvAGG

算法伪代码:

ActvAGG伪代码
  这部分是相对FedAvg算法改进最大的一部分,在分析之前我们先确定一下有哪些信息需要更新以及FedAvg是如何更新的。对于模型来说主要有三部分的参数需要更新,分别是:Item嵌入、user嵌入、模型用到的权重(weight)矩阵。在FedAvg中的更新内容就只是更新权重矩阵并且只是求一个均值即可。
  ActvAGG则需要将用户嵌入进行更新,这也是为什么在之后可以重新聚类区分出新的用户群分区的原因。并且对与用户来说在每个轮次更新嵌入的时候作者将训练的时候所选择的用户称作代表,同客户群内未被选择的用户称为从属用户,并且对这两种类型的用户的嵌入的更新策略是不同的。
1)非嵌入参数(N)的更新
在这里插入图片描述
简单的取平均。
2)item嵌入的更新
item嵌入的更新
聚合参数 w[i] 的每个item嵌入由每个代表学习的参数值 wk[i] 的加权平均值,其中每个代表的贡献与 wk[i] 与来自上一轮的聚合值 w0[i] 之间的差成比例(第11行)。请注意,代表k只对它在本轮期间更新的那些组件 Ik 有贡献。
3)代表用户嵌入的更新
在这里插入图片描述
  对于代表用户直接采用这一轮次的值,没有改变。
4)从属用户嵌入的更新
在这里插入图片描述
  从属用户的嵌入的更新与本客户分区内部的代表的嵌入有关。
从属用户嵌入的值是原来的值加上一个折扣率乘以本客户群内部所有代表用户嵌入的平均改变值的和。
  也就是以下流程:
①计算本分区内所有代表本轮的嵌入和上一轮嵌入的差值的和 δ[Us]
②计算上面插值的平均值
③上面的插值乘以折扣率γ,γ的计算方式是一个指数函数并随着轮次的增大而减小:
γ计算方式
④对于从属用户新的嵌入是上面获得的值加上上一轮的值从而获得新的嵌入。


  以上就完成了模型的更新同时由于用户嵌入的改变,之后使用聚类更新用户群分区就可以了。


四、实验效果

1、准确率

   这里需要注意的是FedFast不是一个具体的模型,它更接近一个架构,并且我们也可以看出本算法严重依赖于嵌入,因此本算法的有效性仅限于那些基于嵌入的推荐模型。
   在实验中作者选择GMF模型作为实验模型并与BPR模型做对比。不知道GMF模型的可以去看《Neural Collaborative Filtering》这篇文章。
理论上来说集中训练的GMF模型的效果将是使用FL改造的模型的效果的上限。
实验表现:
实验表现
   简单说明一下HR代表命中率也就是推荐准确率,NDCG代表归一化折扣累积增益,NDCG是一种常用的基于排名的衡量标准,它通过对数贴现排名来强调排名靠前的重要性。二者的数值越大代表模型效果越好。
   有趣的是使用FedFast改造的GMF模型有的实验的效果比集中训练的GMF模型的效果差别不大甚至有的数据集前者的效果更好,同时与BPR模型的差距不大。并且使用FedFast的模型的效果比FedAvg的效果也要好得多。


2、迭代轮次

  FedFast的另一项收益就是可以降低模型迭代轮次这样就能减少通信资源的消耗。
迭代轮次比较
  从上面实验结果我们可以很明显的看到,在相同迭代轮次的情况下FedFast的效果明显高于FedAvg并且在达到相同准确率的情况下FedFast能节省大量的迭代轮次。


总结

  以上就是我对FedFast这篇文章的理解和解读,有什么问题和错误可以一起交流。文章中还进行了消融实验证明算法的正确性。理解比较简单,这里就不再详细解读。总的来说这个算法的效果还是很好的,思路也比较新颖。我还是头一次见有算法在训练过程中更新用户嵌入的,之前一直以为用户嵌入是不需要改变的,现在看来作者这种改变用户嵌入的方式确实可以获得用户之间的相似信息从而帮助模型训练,还是很有借鉴意义的。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值