FedRec++: Lossless Federated Recommendation with Explicit Feedback阅读笔记

动机

本文是2021年AAAI上的一篇论文。本篇论文是在FedRec基础上提出的,在FedRec框架中,对于每个用户需要去采样一些该用户未有过交互的物品作为它的虚拟交互物品以达到隐私保护的目的,但是这一做法会引入噪声,因为实际上用户并没有给出这些虚拟交互物品评分。本文所提出的FedRec++通过分配一些去噪用户节点来实现去除噪声。

算法

FedRec++框架结构图如下。

用户节点被分为两类,一种是普通用户节点,它上传的梯度包含自身有交互的物品梯度和虚拟交互物品梯度,第二种是去噪用户节点,它接收普通用户端发来的噪声部分,并将这部分和自身交互物品的梯度一起上传给服务器,这里去噪用户节点没有虚拟交互物品。

服务器节点

对于服务器节点首先将物品隐向量发送给客户节点,用户节点完成计算后上传模型的更新,这里的用户节点是普通用户节点,包含有噪声数据,即虚拟交互物品的更新。对于某一物品i,其梯度为

去噪用户节点接收普通用户节点发送来的噪声部分(虚拟交互物品的更新),这部分结合自身交互物品的更新后上传到服务器节点,物品i的梯度最终如下

在服务器节点更新i的表示

整体算法流程为

用户节点

用户节点用于自身更新的梯度为

上传到服务器节点的梯度为

普通用户会因为引入虚拟交互物品而引入噪声,这部分数据的梯度为

去噪用户节点接收这些噪声数据的梯度,并和自己交互物品的梯度一起上传至服务器节点

整体算法流程为

为什么可以保护隐私?如何做到无损联邦推荐?

对于第一个问题,在FedRec++中,用户评分数据始终保存在本地,用户上传给服务器的梯度是包含噪声的梯度(两种用户节点都是),普通用户节点发送给去噪用户节点的信息是噪声信息,不包含普通用户的信息,因此用户隐私不会泄露。
第二个问题可以抽象成一个更简单的问题来说,假设服务器节点需要所有用户节点的值的和,这里用户节点有一个普通用户节点,值为a,一个去噪用户节点,值为b,如果要做到无损,那么服务器收到的值应该是为a+b,同时两个用户节点各自的值不能被服务器识别出,需要怎样做呢?作者在本文提出的思路就是,给普通用户节点加一个噪声c,上传至服务器端的为a+c,同时普通用户向去噪用户发送噪声c,去噪用户上传至服务器端的值为b-c,两者的和为a+b同时服务器节点并不知道真实的两个用户的值。

结果

作者将本文提出的FedRec++和FedRec相比,在随着虚拟交互物品增多的情况下,FedRec损失明显上升,而FedRec++损失几乎不变,这证明了FedRec++的有效性。在不采样虚拟交互物品的时候,FedRec++和FedRec等效,但是这种情况会泄露用户隐私。

总结

本文提出的RedFec++利用了用户节点之间的通信,从而实现了无损版本的RedFec,其核心思想就是分出两种用户节点,给这两部分节点都加入一部分噪声,两部分节点的和抵消了加入的噪声,从而实现无损。后续可以尝试将更多模型应用到该框架中。

posted @ 2022-04-11 18:32  South1999  阅读(369)  评论(0编辑  收藏  举报