Deconfounding Duration Bias in Watch-time Prediction for Video Recommendation
本文由 Obsidian 精读笔记同步;方法与因果结构图均采用论文原图。
一句话总结
D2Q 把视频时长视为同时影响历史曝光和观看时长的混杂因素,通过“按时长等频分组 → 把观看秒数转成组内分位数 → 共享模型预测分位数 → 组内逆 CDF 恢复秒数”,抑制历史系统对长视频的额外偏好,同时保留长视频天然具有更大观看时长上限这一合理效应。
0. 论文信息与阅读范围
| 项目 | 内容 |
|---|---|
| 标题 | Deconfounding Duration Bias in Watch-time Prediction for Video Recommendation |
| 中文译名 | 消除视频推荐观看时长预测中的视频时长偏差 |
| 作者 | Ruohan Zhan, Changhua Pei, Qiang Su, Jianfeng Wen, Xueliang Wang, Guanyu Mu, Dong Zheng, Peng Jiang |
| 机构 | 香港科技大学、快手科技 |
| 会议 | The 28th ACM SIGKDD Conference on Knowledge Discovery and Data Mining(KDD 2022) |
| 论文 | arXiv 页面 · PDF · ACM DOI |
| 代码 | MorganSQ/Ks-D2Q |
| 阅读范围 | 论文正文、附录、关键图表、官方复现仓库,以及前面对话中对方法的两轮解释 |
论文发表于 2022 年,场景是快手全屏单列短视频 Feed。与 YouTube 的“先点击再观看”不同,这种场景中的每条样本都已经被曝光,用户上滑即结束当前视频,因此 watch time 是一个天然的稠密反馈信号。
1. 先给结论
1.1 论文解决什么问题
短视频推荐通常以总观看时长作为重要优化目标,但原始 watch time 并不是纯粹的“兴趣标签”:
- 用户是否喜欢视频会影响观看时长;
- 视频本身有多长也会影响观看时长上限;
- 历史推荐系统为了提高总时长,又会更倾向曝光长视频;
- 长视频得到更多曝光和训练样本后,下一轮模型更容易继续高估长视频。
因此,模型可能学到“视频长,所以值得推荐”,而不是“用户喜欢,所以会看得久”。这会形成“长视频获得更多曝光 → 模型更偏长视频 → 长视频再次获得更多曝光”的反馈循环,损害个性化和内容时长多样性。
1.2 核心方法是什么
核心不是删除 duration 特征,而是重构监督信号:同一条观看记录不再用“看了多少秒”直接监督,而改为“在相似时长的视频里,这次观看处在什么分位”。这样,20 秒视频看了 16 秒可能是组内 90 分位,而 5 分钟视频看了 40 秒可能只有组内 50 分位;模型会更重视前者代表的相对观看意愿,而不是被绝对秒数牵着走。
1.3 最终效果
- 离线:在快手 13.47 亿条样本上,30 组 Res-D2Q 的 XGAUC 为 0.6693、MAE 为 26.5073,均优于 VR 和 WLR;XAUC 最好的配置其实是 20 组 Res-D2Q,为 0.7150。
- 在线:30 组 Res-D2Q 相对 VR 的 WatchTime 提升 +0.746%,高于 WLR 的 +0.184%,并已部署到快手 App。
- 论文价值:工业价值高、方法简单且可部署;但“因果消偏”的理论叙事强于实际识别力度,更准确的定位是受后门调整启发的时长分层与标签归一化方法。
1.4 是否值得精读、复现和迁移
| 维度 | 判断 |
|---|---|
| 精读价值 | 高。它把一个非常具体的工业反馈循环讲清楚,并给出低成本的解决方案。 |
| 复现价值 | 中等。算法本身容易复现,但论文数据不公开,官方代码也未覆盖完整数据处理与 Res-D2Q。 |
| 迁移价值 | 高。任何以连续时长、金额、停留时长为目标,且标签尺度受 item 属性强烈影响的系统都可借鉴。 |
| 因果可信度 | 中等偏低。因果图有启发,但工程近似不等于严格的 backdoor adjustment。 |
1.5 最应该记住的三点
- 不是消除时长变量,而是区分两类时长效应。 要压制的是 $D\to V\to W$ 的曝光偏差,保留的是 $D\to W$ 的自然影响。
- 真正起作用的是标签空间变化。 从绝对秒数变成组内百分位,使不同长度组共享近似同尺度的监督信号。
- 它是因果启发,不是严格因果估计。 论文的最终工程公式没有真的对所有时长 $d$ 做边缘化,也没有借助随机曝光或 propensity 来识别反事实效应。
2. 核心 Claim、证据与疑点
| Claim | 论文证据 | 主要疑点 | 我的判断 |
|---|---|---|---|
| 视频时长会造成 watch-time 预测偏差,并被反馈循环放大 | 图 2 显示 watch time 与 duration 强相关;图 3 显示 11 个月内曝光逐渐向长视频倾斜 | 相关性和曝光变化不能单独证明因果路径;绝对曝光值因保密被省略 | 问题高度真实,但因果方向主要来自业务机制与合理推断 |
| 按时长分组可缓解不同尺度样本间的干扰 | 表 2 中 10/20/30 组显著优于 1 组,图 6 呈先升后降 | 没有同等容量的其他归一化方法或随机曝光对照 | “分层 + 标签归一化有效”证据较强,“严格去除因果混杂”证据不足 |
| 组内分位数可在不同组之间共享参数 | D2Q 单模型优于 VR/WLR,模型规模不随组数线性增加 | 缺少“只分组不做 CDF”“全局 CDF”“只做比例播放”等关键消融 | 工程可扩展性成立,但收益来源没有被完全拆清 |
| Res-D2Q 的时长残差塔进一步提升效果 | 多数组数下 Res-D2Q 的 XGAUC 优于 D2Q | 30 组时 Res-D2Q 的 XAUC 反而略低于 D2Q;缺少残差塔单独消融 | 对用户内排序较有帮助,但不能说所有指标都稳定提升 |
| 方法能带来线上消费收益 | 24 小时 A/B 中 WatchTime +0.746%,显著优于 VR | 实验仅 24 小时;未报告长期多样性、创作者生态、时长分布变化 | 短期收益可信,长期去偏与生态收益仍未被证明 |
3. 为什么以前的方法不好
3.1 直接回归(VR, Value Regression)
VR 直接拟合真实观看秒数:
问题在于,秒数标签的尺度天然随视频时长变化。即使用户对一个 15 秒短视频非常喜欢并完整播放,它的标签仍然可能小于“对 5 分钟视频没那么喜欢但顺手看了 30 秒”的样本。MSE 又会让大数值误差产生更大梯度,因此长视频样本更容易主导训练。
3.2 WLR(Weighted Logistic Regression)
YouTube 式 WLR 把观看时长作为正样本权重,再用 learned odds 近似期望观看时长。它在“点击/未点击”场景有清楚的正负样本定义,但快手全屏 Feed 中每条视频都已被展示,没有天然的未点击样本。
论文因此把“观看时长是否超过全局 $q_{60}$ 分位数”作为二分类标签,正样本按 watch time 加权,负样本权重为 1。这个改造仍有两个问题:
- 长 watch-time 样本权重更大,继续放大时长尺度偏差;
- 一个全局 $q_{60}$ 阈值不能公平比较不同长度的视频。
离线表中 WLR 的 MAE 高达 65.6535,明显差于 VR 和 D2Q,说明它的数值校准尤其不适合这个场景。
3.3 “把 duration 当普通特征”不等于去偏
传统模型通常已经输入 duration,但模型只会利用观察数据中的相关性;它不会自动区分:
- $D\to W$:视频更长,用户可能自然看得更久;
- $D\to V\to W$:历史系统更偏向曝光长视频,使训练数据分布被策略污染。
因此,单纯加入 duration 甚至可能让模型更方便地学习“长视频 = 高 watch time”。
3.4 每个时长组训练一个独立模型也不理想
Naive-D2Q 可以为每个 duration group 训练独立的 $f_k$,但若有 $M$ 个组,就要维护 $M$ 套模型,模型体积、训练成本和线上部署复杂度都会线性增长;各组之间也无法共享用户兴趣模式。D2Q 的分位数标签正是为了解决“去分组干扰”和“共享参数”之间的矛盾。
4. 因果建模:到底要“消除”什么
4.1 变量与因果图
- $U$:用户表示,包括即时上下文、人口属性和历史行为;
- $V$:被曝光视频的表示,包括内容主题、作者、类别等;
- $D$:视频时长;
- $W$:实际观看时长。

