文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment

Posted Espresso Macchiato

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment相关的知识,希望对你有一定的参考价值。

1. 问题描述

这篇文章是我最近刷到的一篇工作,和我最近的工作有一点相似,所以就想拿来参考一下。

这篇文章针对的主要训练数据与线上服务的数据偏差问题。

具体而言,当前推荐模型的训练模型往往都是采用历史某一个时间段内的真实点击数据拟合用户与商品之间的关联性,从而预测未来某个时刻用户对于某一个商品的感兴趣程度,并用ctr或者cvr进行表征。

但是这样一来会带来一定的问题:

  • 历史训练数据所处的时间段与线上服务的时间存在一定的gap,导致商品的分布与线上服务当中真实的商品数据分布存在一定的偏差,劣化模型的效果,且这种劣化作用会随着时间的增长而增大。

举例来说,如果用户上次浏览点击的时候是夏季,看了几件T恤,然后半年过去了,他在冬季重新浏览了一下,这个时候他更可能买羽绒服,而不会是T恤,虽然显然后者与用户的浏览历史关联度更高。更极端的,一个用户如果在08年的时候浏览过手机,那可能他点了一堆诺基亚,而到了22年,苹果华为早已是主流了,诺基亚可能都已经不存在这个商品类目了。

因此,这篇文章就尝试搞定上述问题,他们的方法也比较直观,就是在事件(商品点击)当中引入事件发生时的context信息,从而使得上述这种随时间增加而产生的商品分布偏差可以尽可能地被抹除。

2. 方法 & 模型设计

如前所述,这篇文章的核心方法就是在事件的预测当中引入context信息。

但是这里也存在一定的问题,主要就是隐私保护的问题,使得事实上现在我们基本都不太能够获取到用户点击发生时的context信息。

而文中针对这个问题的处理文中使用的方法也是相对来说比较巧妙的,就是先预先设计K个context场景,然后使用贝叶斯概率的方式将其耦合入最终点击的预测,某种意义上来说,就是先去预测每一个context下用户点击发生的概率,然后根据每一个context发生的概率对其进行一下加权求和,最终得到不同综合情况下用户的点击概率。

具体可以参考下图:

下面,我们首先来看一下loss的数学定义,然后来看一下文中给出的模型实际的构造方法。

1. loss定义

这里,模型的loss定义本质上就是如下条件表达式:

P θ ( Y ∣ d o ( S ) ) = P θ ( Y ∣ S , C ) = ∑ i = 1 ∣ C ∣ P θ ( Y ∣ S , C = c i ) ⋅ P ( C = c i ) \\beginaligned P_\\theta(Y|do(S)) &= P_\\theta(Y|S,C) \\\\ &= \\sum\\limits_i=1^|C| P_\\theta(Y|S,C=c_i) \\cdot P(C=c_i) \\endaligned Pθ(Ydo(S))=Pθ(YS,C)=i=1CPθ(YS,C=ci)P(C=ci)

而通过附录B中给出的推导,我们可以使用Jensen不等式直接将上式放缩为:

P θ ( Y ∣ d o ( S ) ) ≥ E c ∼ Q ( C ∣ S = S ) [ l o g P θ ( Y ∣ S = S , C = c ) ] − D K L ( Q ( C ∣ S = S ) ∣ ∣ P ( C ) ) P_\\theta(Y|do(S)) \\geq E_c\\sim Q(C|S=S) [logP_\\theta(Y|S=S,C=c)] - D_KL(Q(C|S=S) || P(C)) Pθ(Ydo(S))EcQ(CS=S)[logPθ(YS=S,C=c)]DKL(Q(CS=S)∣∣P(C))

其中, Q ( C ∣ S = S ) Q(C|S=S) Q(CS=S)为模型拟合的在行为序列 S S S情况下场景(context) C C C的发生概率。

而关于 P ( C ) P(C) P(C)的计算,可以通过下述表达式来近似:

P ( C ) ≃ 1 N ∑ i = 1 N Q ( C ∣ S = S i ) P(C) \\simeq \\frac1N\\sum\\limits_i=1^NQ(C|S=S_i) P(C)N1i=1NQ(CS=Si)

当然,完整计算上式的复杂度太高,因此文中对其进行了简化,只从中sample了一些样本进行近似拟合:

P ( C ) ≃ 1 R ∑ j = 1 R Q ( C ∣ S = S j ) P(C) \\simeq \\frac1R\\sum\\limits_j=1^RQ(C|S=S_j) P(C)R1j=1RQ(CS=Sj)

其中 R ≪ N R \\ll N RN

由此,我们事实上就将上述loss表达式完全转换成了 P θ ( Y ∣ S , C = c i ) P_\\theta(Y|S,C=c_i) Pθ(YS,C=ci) Q ( C ∣ S ) Q(C|S) Q(CS)的表达式了。

因此,我们只需要用模型给出 P θ ( Y ∣ S , C = c i ) P_\\theta(Y|S,C=c_i) Pθ(YS,C=ci) Q ( C ∣ S ) Q(C|S) Q(CS)即可。

2. 模型设计

下面,我们来看一下文中给出的具体模型设计。

首先,文中对于行为序列中的每一个行为的embedding映射倒是一个非常简单的行为,就是一个基础的one-hot embedding的lookup,记作:

h m 1 = O n e H o t ( x m ) T ⋅ H x h_m^1 = \\mathopOneHot(x_m)^T \\cdot H_x hm1=OneHot(xm)THx

然后,通过一个神经网络(比如RNN或者Self-Attention网络),可以将其投影到一个输出的embedding:

[ h 1 2 , h 2 2 , . . . , h t 2 ] = Φ ( [ h 1 1 , h 2 1 , . . . , h t 1 ] , c ( t ) ; Θ ) = ∑ k = 1 K c ( t ) [ k ] ⋅ Φ k ( [ h 1 1 , h 2 1 , . . . , h t 1 ] ; Θ k ) \\beginaligned [h_1^2, h_2^2, ..., h_t^2] &= \\Phi([h_1^1, h_2^1, ..., h_t^1], c(t); \\Theta) \\\\ &= \\sum\\limits_k=1^Kc(t)[k] \\cdot \\Phi_k([h_1^1, h_2^1, ..., h_t^1]; \\Theta_k) \\endaligned [h12,h22,...,ht2]=Φ([h11,h21,...,ht1],c(t);Θ)=k=1Kc(t)[k]Φk([h11,h21,...,ht1];Θk)以上是关于文献阅读:Towards Out-of-Distribution Sequential Event Prediction:A Causal Treatment的主要内容,如果未能解决你的问题,请参考以下文章