本文由 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 最应该记住的三点

  1. 不是消除时长变量,而是区分两类时长效应。 要压制的是 $D\to V\to W$ 的曝光偏差,保留的是 $D\to W$ 的自然影响。
  2. 真正起作用的是标签空间变化。 从绝对秒数变成组内百分位,使不同长度组共享近似同尺度的监督信号。
  3. 它是因果启发,不是严格因果估计。 论文的最终工程公式没有真的对所有时长 $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 直接拟合真实观看秒数:

$$ \mathcal L_{VR}=\frac{1}{n}\sum_i(\hat w_i-w_i)^2. $$

问题在于,秒数标签的尺度天然随视频时长变化。即使用户对一个 15 秒短视频非常喜欢并完整播放,它的标签仍然可能小于“对 5 分钟视频没那么喜欢但顺手看了 30 秒”的样本。MSE 又会让大数值误差产生更大梯度,因此长视频样本更容易主导训练。

3.2 WLR(Weighted Logistic Regression)

YouTube 式 WLR 把观看时长作为正样本权重,再用 learned odds 近似期望观看时长。它在“点击/未点击”场景有清楚的正负样本定义,但快手全屏 Feed 中每条视频都已被展示,没有天然的未点击样本。

论文因此把“观看时长是否超过全局 $q_{60}$ 分位数”作为二分类标签,正样本按 watch time 加权,负样本权重为 1。这个改造仍有两个问题:

  1. 长 watch-time 样本权重更大,继续放大时长尺度偏差;
  2. 一个全局 $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:观看时长预测的因果图与后门调整

论文原图 Figure 4:左图为视频时长的混杂效应,右图为切断 $D\to V$ 后的后门调整。来源:Zhan et al., KDD 2022

从估计视频 $V$ 对观看时长 $W$ 的作用看,存在后门路径:

$$ V\leftarrow D\rightarrow W. $$

论文把 duration 称为 confounder,因为它同时影响视频曝光和结果。作者希望通过对 $U,V$ 做干预,切断进入 $V$ 的 $D\to V$ 边,但不切断 $D\to W$。

对“消除因果变量”的准确表述
论文不是把 $D$ 从输入、模型或推理中删掉,也不是让长短视频拥有相同预测值。它只想消除历史曝光造成的额外长视频偏好,而让真实时长上限继续进入预测。

4.2 观察分布与干预分布

普通监督学习拟合的是观察条件期望:

$$ \mathbb E[W\mid U,V] =\sum_d P(D=d\mid U,V)\,\mathbb E[W\mid U,V,D=d]. $$

其中 $P(D\mid U,V)$ 已被历史推荐策略改变:对于某些用户和视频,训练样本中的时长分布并非自然产生,而是系统选出来的。

作者希望估计:

$$ \begin{aligned} \mathbb E[W\mid do(U,V)] &=\sum_d P(D=d)\,\mathbb E[W\mid U,V,D=d]. \end{aligned} $$

核心替换是:

$$ \boxed{P(D\mid U,V)\longrightarrow P(D)}. $$

这表示不再按照被历史曝光策略污染的条件时长分布加权,而按与具体曝光选择无关的边缘时长分布调整。

4.3 理论和工程实现之间的距离

如果严格执行上式,需要对所有可能的 $d$ 计算条件结果并按 $P(D=d)$ 加权。但论文的工程近似是:把 $D$ 离散成多个组,候选视频属于哪个组,就使用该组的映射:

$$ \mathbb E[W\mid do(U,V)] \approx \sum_{k=1}^{M}\mathbf 1\{d\in\mathcal D_k\} \mathbb E[W\mid U,V,D\in\mathcal D_k]. $$

因为只有一个 indicator 为 1,这不是在所有 $d$ 上做完整的边缘化,而是按候选视频的实际时长选择一个分层模型。因此它更像 causal-inspired stratification,而不是严格识别了 $do(U,V)$ 下的因果效应。


5. 方法总览与结构图

论文原图 Figure 5:Naive-D2Q、D2Q 与 Res-D2Q 模型结构

论文原图 Figure 5:Naive-D2Q、共享参数的 D2Q,以及加入 duration residual tower 的 Res-D2Q。来源:Zhan et al., KDD 2022

整套方法可以压缩为四步:

  1. 时长等频分组:隔离不同 watch-time 尺度;
  2. 组内 CDF 归一化:把绝对秒数变成相对表现;
  3. 共享模型预测分位数:跨组共享兴趣模式,控制参数量;
  4. 逆 CDF 恢复秒数:把合理的时长尺度重新放回线上排序。

