SaFRO: Satisfaction-Aware Fusion via Dual-Relative Policy Optimization for Short-Video Search

Renzhe Zhou, Songyang Li, Feiran Zhu, Chenglei Dai, Yi Zhang, Yi Wang, Jingwei Zhuo · Kuaishou · arXiv 2603.19585 · 发表 2026-07-31
15 分钟阅读时长 5758字 3.85综合分 第 6 名08-03 AI Search 日报
目录 · 9 节1它到底在解决什么问题?2整体框架:三块各管什么3满意度奖励:改搜、间隔和留存怎么合成一个分数4DRPO:给每个 query 的优势值整体加一个偏移5TRAF:让各目标的权重互相参考6实验:哪些结论站得住7我认为它的局限8一个推荐/搜索团队可以怎么试9一句话结论和评价
相关 4新颖 4实用 3证据 5时效 4

做搜索或推荐排序里多目标融合的人值得读,尤其是想把留存这类长期目标接进融合权重的团队。但要带着一个问题读:离线的满意度提升,有一大半是用自己的奖励模型给自己打分。论文要解决的是,短视频搜索的融合权重一直按点击、长播这些即时反馈来调,和用户是否真的满意对不上。核心思想一句话:用户看完结果后有没有马上改搜、隔多久再来搜、第二天还搜不搜,这三个信号合成一个满意度奖励,再用一种改造过的 GRPO 去学每个请求该用哪组融合权重。在快手 10% 搜索流量上跑了两个月,改搜率降了 0.319%,观看时长涨了 0.611%,次日留存相对基线的差距从 0 一路涨到约 0.06%。我认为满意度奖励的构造值得借鉴,但算法上的“双重相对优势”收益需要打折看。

它到底在解决什么问题?

先说多任务融合(MTF,Multi-Task Fusion)。排序模型通常先做多任务学习(MTL),同时预测点击率、长播率、观看时长、相关性等几个分数;MTF 再把这几个分数合成一个最终分,决定排序。论文沿用的融合公式是加权求和:

是第 个视频在第 个目标上的预测分,取对数是为了压平各目标的量纲差异; 是融合权重,要求加起来等于 1,并且每个都有上下界,避免某个目标被完全压掉。一个请求里所有候选视频共用同一组权重,但不同用户、不同 query 可以用不同的权重。所以要学的是一个策略:看到用户和 query,输出一组权重。

用一个示意场景说明两种权重的差别:用户搜“红烧肉做法”,候选里有一个 15 秒的爆款短视频和一个 8 分钟的完整教程。点击率权重高时,爆款排第一,用户点了、看完了,却没学会,于是改搜“红烧肉详细步骤”。观看时长权重高时,教程排第一,用户看完就走了,第二天又来搜别的菜。只看即时点击,前一种更好;看用户满不满意,后一种更好。

为什么不直接搬推荐里用强化学习(RL)调融合权重的做法?作者给了两个原因。一是搜索有明确意图和相关性约束,不能为了探索随便换内容。二是数据稀疏:在快手,搜索的正反馈密度约为推荐信息流的十分之一,搜索行为序列的长度短两个数量级。这说明搜索里很难把长期留存归因到某一次排序上,需要更贴近单次请求的满意度信号。

整体框架:三块各管什么

论文图 2:SaFRO 框架。左边是融合策略:用户、query、候选特征编码后输出各目标的 logits,经过任务关系矩阵修正再 softmax 成权重;右边是训练:采样多组权重、各自排出一个列表、用组合奖励打分,再用双重相对优势更新策略。
论文图 2:SaFRO 框架。左边是融合策略:用户、query、候选特征编码后输出各目标的 logits,经过任务关系矩阵修正再 softmax 成权重;右边是训练:采样多组权重、各自排出一个列表、用组合奖励打分,再用双重相对优势更新策略。
模块输入输出解决什么
满意度奖励模型query、用户特征和排出的列表0 到 1 的满意度分把稀疏的长期信号变成每个请求都有的奖励
DRPO(双重相对策略优化)一个 batch 里多个 query、每个 query 采样的多组权重策略梯度在稀疏反馈下稳定更新策略
TRAF(任务关系感知融合)策略网络的隐层和各目标的 logits修正后的权重让各目标的权重互相参考,而不是各自独立输出

