推荐系统论文阅读(五十五)-美团:双重增强双塔召回模型

论文:

论文题目:《A Dual Augmented Two-tower Model for Online Large-scale Recommendation》

论文地址:https://dlp-kdd.github.io/assets/pdf/DLP-KDD_2021_paper_4.pdf

可以看到这篇论文是发表在dlp-kdd上的一篇关于双塔召回的论文,这篇论文其实比较偏工业界的风格,主要的创新点其实就两个地方,我们一起来看看吧。

一 、背景

许多现代推荐系统都有非常大的物品库,处理大规模检索的一个常见工业方法是使用双塔模型从内容特征中学习query和item的表示。然而,该模型缺乏两塔之间的信息交互,此外,类别数据的不平衡也影响了模型的性能。在美团的首页推荐场景下,负责给所有的业务进行导流和推荐任务。在首页推荐场景下,物品类别是严重不平衡的。举个例子来说,外卖这个类别的商品数量就比较多,也就是说,如果不加区分的对所有的物品进行训练,那么就会导致整个模型的效果受主要类别主导,模型的训练就跟少量的类别关系没那么大了,这些少样类别几乎不会对模型的训练造成影响。

另外,做双塔的各位都知道,一个比较难受的问题就是query塔跟item塔没有进行交互,唯一一次交互式在计算相似度(cos/内积)的时候。为了解决这个问题,张俊林老师在知乎上也说过,可以用senet结构来缓解,senet的主要效果是信息提纯,让最有效的信息保留,不重要的信息忽略,这样在最后计算cos的时候的交互才是最好的,避免了乱七八糟的信息进行交互了。

该论文提出了双重增强双塔模型来解决以上两个问题。论文设计了Adaptive-Mimic Mechanism,来为每一个query和item学习一个增强向量,增强向量代表了来自另一个塔的有用信息;此外,论文还在训练阶段引入了Category Alignment Loss来缓解类别不平衡的问题。

二、模型结构

2.1 Embedding层

这个就不在进行过多的介绍了,query跟item的特征都经过embedding结构生成稠密的特征。

2.2 Dual Augmented layer

对于query和item,都假设带有一个对应的增强向量auav,并与Embedding层得到的Embedding进行concat,作为两个塔的输入。如对于uid=253,city=SH,gender=male的用户,以及iid=149,price=10,class=cate的item,对应的模型输入为:

做过双塔的都知道,在模型经过多层dnn后,需要在最后进行l2正则,为什么要做正则呢,很多文章都解释过了,这里就简单提几点:

1.为了模型训练更稳定

2.为了检索一致性,归一化后在点积=cos相似度 等价于hnsw中的欧式距离

所以接下来的操作就是:

我们可以从图中看到,增强向量跟着dnn进入了双塔结构,但是这个增强向量还有另外的作用。

这里直接用简单的话来讲解,我们可以看到au可以看作是query侧的增强向量,除了跟着模型一起训练以外,还扮演着对于所有item塔中所有正样本的输出向量表示。可以这么理解,我们前面不是说了吗,我们没办法在双塔中进行特征交叉,因为得不到彼此的信息表示,那么我们为什么不自己构造出一个伪的item表示呢,其实au就是候选item的一种假设,是我们用来进行特征交互的假设向量。

你可能觉得,太好了,如果我们直接假设一个彼此向量就好了,这个想法太天衣无缝了?错了,我们必须要对这个增强向量进行限制才行,既然他是我们对另一侧的假设向量,这个vec就不能太飘,所以我们需要用一个loss进行限制:

以loss_u为例,如果y=0,则没有损失,若y=1,则增强向量必须要跟另一个塔的输出向量越接近,则损失越小。也就是说,增强向量是对该query或item所有可能匹配的正样本信息的综合表示。而在训练增强向量的过程中,需要使用stop gradient策略来冻结pupv

2.3 Category Alignment

前面提到了两个问题,一个是特征交叉,另一个是类别不平衡问题。在美团这种场景下,类别是严重不平衡的,我们不能让模型被主要类别带偏了。同时也要让较少的类别参与到模型的训练中。论文提出了Category Alignment Loss,可以将数量较多的类别中学习到的信息迁移到数量较小的类别中。CAL计算主类别和其他类别的协方差矩阵二阶矩,降低类别间的差距:

关于cal,可以自己去看看相应的论文

2.4 模型训练和损失函数

这部分就很简单了,双塔召回嘛,无非就是采样+loss设计的问题:

三、实验结果


你可能感兴趣的:(推荐系统论文阅读(五十五)-美团:双重增强双塔召回模型)