论文原图 Figure 4:左图为视频时长的混杂效应,右图为切断 $D\to V$ 后的后门调整。来源:Zhan et al., KDD 2022。
从估计视频 $V$ 对观看时长 $W$ 的作用看,存在后门路径:
论文把 duration 称为 confounder,因为它同时影响视频曝光和结果。作者希望通过对 $U,V$ 做干预,切断进入 $V$ 的 $D\to V$ 边,但不切断 $D\to W$。
对“消除因果变量”的准确表述
论文不是把 $D$ 从输入、模型或推理中删掉,也不是让长短视频拥有相同预测值。它只想消除历史曝光造成的额外长视频偏好,而让真实时长上限继续进入预测。
4.2 观察分布与干预分布
普通监督学习拟合的是观察条件期望:
其中 $P(D\mid U,V)$ 已被历史推荐策略改变:对于某些用户和视频,训练样本中的时长分布并非自然产生,而是系统选出来的。
作者希望估计:
核心替换是:
这表示不再按照被历史曝光策略污染的条件时长分布加权,而按与具体曝光选择无关的边缘时长分布调整。
4.3 理论和工程实现之间的距离
如果严格执行上式,需要对所有可能的 $d$ 计算条件结果并按 $P(D=d)$ 加权。但论文的工程近似是:把 $D$ 离散成多个组,候选视频属于哪个组,就使用该组的映射:
因为只有一个 indicator 为 1,这不是在所有 $d$ 上做完整的边缘化,而是按候选视频的实际时长选择一个分层模型。因此它更像 causal-inspired stratification,而不是严格识别了 $do(U,V)$ 下的因果效应。
5. 方法总览与结构图

