背景

理论上的召回模型,是根据概率分,从全部候选item中选出分数最高的top K个item作为召回结果。 其中,是模型参数,是为了概率归一化。

这里的根据业务目标不同可以调整,搜索场景可以是query和item的相关性,推荐场景可以是用户历史或实时偏好和item的相关性,广告场景可以是用户和item的eCPM,当然也可以建模多目标,比如同时考虑相关性和eCPM。

概率分是正相关关系,所以只用根据打分选出top K即可。线上召回时由于耗时原因不可能遍历全部候选item计算,因此往往是双塔模型,既或内积等度量,候选item的向量可以离线计算好,线上user的向量实时生成,借助Faiss等向量检索工具进行高效的top K近似检索。

离线训练时,正样本往往是用户历史正反馈数据,比如点击、转化、收藏、转发。而难以计算,因此采用Noise Contrastive Estimation(NCE)、Negative Sampling(NEG)、Sampled Softmax(SSM)等方法近似估计,这些方法都使用了负采样。大规模Softmax近似估计方法在之前的几篇博客中已经介绍,可以参考:

为了离线训练时的样本空间尽量和线上对齐,负采样要保证覆盖到全部item。另外,正样本中热门item的占比往往非常大,为了降低整体训练loss,最终得到的用户向量和热门item的向量往往分数更高,这样就导致线上召回时top K也被热门item占领,和业务目标偏离。

热门item的定义

图片替换文本

用户喜欢的item作为可召回空间,又可分为热门的大众偏好和非热门的个性化偏好,所以热门和个性化是互斥的两个空间。在召回建模中,建模目标是喜欢与否。如背景介绍中描述,如果不进行热门item打压,可召回空间往往被大众偏好所占领,导致个性化空间不足,因此热门item打压的目标是在大众偏好和个性化偏好中寻找平衡。

图片替换文本

那么,平衡又怎么定义好坏呢?在不打压热门item的时候,热门item占比80%,个性化item只占20%。打压之后,让热门item占比20%,个性化item占比80%算好吗,甚至个性化占100%可行吗?笔者认为可以。原因是召回往往是多通路召回,模型召回只是其中一路。热门item通过简单的统计即可实现召回,无需借助模型,并且辅助用户标签就可从热门item中过滤出用户喜欢的。因此,大众偏好这部分通过简单的召回策略即可实现,而复杂的模型召回可以更关注个性化偏好这部分。 当然,业务场景间差别非常大,笔者的观点在一些场景可能并不适用,仅供参考。

热门item打压

数据角度

通过正样本打压

正样本往往是用户历史正反馈数据,比如点击、转化、收藏、转发,这种样本生成方法自带偏向热门属性,因此直觉的办法就是降低正样本中的热门item样本的比例。但是,正样本又是稀缺的,降低热门item样本量的方法一定程度上损害了数据多样性,需要谨慎使用。

通过负样本打压

增加热门item在负样本的比例,可以使用In-Batch负采样。 也可以根据热度做全局负采样,热度越高被采中概率越大,这样就可以一定程度上对冲掉正样本中的热门item,在一些情况下热门item可能负采样太多导致打压过度(如背景所述笔者认为在多通路召回下问题不大)。比如根据item的点击次数做负采样。 其中为负采样概率,为平衡负采样集中度和打压力度的配置。当时为均匀采样,覆盖广度最高但无负样本打压作用,当时覆盖广度降低同时负样本打压力度最强。

模型角度

如果采用NCE或SSM方法,在打分公式中引入了负样本概率消偏,新的打分公式为: 在NCE数学原理的文章1中解释过,就是item被负采样到的概率。考虑概率值和热门程度正相关的情况下,由于,item越冷门,采样概率越小,分数补偿的越多,相当于变相打压了热门item。

注意这里只是在训练时打压了热门item,理论上只在离线训练时采用,线上检索时仍然使用未修正的打分,而丢掉了打压项。笔者认为在线上检索时也可以使用,它可以在检索时继续通过打压热门item,并且也不一定要与离线时使用的一致,可以在线实时调控。 怎样在线上检索时将融入中呢?如果是内积,可以用,如果是,emb先归一化再concat,都只需要在向量中增加一列即可。 如果使用NEG方法,它忽略了负采样概率修正项,因此在训练和检索阶段都没有改变热门item问题,需要在其他层面解决。

特征角度

可以观察高分热门item是由哪些特征导致分数高,这样就可以将这些特征替换成非热门item的特征,实现分数打压。不过模型很黑盒,并且特征是异构的、离散的、数量又非常多,定位和替换特征有难度,不一定有可行性。另外强制替换特征会改变打分分布,导致模型评估指标和离线不一致,所以这种方法不太建议使用。

业务角度

从召回本身来看,往往是多通路召回,有些通路关注热门,有些通路关注个性化,这里要避免的就是所有通路都偏向热门。通路间有quota分配,可以人工干预热门通路的占比,甚至根据大盘业务指标实时自动调配。

从整个业务层面来看,召回只是最上游,下游还有粗排精排甚至重排,在排序环节也需要考虑多样性问题,另外也需要有item粒度实时提权或打压的运营干预手段。

参考资料

  • [1][Softmax近似方法(一) - Noise Contrastive Estimation理论详解](https://mathmach.com/b5ec3256/)
  • [2][Softmax近似方法(二) - Sampled Softmax理论详解](https://mathmach.com/b5ec3256/)
  • [3][Softmax近似方法(三) - NCE、NEG、Sampled Softmax对比](https://mathmach.com/a817e3bf/)
  • [4][推荐系统传统召回是怎么实现热门item的打压?](https://www.zhihu.com/question/426543628/)