天天看点

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

新零售智能引擎事业群出品

ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performance

文章链接:arxiv地址

https://arxiv.org/abs/2005.10545

开源代码:

https://github.com/A-bone1/ESAM

前言

DeepMatch在搜索、推荐和广告等系统都大量应用,是一种重要的召回方式。通常将用户(搜索场景下包含Query)和商品通过深度模型编码成向量,线上通过向量近邻查找top K个商品作为召回结果。DeepMatch模型常见两种训练模式:

  1. 曝光&点击作为正样本,负样本随机采样+Importance Sampling(batch内或全局)

    在推荐系统中召回没有Query的限制,这种采样方式应用的较多[1,2,3,4], 主要的问题有:

  2. 随机采样的大部分负样本可能过于简单;
  3. 高频item过度被采样为负样本可能会影响模型性能;
  4. 正样本存在曝光偏差,用户点击的item都是他所看到的,大量未曝光的商品情况未知。
  5. 曝光&点击作为正样本,曝光&未点击作为负样本,即CTR目标

    在广告和搜索中常见, 这种方法也有类似的样本选择偏差(SSB)问题:用曝光数据上训练模型,在全局商品集合上做预测,两者分布可能会存在比较大差异。

如图1所示,相比rank模型,match模型面对的曝光偏差问题要严重很多。举个例子:用户搜索连衣裙,展示的商品数量级大概几十个,用这部分数据可以训练一个模型在精排阶段泛化能力较好,对数千个商品较精准的打分。但直接应用在召回阶段,面对百万甚至千万全局商品集,由于大量未曝光或低曝光商品无法充分训练,预测性能可能会下降。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

图1-召回模型的SSB问题

然而,这样的训练模式和用户一样,仅仅看到了曝光的样本,导致模型对于那些非曝光的样本缺乏鲁棒性。因此,我们想着如何在训练中引入非曝光样本,为模型装上第三只眼,让模型能代替用户去了解那些非曝光样本,提高模型对非曝光样本的预测准确率。

问题定义和抽象

为了实锤SSB问题,我们做了一些数据分析和实验:我们将商品按点击数量分层,统计CTR模型在各层商品上的表现:我们发现一个比较有意思的现象:将同一点击分层的商品放在一起,CTR模型表现没有明显差别;但将每一层的正样本与所有的负样本放在一起,CTR模型的表现下降的比较明显。这说明:热门的正负样本在一起,模型很好区分;冷门的正负样本在一起,模型也能区分;但将冷门的正样本和热门负样本放一起,模型表现就不尽人意了。在一些公开搜索和推荐数据集也有类似现象,例如CIKM Cup 2016的数据集上:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

图2-CIKM Cup 2016 电商搜索数据集商品按曝光评率分层

参考图1,召回模型通常是需要在全局商品上做预测,这就意味着冷门的“好”商品无法和热门的“差”商品区分开,在召回的时候会比较吃亏。冷门的商品本来曝光机会就少,现在进入召回的机会都被剥夺了,这意味着系统会越来越马太。

我们分析问题可能在于:我们的训练数据只使用了少量曝光的样本,对大量未曝光数据都丢弃掉了,导致这些商品没有充足的训练机会,模型也无法正确区分。因此如何使用这些未曝光的数据是一个非常值得研究的问题。

未曝光数据的应用主要面临着两个比较大的挑战:1、很明显地,未曝光数据是没有label的,意味着无法用大家熟悉的监督学习的方式来使用;2、直观地认为,未曝光数据与曝光数据的分布是有比较大差异的。比如:用户搜索连衣裙,曝光的商品通常都是销量比较高的,而连衣裙类目下有几百万商品,且大多都是0销量或低销量的冷门商品。如前面的图三,冷门商品中的“好”与热门商品中的“好”是有差别的。也正是因为这个分布的差异导致CTR模型在召回阶段的表现不尽人意,尤其是偏冷门的商品上。

技术选择

幸运地是,在机器学习和图像领域,对这个问题已经有一些比较好的研究成果,这个领域一般叫Unsupervised Domain Adaptation(无监督领域适应)。因此,我们思考如何利用那些模型通过曝光样本学到的知识来为模型装上第三只眼,使得模型能在学习曝光样本包含的知识外,能将这些知识应用在非曝光的样本上。

