背景

为了追求模型的时效性,在线学习已经成为主流。在线学习使用最近时间窗口内的样本进行实时模型训练,由于窗口设定往往比较短,所以有些样本的真实label并未到达,造成延迟反馈问题。比如某次商品点击之后,用户可能会反复对比其他商品,在几十分钟之后才进行下单,有时候会放入购物车,等价格降低或促销时才下单,要想拿到真实的转化label可能需要等待多天。对比转化延迟,点击延迟往往比较短,但点击label在窗口外到达的情况仍然存在。延迟反馈建模有多种方法,其中基于样本回补的方式大概这样:等待窗口内如果能拿到正反馈就作为正例训练,否则当做负例,在等待窗口之外,如果正反馈到来,则进行样本回补训练。对于怎么回补样本,有多种方式,在不同的回补方式上,纠偏方案也各不相同,本文对它们进行详细介绍。

符号定义

线线

回补方式一

论文1,设定等待窗口,负例往往比正例早到达,负例到达时立即训练,正例到达时再作为正例回补。这样就存在伪负例问题。为了消除伪负例影响,有如下几种方法进行纠偏。

Importance Sampling

其中,是模型,是可学习参数,它学习真实分布

假设的话,公式可以简化为如下形式:

由于正例都先作为负例,所以,那么可以得到如下关系:

将公式代入,得到最终的损失函数: 其中,第四步假设表示停止梯度回传,这个条件下,论文证明了可以收敛于

预估值纠偏

根据公式可以得到:

损失函数为常规的交叉熵,线上预估时用公式做下校准就可以了。

PU Loss

将样本当做Positive和Unlabeled进行学习,既Positive-Unlabeled Learning。

将负例当做Unlabeled数据,既上面的第二项。延迟正例过来后,在之前作为FN样本的梯度方向上反转,对梯度做下反向补偿即可。

回补方式二

论文2,设定等待窗口,在等待窗口内如果有正例到达则作为正例训练,没有的话当做负例训练,窗口外如果有正例延迟到达时则回补这些延迟正例。

Importance Sampling

因为,所以的关系与回补方式一不一样,需要重新推导。 表示正例成为伪负例的概率。

损失函数为: 其中,是正例成为伪负例的概率。简单考虑的话,可以假设均匀分布,这样就可以统计出一个固定数值。复杂点的话,可以作为单独的模型去学习,独立训练或者和主目标联合训练都可以,表示窗口之外发生转化的概率,其中是可学习参数。 如果,公式就退化为,如果,公式就退化为常规的交叉熵

PU Loss

类似方案一。

回补方式三

前两种回补方式只回补正样本,既FN对应的样本被训练了两次,其他样本训练了一次,所以。那Loss推导中的假设条件必然不成立,影响模型效果。 论文3,为了使得条件成立,可以对其他样本也训练两次,这样每个样本x都能看到两次,假设条件便成立了。

  • 真实分布
    • 正例:
    • 负例:
  • 回补方式一和二
    • 正例:
    • 负例:
  • 回补方式三
    • 正例:
    • 负例:

Importance Sampling

的关系推导如下:

损失函数为: 这里同方案二类似,也需要建模。因为需要回补真负例,理论上需要等到归因窗口才能拿到真实数据,但时效性明显不能这样做,可以通过设置一个处于之间的窗口来近似获得这批回补数据。

总结

方案二和三有个等待窗口用于获取真实label,所以比方案一要准确一点,但方案一的时效性更强。另外,方案二和三因为,在Loss中需要引入一个单独的模型来预测正例成为伪负例的概率,比方法一要复杂很多。

方法 Importance Sampling 预估值纠偏 PU Loss
回补方法一
回补方法二 类似方案一
回补方法三

参考资料

  • [1][Addressing Delayed Feedback for Continuous Training with Neural Networks in CTR prediction](http://arxiv.org/abs/1907.06558)
  • [2][Capturing Delayed Feedback in Conversion Rate Prediction via Elapsed-Time Sampling](http://arxiv.org/abs/2012.03245)
  • [3][Real Negatives Matter: Continuous Training with Real Negatives for Delayed Feedback Modeling](http://arxiv.org/abs/2104.14121)