从负反馈中学习并衡量序列推荐系统的响应能力

从负反馈中学习并衡量序列推荐系统的响应能力

Google RecSys'23 ---Learning from Negative User Feedback and Measuring Responsiveness for Sequential Recommenders

一、问题背景与研究动机

在工业级推荐系统中,尤其是短视频与信息流场景,用户行为以隐式反馈为主。点击、长时观看通常被视为正反馈,而大量未点击、快速滑过、短停留(例如小于 3 秒)的行为,长期被简单地视为"负样本"或被忽略。

这种处理方式在早期阶段是可行的,但随着推荐系统规模扩大,其问题逐渐显现:

一方面,快滑行为并不等价于用户明确不喜欢,它可能由内容质量、首帧吸引力、位置曝光、用户当下注意力状态等多种因素共同决定;另一方面,如果直接将这些行为作为普通负样本参与训练,会导致模型在梯度层面被大量噪声信号主导,从而损害整体推荐质量。

本文关注的核心问题是:
如何在序列推荐系统中显式地学习"用户不希望再看到什么内容",而不是仅通过正反馈的反面来间接推断?

论文提出了一种清晰的答案:将负反馈建模为一个独立、可优化的目标------not-to-recommend,并引入"响应性(responsiveness)"这一指标来衡量模型是否真正学会了对负反馈作出反应。


二、负反馈建模的整体思路概述

传统序列推荐模型的核心目标是最大化下一个正交互物料的预测概率,其隐含假设是:

只要学好正反馈,负反馈自然会被压低。

然而,这种假设在工业场景中并不成立。原因在于:

  • 负反馈并不是正反馈的对称事件
  • 快滑等行为包含大量不确定性
  • 模型从未被明确告知哪些内容不该推荐

本文的核心思想可以概括为一句话:
将负反馈从"训练噪声"提升为"显式监督信号",并直接优化模型不推荐这些内容的能力。


三、模型方法详解(核心)

3.1 序列推荐模型的基本结构

模型建立在标准的序列推荐框架之上。对于用户 \(u\),其历史交互序列为:

\\\mathcal{S}_u = \[i_1, i_2, \\dots, i_t \]

通过序列编码器(如 RNN、Transformer 或其变体)将其映射为用户当前状态向量:

\\\mathbf{h}_u = f(\\mathcal{S}_u) \\

每个候选物料 \(i\) 对应一个 embedding 向量 \(\mathbf{e}_i\)。

模型输出的是在当前状态下推荐某个物料的概率分布。


3.2 传统正反馈训练目标回顾

在只使用正反馈的情况下,模型通常优化如下目标:

\\\mathcal{L}_{pos} = -\\log P(i\^+ \\mid \\mathbf{h}_u) \\

其中:

\P(i \\mid \\mathbf{h}_u) = \\frac{\\exp(\\mathbf{h}_u\^\\top \\mathbf{e}_i)} {\\sum_{j \\in \\mathcal{I}} \\exp(\\mathbf{h}_u\^\\top \\mathbf{e}_j)} \\

在大规模物料库中,实际训练会使用 sampled softmax 或近似方法。

这种目标函数的本质是:
提升正样本的相对排序位置,而非显式压制某些内容。


3.3 负反馈的正式建模:Not-to-Recommend Loss

论文的关键创新在于:
为负反馈定义一个独立的训练目标,而不是把它们混入负采样集合中。

设用户在时刻 \(t\) 对物料 \(i^-\) 产生了负反馈(例如快滑、显式不感兴趣),目标不再是"把它排得低一些",而是:

\P(i\^- \\mid \\mathbf{h}_u) \\;\\text{应该尽可能小} \\

对应的损失函数定义为:

\\\mathcal{L}_{neg} = -\\log \\left(1 - P(i\^- \\mid \\mathbf{h}_u)\\right) \\

直观解释是:

  • 正反馈在"拉高"概率
  • 负反馈在"压低"概率
  • 两者在概率空间中形成明确的拉锯关系

最终的联合训练目标为:

\\\mathcal{L} = \\mathcal{L}_{pos} + \\lambda \\mathcal{L}_{neg} \\

其中 \(\lambda\) 是负反馈权重,用于控制其影响强度。


3.4 输入特征如何承载负反馈信息

需要强调的是:
"作为特征"与"作为监督信号"是两个不同层面的设计。

在工业系统中,快滑时长、是否秒退等信息通常会进入特征侧,影响用户状态建模;但如果仅停留在特征层,模型并不会被强制学习"不推荐"。

本文的方法中,负反馈既可以作为输入特征的一部分,也可以作为训练标签直接参与 loss 计算。这使得模型在参数更新阶段能够收到明确的反向梯度信号。


3.5 参数更新与梯度传播路径分析

考虑负反馈损失对参数的影响:

\\\frac{\\partial \\mathcal{L}_{neg}}{\\partial \\mathbf{h}_u} = \\frac{P(i\^- \\mid \\mathbf{h}_u)}{1 - P(i\^- \\mid \\mathbf{h}_u)} \\cdot \\mathbf{e}_{i\^-} \\

可以看到:

  • 当模型对负样本预测概率过高时,梯度会迅速放大
  • 梯度会同时更新
    • 用户序列编码器参数
    • 负样本物料 embedding

这意味着模型不仅"记住这个用户不喜欢什么",也会在 embedding 空间中主动拉开用户状态与该物料的距离。


四、为什么不能直接把快滑样本当作普通负样本

从建模角度看,直接把快滑样本视为负样本存在三个根本问题:

  1. 语义不确定性

    快滑不等价于不喜欢,噪声极高。

  2. 梯度主导问题

    快滑样本数量远超正样本,容易主导训练方向。

  3. 目标函数错位

    负采样的目标是"区分正负",而负反馈建模的目标是"不再推荐"。

本文通过 not-to-recommend loss 将"用户不想再看到"这一语义直接写入目标函数,从根本上解决了上述问题。


五、实验结果与工业验证要点

图 (a):引入显式负反馈建模后,用户点不喜欢的比例有没有变化

图 (b):减少不喜欢内容,会不会"过度保守",反而降低整体体验

实验表明,引入显式负反馈建模后:

  • 重复推荐相似内容的比例明显下降
  • 用户对已明确拒绝内容的再次曝光显著减少
  • 对整体点击率和观看时长无明显负面影响

这说明负反馈建模并不是与正反馈对立,而是对推荐目标的补充。


六、负反馈响应性的评估方法

论文提出"响应性"作为独立评估维度,用于衡量:

当用户给出负反馈后,模型是否真的减少了相关内容的推荐概率。

定义响应性(responsiveness),公式如图:直观解释,如果用户点了 dislike,后续推荐 应该远离当前内容,从而相似度应该显著下降,那么响应性就会越小。

观察实验结果

  • baseline:不使用负反馈建模
  • feature only:把 dislike / skip 当作输入特征,但不作为训练标签
  • feature + training labels:同时作为特征 + not-to-recommend 训练目标

发现,

  • baseline:几乎没有下降
  • feature only:有一定下降,但幅度有限
  • feature + training labels:相似内容下降 40%~60%
    该指标弥补了传统离线指标(如 AUC、NDCG)无法衡量"避免推荐"的不足,在工业场景中具有重要价值。

七、方法优缺点与适用场景

优点

  • 建模目标清晰
  • 与现有序列推荐框架高度兼容
  • 工程实现可控

局限性

  • 依赖负反馈信号质量
  • 权重 \(\lambda\) 需要精细调优

适用场景

  • 短视频
  • 信息流
  • 内容消费速度快、负反馈频繁的业务

八、总结与实践启示

快滑行为可以作为负反馈,但不应被粗暴地当作负样本 。

工业级推荐系统需要的不是更多负样本,而是更准确的负反馈语义建模。

本文的核心启示在于:
只有当模型被明确告知什么不该推荐,它才真正具备用户体验层面的智能。

相关推荐
paopaokaka_luck19 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
木井巳3 天前
【动态规划: 线性dp】解码方法
java·算法·leetcode·动态规划·推荐算法
paopaokaka_luck4 天前
智慧电玩店管理系统(空闲机台随机分配、游玩时长概率模拟、积分自动结算、积分兑换闭环、 ECharts经营分析、 腾讯地图选址)
java·人工智能·mysql·echarts·推荐算法
2301_32241428045 天前
基于SpringBoot+Vue的休闲零食超市管理系统的设计与实现59004-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·vue.js·spring boot·redis·mysql·决策树·推荐算法
阡陌数智8 天前
Anthropic Claude Fable 5.1 长周期 Agent 原生架构解析:工具调用链路稳定性与 API 聚合平台落地实战
人工智能·语言模型·自然语言处理·架构·推荐算法
2301_322414280410 天前
springboot学生课堂出勤统计系统15835-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·mysql·随机森林·微信小程序·uni-app·微信开发者工具·推荐算法
paopaokaka_luck11 天前
民宿管理系统 (AI民宿总结、协同过滤推荐算法、WebSocket 在线咨询、ECharts 经营分析、房态与结算联动、 民宿预订业务闭环)
java·人工智能·spring boot·websocket·数据分析·echarts·推荐算法
Hazenix12 天前
推荐系统如何从海量内容中找到候选?从漏斗架构到多路召回
搜索引擎·推荐算法
木井巳12 天前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
XMXFS13 天前
小红书推荐算法底层逻辑解析:用数据思维做内容优化
python·算法·新媒体运营·推荐算法