召回模型中流行度偏差的现象主要有两种:流行度分部差异、长尾分布差异。本工作主要探索如何改善召回阶段中的双塔模型来缓解流行度偏差。目前已有缓解流行度偏差的方法主要有两大类:逆倾向评分(IPS)和因果图推断。但是,我们认为不能盲目抑制流行度偏差,而应探索如何更好将其利用。所以,本次工作从缓解流行度偏差的角度调整为合理利用流行度偏差的角度。此工作已被SIGIR-2022接收。

背景

推荐链路大概率会面临流行度偏差问题,即少量的热门商品占据了大部分的曝光,如图1柱状图所示,在有好货场景中,Top 10%的商品占据了63%的曝光量。在排序阶段去缓解马太效应,破除信息茧房,往往对效率的负面影响较大;而召回阶段作为整条召回链路的基底,在处理流行度偏差上的优势在于:召回阶段一般由多路组成,额外增加一路无偏探索更为平滑,后链路顶多不认该路的召回结果而减少透出,对效率指标的负面影响一定程度能降至最低。因此,该工作主要探索如何改善召回阶段中的双塔模型来缓解流行度偏差。

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言

图1:流行度偏差展示。Item Group通过曝光频率的排名进行分组。直方图表示每个组的曝光量在总曝光量的占比;绿线表示每个组正样本的平均分值(流行度分布差异);红线表示每个组的Hitrate(长尾分布差异)。

我们将流行度偏差的产生归因于两个:

  1. 由于日志中包含了大量的热门商品正样本,目前的训练范式,如pointwise和pair-wise损失,鼓励模型推荐更多的热门品以达到更低的损失,将流行度信息注入ID表征中,如item id(例如,在训练模型时,即使商品特征仅用不含流行度特征的ID类信息,马太效应同样存在,证明ID embedding会在训练的时候记住流行度信息),从而往这个方向更新参数。如图1绿线所示,即使都为正样本,高曝品的打分均值也高于长尾品。我们将该现象定义为流行度分布差异,即在商品ID表征中所包含的流行度存在差异。
  2. 由于长尾商品日志的稀疏性,使得这类商品的表征学习不够充分,模型(过拟合于热门品)难以准确的预估它们,如图1红线所示,我们将此现象定义为长尾分布差异

目前,已有缓解流行度偏差的方法主要有两大类,逆倾向评分(IPS)【1】和因果图推断【2】。但是,我们认为不能盲目的抑制流行度偏差,而应探索如何更好将其利用。原因是:相比于长尾商品,热门商品的质量往往更好或者符合当前趋势,因此值得更多的推荐。而用户发生点击收到两个因素的影响,一种是从众心理,一种是真实兴趣。因此,盲目地去除流行度偏差将忽略交互日志提供的重要信息,抑制优质品的透出,影响从众心理带来的点击。综上,本次工作从缓解流行度偏差的角度调整为合理利用流行度偏差的角度。

方法

路径系数显著性检验方法R语言_人工智能_02

图2:推荐过程的因果图表示,U-用户;I-商品;P-流行度;C-点击概率。

如图2a因果图所示,当前的训练范式会使得流行度信息不仅会影响用户的点击,还会被注入商品id表征中,从而加剧流行度偏差。因此,我们设计模型如图2b红线所示,从商品属性表征中解耦出原始的内容表示和流行度表示。具体来说,我们设计了可以联合训练有偏模型和无偏模型的解耦域适应网络

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_03

,其难点在于如何提取无偏且学习充分的商品表示。针对流行度分布差异,我们设计了特征解耦模块(FDM)从商品属性embedding分离出属性表示和流行度表示;针对长尾分布差异,我们额外引入未曝光商品(大多数为长尾商品)来实现热门商品和长尾商品分布粒度上的对齐,进一步的,利用I2I范式,我们基于用户行为序列,设计商品相似度损失函数促使越相似的商品有越相似的商品向量表示,实现实例粒度上的对齐。接下来,我们将具体介绍我们的模型结构。

路径系数显著性检验方法R语言_人工智能_04

图3:

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_05

网络结构图。分别表示目标商品,未曝光商品,用户行为序列商品。在训练阶段,FDM用来学习分离商品属性表示和商品流行度表示。此外,我们在商品塔额外引入未曝光样本和用户历史行为序列来缓解长尾分布差异。

路径系数显著性检验方法R语言_大数据_06

可以训练一个模型通过无偏的商品属性表示

路径系数显著性检验方法R语言_深度学习_07

,和一个有偏的模型通过融合了真实流行度表示的

