前言;
工作中我们也常常遇到需要讲不同的场景模型融合,用一个模型支持多个场景,除了可以减少模型节省人力外,更多的样本或者用户行为,也是我们期望能获取到收益的地方。但是不同场景存在诸多不一致的地方,样本量不一致,用户点击分布不一致,特征不一致,目标不一致等等。处理不好,非但不能带来提升,往往还产生了严重的负迁移。制约了我们的场景融合的方案,怎样才能更好的融合提升模型效果呢?这里谈谈我在工作中遇到的一些问题和处理方案。
首先,我们针对模型中不一致的地方一一入手:
1,目标差异
首选我们很容易想到的就是多任务模型,不同频道共享特征和expert,有自己独立目标。但是简单融合往往导致严重的负迁移,融合模型效果比单场景模型效果更差。
![](https://i-blog.csdnimg.cn/blog_migrate/5137e05b65b7821f22c226dbd3e1f33a.png)
2,特征不一致,
这里很容易想到的解法是拆分不同特征,分成共有特征和独有特征,然后如果是多任务模型再分布让不同特征走不通不同expert。如下图不同场景有自身独立的expert,和公共的expert。结合一个场景个性化的gate来控制不同tower的expert输入。
![](https://i-blog.csdnimg.cn/blog_migrate/72bf731a53a142d718034cb41e79e6f7.png)
3,参数的个性化调整,
虽然刚刚我们对expert已经做了个性拆分。但是共享部分特征和expert在训练的时候是得到了多个场景中的均值。而预测的时候我们是针对每个具体的场景进行预测。所以这里也存在着不一致性。这里可以加上一个个性化的参数调整,让训练和预测的时候模型就能针对自身场景的特点进行调整,达到整体一致性。这里可以参考另一篇博客,《排序部分 四 《参数的一致性》》https://blog.csdn.net/qjzcy/article/details/129677080。将场景作为一种domain 动态的调整模型里的参数。
![](https://i-blog.csdnimg.cn/blog_migrate/311adcaa0224d0009244acf14d61264d.png)
4,样本一致性
在实践中我们发现样本上的分布也需要尽量做到一致,比如一个场景点击率高,一个场景点击率低,可以通过一些负采样尽量拉近不同样本点击率的分布。或者一个场景的样本多,一个场景的样本少。对样本量少的场景,可以适当的增大这个任务的loss权重,或者挖掘和产生一些伪样本,伪样本的生产可以参考《新场景样本挖掘和适应》https://blog.csdn.net/qjzcy/article/details/129697793避免因为样本量过少,导致学习不均衡带来的负迁移。