
1. 从点击到观看视频时长预测的挑战与价值在推荐系统的世界里我们花了太多精力去预测用户会不会“点一下”也就是点击率CTR预估。这当然重要毕竟点击是后续一切行为的前提。但作为一个在内容平台摸爬滚打多年的从业者我越来越觉得点击之后的“观看时长”才是真正衡量内容价值与用户满意度的黄金指标。用户点开一个视频看了3秒就退出和津津有味地看完10分钟对平台和创作者的意义天差地别。因此视频观看时长预测Video Watch Time Prediction逐渐从后台的辅助指标走到了推荐模型的核心舞台。然而预测观看时长比预测点击要棘手得多。点击是一个简单的二分类问题点或不点而观看时长是一个连续值并且其数据分布极其复杂。想象一下用户观看行为的直方图大量视频只被观看了几秒短尾少量视频被完整观看长尾中间还有各种形态的分布。更麻烦的是时长数据天然具有“长尾”和“偏态”特性直接用回归模型比如MSE损失去拟合模型很容易被那些极长的观看时长带偏或者对短时长的预测不敏感。最近读到了一篇挺有意思的论文标题是《Multi-Granularity Distribution Modeling for Video Watch Time Prediction via Exponential-Gaussian Mixture Network》它没有选择硬啃“预测一个具体数值”这块硬骨头而是换了个思路不去预测一个确切的时长点而是去预测整个时长的概率分布。这个想法非常巧妙因为分布蕴含的信息远比一个单点估计丰富。知道了用户观看时长落在各个区间的可能性我们不仅能得到一个期望值比如平均可能看多久还能评估不确定性用户是大概率看很短还是可能看很久这对于排序和用户体验优化至关重要。论文提出的核心模型叫做指数-高斯混合网络Exponential-Gaussian Mixture Network, EGMN并引入了多粒度建模的思想。接下来我就结合自己的理解拆解一下这篇工作的核心思路、技术实现以及背后的工程考量。2. 预测分布而非数值EGMN的核心思想拆解为什么说预测分布是更高级的玩法我们来回想一下传统的做法。早期为了把观看时长预测融入排序工程师们想出了“点击率 × 平均观看时长”的公式来估算期望收益。后来模型直接学习回归任务。但这些方法都隐含了一个强假设模型输出的那个数值就是用户最可能观看的时长。现实是对于同一个视频有的用户看5秒有的看5分钟模型给出的一个“平均”值既不能反映这种不确定性也无法区分“大概率看30秒”和“一半可能看5秒、一半可能看55秒”这两种截然不同的情况。EGMN的出发点就是摒弃单点估计转而去建模观看时长t的概率密度函数p(t)。一旦我们得到了这个分布所有有用的统计量都可以从中推导出来期望观看时长Expected Watch TimeE[t] ∫ t * p(t) dt可以直接用于排序。分位数Quantiles比如中位数、90分位数可以了解时长分布的集中趋势和尾部情况。概率计算用户观看时长超过某个阈值比如完整播放的80%的概率这比单纯预测一个值更有意义。那么用什么分布来拟合真实世界千奇百怪的观看时长数据呢论文给出了一个非常实用的答案指数分布和高斯分布的混合模型。我们来拆解一下为什么是这两个分布的混合指数分布Exponential Distribution这是刻画“短时长”部分的利器。它的概率密度函数随着时间增加而指数衰减完美描述了大量用户“点开即走”的行为模式。在推荐系统中早期退出是常态指数分布能很好地抓住这个“短尾”的头部。高斯分布Gaussian Distribution这是刻画“正常观看”部分的主力。对于用户真正产生兴趣并观看了一段时间的视频其时长分布更接近于一个钟形曲线集中在某个均值附近。高斯分布擅长描述这种相对集中、方差可控的“中段”行为。通过将这两个分布线性组合EGMN就得到了一个灵活的概率模型p(t) π_exp * Exp(t; λ) π_gauss * N(t; μ, σ²)。其中π_exp和π_gauss是混合权重且和为1λ是指数分布的参数率参数μ和σ是高斯的均值和标准差。这个混合模型的关键在于模型自己会根据输入的特征用户、视频、上下文来动态决定这两个分布的权重和参数。对于一个吸引力一般的视频模型可能赋予指数分布很高的权重π_exp接近1预测用户大概率很快离开对于一个优质的长视频模型则可能让高斯分布占主导并给出一个较大的μ值。注意在实现时需要对分布参数施加约束以保证其合法性例如指数分布的率参数λ必须大于0高斯分布的标准差σ也必须大于0。通常通过激活函数如softplus来保证。3. 网络结构剖析从特征到分布参数理解了要预测什么混合分布下一步就是看怎么预测。EGMN的整体网络结构是一个标准的深度神经网络其核心任务是将高维的稀疏特征用户ID、视频ID、标签、历史行为等映射到前面提到的五个分布参数π_exp,λ,π_gauss,μ,σ。3.1 特征工程与嵌入层和大多数推荐模型一样第一步是处理特征。特征通常分为几大类用户侧特征用户ID、人口统计学信息如果有、设备、地理位置、实时兴趣标签。视频侧特征视频ID、创作者、类别、标签、时长、清晰度、历史统计指标平均播放完成率等。上下文特征请求时间小时、星期、页面位置、推荐来源。交叉特征用户-视频交互历史如过去对该创作者的观看时长、实时序列特征最近点击的N个视频。这些分类特征通过嵌入层Embedding Layer转化为稠密向量。连续特征则可以直接输入或经过分桶后嵌入。所有特征向量经过拼接Concatenation后形成模型的初始输入向量。3.2 深度神经网络与多任务塔拼接后的特征向量会送入一个多层感知机MLP。这个MLP可以理解为一个强大的特征交互与抽象器它通过多个全连接层和非线性激活函数如ReLU、Dice学习到能够高度概括“用户在此刻对此视频的观看意向”的深层表示。网络的输出层需要生成五个参数。这里一个重要的设计是多任务塔Multi-Task Tower。并不是简单地从最后一个隐藏层直接线性映射出五个参数因为这几个参数的性质和尺度差异很大。更常见的做法是让共享的MLP学习一个公共的深度表示然后为每个参数设置一个独立的“塔”一个或几个全连接层。这些塔以共享表示作为输入分别输出各自的参数。这样做的好处是允许模型针对每个参数的学习目标进行微调避免了参数间的相互干扰。3.3 参数化与约束从塔输出的原始值logits需要经过特定的激活函数转化为有意义的分布参数混合权重π_exp,π_gauss通过一个softmax层输出保证两者之和为1。即π_exp exp(z_exp) / (exp(z_exp) exp(z_gauss))。指数分布参数λ必须为正数。使用softplus激活λ log(1 exp(z_λ))。高斯分布均值μ理论上可以是任意实数但观看时长为非负。实践中可以用softplus或直接使用线性输出但训练数据中时长已归一化到较小范围。高斯分布标准差σ必须为正数。同样使用softplus激活σ log(1 exp(z_σ))。至此对于每一个样本一次曝光EGMN模型就输出了一组完整的混合分布参数定义了一个唯一的概率密度函数p(t)。4. 多粒度建模融合秒级与视频级信号“多粒度”Multi-Granularity是这篇论文标题中的另一个关键词也是其提升预测精度的关键设计。观看时长预测的标签本身就是“时长”为什么还需要多粒度这里的粒度指的是监督信号的来源和形式。在实际场景中我们拥有的不仅仅是用户观看一个视频的总时长视频级标签。在播放过程中用户会产生一系列细粒度的交互信号例如播放进度点在视频的第5秒、第30秒、第60秒……用户是否还在观看互动行为点赞、评论、分享通常发生在视频的特定时刻。退出点用户是在视频的哪一秒关闭播放器的这些细粒度的、序列化的信号蕴含了比单纯一个总时长更丰富的用户兴趣强度变化信息。EGMN的多粒度建模旨在同时利用这些不同粒度的监督信号。4.1 秒级一致性损失论文提出的一种方法是将视频的总时长T离散化为多个时间点例如每秒一个点或按比例采样。对于每个时间点t_i我们可以定义一个二分类标签用户是否观看了至少t_i秒这实际上是一个生存分析Survival Analysis问题。EGMN预测的混合分布p(t)可以自然地给出用户观看时长超过t_i的概率即生存函数S(t_i) P(T t_i) ∫_{t_i}^{∞} p(t) dt。对于指数-高斯混合分布这个生存函数有解析解可以高效计算。因此我们可以构建一个秒级的一致性损失让模型预测的生存概率S(t_i)与真实的二进制标签是否观看超过t_i秒尽可能接近。这通常使用二值交叉熵损失Binary Cross-Entropy Loss来实现对所有采样时间点求和L_sec - Σ_i [y_i * log(S(t_i)) (1 - y_i) * log(1 - S(t_i))]其中y_i 1表示实际观看时长T_true t_i。这个损失函数强制模型学习到的分布p(t)不仅在整体期望上与总时长匹配还要在时间轴的每一个细节上与用户的持续观看意愿匹配。这相当于用无数个细粒度的二分类问题来共同约束一个连续的分布预测使得预测结果更加精准和鲁棒。4.2 视频级负对数似然损失当然最根本的监督信号还是视频的总观看时长T_true。对于回归问题我们常用均方误差MSE但对于分布预测最自然的损失函数是负对数似然损失Negative Log-Likelihood Loss, NLL。它的直观含义是对于真实发生的观看时长T_true我们希望模型预测的分布p(t)在该点处的概率密度尽可能高。损失函数为L_nll - log(p(T_true))这里p(T_true)就是将真实时长代入我们学到的指数-高斯混合概率密度函数计算得到的值。NLL损失直接最大化真实数据的似然是拟合概率分布的标准方法。4.3 多粒度损失融合最终的训练损失是视频级NLL损失和秒级一致性损失的加权和L_total L_nll α * L_sec其中α是一个超参数用于平衡两种损失的贡献。在训练初期可以设置较小的α让模型先抓住整体分布形态后期可以增大α以细化分布的时间结构。多粒度建模的威力在于它让模型同时从“宏观结果”总时长和“微观过程”持续观看的秒级决策中学习。这类似于既告诉模型最终考试的分数又告诉它每一道题的答题情况使得模型对学生能力的评估更为准确。5. 训练技巧与工程化落地思考理论很优美但把EGMN这样的模型成功部署到线上推荐系统并带来显著的业务指标提升中间还有大量的工程细节需要打磨。5.1 数据准备与样本构建观看时长数据非常稀疏且噪声大。一次曝光可能产生点击点击后才产生播放播放后才有时长。这导致了严重的样本选择偏差。通常我们只对有点击的样本进行时长建模但线上排序需要对所有曝光样本打分。因此业界常见的做法是构建一个两阶段模型第一阶段点击率模型预估曝光到点击的概率pCTR。第二阶段播放时长模型预估点击后的播放时长分布p(t|click)。最终用于排序的期望收益可以表示为E[收益] pCTR * E[t|click]。EGMN通常作为第二阶段模型。在训练EGMN时我们的样本集是所有点击样本特征中需要充分包含影响点击后观看行为的因素。5.2 损失函数实现中的数值稳定计算混合分布的概率密度p(t)和对数似然log p(t)时需要注意数值稳定性。指数分布和高斯分布的概率密度值可能非常小直接相乘或取对数可能导致下溢underflow。标准的做法是使用Log-Sum-Exp技巧来计算混合分布的对数概率密度log p(t) log( π_exp * Exp(t; λ) π_gauss * N(t; μ, σ²) ) log( exp(log π_exp log Exp(t; λ)) exp(log π_gauss log N(t; μ, σ²)) )先计算各个组成部分的对数然后利用log(sum_i exp(x_i))的稳定实现方法如torch.logsumexp。5.3 线上服务与推理优化模型训练好后线上推理需要计算每个候选视频的期望观看时长E[t]。对于指数-高斯混合分布其期望有解析解E[t] π_exp * (1/λ) π_gauss * μ这个计算非常简单只是一个加权求和对于线上服务的延迟影响微乎其微这是EGMN的一大工程优势。相比之下如果需要通过蒙特卡洛采样或数值积分来求期望线上开销就大得多。服务时将EGMN作为第二阶段模型与CTR模型的结果进行相乘得到最终排序分。整个流程可以很好地嵌入现有的精排Ranking阶段。5.4 超参数调优与评估指标超参数主要包括网络结构层数、隐藏单元数、学习率、多粒度损失权重α以及分布参数初始化。λ和μ的初始化最好能接近训练数据时长的统计值取倒数或均值有助于模型快速收敛。评估指标不能只看回归指标如MAE、RMSE因为分布预测模型的优势在于刻画不确定性。除了看预测期望值E[t]与真实时长的误差还应关注对数似然Log-Likelihood在测试集上计算平均NLL值越大越好直接衡量分布拟合的好坏。校准度Calibration例如对于所有预测生存概率S(30s)0.7的样本实际观看超过30秒的比例是否真的接近70%可以通过可靠性图Reliability Diagram来检验。分位数预测准确度比较预测分布的中位数、90分位数与真实数据的分位数。6. 总结与延展EGMN的启示与更多可能性EGMN为我们提供了一个将复杂回归问题转化为分布预测问题的优秀范例。它的核心价值在于不确定性量化。在推荐系统中知道“用户可能看多久”和知道“用户看多久的概率分布”是完全不同的信息层级。后者允许我们设计更高级的排序策略例如风险感知的排序在追求高期望收益的同时避免推荐那些虽然期望高但方差极大即可能极好也可能极差的视频提升用户体验的稳定性。探索与利用Exploration Exploitation对于预测分布不确定性高的视频例如新视频或新用户可以适当提高其曝光机会主动收集反馈数据。个性化进度条与互动根据预测的分布可以在客户端进行更智能的预加载或提供个性化的互动提示。从EGMN出发我们还可以思考更多的扩展方向更复杂的混合分布是否可以引入更多类型的分布如对数正态分布、韦伯分布来拟合更奇特的长尾模式端到端学习能否将CTR预估和时长分布预测在一个统一的模型框架下进行端到端学习更好地处理样本选择偏差序列化建模用户的观看行为是一个序列当前视频的观看时长受到之前观看历史的影响。如何将序列信息如RNN, Transformer更有效地融入EGMN框架在实际业务中引入EGMN这类模型通常不会一蹴而就。一个稳妥的策略是先在离线评估和A/B测试的流量分流实验中验证其效果特别是关注它对于用户长期观看时长、留存率等核心指标的影响而不仅仅是离线AUC或RMSE的提升。从我的经验来看将“点”的预测升级为“面”的预测往往是推荐系统走向更深层智能的关键一步。