路径系数显著性检验方法R语言_深度学习_08

的有偏商品表示

路径系数显著性检验方法R语言_深度学习_09


▐  Embedding Layer

整体模型为双塔结构:用户塔通过用户信息

路径系数显著性检验方法R语言_深度学习_10

和历史行为序列

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_11

生成用户向量表示

路径系数显著性检验方法R语言_大数据_12

;商品塔通过商品信息

路径系数显著性检验方法R语言_深度学习_13

和流行度信息

路径系数显著性检验方法R语言_机器学习_14

生成商品向量表示

路径系数显著性检验方法R语言_人工智能_15

。其中用户信息包含性别、年龄、省份等;商品信息包含商品id,类目,品牌等;流行度信息包含曝光频率,点击频率,购买频率等。

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_16

通过编码层将其转化为编码向量:

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_17

本次工作的重点在于如何改造商品塔来提取符合预期的商品向量表示

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_18


▐  特征解耦模块(FDM)

为了抑制流行度分布差异,我们设计了FDM模块从

路径系数显著性检验方法R语言_机器学习_19

中分离出商品属性表示

路径系数显著性检验方法R语言_深度学习_20

和商品流行度表示

路径系数显著性检验方法R语言_人工智能_21

,如图3所示,一个由MLP组成的属性编码器

路径系数显著性检验方法R语言_大数据_22

用来捕获商品属性表示,一个由MLP组成的流行度编码器

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_23

用来捕获商品流行度表示,可以用公式形式化的定义为:

路径系数显著性检验方法R语言_人工智能_24

其中,

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_25

。由于商品的流行度表示不会影响到内容本身,我们认为

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_26


路径系数显著性检验方法R语言_深度学习_27

是正交的,因此,为了鼓励FDM朝着预期的方向优化,我们加入了两个约束:

路径系数显著性检验方法R语言_机器学习_28

其中,

路径系数显著性检验方法R语言_机器学习_29

表示L2正则化,

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_30

表示真实的商品流行度表示,通过

路径系数显著性检验方法R语言_人工智能_31

生成,

路径系数显著性检验方法R语言_人工智能_32

代表batch size。

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_33

约束分离的

路径系数显著性检验方法R语言_大数据_34

与真实流行度表示

路径系数显著性检验方法R语言_机器学习_35

尽可能相似,

路径系数显著性检验方法R语言_人工智能_36

约束

路径系数显著性检验方法R语言_深度学习_37


路径系数显著性检验方法R语言_人工智能_38

正交,鼓励FDM对商品的不同角度(内容和流行度)独立进行编码。

▐  正则化缓解长尾分布差异

域对齐 虽然FDM已经提取了解耦出流行度表示的商品属性表示,但是由于长尾的数据稀疏性,我们认为流行度偏差仍然存在。相比于训练充足的热门商品,长尾商品并不能获得足够的学习。借鉴域适应的思想,我们额外引入了埋点中的未曝光商品(大部分是长尾商品),采用常见的最大均值差异(MMD),来实现长尾和热门商品的分布对齐。

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_39

其中,

路径系数显著性检验方法R语言_深度学习_40

表示核函数,

路径系数显著性检验方法R语言_机器学习_41

表示希尔伯特空间。需要注意的地方有两点,一个该损失的目标样本商品属性表示

路径系数显著性检验方法R语言_人工智能_42

是停止梯度的,防止对齐任务对主任务造成影响;另一个是为了保证分布对齐不会产生负迁移,会额外对未曝光样本引入基于精排分的知识蒸馏。直观来讲,该损失函数促使热门商品属性向量中心与长尾商品属性向量中心相互靠近,从而实现分布对齐。

实例对齐 由于日志中长尾偏移的存在,所学习到的商品向量空间并不能很好的反映商品间的隐藏相似性关系。例如,在商品空间中,一个热门商品可能远离与它同类目的长尾商品,却与不同类目的热门商品靠近。我们认为有效共现次数越多的商品对应该有更相似的商品向量表示。为了让模型捕获这种结构化信息,我们在商品塔额外引入了用户点击行为序列。基于对比学习,约束同一个用户点击的商品向量表示将会更接近。具体的,

路径系数显著性检验方法R语言_大数据_43

当作正样本,batch内的其他目标商品当作负样本

路径系数显著性检验方法R语言_深度学习_44

,因此,商品相似度损失可以被定义为:

路径系数显著性检验方法R语言_大数据_45

其中,

路径系数显著性检验方法R语言_人工智能_46


路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_47

为温度系数,