6. 方法逐步精读

6.1 Step 1:按时长分位点等频分组

视频时长近似连续,无法为每个精确时长建立单独模型。作者根据 duration quantile 把训练数据划分为 $M$ 个样本量近似相等、互不重叠的组:

$$ \{\mathcal D_1,\mathcal D_2,\ldots,\mathcal D_M\}. $$

等频而不是等宽的目的,是避免长尾时长区间中的组样本极少。组数 $M$ 控制偏差-方差权衡:

  • $M$ 太小:组内仍混有很不相同的时长尺度,去偏不充分;
  • $M$ 太大:每组样本不足,经验 CDF 估计噪声变大;
  • 实验中 20~30 组最好,50~100 组开始退化。

分组本身的直觉是:不要让 300 秒视频的大标签、大残差和大梯度直接支配 15 秒视频的学习。

6.2 Step 2:为每个组估计 watch-time 经验 CDF

对第 $k$ 个时长组,统计观看时长的经验累积分布:

$$ \widehat\Phi_k(w) =P(W\le w\mid D\in\mathcal D_k) \approx\frac{1}{N_k}\sum_{j:d_j\in\mathcal D_k}\mathbf 1(w_j\le w). $$

对样本 $i$,若 $d_i\in\mathcal D_{k_i}$,原始标签 $w_i$ 被转换成:

$$ z_i=\widehat\Phi_{k_i}(w_i)\in[0,1]. $$

$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$ 接收用户、视频、时长和统计特征:

$$ q_i=h_\theta(u_i,v_i,d_i). $$

论文正文有时简写为 $h(u_i,v_i)$,但图 5、文字说明和附录都明确 duration 仍然是输入。共享模型学习跨时长组都成立的兴趣模式;每个组只保留不同的 CDF 查找表,不必部署 $M$ 个完整模型。

6.4 Loss:它不是传统 quantile regression

D2Q 的核心损失是对转换后的组内分位数做 MSE:

$$ \boxed{ \mathcal L_{D2Q} =\frac{1}{n}\sum_{i=1}^{n} \left[h_\theta(u_i,v_i,d_i)-\widehat\Phi_{k_i}(w_i)\right]^2 } $$

需要特别区分:虽然论文名中有 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。原因有三点:

  1. 要保留 $D\to W$ 的真实效应;
  2. 不同 duration group 的用户与内容分布可能不同,模型需要知道样本所处的时长区域;
  3. 推理时必须由 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$:

  1. 计算所有视频时长的经验分位点;
  2. 按 duration 将样本等频划分为 $M$ 组;
  3. 对每组 watch time 构建经验 CDF $\widehat\Phi_k$;
  4. 将每个原始标签 $w_i$ 转换成 $z_i=\widehat\Phi_{k_i}(w_i)$;
  5. 用全部组的数据共同训练共享模型 $h_\theta$,最小化分位数 MSE;
  6. 保存模型参数、duration 分组边界和每组经验 CDF / quantile lookup table。

7.2 推理流程

对候选 $(u_0,v_0,d_0)$:

  1. 根据 $d_0$ 找到时长组 $\mathcal D_{k_0}$;
  2. 模型输出组内分位数:
$$ q_0=h_\theta(u_0,v_0,d_0); $$
  1. 用该组逆 CDF 恢复观看秒数:
$$ \boxed{ \widehat w_0=\widehat\Phi_{k_0}^{-1}(q_0) } $$
  1. 将 $\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 指标

  1. MAE:预测秒数与真实秒数的平均绝对误差,越小越好;
  2. XAUC:随机采样两个样本,预测顺序与真实 watch time 顺序一致则记 1,越大越好;
  3. 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 实验能证明什么,不能证明什么

可以较有把握地相信:

  1. 在这份快手数据和该网络配置下,分 duration group 后使用组内 CDF 标签能改善 watch-time 排序与校准;
  2. 20~30 个等频组是当时数据规模下较好的工程点;
  3. 线上短期 WatchTime 收益真实存在,且没有观察到 Res-D2Q 对四项约束指标的显著负向影响。

暂时不能据此相信:

  1. D2Q 已严格识别并消除了 $D\to V$ 的因果效应;
  2. 曝光时长分布、内容多样性和创作者生态会长期改善;
  3. 同一组数和 CDF 更新策略可直接迁移到其他产品;
  4. 收益必然来自因果调整,而不是更一般的 target normalization、梯度均衡或更强的 duration feature engineering。

9. 创新点:本质是什么

