推荐机型中双塔机型早就普及了。 由一个塔学用户来表达。 一个塔学item来表达。 很多双塔模型都使用各种各样的原位负采样策略。 十方也一样。 在大多数情况下,使用相对较大的batchsize是有效的,但由于内存限制,训练效率相对较低。 本文《Cross-Batch Negative Sampling for Training Two-Tower Recommenders》发现编码器的输出在warming up训练过程后比较稳定,据此提出了一种高效的负采样方法crossbatchnegativesampling (cbns ),该方法最近被编码
CBNS省略了问题的定义。 双塔已经写了很多。 计算用户和item的相似度也使用简单的积分积。 loss最典型的是使用sampled softmax:
为了提高训练的效率,希望如下图(a )所示,进行batch内的负采样。
借鉴sampled softmax机制,论文将上述公式修改为:
其中,q(I )是采样偏差。 接下来,对cross-batch negative sampling进行说明。 该方法可以解决原位负采样中存在batch size在gpu中显现的大小,从而影响模型的效果。 在训练过程中,我们往往认为过去训练的mini-batches是徒劳无功的,但论文认为这些信息可以在当前的负采样中重复利用。 这是因为编码器逐渐稳定。 论文通过下式评价了item encoder特征的偏移量:
如上图(b )所示,在早期学习率较大的情况下,encoder代码为相同的item的变化较大,如下图所示,随着训练过程的进行,学习率逐渐降低,特征有逐渐稳定的倾向
此时,可以将稳定的嵌入式应用作为负样本。 但是,历史的嵌入式使梯度产生了偏差,论文证明这种偏差的影响很小。
考虑到培训前期嵌入式波动较大,在warm up中使用简单的原位负载采样,然后使用FIFO memory bank存储m个历史item嵌入式
q(I )表示第I个item的采样概率。 CBNS的softmax如下式所示为:
每次迭代结束时,都将当前最小填充和采样概率添加到内存银行中。 下次训练不仅使用batch中的负样本,还从memory bank中提取负样本。
实验比较了不同抽样策略下的表现:
以及不同模型上的验证集召回和NDCG曲线:
另外,将m的大小/负的样本数对效果的影响与:进行了比较
参考文献
双塔模型中的负采样
更多精彩,炼丹笔记