策略网络很小,参数量 0.91M,线上推理 4.5 毫秒。下面按这三块拆开讲。

满意度奖励:改搜、间隔和留存怎么合成一个分数

作者从搜索日志里找了两个 query 级别的信号。一是改搜:看完当前结果后,用户马上发了一个语义相关的新 query,多半说明没找到想要的。二是会话间隔:当前 query 到用户下一次 query 的时间。间隔越短,通常说明用户越投入。论文图 3 显示,留存用户的改搜率更低、间隔更短。

间隔不能直接用,因为它和用户活跃度强相关:重度用户天然间隔短。作者先用每个用户自己历史间隔的 60% 分位数做归一化,得到 ,再做指数衰减。最终的满意度奖励是:

表示是否改搜, 表示第二天是否还搜索, 是控制衰减速度的温度,。前面那个乘数的意思是:只要改搜了,这次请求的满意度直接记 0。

手算一下(示意,取 )。用户这次的间隔正好等于他自己的 60% 分位数,,;第二天他还来搜,满意度是 。同一个用户如果间隔是平时的 3 倍,,第二天也没来,满意度只有约 0.02。如果他看完马上改搜,不管后面怎样都是 0。

这些信号只在日志里事后才有,排序时拿不到,所以作者训练了一个列表级的奖励模型 :输入 query 和排出的列表,预测这个列表会得到的满意度。训练目标是对这个满意度标签做回归。

的选择方式值得一提。作者把 从 0 扫到 1,算 分别和归一化间隔、留存的相关系数,两者相加在 时最高,约 1.45。这个标准天然偏向两边各占一半,因为 本来就是这两项的加权和。它能说明 0.5 不是拍脑袋定的,但说明不了 0.5 对线上留存最好。

DRPO:给每个 query 的优势值整体加一个偏移

先交代动作是什么。作者把每个权重的上下界区间切成若干档,所有档位的组合里,只保留权重和与 1 的偏差在容差内的那些,策略就是在这个可行组合集合上的一个类别分布。这和后文任务关系模块那一节“各目标 logit 经 softmax 得到权重”的说法前后不一致;一种合理的读法是网络的输出决定各个可行组合的概率,再从中采样,这是我的理解。GRPO 的做法是:对一个 query 从这个分布里采样 G 组权重,各排一个列表,算出奖励,再在组内减均值、除标准差得到优势值。作者认为只做组内比较有个问题:如果一个 query 本身就难,所有权重排出来都很差,组内最好的那组也会拿到正优势,被当成好动作强化。

DRPO(双重相对策略优化)的改法是再加一项“batch 内相对”的优势:

和 是第 个 query 组内奖励的均值和标准差, 和 是整个 batch 里各组均值的均值和标准差。第二项对同一个 query 的所有动作都一样。

手算一个示意:batch 里两个 query,各采样 3 组权重。A 是好 query,奖励 0.9、0.8、0.7;B 是难 query,奖励 0.4、0.3、0.2。两组的组内优势都是约 +1.22、0、−1.22。各组均值是 0.8 和 0.3,batch 均值 0.55,标准差 0.25,所以第二项 A 是 +1,B 是 −1。合起来,A 的三组是 +2.22、+1、−0.22,B 的三组是 +0.22、−1、−2.22。B 里最好的那组从 +1.22 降到只有 +0.22。

作者自己也证明了,加这一项不改变同一 query 内两组权重的优势差,只改变整个 query 的梯度大小。我想补一个角度:在策略梯度里,给同一状态的所有动作加同一个常数,相当于换了基线,期望梯度不变。这意味着第二项在期望上不提供新的方向信息,它实际起作用的是有限样本下的效果:好 query 上采样到的动作都被推高,策略变得更集中;难 query 上采样到的动作都被压低,概率流向没采样到的动作,相当于继续探索。所以 DRPO 更像是按 query 难度调节探索,而难不难很大程度取决于 query 本身,比如意图模糊的 query 换什么权重都难有高奖励,策略在这类 query 上会一直被推着探索。

