TOIS24|推荐公平性的反事实解释

 论文:https://arxiv.org/pdf/2307.04386

 代码:https://anonymous.4open.science/r/CFairER-anony/.

关键词:可解释推荐;公平;反事实的解释;强化学习

1 动机

现有推荐系统存在的公平性问题,例如性别歧视和种族偏见等,会导致推荐结果的非公平分配,从而降低用户满意度和系统的可信度。现有的公平性推荐研究提出了一些算法来减轻这种不公平性,但通常是以“黑盒”方式进行的,缺乏透明度和解释性。解释不公平性出现的原因,即识别导致推荐结果不公平的因素,是构建可信赖推荐系统的重要一步。当前的公平性解释方法通常依赖特征或方面的扰动来生成解释,但这些方法面临高计算成本、处理离散属性的能力有限等问题。

基于特征的方法:通过计算输入特征对模型公平性的贡献分数(Shapley值估计,用来衡量每个输入特征对模型公平性的影响),来解释推荐系统中不公平性的来源。因为特征交互复杂且难以解析,对深度推荐模型的适用性较差。

基于方面的方法:通过对用户或物品的aspect进行扰动(对用户或物品的某些方面分数(例如兴趣标签、商品特征分数)进行扰动,通过将扰动后的分数输入推荐模型,观察对公平性差异的影响),从而优化解释模型,找到导致公平性变化的方面。然而随着aspect数量的增加,扰动的搜索空间会呈指数级增长,计算负担重。

下图是一个用于公平性反事实解释的示例。假设在用户 u1和推荐项 i1的场景中,我们希望知道 i1为什么会导致推荐结果的不公平性。反事实解释通过修改 u1和 i1的属性并观察推荐结果的公平性变化来实现“what-if”推理。

 候选解释 E1​ 和 E都能改变推荐结果的公平性,从公平性差异 0.9降低到 0.19。但E2​ 是最小的属性修改集合,能够提供更具实质性的解释。因此图中的“Female”属性被认为是关键因素,而“U.S”和“Discount”等冗余属性被舍弃。


2 贡献

  • 引入基于反事实推理的属性级公平性解释框架:首次提出从因果推理角度生成反事实公平性解释,通过对异构信息网络(HIN)中的离散属性进行最小修改,回答“如果某些属性变化,模型公平性将如何改变”的问题,从而识别影响推荐系统公平性的关键属性。

  • 设计基于强化学习的反事实解释生成策略:开发基于离线策略的强化学习框架,通过优化解释策略,自动发现对模型公平性变化最敏感的属性组合;引入注意力机制进行动作修剪,减少候选属性的搜索空间,从而大幅提升生成效率和解释质量。


3 推荐系统的公平性解释

公平感知推荐的研究主要讨论两个主要主题,即用户侧公平性和项目侧公平性。

用户端公平性关注推荐系统是否公平地对待不同用户或用户群体,例如在推荐准确性或解释性方面的平等性。然而推荐系统可能对特定用户群体(如活跃用户、特定性别或种族的用户)表现出偏向性。现有方法为协同过滤等推荐模型定义公平性度量(如准确性平等性),并将这些度量作为约束条件加入模型目标函数。或者通过在排序结果上加入公平性约束来减轻用户群体之间的不平等。

物品端公平性关注推荐系统是否公平地对待不同的物品或物品群体,例如在物品曝光分配或排名预测错误率方面的公平性。物品端的不公平性通常表现为长尾物品的曝光不足,导致热门物品的曝光过度,并且动态变化的物品标签(如类别或流派)可能进一步加剧不公平性。现有方法在学习排序模型时,加入公平性相关的正则项,或使用马尔科夫决策过程(MDP)建模动态标签变化,计算物品曝光的不公平性成本。或利用强化学习方法,在交互式推荐系统中维护准确性和曝光公平性的长期平衡。


 4 相关技术

4.1异构信息网络(Heterogeneous Information Network, HIN)

