1 引言
1.1 什么是多场景
不同用户群体(如新老用户)、APP不同频道模块、不同客户端等,可以看作不同场景。不同场景具有用户差异,即使是同一用户,在不同场景下的心智也不同,页面呈现的形式和内容,进入页面前的用户状态也存在很大的差异,这些差异直接反映到数据分布上,使得不同场景数据分布上存在明显差异。
1.2 多场景与多任务区别
多场景和多任务建模很相似,但两者关注点不同:
- 多任务学习:解决相同场景/分布下的不同任务,如推荐场景下的多任务学习通常是单个样本对于 CTR,CVR 等目标同时预估;
- 多场景建模:解决不同场景/分布下的相同任务,如对不同场景样本预估相同的 CTR 目标
1.3 为什么进行多场景建模
多场景业务中,不同场景分布不同:
- 如果采用各场景独立的方式,会忽视场景共性,导致长尾小场景难以学好,同时每个场景维护一个模型,又极大地增加系统资源开销和人力成本;
- 如果直接将样本混合,训练共享模型,会忽视场景差异性,导致预测准度下降;同时如果各场景数据量不均衡,容易被数据量大的大场景主导,数据量小的小场景学习不好。
因此,如何同时建模场景共性和差异性,显得非常重要。
2 建模思路
2.1 场景特征作为输入
最简单的方法是把场景相关特征作为输入,场景特征维度一般较少,随着网络深度的增加,场景特征对最终预测结果影响有限。
2.2 场景视为bias
将场景看作bias,构建辅助子网络,在输出层直接与主网络结果相加或相乘,这种方式能让场景特征直接影响到最终结果,但对主网络中间层影响有限。
2.3 动态权重
动态权重可以看作一种门控机制,以场景特征作为输入,通过多层DNN(左图)或者多组DNN(右图),生成与主网络每层维度相同的向量,然后与主网络中间层特征向量相乘,把场景信息融入主网络中间层。
更多动态权重相关介绍: 动态权重:推荐算法的新范式
2.4 多塔模型
每个场景对应一个塔,有各自独立的子空间,进一步提升了各场景个性化程度。如下图,相比原始的MMOE网络,可以增加共享塔,用于学习各场景之间的共性信息,缓解小场景学不好问题,通过权重子网络,学习得到共享塔和特定场景塔融合权重,对场景间共性信息和特定场景信息融合。
3 相关实践与论文
参考