论文来源:SIGIR 2025
论文链接:https://arxiv.org/pdf/2409.05872
代码链接:https://github.com/margotyjx/CSRec_repo?tab=readme-ov-file
个人总结:利用干预数据解决推荐系统中曝光偏差,以更准确地预测用户在给定推荐下是否接受。
流程:首先利用GPT构造干预数据(即系统推荐后用户是否接受的响应,基于用户序列,利用gpt生成推荐列表,并模拟用户是否接受),再分别用观测数据和干预数据训练观测模型(SASRec)与干预预测模型,干预预测模型由当前时间步的推荐 embedding和上一个时间步的用户自身决策 embedding,并通过结构约束训练将二者组合,从而缓解因系统曝光偏差带来的影响,提高推荐结果的因果可信度。
1 动机
序列推荐系统旨在根据用户的历史行为序列预测其下一步兴趣,近年来广泛采用 Transformer 等深度架构建模用户偏好演化轨迹,然而:
1:现有工作大多基于观察数据进行训练,忽略了推荐系统中的系统曝光机制,即模型只能学习用户自然选择交互的内容,无法建模“如果推荐了某个 item,用户是否会接受”的反事实响应,导致推荐效果受限。
2:当前方法仅优化观测条件下的排序性能,无法回答推荐因果问题,未能区分“用户喜欢”和“用户看到后接受”之间的差异,模型容易受到曝光偏差干扰,削弱了推荐的可靠性与可控性。
2 贡献
1:提出了一个因果驱动的序列推荐框架(CSRec),通过引入干预建模机制,模拟系统主动推荐下用户是否接受,从而补全传统观察数据无法捕捉的反事实响应。
2:构建了因果展开结构,将用户的响应预测建模为前一时间步干预结果与当前观测条件的组合,并通过结构约束进行拉格朗日优化,提升了模型的因果一致性与泛化能力。
3:设计了 GPT4-Books 干预数据集,利用 GPT-4 构造合成用户响应数据,作为干预学习的监督信号,有效解决了真实推荐环境中缺乏显式干预样本的问题。
3 因果图
因果节点:
-
St:推荐(系统干预变量)
-
Dt:用户响应(点击/接受)
-
Pt:用户偏好(潜在状态 embedding)
因果路径:
-
Pt→Dt:用户偏好影响响应
-
St→Dt:系统推荐影响响应(核心干预路径)
-
Dt−1→Dt:历史响应影响当前响应
-
St−1→St:推荐序列的时间依赖性
4 模型
这里我没按照作者论文里的设置来介绍,我直接按照模型的流程来介绍了。
4.1干预数据创建
传统序列推荐模型(如 SASRec)只能在观察数据上训练,观察数据只能看到用户实际点击的 item,但看不到他们在系统未推荐的情况下是否会点击其他 item,也就是说,用户在系统“未推荐”或“推荐但未点击”时的反事实偏好是缺失的。因此为了模拟 “如果系统推荐了这个 item,用户是否会点击/接受” 的场景,即建模 P(Dt∣do(St)),使用GPT-4 生成合成干预数据。
使用真实数据中的用户历史序列作为上下文输入,输出为一个三元组 (history, recommended_item, response)
CSRec在使用传统的 HR和 NDCG作为主评估指标之外。设计了两个符合因果预测目标的新评估指标,用来衡量模型是否学到了干预视角下真实的用户响应预测能力,因为有干预数据,HR等是评价观察数据的。
dt是来自GPT-4生成的response(0或1 点击还是不点击),d^t是模型预测的响应,使用分位数阈值(1 - α)将预测结果转化为二分类决策(点击 or 不点击)。
4.2 模型的流程
完全基于因果公式:
在干预下预测当前用户响应 Dt(模型的预测)的概率等于:当前 Dt的条件概率(给定推荐 St、上一步响应 Dt−1、偏好状态 Pt)乘上一步干预下响应 Dt−1然后对所有 Dt−1求和。
4.2.1 推荐 St
基于用户历史行为序列(观察数据),使用序列推荐模型例如SASRec,建模观测条件概率:
4.2.2 用户响应 Dt
使用观测条件概率模型,基于干预数据(GPT 生成),输入当前推荐 St、用户状态 Pt,输出的是用户在系统推荐该 item 下是否接受推荐
4.2.3 损失函数
第一项干预监督损失:ft(θ):干预模型预测当前响应 Dt 的概率,Dt∈{0,1}:GPT 生成的真实响应标签,使用交叉熵损失训练干预预测器 ft。
第二项结构一致性约束项:干预模型的输出不仅要符合训练标签,还必须与前一时刻的预测和当前观测模型组合结果一致。
总结
个人总结哈,更像可解释推荐,只不过可解释推荐使用了评论信息,我之前有讲过有一篇可解释推荐的做法,但是CSRec使用的是gpt,不光是进行数据进行增强,同样gpt生成了点击或不点击的标签,因此不光使用HR进行衡量,同样作者设计了一个评价指标。所以生成了候选的item list和标签,同时按照序列推荐的方法使用上个时刻的用户决策,当前的交互在干预数据上进行预测干预分布。
我认为因果推荐最重要的是do操作,是如何do的,这篇论文就是使用gpt输出的数据生成“干预分布”,同时和观测数据进行联合训练,并且加了个约束,这就是它的do操作。