组合奖励是三部分直接相加:即时参与奖励、满意度奖励、格式约束。即时参与奖励是一个 NDCG 式的排序分:用户点击过、长播过的视频排得越靠前,这一项越高。格式约束有两条:权重和偏离 1 超过容差扣 1 分;前 k 位里有相关性低于阈值的视频扣 2 分。后一条把搜索的相关性要求写成了硬性惩罚,这是搜索和推荐场景的一个实际区别。

TRAF:让各目标的权重互相参考

以往做法是策略网络直接给每个目标各输出一个 logit。TRAF(任务关系感知融合)把隐层投影成每个目标一个向量,两两做内积得到任务之间的关系分,再用下式修正每个目标的 logit:

是目标 原来的 logit, 是目标 和 的关系分, 是目标 自己的门控系数。第一项保留自己原来的 logit,第二项按关系分把所有目标的 logit 加权求和。修正后的 再经 softmax 得到权重。直观上,长播率权重升高时,时长权重往往也该跟着调,TRAF 让网络显式学这种联动。它只增加了 0.04M 参数,推理多 0.2 毫秒。

实验:哪些结论站得住

离线数据来自快手搜索,4 亿用户、8.06 亿视频、21.5 亿个会话,按 9:1 切分。指标有两类:四个目标各自的 NDCG@10,以及满意度分和留存率。主结果节选如下(论文表 1):

方法类型NDCG 平均满意度分留存
LambdaRank排序学习0.67430.74210.7112
CEM黑盒搜索权重0.64540.72060.6824
DDPG通用 RL0.68840.81320.7356
SAC通用 RL0.70040.83430.7865
AURO面向留存的 RL0.70400.84670.8026
SaFRO本文0.71020.86560.8173

先看能信的部分。NDCG 平均比最强的 AURO(一种面向留存优化的 RL 方法)高 0.0062,相对约 0.9%,四个目标都是 SaFRO 最高,这是用真实日志算的,比较可靠。

再看要打折的部分。满意度分是用 SaFRO 训练时当奖励的那个满意度模型打的,留存是用同一份数据训的模拟器预测的。这意味着离线的满意度和留存指标,衡量的是“各方法离这个奖励模型的偏好有多近”,SaFRO 直接优化这个模型,占优是意料之中的。消融结果把这一点暴露得很清楚:

论文图 6:去掉三个模块各自的影响。看右下两组柱子:去掉满意度奖励后满意度分从 0.8656 掉到 0.7221,而点击、时长的 NDCG 只降了一两个百分点。
论文图 6:去掉三个模块各自的影响。看右下两组柱子:去掉满意度奖励后满意度分从 0.8656 掉到 0.7221,而点击、时长的 NDCG 只降了一两个百分点。
变体点击 NDCG时长 NDCG相关性 NDCG满意度分留存
SaFRO 完整版0.64310.68710.70850.86560.8173
去掉满意度奖励0.63120.67280.70320.72210.7384
去掉 batch 内相对优势0.62870.66210.69910.84780.7952
去掉 TRAF0.62940.66980.71140.85150.8089

去掉满意度奖励,满意度分掉了 0.14,而 NDCG 只掉 0.01 左右,因为满意度分本来就是这个奖励模型打的。去掉 batch 内相对优势,各项都降了,但按上一节的分析它在期望上不改变梯度方向,论文又只报告了单次运行,这个差距有多少来自随机波动不好判断。去掉 TRAF 反而让相关性 NDCG 从 0.7085 升到 0.7114,说明 TRAF 的联动在用一点相关性换其他目标。

超参数实验里,组大小 从 2 加到 32,满意度分从 0.7912 涨到 0.8656,说明组内候选越多,比较越有效;但 NDCG 在 时最高,到 32 反而略降。熵系数 的影响呈倒 U 形:NDCG、满意度分和留存三项都在 时最高, 时留存掉到 0.7425。