HIN是一种复杂的图结构,用于表示用户、物品及其属性的多种关系。其节点和边具有异质性,能够捕获不同类型的用户和物品属性。 HIN输入为异质图,V表示节点集,包括用户 、物品 、用户属性 ​、物品属性,E为边集,描述用户与物品、用户与属性、物品与属性之间的关系。输出是节点表示。HIN需要进行迭代聚合并处理异构图时会考虑节点和边的类型异质性,统一建模用户-物品交互及其属性关联,为公平性解释提供丰富的背景信息。

4.2公平性差异(Fairness Disparity)

公平性差异衡量推荐结果的不公平程度。本文采用两种指标来评估推荐结果的公平性:

(1)人口平价(Demographic Parity, DP): 要求推荐系统对所有物品组(如热门组G0​和长尾组G1)具有相同的曝光概率。

(2)精确-K(Exact-K, EK): 要求物品的曝光分布在统计上不超过预设的最大偏差 α。

给定DP和EK,公平差距

4.3公平性反事实解释(Counterfactual Explanation for Fairness)

反事实解释旨在回答“如果某些用户或物品属性发生最小变化,推荐结果的公平性会如何改变”。目标是找到最小的属性集 V^*,使得修改这些属性后,推荐结果的公平性差异减少。给定用户交互目标是找到。V^*是HIN中选择的最小属性子集,在应用 V^* 后,推荐结的公平性差异降低,说明这些属性是导致不公平性的主要因素。


 5 CFairER

(1)图表示模块将HIN之间的用户、项目和属性作为嵌入向量嵌入,推荐模型进行推荐

(2)反事实公平解释(CFE)模型借助图表示模块和推荐模型进行反事实推理。

CFairER 通过强化学习框架(智能体与环境的交互学习一种策略,使得在给定状态下选择的动作能够最大化累积奖励)生成推荐系统的反事实公平性解释。

5.1 图表示模块

将HIN中的节点(用户、物品及其属性)表示为嵌入向量,用于推荐模型和反事实推理。

迭代聚合公式,最终的嵌入用cat操作

5.2 推荐模块

矩阵分解和BPR

 

5.3反事实公平性解释的强化学习

 

状态S:当前的用户及其推荐列表-5.3.1

动作 At:从候选属性集合 Vt选择一个属性作为动作-5.3.2

奖励衡量当前动作at是否有助于改善公平性

5.3.1状态表示学习

状态表示学习旨在通过时间序列建模,为强化学习中的状态 (sts_tst​) 提供动态的、高质量的嵌入表示。门控循环单元(GRU)被用来捕获用户推荐历史和当前交互的时间相关性。状态表示学习通过三种门机制(更新门、重置门和状态更新)动态调整状态信息。

更新门ut决定当前状态表示 st中,有多少部分应该保留上一时间步 st−1的信息;

重置门rt决定是否清除历史状态的部分信息,从而允许模型更关注当前输入;

综合更新门和重置门的输出,最终生成当前时间步的状态表示st

5.3.2 注意力动作修剪

CFairER 的动作空间由用户和物品的所有可能属性组成,当属性数量巨大时,直接搜索会导致计算成本过高。注意力动作修剪通过使用注意力机制评估动作的重要性,保留最相关的属性,从而减少动作空间。输入包括:由状态表示学习模块生成的当前状态 st-5.3.1,HIN的候选属性嵌入ei。

 将V𝑡中所有属性的注意分数归一化,通过注意力分数对候选属性进行筛选,仅保留分数最高的前 n个属性:

5.3.3 反事实奖励

奖励函数用于衡量一个候选动作是否能够有效降低推荐系统的公平性差异:

其中表示用户嵌入的变化距离,越小越好。反事实奖励函数的设计需要平衡两个目标:

理性准则:选择的动作应显著改善推荐结果的公平性。

当动作 at 显著降低公平性差异时,奖励函数给出更高的奖励值

邻近性准则:选择的动作应尽量减少对用户和物品嵌入的改变。当动作 at未能显著改善公平性差异时奖励仅考虑嵌入变化的距离

6总结

