文献阅读:Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations

2021-11-16 16:02:49 浏览数 (1)

  • 文献阅读:Mixed Negative Sampling for Learning Two-tower Neural Networks in Recommendations
    • 1. 问题描述
    • 2. 核心方案设计
      • 1. DNN双塔结构
      • 2. MNS采样方法
    • 3. 实验结果
    • 4. 结论 & 思考

文献链接:https://storage.googleapis.com/pub-tools-public-publication-data/pdf/b9f4e78a8830fe5afcf2f0452862fb3c0d6584ea.pdf

1. 问题描述

这篇文章Google在2020年4月发表的一篇工作,其研究的问题是在于推荐系统的负采样问题。

众所周知,对于推荐系统而言,我们可以很轻松地采集到用户的正反馈信息,但是对于负反馈信息却无法有效的进行抓取。因此,在推荐系统的模型定义当中,我们采用的一种模型设计的模式是说,我们将反馈信号作为正例,而其他所有的信号都作为负例。其对应的物理解释为,要求模型在所有的数据样品当中对其反馈信号的偏好程度是最高的。

而在具体的实现当中,通常有以下两种具体的实现方法:

  1. inbatch采样
    • 即将batch内的其他样本的正例作为当前样本的负例进行模型训练;
  2. uniform采样
    • 即事先在全样本域当中进行负样品采样,然后再进行模型训练;

不过上述两种方法都存在一定的缺陷,具体包括:

  1. inbatch采样:
    • 这里的所有负例都来自于其他用户的点击行为,因此对于一些长尾的数据,往往无法被收入到训练数据当中,会造成选择偏差(Sample Selection Bias, SSB);
  2. uniform采样
    • 这里在训练过程中需要额外地增加负例样品进行item的embedding计算,对计算资源开销较大,会导致训练成本大幅提升,甚至导致无法成功训练的情况;

而另一方面,无论采用上述哪一种采样方式,事实上我们都需要要求负采样的样本数量足够大量才行,否则可能会引入随机噪声。

而这篇文献则是结合了上述两种方式,平衡了各自的优缺点,提出了一种Mix Negative Sampling方法(MNS)方法,然后提升了Google Play的线上推荐效果。

2. 核心方案设计

下面,我们来看一下这篇文章的核心方法,其具体包括两方面的内容:

  1. 使用DNN双塔模型的架构,替换了之前的MLP方法;
  2. 采用了MNS采样方法,有效提升了模型的效果;

下面,我们来具体对其进行一下考察:

1. DNN双塔结构

DNN双塔模型的基础架构如下:

具体展开而言,有:

这方面的内容近年来在业内用的实在是太多了,这里就不多做什么展开了,感觉也没啥新东西。

2. MNS采样方法

而至于MNS采样,事实上感觉就是前述inbatch采样与uniform采样的缝合怪。

如前所述,inbatch采样在设计上会引入SSB,但是优点是计算量小,可以实现。反之,uniform采样虽然可以尽可能地抹去SSB,提升模型的泛用性,但是需要引入额外的计算量,计算成本较大,往往直接就无法实现。

而MNS策略就是综合了一下两者,负例选择我还是使用inbatch的负例,但是不全是inbatch,而是另外从全样品域当中uniform地选取一些补充到负例当中,这样就可以通过这部分数据将长尾数据加入到训练当中,从而优化SSB问题,而且也不会增加太多的计算量,使得计算成本控制在可接受范围内。

具体结果可以用下图进行表示:

3. 实验结果

而关于其实际的效果,本文主要是在google play当中进行了测试,得到结果如下:

可以看到:

  • 如果只是使用双塔 inbatch架构,模型的指标反而会有所下滑,而当使用了MNS采样之后,其效果超过了线上production的效果。

4. 结论 & 思考

结论而言,这篇文章的核心我以为在于MNS的负例采样方式,本质而言就是在尽可能不增加过多的计算开销的条件下优化负采样,从而使得找回模型达到更好的效果。

但是,这里稍微凡一下,这里MNS的提出本就是因为uniform采样无法实现才提出的一种次优的选项,而somehow,我司直接就能干uniform采样……

so,个人表示真的感觉无法get到其中的优化意义啊……

0 人点赞