前面提到过position bias,即用户倾向于点击排在前面的结果,这使得“优势位置”的item会获得更高的后验点击率。
这本质上是和用户的注意力,用户对item的情绪有关,而和用户的真实兴趣无关,这显然是不利用推荐模型的学习的。
关于position bias的消偏,主要有以下几种:
方法一:将位置信息作为特征加入到模型的输入中
这是最简单的一种消偏方式,在训练时把位置信息作为特征,online infer时,由于无法获取位置特征,模型会自动取一个默认值,比如0,这个值可以借助AB实验来调整,作为一个base的方法。
方法二:位置信息单独建模成小网络
这块比较典型的工作是google发表在RecSys 2019上的paperRecommending What Video to Watch Next: A Multitask Ranking System。文章主要介绍了两个工作,一个是多目标建模,也就是大名鼎鼎的MMoE。(关于多目标学习可参照下面):
推荐广告中多目标优化的主流范式
另一个就是关于position bias的消偏了。以往常用的做法是,训练时把位置作为输入特征,预测时或将位置特征设为常量/缺失。而论文的做法是在主模型(main model)之外,另外添加一个浅层网络(shallow tower),这其实就是一种wide&deep框架,在shallow tower侧输入position feature, device info(原因是在不同的设备上会观察到不同的位置偏差), 以及其他能够带来位置偏差的特征。最后主模型的输出加上浅层网络的bias分量一起过sigmoid。
值得注意的是,论文中提到训练的时候,会随机丢掉10%的位置特征,防止模型过度依赖位置特征。预测的时候,要丢掉浅层网络shallow tower。
下图反映了不同位置分离出的偏差(position bias)。位置越靠前,位置带来的偏差越小;位置越靠后,偏差越大,因为越靠后,用户更有可能看不到。
方法三:将position bias转换成用户是否看到item的概率偏差
这是华为在RecSys 2019上的paperPAL: A Position-bias Aware Learning Framework for CTR
Prediction in Live Recommender Systems,也是一个位置消偏比较经典的工作。
作者分析到:用户点击广告的概率由两部分组成:
- 广告被用户看到的概率
- 用户看到广告后,点击广告的概率
那么可以进一步假设: - 用户是否看到广告只跟广告的位置有关系
- 用户看到广告后,是否点击广告与广告的位置无关
基于该假设,就可以分开建模:
其中:ProbSeen部分是预估广告被用户看到的概率,pCTR部分是用户看到广告后,点击广告的概率,然后loss是两者的结合:
线上servering的时候,直接预估pCTR,不需要知道位置信息(这个点需要注意下,线上servering的时候,就预估假设这个广告被曝光后,用户点击的概率,只需要预估第二个模型)。
关于PAL的一些思考:
其实,PAL的设计和ESMM有异曲同工的地方,都是将事件拆解为两个概率事件的连乘,但是个人感觉PAL的假设过强,时间的关联性没有ESMM的点击——>购买这样的强关联,这是因为:
第一个假设,广告是否被用户看到只跟广告位置有关,这个假设在广告场景是不合适的。因为他跟广告、以及用户的属性都有关系(广告大图、小图等)。只能说,广告是否被用户看到,广告位置是其中一个因素,打个比方,一个显示页中有大量item,人的习惯可能更会关注头和尾,而快速划过中间的一些位置。因此可以对第一个模型更精细建模解决(看论文中这个模型只用了position信息)
第二个假设,用户看到广告后,点击广告的位置,其实跟广告是否被点击很可能还是有关的。比如都在一个页面,用户同时看到了位置1的广告和位置3的广告,但用户点击位置1的广告的概率更大。这其实还是position bias本身要解决的问题。
参考
1.https://zhuanlan.zhihu.com/p/405185215
2.https://dl.acm.org/doi/pdf/10.1145/3298689.3347033