线上实验最有说服力。10% 搜索流量跑两个月,对照组是一个按即时参与度优化的 DDPG(一种 Actor-Critic 强化学习算法)融合策略:

指标改搜率(越低越好)点击率长播率观看时长
SaFRO 相对基线−0.319%+0.136%+0.495%+0.611%
论文图 8:线上 A/B 里 SaFRO 相对基线的留存差距随天数变化。看橙线:7 日留存的差距从第 0 天接近 0 稳步爬到第 60 天约 0.06%,蓝线是波动更大的次日留存。
论文图 8:线上 A/B 里 SaFRO 相对基线的留存差距随天数变化。看橙线:7 日留存的差距从第 0 天接近 0 稳步爬到第 60 天约 0.06%,蓝线是波动更大的次日留存。

改搜率是奖励里直接惩罚的信号,它下降说明线上确实少了“没找到”的情况。留存差距随时间持续扩大而不是一上线就跳变,这和“满意度会累积成留存”的说法一致。

我认为它的局限

第一,离线评估是循环的。满意度分来自训练用的奖励模型,留存来自模拟器,两者都和 SaFRO 的优化目标高度重合。真正独立的证据只有 NDCG 和线上 A/B,而 NDCG 的领先只有约 0.9%。

第二,线上对照组偏弱。基线是按即时参与度优化的 DDPG,离线表里它比 AURO、RLUR(另一种面向留存的 RL 方法)都差不少,留存 0.7356 对 0.8026。线上没有和这类同样优化留存的方法比,所以分不清收益来自“加了满意度奖励”还是“来自 DRPO 和 TRAF”。图 8 的纵轴单位是百分比,约 0.06% 的留存差距放在 4 亿日活上不算小,但绝对幅度确实很小。

第三,batch 内相对优势的理论依据偏弱。如上一节所说,给同一 query 的所有动作加同一个常数不改变期望梯度。消融里它带来的约 0.02 留存提升只有一次运行,也没有换随机种子的方差。此外,会话间隔越短越好这个假设,在搜索里不总成立:快速发起一个无关的新 query 不算改搜,也会被当成满意。

一个推荐/搜索团队可以怎么试

  1. 先只做满意度奖励。把“改搜记 0、间隔按用户自身分位数归一化、次日是否回访”合成一个 query 级标签,看它和长期留存的相关性在自家数据上是否成立,再决定要不要训奖励模型。
  2. 离线评估时,满意度类指标用另一份独立数据或另一个模型来打,不要用训练奖励的那个模型,否则所有方法的比较都会偏向直接优化它的那个。
  3. 想试 DRPO 的 batch 项,先和纯 GRPO 各跑 3 到 5 个随机种子,比较均值和方差,再看收益是否显著。
  4. 线上对照组选当前最强的融合策略,至少跑满一个月,按天看留存差距的曲线,而不只看最后一天。

一句话结论和评价

这篇最值得借鉴的是:把“有没有马上改搜”当作满意度的一票否决,再用用户自身节奏归一化的间隔和次日回访补充,搜索里也能造出每个请求都有的长期奖励。

维度评价
问题重要性高。融合权重直接决定排序,搜索里长期满意度一直缺少可优化的信号
方法创新性中。满意度奖励的构造有新意;DRPO 的 batch 项和 TRAF 都是小改动
实验证据中。线上两个月 A/B 可信,但离线满意度和留存是自评,对照组偏弱
工程成本低。策略网络 0.91M 参数,推理 4.5 毫秒,主要成本在维护奖励模型
是否值得尝试值得试满意度奖励;DRPO 的 batch 项先做多种子对照再决定
适用场景短视频和内容搜索的多目标融合,以及其他有明确意图、反馈稀疏的排序场景

读完这篇,你觉得

点一下即可,无需登录;再点一次撤回。只统计匿名次数,不记录你是谁。

讨论

欢迎补充实验细节、复现经验或不同看法。需 GitHub 登录。

正在加载讨论…