模型流程:

  • HIN 嵌入生成
    使用异构信息网络提取用户嵌入 hu、物品嵌入 hv、属性嵌入 ei,统一表示用户、物品及其属性的多样化关系,为后续的强化学习和反事实解释生成提供输入。

  • 强化学习框架
    利用强化学习找到最小的属性修改集合 V^*,优化推荐结果的公平性。

    • 状态表示:通过 GRU提取用户推荐历史的序列信息,结合当前推荐列表嵌入生成状态 st​。
    • 动作选择:使用注意力机制筛选与当前状态最相关的属性,剔除无用的属性信息,减少动作空间。
    • 奖励函数:综合衡量动作对公平性差异改善(DP 和 EK)和嵌入稳定性的影响,确保生成的修改既显著改善公平性,又尽量保持嵌入变化最小。
  • 反事实推荐生成
    在最优动作的指导下,通过修改用户或物品的某个属性生成新的反事实嵌入,得到反事实推荐结果

  • 公平性比较
    计算反事实推荐结果的公平性差异 与原始推荐结果的公平性差异 的变化,验证反事实修改的有效性。如果反事实修改显著降低了公平性差异生成奖励信号,用于强化学习框架中策略的优化和下一阶段动作的指导。

使用 DP 和 EK 指标衡量推荐结果的公平性差异。在反事实修改过程中,依据 理性准则 优先选择能够显著降低公平性差异的动作,同时通过 邻近性准则 约束动作对嵌入的影响幅度。结合这些准则,最大化奖励函数以优化目标策略,最终生成改善公平性的反事实嵌入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17955.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

week 3 - Assembly Language

Important Instructions and Syntax 此内容是以MASM编写的,你将使用Visual C/C内联汇编来编程,因此数据元素的声明有所不同,但概念和指令集(instruction sets)相同。 一、General-Purpose Registers 寄存器是CPU内的命名存储单元…

6.C操作符详解,深入探索操作符与字符串处理

C操作符详解,深入探索操作符与字符串处理 C语言往期系列文章目录 往期回顾: C语言是什么?编程界的‘常青树’,它的辉煌你不可不知VS 2022 社区版C语言的安装教程,不要再卡在下载0B/s啦C语言入门:解锁基础…

校园导航系统

关于数据结构的一个整理: 1、链式有序表的合并 2、栈 3、队列 4、二叉树、哈夫曼报文 5、图论 6、十大排序 7、校园导航系统 文章目录 校园导航系统演示示例代码示例1、弧结点和顶点节点2、Map节点3、用户 校园导航系统 采用C语言涉及了数据库相关的操作&am…

食品进出库库存管理发货开单软件下载 佳易王食品进出库管理系统操作教程

一、概述 【软件资源下载在文章最后】 食品进出库库存管理发货开单软件下载 食品进出库管理系统操作教程 商品进出库管理软件是一款操作简便的进出库管理软件,管理入库,出库,库存,同时打印发货单。 二、软件操作教程 第一步&a…

C++和OpenGL实现3D游戏编程【连载18】——加载OBJ三维模型

1、本节课要实现的内容 以前我们加载过立方体木箱,立方体的顶点数据都是在程序运行时临时定义的。但后期如果模型数量增多,模型逐步复杂,我们就必须加载外部模型文件。这节课我们就先了解一下加载OBJ模型文件的方法,这样可以让编程和设计进行分工合作,极大丰富我们游戏效…

二刷代码随想录第四天