路径系数显著性检验方法R语言_大数据_48

表示当前用户的行为序列,

路径系数显著性检验方法R语言_大数据_49

表示对应商品的曝光频率。

路径系数显著性检验方法R语言_机器学习_50

存在两个问题:1)用户的兴趣是多峰的,这意味着用户的行为序列有着丰富的类目,如果盲目的将目标正样本与历史行为序列的所有样本进行聚拢会导致模型的崩塌。2)由于流行度偏差的存在,热门商品的曝光频率远远大于长尾商品。因此,如果忽略流行因子的存在,将会再次引入流行度偏差,因为很多无效的热门商品对的存在。综上分析,我们引入了由

路径系数显著性检验方法R语言_机器学习_51

两部分组成的权重

路径系数显著性检验方法R语言_人工智能_52

,类似于DIN,

路径系数显著性检验方法R语言_人工智能_53

用于保存序列中与目标商品相似的商品,

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_54

用于抑制热门商品的影响。值得注意的是,权重

路径系数显著性检验方法R语言_机器学习_55

的梯度是停止的。该损失函数使得相似商品的向量互相靠近,并拉开与无关负样本的距离。基于域对齐和实例对齐,用于抑制长尾分布差异的正则化被定义为:

路径系数显著性检验方法R语言_深度学习_56


▐  联合训练及在线服务    

联合训练 在模型获得无偏的商品属性向量

路径系数显著性检验方法R语言_深度学习_57

,我们可以采取内积的形式

路径系数显著性检验方法R语言_机器学习_58

训练无偏的召回模型。但正如我们所说,热门商品总体品质优于长尾商品,值得更多的推荐。为了更好的利用流行度信息,我们利用商品的真实流行度向量表示

路径系数显著性检验方法R语言_深度学习_59

来提取有偏的流行度商品向量,可以被定义为:

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_60

。基于

路径系数显著性检验方法R语言_深度学习_61


路径系数显著性检验方法R语言_大数据_62

,模型用batch sample softmax进行召回任务的优化:

路径系数显著性检验方法R语言_机器学习_63

因为

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_64

中已经解耦出流行度信息,有偏模型的训练只会去拟合流行度偏差,而不会去放大它。综上,

路径系数显著性检验方法R语言_深度学习_65

的损失函数为:

路径系数显著性检验方法R语言_机器学习_66

在线服务 线上服务时我们使用BE提供的向量检索进行召回,为了同时考虑无偏分数(用户真实兴趣)和有偏分数(用户从众心理),线上的用户向量

路径系数显著性检验方法R语言_机器学习_67

和商品向量

路径系数显著性检验方法R语言_大数据_68

的生成方式为:

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_69

其中,

路径系数显著性检验方法R语言_大数据_70


路径系数显著性检验方法R语言_深度学习_71

表示流行度偏移权重,

路径系数显著性检验方法R语言_深度学习_72


路径系数显著性检验方法R语言_人工智能_73

的内积就可以看作是有偏模型和无偏模型分数的加权求和:

路径系数显著性检验方法R语言_机器学习_74


实验部分

▐  离线实验

指标说明:我们定义了一个模型召回结果的集中度衡量指标

路径系数显著性检验方法R语言_深度学习_75

来衡量召回结果中热门商品的占比:

路径系数显著性检验方法R语言_人工智能_76

其中,

路径系数显著性检验方法R语言_大数据_77

表示召回的商品集合,

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_78

表示热门商品集合。下表是离线指标对比,可以看出在长尾商品的指标和集中度都有所改善。

方法

Hitrate@300

路径系数显著性检验方法R语言_大数据_79

Hitrate@300

路径系数显著性检验方法R语言_深度学习_80

Hitrate@300

路径系数显著性检验方法R语言_机器学习_81

C-Ratio

Base

0.3022

0.2378

0.2915

0.8801

CDAN w/o

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_82

0.3224

0.2803

0.3085

0.7869

CDAN w/o

路径系数显著性检验方法R语言_机器学习_83

0.3187

0.2769

0.3033

0.7748

CDAN w/o

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_84

0.3195

0.2677

0.2964

0.7541

CDAN w/o

路径系数显著性检验方法R语言_深度学习_85

0.3180

0.2639

0.2885

0.7600

CDAN

路径系数显著性检验方法R语言_机器学习_86

0.3072

0.2984

0.3021

0.6075

CDAN

0.3284

0.2893

0.3179

0.7361

▐  线上实验

将原有的Base双塔替换为

路径系数显著性检验方法R语言_机器学习_87

