计算机系统应用教程网站

网站首页 > 技术文章 正文

CIKM2022 IntTower:超越单塔的双塔模型

btikc 2024-10-12 11:37:20 技术文章 4 ℃ 0 评论




论文链接:

https://arxiv.org/pdf/2210.09890.pdf

代码链接:

https://github.com/archersama/IntTower


引言:

在推荐系统中,通常存在着多个阶段,包括召回,粗排,精排等阶段。而在其中的粗排阶段,因为需要排序成百上千的物品,就不能够使用太复杂的模型。在粗排系统中,通常会使用双塔模型。

在本文中,我们提出了一种双塔交互增强的新范式,加强双塔的特征交互能力,并且保持时延几乎不增加。我们将之命名为IntTower。同时,本文的作者还包括DeepFM的作者。


对于普通的双塔模型,用户塔编码用户的各种特征,如用户ID,年龄,性别等,物品塔编码物品的各种特征,如颜色,价格等。双塔模型对用户特征和物品特征分别编码,然后将表征送到最后一层进行交互,得到最终的分数。

为什么双塔模型会被大规模应用?第一点因为速度快,没有用户和物品之间的中间层的特征交互,只在最后一层进行特征交互。第二点是物品侧的表征可以离线的存贮起来,在线上推理时只需要推理一遍用户特征,然后将用户的表征和物品的表征在最后交互即可。

那双塔模型有什么缺点呢?最大的问题就是效果不太好,因为缺乏用户表征和物品表征在底层的交互,所以性能打不过单塔模型如deepfm,dcn这些。因此,本文想解决的问题就是提升双塔模型的性能,并且保持推理时延基本不变。

IntTower

如图所示,IntTower包含了三个部分:Light-SE module,CIR Module,FE-Block Module,接下来依次介绍这几个模块

Light-Se Module:

SE module是一个衡量特征重要性的模块,对不同特征的embedding进加权,想仔细了解可以参考这篇文章

一只蚂蚁:SENet在推荐领域中的应用46 赞同 · 0 评论文章

为什么称之为light-Se module,因为SE module比较复杂,拥有两层线性层,我们将之简化,让它变成一层,简化了参数。

并且传统的senet是使用sigmoid激活函数来获得不同特征的权重,缺乏特征间的感知。我们将其换成了softmax,让不同的特征之间能相互感知。公式如下:

FE block module(Fine-grained and Early Feature Interaction):

当然,Light-Se模块只是为了简化Se module,为了加强双塔之间的特征交互,我们又提出了一种新的范式,我们称之提前交互以及细粒度的交互。


细粒度交互:

在之前的双塔模型中,在得到用户和物品表征后,我们只是把用户表征和物品表征做一个内积,然后就将该分数作为最终的用户对物品的打分,这种方式是一种比较粗粒度的交互。实际上,colbert之前已经向我们证明细粒度的交互能够提升性能。因此,我们在双塔此处引入了细粒度的交互以及提前的交互。

早交互:

之前的交互方式,一般是只使用最后一层的用户表征和物品侧最后一层表征做交互,在这里,我们使用用户所有层的表征和物品的最后一层做交互,最后将所得的结果相加,作为最后的交互结果。

细粒度交互:

引入细粒度的交互是因为在双塔模型的表征中,无论是用户侧还是物品侧,表征都是各个特征混合在一起的,但是不同的特征之前的交互是不一致的,比如用户的职业特征和物品的价格特征进行交叉带来的信息增益可能更好,但之前的方法仅仅是对用户表征和物品表征做一个内积,这是一种十分粗粒度的方式。

在此处,我们引入MaxSim的方式来实现用户和物品之间的细粒度交互。具体的做法是,我们将用户和物品的表征分割为多块,计算用户侧分割后的表征对物品侧每一块的表征的相似度,然后只取其中最大的相似度表征。最后将所有的表征之和相加,作为最终的表征。

并且,注意,这也是属于双塔结构,对于物品侧的表征我们依然可以提前存储,在线上推理时不用重新计算,因此时延和普通双塔模型基本持平

【技术相关沟通讨论,可联系邮箱 mistlike at qq.com】

实验结果

从结果中也可以看出试验效果,作为一个双塔模型,在movielens和Amazon上,IntTower的效果甚至超越了单塔模型,并且和deepfm,wide&deep相比也毫不逊色。

在推理时延的表现上,IntTower的效果和dssm的实验也基本一致,但在auc上远远超越dssm。

当然,在内部的工业数据集上也有相关的实验,效果很好。已经在内部的一些场景进行100%全量落地上线。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表