论文原图 Figure 5:Naive-D2Q、共享参数的 D2Q,以及加入 duration residual tower 的 Res-D2Q。来源:Zhan et al., KDD 2022。
整套方法可以压缩为四步:
- 时长等频分组:隔离不同 watch-time 尺度;
- 组内 CDF 归一化:把绝对秒数变成相对表现;
- 共享模型预测分位数:跨组共享兴趣模式,控制参数量;
- 逆 CDF 恢复秒数:把合理的时长尺度重新放回线上排序。
6. 方法逐步精读
6.1 Step 1:按时长分位点等频分组
视频时长近似连续,无法为每个精确时长建立单独模型。作者根据 duration quantile 把训练数据划分为 $M$ 个样本量近似相等、互不重叠的组:
等频而不是等宽的目的,是避免长尾时长区间中的组样本极少。组数 $M$ 控制偏差-方差权衡:
- $M$ 太小:组内仍混有很不相同的时长尺度,去偏不充分;
- $M$ 太大:每组样本不足,经验 CDF 估计噪声变大;
- 实验中 20~30 组最好,50~100 组开始退化。
分组本身的直觉是:不要让 300 秒视频的大标签、大残差和大梯度直接支配 15 秒视频的学习。
6.2 Step 2:为每个组估计 watch-time 经验 CDF
对第 $k$ 个时长组,统计观看时长的经验累积分布:
对样本 $i$,若 $d_i\in\mathcal D_{k_i}$,原始标签 $w_i$ 被转换成:
$z_i$ 的语义是“本次观看在同长度视频里处于什么百分位”,而不是“看了多少秒”。
| 样本 | 绝对观看时长 | 假设的组内分位数 | D2Q 的解释 |
|---|---|---|---|
| 20 秒视频看了 16 秒 | 16 秒 | 0.90 | 在短视频中表现很好,兴趣强 |
| 5 分钟视频看了 40 秒 | 40 秒 | 0.50 | 秒数更大,但在长视频中只属中等 |
如果组内 CDF 估计准确,根据概率积分变换,$Z_k=\Phi_k(W)$ 在每个组内近似服从 $Uniform(0,1)$。不同组的监督标签因此被拉到相同尺度,模型无法只靠“视频更长、标签更大”轻易降低 Loss。
6.3 Step 3:用共享模型预测组内分位数
D2Q 用单个共享网络 $h_\theta$ 接收用户、视频、时长和统计特征:
论文正文有时简写为 $h(u_i,v_i)$,但图 5、文字说明和附录都明确 duration 仍然是输入。共享模型学习跨时长组都成立的兴趣模式;每个组只保留不同的 CDF 查找表,不必部署 $M$ 个完整模型。
6.4 Loss:它不是传统 quantile regression
D2Q 的核心损失是对转换后的组内分位数做 MSE:
需要特别区分:虽然论文名中有 Quantile-based,它不是用 pinball loss 学习某个条件分位点的经典 quantile regression。它先用经验 CDF 把每条真实 watch time 映射为 percentile label,再用普通 MSE 回归这个 percentile。
输出端使用 sigmoid,将 $q_i$ 限制在 $[0,1]$,与 CDF 标签的值域一致。
6.5 Step 4:为什么模型仍然输入 duration
去偏不等于隐藏 duration。原因有三点:
- 要保留 $D\to W$ 的真实效应;
- 不同 duration group 的用户与内容分布可能不同,模型需要知道样本所处的时长区域;
- 推理时必须由 duration 选择对应的 CDF 和逆 CDF。
如果完全移除 duration,模型反而无法区分“相同分位数在不同长度组里对应多少秒”。
6.6 D2Q、Naive-D2Q 与 Res-D2Q 的区别
结构图说明:Naive-D2Q、D2Q 与 Res-D2Q 的论文原始结构图见上文 Figure 5。
- Naive-D2Q:每个时长组单独建模,去组间干扰但不具备工业可扩展性。
- D2Q:所有组共享一个模型,分组差异由输入 duration 与每组 CDF 体现。
- Res-D2Q:增加单独的 duration adjustment tower,在最后一层以残差方式修正共享表示,使网络更容易表达不同长度组的系统性差异。
6.7 论文给出的网络细节
附录 B 给出的实验网络为:
- dense 输入投影为 32 维;
- ID / 类别特征 embedding 汇总为 512 维;
- duration embedding 为 32 维;
- 拼接后得到 576 维,再投影到 512 维;
- 主 MLP 隐层为 $[256,128,64]$,激活函数为 Swish;
- D2Q / Res-D2Q 输出使用 sigmoid;VR 直接输出实数;
- 论文附录写 mini-batch size 为 512。
官方仓库里的示例代码设置 batch size 为 256,且主要展示 D2Q 主干;这与论文附录并不完全一致,是复现时需要注意的地方。
7. 训练与推理流程
7.1 训练流程
输入训练样本 ${(u_i,v_i,d_i,w_i)}_{i=1}^n$:
- 计算所有视频时长的经验分位点;
- 按 duration 将样本等频划分为 $M$ 组;
- 对每组 watch time 构建经验 CDF $\widehat\Phi_k$;
- 将每个原始标签 $w_i$ 转换成 $z_i=\widehat\Phi_{k_i}(w_i)$;
- 用全部组的数据共同训练共享模型 $h_\theta$,最小化分位数 MSE;
- 保存模型参数、duration 分组边界和每组经验 CDF / quantile lookup table。
7.2 推理流程
对候选 $(u_0,v_0,d_0)$:
- 根据 $d_0$ 找到时长组 $\mathcal D_{k_0}$;
- 模型输出组内分位数:
- 用该组逆 CDF 恢复观看秒数:
- 将 $\widehat w_0$ 送入后续排序,预测值更高的候选更容易获得曝光。
逆 CDF 是保留合理时长效应的关键。相同的 0.8 分位,在 15 秒组可能映射为 12 秒,在 300 秒组可能映射为 80 秒;D2Q 没有强迫长短视频同分,而是先公平判断“组内表现”,再恢复真实秒数尺度。
7.3 线上必须维护的状态
除了模型参数,服务还要维护:
- duration 分组边界;
- 每个组的 watch-time CDF / inverse CDF;
- CDF 的刷新周期与版本一致性;
- 新视频、极端时长和分布漂移时的兜底逻辑。
论文没有详细讨论这些工程细节,但它们会直接影响线上稳定性。若模型版本和 CDF 版本不一致,分位数到秒数的映射可能系统性偏移。
8. 实验精读
8.1 数据集
离线数据来自快手生产推荐系统:
| 用户 | 视频(Photos) | 类别 | 总样本 |
|---|---|---|---|
| 47,298,353 | 15,187,170 | 5,942 | 1,346,539,657 |
- 训练集:1,211,885,691 条;
- 测试集:134,653,965 条;
- 场景:全屏单列 Feed,每条样本都实际曝光;
- $W$:用户停留到上滑的观看时长;
- Figure 2 的统计来自超过 200 亿量级的样本,显示 duration 与 watch time 强相关;
- Figure 3 展示 11 个月内不同 duration group 的曝光变化,长视频组整体上升、短视频组整体下降。
数据规模很强,但数据不公开,读者无法审查切分方式、重复曝光、用户泄漏、时间穿越和分布漂移。
8.2 Baseline
- VR:直接用 MSE 回归 watch time;
- WLR:适配全屏 Feed 的加权逻辑回归;
- D2Q:共享网络预测组内分位数;
- Res-D2Q:在 D2Q 上增加 duration residual tower。
所有方法使用相同输入特征和大体一致的主干结构,这是公平性上的优点。但 baseline 只有 VR 与 WLR,无法排除“任何合理的按时长归一化都能获得相近收益”。
8.3 指标
- MAE:预测秒数与真实秒数的平均绝对误差,越小越好;
- XAUC:随机采样两个样本,预测顺序与真实 watch time 顺序一致则记 1,越大越好;
- XGAUC:先按用户计算 XAUC,再按用户样本量加权,越大越好。
排序系统更看重 XAUC / XGAUC,因为候选最终按预测值排序;MAE 主要反映绝对校准。
8.4 完整离线结果(Table 2)
| #Groups | 方法 | XAUC ↑ | XGAUC ↑ | MAE ↓ |
|---|---|---|---|---|
| 1 | VR | 0.6843 | 0.6380 | 28.2413 |
| 1 | WLR | 0.6940 | 0.6436 | 65.6535 |
| 1 | D2Q | 0.7084 | 0.6562 | 36.4871 |
| 10 | D2Q | 0.7092 | 0.6579 | 26.8684 |
| 10 | Res-D2Q | 0.7108 | 0.6604 | 26.6686 |
| 20 | D2Q | 0.7147 | 0.6654 | 26.5993 |
| 20 | Res-D2Q | 0.7150 | 0.6679 | 26.5530 |
| 30 | D2Q | 0.7148 | 0.6660 | 26.5227 |
| 30 | Res-D2Q | 0.7145 | 0.6693 | 26.5073 |
| 50 | D2Q | 0.7142 | 0.6619 | 26.8047 |
| 50 | Res-D2Q | 0.7141 | 0.6643 | 27.1260 |
| 100 | D2Q | 0.7119 | 0.6608 | 26.8277 |
| 100 | Res-D2Q | 0.7125 | 0.6637 | 26.7297 |
结果怎么读
- 分组后,D2Q/Res-D2Q 的排序指标明显超过 VR 和 WLR,支持“按时长分层建模有效”;
- 组数从 1 增加到 20/30 时性能上升,继续增至 50/100 后下降,符合“去偏收益 vs CDF 估计方差”的解释;
- Res-D2Q 多数情况下提升 XGAUC,说明 duration residual tower 对用户内排序有帮助;
- 必须纠正论文/二手总结中的一个细节:离线 XAUC 的全表最高点是 20 组 Res-D2Q 的 0.7150,不是 30 组;30 组取得的是最佳 XGAUC 与 MAE;
- 30 组时 D2Q 的 XAUC 0.7148 还略高于 Res-D2Q 的 0.7145,因此“Res-D2Q 全面优于 D2Q”并不准确。
8.5 在线 A/B(Table 3)
实验在快手 App 运行 24 小时。平台把用户随机分到 5%、5%、5%、85% 的流量桶,前三个桶用于 VR、WLR 和 Res-D2Q 对照;论文称 5% 流量覆盖超过 1500 万用户。
| 方法(相对 VR) | WatchTime | Like | Follow | Share | Comment |
|---|---|---|---|---|---|
| WLR | +0.184% | +1.012% | +0.214% | +0.959% | -0.137% |
| Res-D2Q(30 组) | +0.746% | +0.251% | -0.167% | -0.861% | +0.271% |
论文按其 95% 置信区间判定:
- WLR 和 Res-D2Q 的 WatchTime 都相对 VR 显著提升;
- Res-D2Q 的提升幅度更大,约是 WLR 增量的 4 倍;
- 对 Res-D2Q 而言,Like / Follow / Share / Comment 的变化均不显著,因此没有证据表明主要互动指标受到稳定伤害;
- 方法后来已部署到快手线上系统。
8.6 实验能证明什么,不能证明什么
可以较有把握地相信:
- 在这份快手数据和该网络配置下,分 duration group 后使用组内 CDF 标签能改善 watch-time 排序与校准;
- 20~30 个等频组是当时数据规模下较好的工程点;
- 线上短期 WatchTime 收益真实存在,且没有观察到 Res-D2Q 对四项约束指标的显著负向影响。
暂时不能据此相信:
- D2Q 已严格识别并消除了 $D\to V$ 的因果效应;
- 曝光时长分布、内容多样性和创作者生态会长期改善;
- 同一组数和 CDF 更新策略可直接迁移到其他产品;
- 收益必然来自因果调整,而不是更一般的 target normalization、梯度均衡或更强的 duration feature engineering。
9. 创新点:本质是什么
9.1 创新点列表
- 首次系统化描述 watch-time prediction 中的 duration bias,并用快手长期曝光数据展示反馈循环;
- 用因果图拆开两类时长作用:曝光偏差应去除,自然观看上限应保留;
- 按 duration quantile 等频分组,减少不同标签尺度之间的训练干扰;
- 把绝对 watch time 变成组内 percentile label,让所有组可共享一套模型;
- 用 inverse CDF 恢复秒数,兼顾去偏和现有按期望观看时长排序的链路;
- Res-D2Q 的 duration residual tower,以较小结构成本补充不同组的系统性差异。
9.2 底层范式判断
这篇论文最核心的创新不是网络结构,而是:
训练目标 / 标签空间变化 + 分层归一化 + 因果叙事。
Res-D2Q 的残差塔属于增量结构优化;真正使问题变得可解、可共享参数的是组内 CDF 标签。
10. 批判性判断
10.1 论文最强的地方
- 问题来自真实工业反馈循环,不是为了引出模块而构造;
- 方案非常克制:不重建排序系统,只改变 label、增加查表和一个轻量时长塔;
- 数据规模大,并且同时给出离线与线上证据;
- “先转到组内相对质量、再恢复原值域”的思想可迁移到很多连续目标任务。
10.2 最大疑点:因果 claim 比工程实现更强
严格 backdoor adjustment 应对 $D$ 做边缘化:
但 D2Q 实际按候选的真实 $d$ 只选择一个 duration group,没有跨所有 $d$ 计算同一 $(U,V)$ 的潜在结果;也没有使用 propensity score、随机曝光数据或反事实标签。因此,实验更直接证明的是“时长分层归一化有效”,而不是“指定的因果边已被识别并删除”。
10.3 更简单的替代解释
作者把提升主要归因于 duration deconfounding,但至少还有三种替代机制:
- 梯度均衡:CDF 把大 watch-time 压缩到 $[0,1]$,减少长视频大残差支配训练;
- 目标分布高斯化/均匀化式处理:percentile transform 降低了长尾回归难度;
- 分段校准:每组 inverse CDF 等价于对不同 duration range 做独立的非参数校准。
这些机制同样可以解释离线与线上提升。论文缺少足够消融来区分它们。
10.4 实验设计缺口
- 只有 VR、WLR 两个主要 baseline,缺少 play ratio、全局 CDF、log-watch-time、Huber loss、按时长加权等简单强对照;
- 缺少“仅分组”“仅 percentile transform”“仅 residual tower”的拆分消融;
- 没报告各时长桶的误差、曝光量和校准变化,反而没有直接展示“偏差被消除到什么程度”;
- 没有随机曝光或反事实 ground truth;
- 在线实验只有 24 小时,无法观察反馈循环的长期反转、用户留存和创作者生态;
- 约束指标只覆盖 Like / Follow / Share / Comment,没有报告内容时长分布、多样性、完播率与满意度。
10.5 可能失效的场景
- 组内样本不足:CDF 抖动,逆映射不稳定;
- 时长与内容类型高度绑定:例如长视频几乎全是剧情、短视频几乎全是段子,仅按时长分组仍残留内容混杂;
- 大量完整播放造成右删失:完整播放只说明潜在想看时长不低于视频时长,不代表所有完播都是同等兴趣;
- 分布快速漂移:新内容形态出现后,旧 CDF 会失效;
- 极端时长或新视频冷启动:落入边界组但缺少可靠分布;
- 目标不是单纯 watch time:若线上同时优化满意度、生态、留存,恢复后的秒数仍可能天然偏向长视频。
10.6 我愿意相信到什么程度
我愿意相信
在超大规模全屏短视频 Feed 中,直接回归秒数会受到 duration 相关标签尺度和曝光分布的干扰;按时长等频分组并预测组内 percentile 是一种高性价比、可上线的改善方案。
我暂时不愿意相信
D2Q 已经从观测数据中严格分离出“真实兴趣”和“时长混杂”,或能够从根本上解决推荐系统对长视频的长期生态偏好。
11. 复现建议
11.1 最小复现目标
先不要一上来复现完整 Res-D2Q,建议按以下顺序:
- VR:直接回归秒数;
- Global-CDF:全量数据统一做 percentile transform;
- D2Q:按 duration 等频分组后做组内 CDF;
- D2Q + duration input;
- Res-D2Q:增加 duration residual tower。
这样才能回答收益来自“通用标签压缩”还是“按时长分组”。
11.2 必须准备的数据
- 用户、视频、曝光时间;
- 实际 watch time;
- 视频 duration;
- 排序阶段可用的用户/视频/上下文特征;
- 最好有 request 或 session 标识,用于严格按时间切分与防泄漏;
- 若要验证因果 claim,最好保留随机流量或探索流量。
11.3 关键实现细节
- CDF 必须只用训练窗口估计,不能读到测试期或未来信息;
- duration 分组边界与 CDF 需要版本化;
- 明确经验 CDF 对 ties 的处理方式;
- inverse CDF 要定义插值、越界和空桶兜底;
- 训练/推理必须使用相同分组边界和 CDF 版本;
- 对每个 duration bucket 同时监控样本量、MAE、校准、曝光占比和真实消费。
11.4 复现可信度问题
官方仓库只含精简的 main.py、metrics.py 和 README:
- 不含快手原始数据;
- 不含完整的 CDF 构造和 inverse-CDF 服务链路;
- 没有完整展示论文中的 Res-D2Q;
- 代码 batch size 与论文附录不同;
- 无法一键得到论文表 2 的全部配置。
因此更准确的说法是“提供了核心网络示例”,不是“完整可复现实验包”。
12. 迁移到快手或类似业务的建议
12.1 可直接迁移的部分
- 对 watch time、dwell time 等连续标签做分桶内 percentile transform;
- 把影响标签尺度的 item 属性作为分层变量;
- 用共享主干 + 小型 adjustment tower 表达不同分层;
- 推理阶段用分层 inverse CDF 恢复原业务量纲。
12.2 不应直接照搬的部分
- 组数固定为 30:应由样本规模、分布稳定性和离线/线上曲线共同确定;
- 只按 duration 一维分组:若内容类型与时长高度耦合,可考虑 duration × content-type 的分层或条件校准;
- 继续只按恢复后的预测秒数单目标排序:仍需与满意度、完播质量、负反馈、长期留存和生态目标联合;
- 把 percentile 直接等价为兴趣:完整播放、后台播放、误触停留等都会破坏这个解释。
12.3 推荐 MVP
- 在现有 VR 模型旁路增加 label preprocessing,不先改主干;
- 尝试 $M\in{10,20,30,50}$;
- 加入 global-CDF、play ratio、log1p(watch time) 作为对照;
- 离线除了整体 XAUC/XGAUC/MAE,必须看分 duration bucket 的指标;
- 小流量 A/B 同时监控 WatchTime、session depth、负反馈、内容时长分布与创作者覆盖;
- 至少运行 1~2 周,观察新的曝光反馈循环是否又改变 CDF。
12.4 更广泛的迁移
这个范式适用于“标签绝对值受某个天然上限或尺度变量影响”的任务,例如:
- 直播观看时长按直播间剩余时长/总时长分层;
- 商品 GMV 按价格带分层;
- 音频收听时长按节目长度分层;
- 阅读停留时长按文章长度分层;
- 广告停留/转化价值按广告形态或价格带分层。
但分层变量既可能是合理尺度,也可能是策略造成的代理变量,迁移前仍需画清因果图。
13. 最终评分与结论
| 维度 | 评分 | 理由 |
|---|---|---|
| 创新性 | 4.0 / 5 | 因果视角 + 分位数标签组合新颖,网络结构本身不复杂 |
| 证据强度 | 3.5 / 5 | 超大离线数据和线上 A/B 很强,但因果识别与消融不足 |
| 可复现性 | 2.5 / 5 | 算法简单、有代码,但数据和关键预处理链路缺失 |
| 工业迁移价值 | 4.5 / 5 | 改造成本低,适合已有连续目标排序系统 |
| 因果严谨性 | 2.5 / 5 | 后门叙事合理,工程公式并非严格 backdoor marginalization |
最终判断
这是一篇非常值得工业推荐算法同学精读并做离线实验的论文。最值得借鉴的不是“用了因果图”或“加了残差塔”,而是把绝对 watch time 改造成同长度视频内的相对表现,再用 inverse CDF 接回原排序链路。它证明了这个工程方案有效,但没有完全证明自己真正识别并消除了 duration 的因果混杂。
建议动作:值得精读 → 值得做带强对照的离线实验 → 通过分桶指标后再做小流量、长周期线上实验。
14. 后续值得补读
- Uncovering User Interest from Biased and Noised Watch Time in Video Recommendation(D²Co, 2023):进一步把 duration bias 与 noisy watching 一起建模。
- Counteracting Duration Bias in Video Recommendation via Counterfactual Watch Time(CWM, KDD 2024):从潜在观看时长和右删失角度重新解释完播样本,对 D2Q 类分组归一化方法的“完播即高兴趣”问题提出批评。