Shallow tower 消偏

341 阅读3分钟

Recommending What Video to Watch Next: A Multitask Ranking System

论文地址:daiwk.github.io/assets/yout…

bais logit相加

谷歌的这篇论文有个亮点就是消偏的处理,论文就是要解决2个问题:一是多目标建模,而是选择偏差消解。

位置偏差是非常常见的一种,不同位置上面的ctr差异很大 在这里插入图片描述 论文采用一个浅层网络塔来建模偏差,浅层网络的输入是位置特征及其他位置相关的(设备信息),输出的logit再叠加到用户主塔的logit上面,训练时指导模型学习偏差,相当于直接告诉模型这次点击/观看是发生在哪个位置,给模型输入先验信息。 在这里插入图片描述 最终的模型结构如下 在这里插入图片描述 学习到的偏差打印出来如下,靠前和靠后的位置偏差数值差异还是非常大的。 在这里插入图片描述 在线推断的时候,不需要输入位置特征给浅层塔,推断时也不知道位置信息。 这种消偏做法方式简单,可以快速在业务中进行尝试,还可以加入其他偏差信息。

PAL: A Position-bias Aware Learning Framework for CTR Prediction in Live Recommender Systems

华为有一篇论文也是用shallow-tower处理偏差,不过是相乘的形式

bais logit 相加

也是首先列出不同位置的ctr显著不同 在这里插入图片描述

提出的PAL是基于如下假设:用户点击一个item取决于两个因素,一个是用户看到item的概率,一个是用户看到item后点击这个item的概率。因此PAL将最终的ctr预估拆分为两个部分联合优化。

p(y=1x,pos)=p(seenx,pos)p(y=1x,pos,seen)p(y = 1|x, pos) = p(seen |x, pos)p(y = 1|x, pos, seen) 再假设:一、item被用户看到的概率仅和位置相关 二、item被点击的概率和曝光的位置相互独立。则上面式子可以简化如下: p(y=1x,pos)=p(seenpos)p(y=1x,seen)p(y = 1|x, pos) = p(seen |pos)p(y = 1|x, seen)

结构如下,使用一个小塔单独建模偏差。ProbSeen这边小塔建模概率p(seenpos)p(seen|pos),右边建模点击概率p(y=1x,seen)p(y = 1|x,seen) 在这里插入图片描述 进行联合优化,loss构造如下 在这里插入图片描述 其中θps\theta_{ps}θpCTR\theta_{pCTR}分别是偏差塔和主任务的参数 在这里插入图片描述

实验比较

比较的基线是将位置特征作为特征输入到模型中,这种方式在推断时无法拿到位置值会填一个默认值,模型的效果跟默认值的选择对模型效果有较大的影响,需要开在线AB实验或者挨个默认值离线评估去确定,比较费时费力;某个默认值在这个场景很好但是换个场景就不行了,这种方式不具有通用性。

根据不同的位置默认值采用3个base(BASE_p1、BASE_p5、BASE_p9),每个base跑了一周的线上实验,PAL相对base的提升结果如下 在这里插入图片描述

在不同的数据集离线评估 在这里插入图片描述

分析

预估的ranking和真实的ranking的距离 比较两个item list ranking的距离,top-L打分item列表降序排序,用户uu的第ii个item在模型MM的打分位置为σM,u(i)\sigma_{M,u}(i)在这里插入图片描述 ranking距离评估结果 在这里插入图片描述 item的多样性 多个用户之间的topL个item列表的多样性定义如下 在这里插入图片描述 其中qab(L)q_{ab}(L)表示用户a和用户b相同的item个数。比较结果如下,PAL在多样性上面也是显著提升。 在这里插入图片描述