因果推断推荐系统工具箱 - PropDCG(一)

文章名称

【www-2021】A General Framework for Counterfactual Learning-to-Rank

核心要点

作者为基于反事实的排序学习提供了一个通用且理论上严谨的框架,推导出了一个(松弛后的)可微分的基于倾向加权的排名指标,使得目标函数可以采用梯度下降的方法进行求解,以此来学习模型参数。基于该框架的模型可以用来优化(广泛的)可加排序指标,如DCG,以此进行模型的无偏学习(解决数据偏差的问题)。

方法细节

问题引入

隐式反馈在L2R的任务中非常重要,粗暴地利用隐式反馈数据会由于presentation bias(position bias,位置或展示偏差,不是曝光偏差)而导致性能下降。原有的方法,例如SVM-PropRank在特定的场景下(线性排序模型
,优化平均排序指标)成功的引入因果推断,缓解了位置偏差造成的影响。但是该方法不能泛化到更广泛的科嘉和IR指标。

经过推导,作者提出的基于反事实推断的L2R框架,可以泛化到任何由文档排序作为权重,对文档相关性进行加权求和的IR指标上。并且,这些指标可以直接利用倾向性得分加权的经验风险最小化方法进行优化。如果这些指标中的文档排序权重是单调的(指排序权重和排序顺序成单调关系),那么我们可以利用hinge-loss的上界优化技术,训练更多的可微分模型,比如神经网络。

具体做法

X是观测到的查询矩阵(查询包括用户的信息和上下文信息,以及查询字符串信息),其中每一个查询用x_i表示,r_i(y) \in \{0, 1\}表示与结果(物品或文档y)与查询x_i的相关性。可以定义可加和的排序评估指标如下图所示,其中\textbf{y}表示L2R模型给出的关于所有物品的排序结果,\lambda(\cdot)是依赖于排序结果rank(y|\textbf{y})的权重函数(计算对某一个结果的加权值)。

additive ranking performance metrics

如果\lambda(rank(y|\textbf{y})) = rank(y|\textbf{y}),则这个评价指标是相关性指标的总和(也就是所谓的未归一化的平均排序指标)。如果\lambda(rank(y|\textbf{y})) = \frac{-1}{log(1+rank(y|\textbf{y}))},则这个评价指标是DCG。

排序模型S的目的是针对查询x_i给出尽可能优(最优的)排序\textbf{y}。通过优化所有查询的期望来优化该模型,即优化如下图所示的全局风险(也就是期望的DCG)。

expected DCG

通常,我们并不能观测到r_i,只能观测到排序相关性的正反馈,用\overline{y}_i表示。同时,是否可以利用这个反馈的观测推导出相关性,服从概率分布o_i \sim P(o|x_i,\overline{y}_i,r_i),其中o_i是一个0/1向量,表示所有x_i对应的结果中,哪些结果的相关性被观测到。o_i中的每一个结果被观测到正反馈可以表示为o_i(y),可以被理解为一种propensity score,这个倾向性用概率Q(o_i(y)=1|x_i, \overline{y}_i, r_i)表示(倾向是刚才概率分布的。

把这个propensity score利用IPS方法带入上述可加和的排序评估指标,可以得到如下图所示的,观测反馈上的可加和的排序评估指标估计值,其中只利用有正反馈的结果y。

IPS additive ranking performance metrics

经过如下图所示的推导可以看出,IPS方法下的可加和的排序评估指标估计值是无偏的。其中,第一个等式利用了IPS观测数据的可加和的排序评估指标公式,第二个等式对求和号和期望符号进行置换,并由于求和号的范围变成了所有排序结果中的结果y \in \textbf{y},期望内的式子需要乘以o_i(y)。第三个式子,是把期望换位经验估计,由于Q(\cdot)是一个伯努利分布,期望等于其概率。最后化简后得到了全知情况下的可加和的排序评估指标公式(即公式1)。

unbiasedness

利用经验估计期望DCG,并带入基于IPS的DCG评估指标,可以得到如下图所示的经验风险最小化的损失。通过优化该指标可以得到最优的(且相当于在无偏数据上训练得到的排序模型)。其中propensity score Q(\cdot)是未知的,需要利用其他独立模型进行建模和估计。

心得体会

如果有多个\overline{y}_i?

不知道大家有没有这个疑问,文章中似乎没有明确表示是否只有一个正确的\overline{y}_i。理论上,同一个查询,在返回同一个排序结果的情况下,其中也可能有多个结果被点击(产生正反馈,因此组成的排序结果为\overline{y}_i, \textbf{y}以及\overline{y}_j, \textbf{y},虽然是同一个查询但是有不同的正反馈结果。然而,这里就看到下标其实有点滥用了,i代表的应该是查询的index,这里被用来代表同一个查询i的不同结果。因此,感觉这里作者可能是利用了每一个查询的最高的单独反馈。或者说把同一个查询复制几遍?

其实,如上所述,作者所说的o_i是一个0/1向量,其中o_i(y)表示排序中某个结果的相关性是非被反馈出来(也就是是否具有正反馈)。因此一个排序结果是有多个正反馈的,这个反馈是o_i(y)。

其实,这里讲的是通用的损失优化框架,在后续的章节中,为了更高效的计算损失,优化并求解模型参数。作者提到,每次点击生成单独的训练样本,也就是说一个查询可能对应多个点击,而每个点击都会作为一个样本单独进行模型训练了。

o_i并没有被全部观测到?

值得注意的是,作者提到o_i也可能不完全被观测到,那么这个缺失也可能由于如selection bias甚至是工程问题造成的。如果是随机的就还好,如果不是可能还要纠正偏差?文中作者提到,经过公式推到,可以证明不需要观测全部的o_i也可以做到(对期望DCG)的无偏估计。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容