
背景
观看时长(watch time)是视频推荐中的重要指标之一,提升整体观看时长是视频推荐系统的主要目标。观看时长主要受两个因素的影响:用户是否对视频感兴趣、视频本身的时长(duration)

作者分析发现持续时间数据存在明显的偏差现象(图中给出了明显的体现),具体体现在以下两个方面:
-
一方面,100s以下的视频,其观看时长和本身时长有着正相关关系,将视频时长作为输入特征的观看时长预测方法会引入偏置问题
-
另一方面,随时间推移,视频时长分布极不均匀,且长视频曝光占比会逐渐增大,由此模型训练样本被长视频占据,用户个性化兴趣可能无法有效建模
为了解决这种持续时间偏差的问题,作者遵循后门调整的原则并干预观看时间预测的因果图,以消除持续时间到视频曝光的不良影响。在操作上,作者根据持续时间将训练数据分成相等的部分;对于每个持续时间组,学习一个回归模型来预测按组观看时间分位数,其中标签由原始观看时间值和相应组中观看时间的经验累积分布确定。这种分位数预测可以跨持续时间组共享模型参数,从而带来可扩展性的好处
注意,快手和抖音这样的流媒体平台单列场景是不存在印象深刻/点击的问题的,因为所有视频都被直接展示,没有选择点击环节
方法
因果图

这里需要掌握 D、V、W、U 的含义和他们之间的连接关系。这里的重要结论是:在因果图中,duration 通过两条路径影响观看时间,D-W(直接影响观看时长)和 D-V-W(先影响曝光从而间接影响观看时长)
模型

(1) D2Q
如因果图所示,作者主要遵循后门调整的原则来消除时长的混杂,即消除 duration 对视频曝光的偏差,保留 duration 对观看时间的影响。那怎么消除 duration 对视频曝光的偏差呢?
最暴力的方法就是对每个视频的样本独立训练一个模型,实际上这么做肯定是不可行的,作者采用了一种折中的方法,先对所有的视频样本按 duration 排序等频分桶,那么当分桶数目足够多的时间,桶内视频 duration 差别比较小,如果只用每个桶内的样本单独训练一个模型的话,基本可以消除duration bias 了。
但是这种做法扔然有些缺陷,如果每个分桶都单独训练一个模型(或采用 multitask 建模)会导致模型参数过多,而且不同分桶样本不能共享参数提升泛化性,如果所有分桶都用一个模型训练的话那就无法消除 duration bias。对此,作者采用了对 label 做变换的方法,具体来说不直接拟合观看时长,而是拟合观看时长在这个分桶内所有样本观看时长的分位数,这样就可以把不同分桶的 label 拉到同一尺度,用一个模型训练所有分桶数据也不会有 duration bias,预估时把分位数预估值映射回真实观看时长
(2) Res-D2Q
由背景描述可以注意到,视频时长也应该是模型输入的一部分,以区分不同时长组的样本。为了充分利用持续时间信息,可以在模型架构中额外加入一个持续时间调整塔,如 ResNet,我们将其称为 Res-D2Q,其比 D2Q 进一步提高了观看时间预测精度
实验

与传统回归与加权逻辑回归进行了比较,在快手数据集上的效果如图。可以看到 D2Q 实现了显著的提升,Res-D2Q 进一步增强了预测的表现
XAUC 是 AUC 在稠密预测值(如观看时长)上的扩展。其计算方式为:从测试集中均匀采样样本对,对于每一对样本,若模型对两个视频预测的观看时长顺序与其真实观看时长顺序一致,则计 1 分,否则计 0 分,最终将所有样本对的平均得分作为 XAUC。直观上,XAUC 衡量了模型预测的观看时长排序与真实排序的一致性,XAUC 越高,模型性能越好
XGAUC 则是对 XAUC 的用户级改进。它先为每个用户独立计算其 XAUC 值,再将所有用户的 XAUC 按用户样本量大小进行加权平均(样本量越大的用户权重越高)。这种设计可以避免大用户对指标的过度影响,更能反映模型在不同用户群体上的排序表现。XGAUC 越高,代表模型在用户层面的排序能力越强
当没有数据分割时,两种方法是等效的。一旦数据被按照 duration 分割,Res-D2Q 通过改进带有持续时间信息的网络架构而优于 D2Q。此外,随着持续时间组数量的增加,性能首先提高,其优点是通过数据分割来消除持续时间的混杂;然后下降的原因是样本量缩小导致经验观看时间分布的估计误差增加
最后线上效果也在观看时长上取得了 +0.746% 的显著改进,并且已经部署到快手的在线推荐系统中
总结
分桶确实是解决 duration bias 的一个非常直接有效的方式,但是不够优雅,不可避免的带来离散突变的问题(例如 60s 和 61s 本身是很接近的 duration,但是很可能会被分到两个桶,导致预测的结果相差很多),这也是为什么近几年的方法都在抛弃分桶的原因
文章摘自:https://www.cnblogs.com/mianmaner/p/19917168