Unsupervised DA适用于两个相关Task之间的知识迁移,其中一个Task是有label, 其训练数据称为Source Domain, 另外一个Task是没有label的,称为Target Domain。两个Domain之间的数据分布通常存在一些差异,所以才必要将有label的Source Domain上的知识迁移到无label的Target Domain。

在深度学习时代,Unsupervised DA通常利用神经网络强大的表达能力,在Source Domain和Target Domain之间学习领域无关的表达,使得模型在无label的Target Domain也有比较好的表现。领域无关的表达学习,通常有两种思路:一种是基于度量的形式,通过人工的定义数据的分布并缩小两个域分布间的距离来实现分布的对齐;另一种是基于对抗的方式,通过对特征提取器于鉴别器的对抗训练,鼓励特征提取器能够提取域不变的特征。

技术创新:

为了将Unsupervised DA应用在搜索和推荐领域,我们首先需要定义清楚Source Domain和Target Domain,可参照图3。在模型推断时,搜索场景的查询+用户特征或者推荐场景下的用户特征表示为q, 对应全局候选样品池表示成D^all, 我们的召回模型需要对这集合中的每个样本打分,选取topK个得分最高的样本作为召回结果;在模型训练时,对每个q, 对应候选池D^all被划分成两个Domain, 曝光过的样本为Source Domain,表示为D^s, 未曝光过的样本因为数量太大,我们进行随机采样作为Target Domain表示为t;对每个q, Source Domain上的样本是有label的,D_q^s=〖{(d_j^s,y_j^s)}〗_(j=1)^n;而Target Domain上的样本是没有label的,表示为D_q^t=〖{d_j^t}〗_(j=1)^n;我们要做的工作是:对每个q, 将在Source Domain D_q^s上学到的“知识”迁移到Target Domain D_q^t上,并获取比较好的效果。这也是为什么我们的模型称为ESAM (Entire Space Adaptation Model)。

Baseline Model

DeepMatch模型通常包含三个部分:1、对q学习一个表达v_q=f_q (q);2、对样本d学习一个表达v_d=f_d (d);3、计算q和d相关性通常用内积或欧式距离再做sigmoid变

换得到得分Sc,再与groudtruth计算loss, 例如交叉熵:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

各种不同模型的差异通常在于f_q和f_d的网络结构和输入特征不一样;ESAM所做的工作:对每个q对应的Source Domain和Target Domain上的样本特征表达做“对齐”或“知识迁移”。因此,它是一个比较通用的框架,适用于现在大多数主流DeepMatch模型。ESAM主要包含三个损失函数:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

图3-Source和Target Domain 示意图

1、Attribute Correlation Congruence

首先,将通过深度模型将q对应的Source Domain 和Target Domain上的样

本通过f_d映射成向量表示:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读
全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

对Source Domain的样本还是与常规的DeepMatch模型一致,计算相关性和Loss,并通过BP优化参数;对Target Domain的样本, 如前面所述,为了将Source Domain上的知识迁移到Target Domain上,我们将两者的分布通过CORAL Loss做“对齐”;

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

其中,‖∙‖_F^2表示Frobenius范数,Cov(D)表示每个域上样本特征的协方差矩阵。简单来说,通过最小化两个Domain特征的协方差矩阵的距离,可以使得两个分布相似。因此,使得模型虽然是在Source Domain上训练的,但在Target Domain上预测也有会比较好的效果。

2、Center-Wise Clustering

另外在搜索和推荐场景,用户短时间内点击的doc通常有极高的相似度,例如:一个高消费力的用户搜索“手机”的时候通常会点击多个不同“iphone”手机的宝贝,“小米”等手机会被忽略掉。这也启发我们对商品的表示可以增加这样一些约束,以便在商品向量空间中具有更好的流形结构,对判断向量相似度任务能有更好效果[9],并且能有利于“知识”的迁移。 因此,我们在Source Domain上增加特征距离约束,使得同一q下,点击的样本之间的距离接近,点击的样本和没点击的样本之间远离。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

其中c_q^k表示同一q下label=k的所有样本的中心点,因此该Loss第一项使得同一类样本的直接距离更接近,第二项使得不同类型样本的距离更远。

3、Self-Training

同时,在Unsupervised DA领域,仅采用“特征”对齐常常会导致“负迁移”:

例如把Target Domain上的负样本特征“对齐”到Source Domain上的正样本区域,也能保证CORAL等距离Loss的最小化。为了解决这个问题,比较常见的解法:随着训练迭代过程,将模型在Target Domain上的置信度比较高的预测值作为伪label(pseudo-label),通过这种self-training的方式减少“负迁移”,使得模型在没有label的Target Domain上能预测的越来越准。我们设置两个阈值p_1,p_2,对每个Target Domain上的样本对,并设置Loss项:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

其目的在于如果模型对其预测为正的概率Sc_(q,d_j )>p_2, 则使得模型预测值尽可能接近1;如果模型对其预测为正的概率Sc_(q,d_j )ESAM

上述几部分结合起来就构成了ESAM(Entire Space Adaptation Model), 我们将样本按PV形式组织,每次PV下展示的商品组成Source Domain,未展示的商品中随机采样部分作为Target Domain,其整体损失函数如下所示:

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读
全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

图4-ESAM整体网络框架图

实验数据与结果

我们分别在公开推荐和搜索数据集、以及工业界一个实际的搜索数据上实验了我们ESAM的效果。

推荐数据集

推荐我们采用的MovieLens 1M。对每个用户,打过分的电影看做Source Domain, 其中打3分的电影设置为正样本,低于3分设置为负样本;同时,从该用户未打分电影中采样10个与Source Domain类型一样的电影作为Target Domain。注意:这里的Hot和Long-Tail集合只有正样本来自Hot或Long-Tail部分,负样本仍然是所有的负样本。我们在几个比较常见的推荐模型上尝试了ESAM框架,都有不错的效果,尤其长尾部分提升明显。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

搜索数据集

搜索我们采用的CIKM Cup 2016,也是一个电商搜索数据集。对每个Query,我们统计Query下出现上的商品全集,然后对每次PV,从未曝光集合中采样10个商品作为Target Domain。ESAM框架也有不错的表现。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

特征可视化分析

为了更好的观察添加了各个Loss项对训练过程的影响,我们随机采样100次PV中对应的Source Domain和Target Domain中的商品,经过网络生成对应的表达v_d=f_d (d),并采用T-SNE进行可视化。图(a)是仅采用交叉熵损失函数训练的BaseModel所提取的特征, 可以观察到Source Domain和Target Domain的商品分布确实有比较大的差异,可以确定在Source Domain上训练的Base Model在Target Domain上肯定表现有比较大偏差;图(b)是经过CORAL对齐后两个Domain商品特征分布,可以观察到确实对两个Domain的特征分布有“对齐”的作用。图(c)+(d)是分别增加了距离约束和Self-Training约束后,能直观的反应特征分布会更合理:具有更好的聚类间区分度和类内紧密度。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

另外,我们从dress,phone,shoe, computer类目中采样了1000个商品,用1000个商品向量的平均值来表示类目中心点,同时计算类目中心之间的cosine距离,如下图所示ESAM生成的商品向量来表示类目,会更有区分度。

全局自适应模块:为召回模型装上第三只眼 | sigir论文解读

最后总结下,本文在如何利用大量未曝光商品来训练一个无偏差的召回模型做了一个小小的尝试,为模型装上了能看到非曝光样本的第三只眼。在搜索和推荐的公开数据集上都有不错的表现。

参考

[1] Yi, Xinyang, et al. "Sampling-bias-corrected neural modeling for large corpus item recommendations." Proceedings of the 13th ACM Conference on Recommender Systems. 2019.

[2]Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Proceedings of the 10th ACM conference on recommender systems. 2016.

[3] Yuan, Bowen, et al. "Improving Ad Click Prediction by Considering Non-displayed Events." Proceedings of the 28th ACM International Conference on Information and Knowledge Management. 2019.

[4] Zhu, Ziwei, Jianling Wang, and James Caverlee. "Improving Top-K Recommendation via JointCollaborative Autoencoders." The World Wide Web Conference. 2019.

[5] Bonner, Stephen, and Flavian Vasile. "Causal embeddings for recommendation." Proceedings of the 12th ACM Conference on Recommender Systems. 2018.

更多信息检索技术内容请查看:

独家下载!《SIGIR 顶会论文解读》电子书重磅发布

继续阅读