9.1 创新点列表

  1. 首次系统化描述 watch-time prediction 中的 duration bias,并用快手长期曝光数据展示反馈循环;
  2. 用因果图拆开两类时长作用:曝光偏差应去除,自然观看上限应保留;
  3. 按 duration quantile 等频分组,减少不同标签尺度之间的训练干扰;
  4. 把绝对 watch time 变成组内 percentile label,让所有组可共享一套模型;
  5. 用 inverse CDF 恢复秒数,兼顾去偏和现有按期望观看时长排序的链路;
  6. Res-D2Q 的 duration residual tower,以较小结构成本补充不同组的系统性差异。

9.2 底层范式判断

这篇论文最核心的创新不是网络结构,而是:

训练目标 / 标签空间变化 + 分层归一化 + 因果叙事。

Res-D2Q 的残差塔属于增量结构优化;真正使问题变得可解、可共享参数的是组内 CDF 标签。


10. 批判性判断

10.1 论文最强的地方

  • 问题来自真实工业反馈循环,不是为了引出模块而构造;
  • 方案非常克制:不重建排序系统,只改变 label、增加查表和一个轻量时长塔;
  • 数据规模大,并且同时给出离线与线上证据;
  • “先转到组内相对质量、再恢复原值域”的思想可迁移到很多连续目标任务。

10.2 最大疑点:因果 claim 比工程实现更强

严格 backdoor adjustment 应对 $D$ 做边缘化:

$$ \sum_d P(D=d)\mathbb E[W\mid U,V,D=d]. $$

但 D2Q 实际按候选的真实 $d$ 只选择一个 duration group,没有跨所有 $d$ 计算同一 $(U,V)$ 的潜在结果;也没有使用 propensity score、随机曝光数据或反事实标签。因此,实验更直接证明的是“时长分层归一化有效”,而不是“指定的因果边已被识别并删除”。

10.3 更简单的替代解释

作者把提升主要归因于 duration deconfounding,但至少还有三种替代机制:

  1. 梯度均衡:CDF 把大 watch-time 压缩到 $[0,1]$,减少长视频大残差支配训练;
  2. 目标分布高斯化/均匀化式处理:percentile transform 降低了长尾回归难度;
  3. 分段校准:每组 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 可能失效的场景

  1. 组内样本不足:CDF 抖动,逆映射不稳定;
  2. 时长与内容类型高度绑定:例如长视频几乎全是剧情、短视频几乎全是段子,仅按时长分组仍残留内容混杂;
  3. 大量完整播放造成右删失:完整播放只说明潜在想看时长不低于视频时长,不代表所有完播都是同等兴趣;
  4. 分布快速漂移:新内容形态出现后,旧 CDF 会失效;
  5. 极端时长或新视频冷启动:落入边界组但缺少可靠分布;
  6. 目标不是单纯 watch time:若线上同时优化满意度、生态、留存,恢复后的秒数仍可能天然偏向长视频。

10.6 我愿意相信到什么程度

我愿意相信
在超大规模全屏短视频 Feed 中,直接回归秒数会受到 duration 相关标签尺度和曝光分布的干扰;按时长等频分组并预测组内 percentile 是一种高性价比、可上线的改善方案。

我暂时不愿意相信
D2Q 已经从观测数据中严格分离出“真实兴趣”和“时长混杂”,或能够从根本上解决推荐系统对长视频的长期生态偏好。


11. 复现建议

11.1 最小复现目标

先不要一上来复现完整 Res-D2Q,建议按以下顺序:

  1. VR:直接回归秒数;
  2. Global-CDF:全量数据统一做 percentile transform;
  3. D2Q:按 duration 等频分组后做组内 CDF;
  4. D2Q + duration input;
  5. 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.pymetrics.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

  1. 在现有 VR 模型旁路增加 label preprocessing,不先改主干;
  2. 尝试 $M\in{10,20,30,50}$;
  3. 加入 global-CDF、play ratio、log1p(watch time) 作为对照;
  4. 离线除了整体 XAUC/XGAUC/MAE,必须看分 duration bucket 的指标;
  5. 小流量 A/B 同时监控 WatchTime、session depth、负反馈、内容时长分布与创作者覆盖;
  6. 至少运行 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. 后续值得补读

  1. Uncovering User Interest from Biased and Noised Watch Time in Video Recommendation(D²Co, 2023):进一步把 duration bias 与 noisy watching 一起建模。
  2. Counteracting Duration Bias in Video Recommendation via Counterfactual Watch Time(CWM, KDD 2024):从潜在观看时长和右删失角度重新解释完播样本,对 D2Q 类分组归一化方法的“完播即高兴趣”问题提出批评。