论文:
论文题目:《PAL: A Position-bias Aware Learning Framework for CTR Prediction in Live Recommender Systems 》
论文地址:https://www.researchgate.net/publication/335771749_PAL_a_position-bias_aware_learning_framework_for_CTR_prediction_in_live_recommender_systems
我们在之前的文章中介绍过很多召回/排序算法,但是好像没介绍过关于推荐系统里面的bias的论文,最近对bias比较感兴趣,我们就来先看看华为这篇关于如何通过联合训练的方式来消除position bias的论文吧。
一 、背景
在推荐/广告领域,用户点击一个item与否是很受位置因素的影响的,也就是说,如果把一个用户不怎么感兴趣的item放在靠前的位置,这个用户是有很大的概率去点击这个item的,当然也会出现另一种情况,如果用户非常感兴趣的item被放在了稍微靠后的位置,用户也有一定的概率不去点击。
在广告领域,一般是用ctr*bid来进行排序的,BID基于广告主的出价,一般来说是平台不能控制的(除了一些智能竞价或者ocpc),所以CTR预估显得至关重要。
我们来先看一下下面的这个图:
我们从上面这两张图可以看出来,position越小的item被点击的概率越大,跟我们在前面的说法是一样的,也就是说我们在考虑ctr预估的时候就应该把position考虑进去。
这就引入了position bias的问题,我们知道在模型进行线上推导的时候是不知道position信息的,但是我们在离线训练模型的时候又可以获取到这个信息,怎么来解决这个问题呢?
一种方法是,把position当作特征,离线训练模型的时候把这个特征也加进去训练,然后在线上推断的时候,设置一个固定的值,这样的做法最简单,但是只能得到次优解。
还有一种方式是这样,把position特征单独做一个子模型,其他特征做一个主ctr预估模型,在离线的时候还是使用所有的特征,线上推断的时候把position子模型关掉,只用另一部分。
第二种方式中,有很多将position模型和ctr预估模型结合的方式,我们今天来讲讲华为在PAL中是怎么做的吧。
二、模型
2.1 模型的输入
模型的输入有只有两部分信息,一个是x,这是一些user profile,item 特征,还有一些上下文特征,另一个是pos,这是位置信息特征。
2.2 处理pos信息的方法
处理pos信息大致上有两类方法,我们在前面也讲过来,第一种是作为特征,第一种是构建一个子模型,我们来简单介绍一下这两种模型吧。
2.2.1 作为特征
如上图所示,我们把pos当作特征,离线训练的时候使用[x,pos]->y 去训练,但是由于线上infer的时候缺失pos信息,这时候我们有两种方式来解决。
1.我们遍历所有的pos,比如从1->10,然后计算出所有位置的ctr,比如,我们先固定pos的位置为1,然后计算所有广告的ctr,把最高的放在1的位置上,然后在计算2,3,4..的所有位置。这种方法比较耗费时间,复杂度很大,所以一般不采用这种方法。
2.就像我们之前所说的,采用一个固定的pos,对所有的广告都一视同仁,这种是最简单的方法,但是比如前一种方法来的次优,而且一般这个固定的位置是通过a/b来决定,而且泛化性较差。
2.2.2 作为模块
PAL论文做了一个假设,广告从曝光到被点击,有两个阶段,第一个是广告被看到的概率,第二个是看到后被点击的概率:
也就是说,广告首先要曝光,然后再被点击,这两个概率我们做了独立性假设,可以联想一下esmm,跟里面的假设是有点像的,回到PAL中,这个假设可以进一步的理解:
首先,用户是否看到广告只跟广告的位置有关系;然后,用户看到广告后,是否点击广告与广告的位置无关。这时候公式改写为:
看到这个公式后,聪明的你已经想到怎么做了,如果说曝光后的ctr预估跟位置没关系了,那么我们就可以在训练的时候使用pos信息来联合训练,然后在infer的时候只需要使用后面那个概率就可以了,因为这个概率的计算不涉及到pos,所以可以直接来作为ctr预估。
PAL的框架:
可以看到这两个p是联合训练的,如果分开训练,虽然这两个任务可以各自取得最优解,但是会损失一些共有的信息,导致次优解。
如果是联合训练的话,就可以解决这个问题。
PAL使用的损失函数为:
线上infer的时候,只使用右半部分的模型计算的概率作为ctr就可以来。
三 、实验结果
base跟PAL的离线结果对比如上,base采用1-10的位置来对比。
下面的是在线的效果对比。
总结下,这是一篇建模思路非常清晰的论文,总体的结构不是很复杂,从另一种角度来建模这个问题。但是我有一个疑惑的地方在于,该使用x中的那些特征连同pos去预估第一个概率呢,也就是说我们在预测广告是否被看到是跟x本身的那些特征是相关的?左边这个模型需要轻量化嘛?希望可以讨论下。