模型,线上指标如下表所示:

方法

pCTR

人均点击

人均浏览

Top1K曝光占比

Top10K曝光占比

曝光商品占总商品池比例

CDAN

路径系数显著性检验方法R语言_深度学习_88

+0.28%

+0.15%

+0.21%

-7.40%

-5.70%

+2.22%

CDAN

0.76%

+1.10%

+0.63%

−3.80%

−3.58%

+1.33%

分析A/B结果可以发现,虽然无偏召回模型(仅利用无偏商品属性表示

路径系数显著性检验方法R语言_人工智能_89

)可以使得集中度大幅度下降,且能提高长尾商品的曝光概率,但是在效率上几乎没有收益,这说明了盲目的去除流行度偏差会丢失掉流行度所带来的效率增益;而有偏的召回模型(仅利用有偏的流行度商品向量

路径系数显著性检验方法R语言_大数据_90

)在效率和集中度上都有所改善,说明

路径系数显著性检验方法R语言_深度学习_91

可以利用流行度信息同时满足用户的从众性和真实兴趣。

▐  向量可视化

路径系数显著性检验方法R语言_机器学习_92

图4 商品向量的T-sne可视化,红点为热门商品,蓝点为长尾商品,黄点为热门商品解耦出的流行度表示,绿点为长尾商品解耦出的流行度表示。

从图4a可以发现,由于流行度偏差的存在,Base模型所提取的商品向量表示存在着分布差异,这会导致过拟合于热门商品的模型难以精准评估长尾商品的好坏;从图4b可以看出,

路径系数显著性检验方法R语言_机器学习_93

提取的无偏属性向量和解耦流行度向量符合预期,即属性向量不存在分布差异,而流行度向量具有区分度,且和属性向量有着明显的分界线。

路径系数显著性检验方法R语言_人工智能_94

图5 每种颜色代表一个类目

为了验证

路径系数显著性检验方法R语言_深度学习_95

的有效性,我们对

路径系数显著性检验方法R语言_人工智能_96

进行了消融研究并进行了向量可视化,可以发现基于实例对齐的

路径系数显著性检验方法R语言_大数据_97

可以促使同一个类目的商品向量聚类的更紧凑。

▐  流行度偏移权重分析

路径系数显著性检验方法R语言_深度学习_98

图6 流行度偏移权重

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_99

,柱状图代表C-Ratio,折线代表Hitrate@300我们考量了流行度便宜权重对于离线指标的影响,

路径系数显著性检验方法R语言_机器学习_100

表示有偏召回模型,

路径系数显著性检验方法R语言_深度学习_101

表示无偏召回模型,中间的取值为两者的加权求和,可以发现随着

路径系数显著性检验方法R语言_大数据_102

的增大,召回结果的集中度逐渐下降,长尾商品的Hitrate逐渐提高,这证明通过对

路径系数显著性检验方法R语言_路径系数显著性检验方法R语言_103

的调整,可以让模型有方向的去拟合用户的从众性和真实兴趣。

总结

虽然分发侧总是存在着流行度偏差,但不可否认的是该偏差体现了用户的反馈,一味的去抑制流行度偏差使得整体模型是无偏的并不能带来最好的收益。因此,我们认为模型应该去利用流行度偏差,但不能毫无扩张的去放大它。正如本文所说,用户的反馈是从众性和真实兴趣的体现,但是在此工作中只在商品测进行探索,并没有去建模用户侧每个用户从众性和真实兴趣的个性化倾向,在后期工作中,我们将会去探索如何分开去建模用户的这两种倾向。

致谢

感谢怀风、从之、徐往、斯陌、孑行、晨良等团队成员的帮助,感谢横云、明逸、文通等各位老师的支持。

参考文献

【1】A re-visit of the popularity baseline in recommender systems.

【2】Model-agnostic counterfactual reasoning for eliminating popularity bias in recommender system.

团队介绍

有好货算法团队:有好货做为淘宝中的内容导购场景,旨在帮助消费者发现新颖好货。团队主要负责整体推荐链路的技术探索,目前主要致力于无偏学习,全链路建模、连续迁移范式、不确定性量化、长短期兴趣挖掘等方面的探索,以提高优势商品挖掘能力和频道导购能力。在创造业务的同时,我们同样在进行技术沉淀,在SIGIR等国际会议上发表数篇论文,主要成果有PDN,UMI等。

✿  拓展阅读

路径系数显著性检验方法R语言_机器学习_104

路径系数显著性检验方法R语言_大数据_105

作者|陈智鸿(仙基)

编辑|橙子君