真实面经题目 · 原创解析
多场景和多任务有什么区别?
多场景和多任务都属于推荐系统中共享信息、提升泛化的建模范式,但二者解决的问题维度不同:多场景关注流量入口、业务域、用户行为分布或物料分布不同带来的数据分布差异;多任务关注同一批或相关样本上存在多个预测目标,例如点击、收藏、加购、转化、停留时长等。回答时要先用一句话区分场景和任务,再结合共享底座、MMoE、PLE、场景塔、任务塔、负迁移、指标体系说明工程落地。
真实面经题目 · 原创解析
多场景和多任务都属于推荐系统中共享信息、提升泛化的建模范式,但二者解决的问题维度不同:多场景关注流量入口、业务域、用户行为分布或物料分布不同带来的数据分布差异;多任务关注同一批或相关样本上存在多个预测目标,例如点击、收藏、加购、转化、停留时长等。回答时要先用一句话区分场景和任务,再结合共享底座、MMoE、PLE、场景塔、任务塔、负迁移、指标体系说明工程落地。
我会这样区分:多场景主要是输入分布和业务上下文不同,比如首页推荐、搜索推荐、详情页推荐、活动页推荐,它们可能共享用户、物料和部分模型能力,但流量意图、曝光机制、样本分布、特征重要性不一样;多任务主要是预测目标不同,比如同一推荐链路里同时预测 CTR、CVR、加购率、收藏率、停留时长等。简单说,多场景是在问同一个或相近模型如何适配不同流量域,多任务是在问一个模型如何同时学习多个目标。在建模上,多场景常见做法是共享底层特征表示,再针对不同场景增加 scenario embedding、场景门控、场景塔或场景专属参数,用来处理分布差异;多任务常见做法是 shared-bottom、MMoE、PLE 等结构,通过共享专家和任务塔让不同任务既能共享共性信息,又能保留各自目标的差异。二者也可以组合:一个推荐系统同时覆盖首页、搜索、详情页多个场景,并且每个场景都要预测点击、购买、加购等多个目标,这就是多场景多任务联合建模。
多场景和多任务的核心区别在于切分维度不同。多场景按业务流量、入口、域或分布切分,强调样本来自哪里、用户意图是什么、曝光环境是什么;多任务按预测目标或标签切分,强调模型要预测什么。例如首页猜你喜欢、搜索结果页、详情页相关推荐属于不同场景;点击率、转化率、加购率、停留时长属于不同任务。
推荐系统里的多场景通常来自不同流量面:首页信息流、搜索后推荐、购物车推荐、详情页相似推荐、频道页推荐等。它们可能共享用户画像、商品画像、历史行为和召回候选,但数据分布差异明显:搜索场景意图强,首页场景更偏探索,详情页场景受当前商品影响更大,活动页可能价格敏感和促销敏感更强。
多任务学习关注多个目标之间的联合优化。推荐排序通常不只追求点击,还会考虑转化、成交金额、加购、收藏、长停留、复访、退货风险等。单独优化 CTR 可能带来标题党或低质量点击,单独优化 CVR 又可能牺牲上层点击规模,所以多任务模型通过共享表示学习多个行为目标,再在排序融合或业务目标函数中平衡短期互动和长期价值。
多场景常用共享底座加场景专属模块,例如 shared embedding、shared bottom、scenario embedding、scenario gate、scenario tower、domain-specific batch norm 等;多任务常用共享底座加任务专属模块,例如 shared-bottom、任务塔、MMoE、PLE、ESMM 等。MMoE 通过多个专家和任务门控缓解任务差异,PLE 进一步把共享专家和任务专属专家分层拆开。
两者都会遇到负迁移,但原因不同。多场景负迁移通常来自场景分布差异,例如首页用户意图弱、搜索用户意图强,如果强行共享过多参数,模型可能在某些场景表现下降。多任务负迁移通常来自目标冲突,例如点击和转化不完全一致,停留时长和购买也可能不一致。
多场景不能只看整体指标,因为大流量场景可能掩盖小场景退化,需要分场景看 AUC、GAUC、CTR、CVR、GMV、停留时长、用户留存等。多任务也不能只看主任务,需要观察辅助任务是否提升主任务,以及是否造成业务副作用。实际上线时通常需要离线分场景分任务评估,再通过线上实验验证整体收益、分场景收益和长期指标。
不一定。多场景可以完全独立建模,也可以部分共享,还可以统一建模后接场景专属塔。选择取决于场景之间的数据量、分布相似度、维护成本和线上收益。如果场景数据少且相关性强,共享能缓解稀疏;如果分布差异极大,强行共享可能带来负迁移。
多个单任务模型更简单,也更容易定位问题,但会增加训练和 serving 成本,并且无法充分利用任务之间的相关性。多任务模型可以共享用户和物料表示,让稀疏任务借助高频任务学习更好的表达,但需要处理 loss 权重、任务冲突和负迁移。
MMoE 用多个专家网络加任务门控,让不同任务选择不同专家组合,比简单 shared-bottom 更能表达任务差异。PLE 进一步区分共享专家和任务专属专家,并通过分层结构逐步抽取共享信息和专属信息,通常更适合任务相关性不完全一致、负迁移更明显的场景。
可以加入场景 ID 或 scenario embedding,让模型感知当前流量来源;可以设计场景塔或场景门控,保留每个场景的专属表达;也可以做分场景采样、loss 加权、特征归一化和分场景校准。关键是不能只看整体指标,要观察每个场景是否受益。
常见做法是共享 embedding 和部分底层网络,引入场景表示或场景门控处理流量域差异,再在上层使用 MMoE、PLE 或任务塔预测多个目标。也可以设计场景-任务二维结构,例如每个场景有自己的任务塔,或者共享专家同时被场景门控和任务门控选择。