协同过滤算法除了捕捉用户潜在的消费模式外,还会学习用户特定的人口统计学特征或受保护信息等特征,如性别、种族和地理位置位置。这些偏见(Bias)信息会进一步影响推荐系统(RS)的决策,使得推荐算法会提供给不同用户子群的内容进一步分离,这将引起对用户受保护属性泄露的隐私问题。通过观察下图,可以发现基本的推荐算法(MultVAE)存在性别上的偏差,使得攻击者可以很容易的识别这种模式并进行敏感属性的推测。
在这项工作中,本文研究了在保持推荐算法有效性的同时,将用户的特定保护信息从学习的交互表征中移除的可能性和挑战。具体来说,本文将对抗训练纳入到变分自编码器MultVAE架构中,从而形成了一个新的模型——基于对抗训练的多项式自编码器模型(Adv-MultVAE),其目的是去除受保护属性的隐性信息,同时保持推荐性能。通过在两个数据集上进行实验来评估偏见缓解方法的有效性。结果表明,Adv-MultVAE虽然在性能上略有下降(在NDCG和召回率方面),但在很大程度上缓解了模型的内在偏差。
更多关于对抗学习在推荐系统中的应用可以阅读我之前总结的文章:推荐系统中的对抗机器学习技术总结。
论文:https://arxiv.org/pdf/2206.04500.pdf
代码:https://github.com/CPJKU/adv-multvae
本文发表在SIGIR2022会议上,其基本算法框架如下图所示,包含一个具体的推荐算法和一个敏感属性预测器。其中,推荐算法在本文中为多项式似然的变分自编码器MultVAE,而敏感属性预测器则为一个对抗网络,旨在从潜在向量中预测用户的受保护属性。
本文的训练过程旨在从中间特征中删除受保护属性的信息,同时并保持推荐性能。为此,模型的损失函数被定义为以下最小-最大博弈问题:
其中,对抗网络的损失函数被定义为交叉熵损失,因为其本质是一个分类任务,即预测敏感属性的类别;推荐任务的损失函数则被定义为下式:
其中,为输入的重构损失,比如平方损失,为正则项用来保证编码器的分布与先验尽可能的接近。
对于本文的损失函数直观的理解是在保证推荐性能的基础上,尽可能的减少中间变量z中所携带的敏感信息。
考虑到众所周知的优化min-max损失函数的复杂性,受前人工作的启发,本文在对抗网络和中间变量之间添加了一个梯度反转层。在训练过程中,在前向传播中充当恒等函数,而在反向传播中,它将计算出的梯度缩放为。在推理时对模型没有任何影响。本文把参数𝜆称为梯度反转缩放。通过在模型中采用,模型的整体损失就可以被重新表述为标准的风险最小化的基本设置,因此可以达到快速收敛的目的。
该公式就能够通过标准的基于梯度的优化算法来优化模型。关于梯度反转层GRL的Pytorch代码如下,在前向传播过程中保持原值不变,在反向传播的过程中乘上了梯度缩放系数。
from torch.autograd import Function
class GRL_(Function):
"""
Gradient reversal functional
Unsupervised Domain Adaptation by Backpropagation - Yaroslav Ganin, Victor Lempitsky
https://arxiv.org/abs/1409.7495
"""
@staticmethod
def forward(ctx, input, grad_scaling):
ctx.grad_scaling = grad_scaling
return input
@staticmethod
def backward(ctx, grad_output):
# need to return a gradient for each input parameter of the forward() function
# for parameters that don't require a gradient, we have to return None
# see https://stackoverflow.com/a/59053469
return -ctx.grad_scaling * grad_output, None
关于本文的细节和实验结果可阅读原论文。