多场景建模 综述

574 阅读3分钟

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 相关实践与论文

参考

  1. zhuanlan.zhihu.com/p/524458237
  2. zhuanlan.zhihu.com/p/617048227
  3. zhuanlan.zhihu.com/p/608819996
  4. zhuanlan.zhihu.com/p/487748663
  5. www.zhihu.com/question/61…
  6. zhuanlan.zhihu.com/p/456963095
  7. zhuanlan.zhihu.com/p/545057435
  8. zhuanlan.zhihu.com/p/620081158
  9. zhuanlan.zhihu.com/p/617925730