24. 两两交换链表中的节点 设置个虚拟头节点画图理清楚节点之间的指向关系 class Solution { public:ListNode* swapPairs(ListNode* head) {ListNode* dummyHead new ListNode(0);dummyHead->next head;ListNode* cur dummyHead;while (cur->next ! nullptr &&…

【Linux】proc 文件系统详解

/proc 文件系统是 Linux 内核提供的一种特殊的文件系统,它主要用于显示内核和进程的信息。/proc 文件系统是一个虚拟文件系统,这意味着它并不占用实际的磁盘空间,而是由内核动态生成的内容。通过 /proc 文件系统,用户可以读取系统…

Linux文件系统

Linux文件系统 Linux 文件系统是 Linux 操作系统中用于存储和组织文件的结构。以下是一些关键概念和常见的 Linux 文件系统类型: 关键概念 文件系统层次结构:Linux 使用统一的文件系统层次结构,所有文件和目录都从根目录 / 开始。 目录结构…

[1.15.X-1.18.X]Herobrine-吾王HIM插件

Herobrine 这款插件99%自定义!为你的服务器增加一个吓人的HIM,该插件是一个非玩家角色,由 Minecraft 的粉丝创建。从来没有真正成为 Minecraft 游戏的一部分,这个故事是他在 Minecraft 世界里出没,Mojang 通过开玩笑地将“移除的 …

CTF 取证技术

01 流量分析 筛选器的使用 追踪流 文件导出 实例:通过筛选 http ,推断出 攻击者很可能 是 执行一个 文件上传 的攻击hack.php 很可能就是 攻击者 上传的 webshell依次进行 http 的 追踪流 查看查看到最后,发现响应中 有 PK文件头的存在 ,说…

【GPIO】3.上/下 拉电阻通讯中的作用

一.什么是上/下拉电阻 上拉、下拉电阻统一称为拉电阻,作用是将状态不确定的信号线通过一个电阻将其箝位至高电平(上拉)或低电平(下拉) 这里有人可能会疑惑? 什么叫状态不确定的信号? 在数字电…

分享购:前期布局与后期问题解决策略

在当今电商与消费模式不断创新的时代,分享购作为一种极具潜力的商业模式,正受到越来越多的关注。然而,要想让分享购真正发挥优势、实现可持续发展,无论是前期的精心布局,还是后期妥善应对各类问题,都至关重…

51c大模型~合集46

我自己的原文哦~ https://blog.51cto.com/whaosoft/11908179 #HITS 北大李戈团队提出大模型单测生成新方法,显著提升代码测试覆盖率 单元测试是软件开发流程中的一个关键环节,主要用于验证软件中的最小可测试单元,函数或模块是否按预期工作…

中断与异常处理:走进代码

在操作系统的核心部分,中断(Interrupt)和异常(Exception)的处理机制是不可或缺的基础。它们的设计决定了系统的响应能力、稳定性和可扩展性。本文将深入探讨 Linux 内核中的中断与异常处理机制,并结合更多实…

智慧社区管理系统平台全面提升物业管理效率与用户体验

内容概要 随着科技的发展,智慧社区管理系统平台应运而生,成为现代物业管理的重要工具。这个平台通过整合多种先进的管理手段,为物业服务提供了全新的解决方案。智慧社区管理系统的核心在于其高效、便捷、智能的特点,最大程度地提…

Pytest-Bdd-Playwright 系列教程(9):使用 数据表(DataTable 参数) 来传递参数

Pytest-Bdd-Playwright 系列教程(9):使用 数据表(DataTable 参数) 来传递参数 前言一、什么是 datatable 参数?Gherkin 表格示例 二、datatable 参数的基本使用三、完整代码和运行效果完整的测试代码 前言 …

Java学习——Day10

static修饰的成员变量和方法,从属与类。普通变量和方法从属于对象的 静态块就是类在初始化的执行的语句块,静态块中常调用静态变量和静态方法。 以下编写一段代码举个例子 Java参数传值机制 java中,方法中所有参数都是“值传递”&#xff…

StructRAG Boosting Knowledge 论文笔记

StructRAG: Boosting Knowledge Intensive Reasoning of LLMs via Inference-time Hybrid Information Structurization 论文精读 背景知识 知识密集型推理任务(knowledeg- intensive reasoning task): 知识密集型推理任务(knowledge-inte…

【点云上采样】最近邻插值上采样算法 增加点云密度

看了很多文章都是用CGAL去做的,又是下载安装CGAL的贼麻烦,关键弄好还不能用,气死了。 文章目录 前言一、最近邻插值上采样算法1、原理:2、步骤: 二、完整代码三、效果对比 前言 传感器采集到的点云比较稀疏&#xff0…

C++仿函数

概念 仿函数本质上是一个类(class)或者结构体(struct),不过这个类重载了函数调用运算符 operator(),使得它的实例对象可以像函数那样被调用。从使用方式上看,它能表现出类似函数的行为&#xf…