因果推断在转转推荐场景下的实践

582 阅读12分钟

对于推荐系统来说,会存在着“二八定律”,百分之二十的热门物料占据着百分之八十的用户交互,而推荐模型的目标是学习打分函数f(u,iθ)f(u,i|\theta)来预估用户对物料的偏好,并利用这个估计值进行排序。用户与物料的交互数据呈现长尾分布,而对观测数据做拟合的模型训练时会继承这个偏差,倾向于给热门物料更高的分数。如图所示,模型给用户推荐物料,用户在推荐列表上的行为作为训练数据用于模型的更新,形成了闭环。模型由此产生了流行度偏差(popular bias)。

流行度偏差

流行度偏差的存在并不完全对推荐系统有害,很多时候物料是因为自身高质量或者时下趋势而变得流行,盲目打击会破坏用户的体验。但是,如果偏差过强,不利于物料的分发和沉淀,也失去了推荐系统“千人千面”的定位。

我们在转转推荐中尝试结合因果推断来解决流行度偏差问题。本文首先讲解因果推断的基本概念,其次介绍因果推断在推荐系统中的一个代表性工作MACR,最后展示因果推断在转转场景下的探索。

1 因果推断简介

1.1 什么是因果

因果关系是一种普遍的关系,描述的是结果和产生这个结果的原因之间的关联。在因果关系中,因是导致事件发生的条件或行为,果则是这个原因导致的结果或变化。我们平时生活中到处都存在着因果问题,上大学是否会带来更多收入?直觉上我们认为高等教育会增加个人收入,但我们却很难说清楚没有上过大学的人如果上了大学会增加多少收入,同时我们也有看到没上过大学也能赚大钱的人。

我们常常会想,如果某一时刻做了另外的选择,是否生活会变得完全不一样呢。时光无法倒流,另一个选择的结果是永远不可知的,因果推断要做的事情就是去预估干预对结果的影响,判断一个“因”能导致多少“果”。

1.2 相关性不等于因果性

穿鞋睡觉和醒来头痛这两件事存在相关性,但是我们不能因此得出“穿鞋睡觉会导致醒来头痛”的结论,事实上,这两个事件都可能由第三个因素,即“睡前喝酒”导致的。这里“睡前喝酒”就是一个混杂因子,由此引起的关联被称为混杂关联,它会对同时出现的睡觉时穿鞋和头痛产生误导,让人误以为二者之间存在某种因果关系。

相关性不等于因果性

1.3 两种代表性的因果框架

1.3.1 结构因果模型

一般来说,结构因果模型(Structural causal model)将变量之间的因果关系抽象为因果图,建立结构函数,然后进行因果推理来评估交互效应或反事实条件的影响。

因果模型

因果模型涉及两个核心概念:因果图和结构函数。具体来说,因果图通过有向无环图(DAG)描述因果关系,其中节点代表变量,边代表因果关系。根据因果图,每个节点的值(准确说是内生节点)都可以通过一个关于其父节点的结构函数计算获得,从而知道干预某个节点对目标节点的影响。

三种典型的有向无环图

三种典型的有向无环图

如上图所示,因果图中有三种典型的结构:链式、叉式和对撞,我们针对每一种都以推荐系统为例进行解释。

在链式结构中,XX通过ZZ间接影响YY。例如,在图(a)中,用户特征影响用户偏好,而用户偏好进一步影响用户的点击行为。

在叉式结构中,ZZ是一个混杂因子,影响XXYY。例如,在图(b)中,一个商品的质量可以影响其价格以及用户对其的偏好。在这种叉式结构中,ZZ被定义为混杂因子。粗略地忽略混杂因子ZZ可能导致XXYY在统计学上发生关联,产生伪相关性。质量好的商品通常更受欢迎,质量好的商品价格也更高,这不能证明价格高的商品更受欢迎。

在图(c)中,ZZ代表对撞,受XXYY影响。例如,用户的点击行为受用户偏好和商品流行度的影响。给定YY时,XXZZ之间存在真相关性。也就是说,对于同样畅销的两个商品,用户是否点击只取决于他们的偏好。

干预

在因果模型中,我们可以对某个变量进行干预,干预的形式用do-calculus表达,即 𝑑𝑜(𝑋=𝑥)𝑑𝑜 (𝑋 = 𝑥)。干预的效果,是将这个变量XX的父节点(在因果图中直接影响它的变量)对它的影响屏蔽,同时将变量XX的值设定为xx。举例来说,在图(b)中,如果我们对XX进行干预,设定𝑑𝑜(𝑋=𝑥)𝑑𝑜 (𝑋 = 𝑥),那么𝑍𝑋𝑍 → 𝑋 这条路径就会被阻断,同时XX的值被强制设定为xx。在实际应用中,将商品价格定为固定值就是一种干预。

反事实

在因果模型中,除了事实(factual)外,还有一种假设性的情况叫做“反事实”(counter factual)。反事实是指某种在现实中并没有发生,但我们希望知道如果发生了会有什么结果的情况。例如,一个已经破产的卖家可能会想知道,如果他购买了广告投放服务(即干预变量𝑇if_ads=1𝑇_{if\_ads} = 1),他的销量会有何不同。这种假设的情况就是反事实。

1.3.2 潜在结果框架

在进行因果推理时,除了前文提到的结构因果模型,还有一个被广泛使用的框架叫做“潜在结果框架”(Potential outcome framework)。潜在结果框架的特点是,它可以不依赖于因果图,直接估计某个变量(这里称为“干预变量”)对另一个变量(这里称为“结果变量”)的因果效应。

潜在结果

在潜在结果框架中,我们首先设定一个“干预变量”𝑇𝑇和一个“结果变量”𝑌𝑌。然后,我们定义某个个体𝑖𝑖在干预𝑇=𝑡𝑇=𝑡下的𝑌𝑌值为这个个体的“潜在结果”(用𝑌𝑡𝑖𝑌^𝑖_𝑡表示)。现实中,我们只能观察到每个个体在某一种干预下的潜在结果。

因果效应

在潜在结果框架中,我们可以定义“因果效应”。如果干预变量是二元的(即𝑇=0𝑇 = 011),那么对于某个个体𝑖𝑖,我们可以定义其“个体因果效应”(Individual Treatment Effect, ITE),用𝑌1𝑖𝑌0𝑖𝑌^𝑖_1−𝑌^𝑖_0表示,比如一张优惠券提高了用户多少购买意愿(体现在增加的购买概率)。然而有些情况下我们只能观测到一个总体的潜在结果,导致不能直接计算ITE。因此将ITE扩展至平均因果效应(Average Treatment Effect, ATE),即对于一个人口群体(𝑖={1,2,,𝑁})(𝑖 = \{1, 2, …, 𝑁\}),其ATE可以通过公式E𝑖[𝑌1𝑖𝑌0𝑖]=1𝑁i=1N(𝑌1𝑖𝑌0𝑖)\mathbb{E}_𝑖[ 𝑌^𝑖_1 − 𝑌^𝑖_0] = \frac {1}{𝑁} \sum_{i=1}^N(𝑌^𝑖_1 − 𝑌^𝑖_0)来计算,比如发放优惠券给商家、平台带来的增量GMV、增量成交订单等。

总的来说,结构因果模型和潜在结果框架在逻辑上是等价的,可以相互转换,但是潜在结果框架不涉及因果图的使用和推理。

2 MACR模型

2.1 背景

作者认为用户对某个物料的评分取决于三个方面,用户-物料匹配度(user-item matching)、物料流行度(item popularity)和用户从众度(user conformity)。现有的推荐模型主要关注用户-物料匹配度(图a),忽略了物料的流行度是如何影响交互概率的,假设两个物料对于一个用户有相同的匹配度,流行度较高的物料收集到反馈的更多,更有可能被用户所知(图b)。除此之外,有些用户更愿意跟随潮流,什么火就看什么,有些用户则不会,加入U>YU ->Y这条边能反应用户的流行敏感度偏差造成的估计偏差(图c)。

因果图1

文章提出了一个与模型无关的反事实推理框架(MACR),依据因果图训练推荐模型,并进行反事实推理,来消除推理阶段的流行度偏差(在训练时兼顾上面三种影响,预测时只考虑用户和物料的匹配度)。

2.2 反事实推理

因果图2

反事实推理离不开TE(total effect)TE(total \ effect)NDE(natural direct effect)NDE(natural \ direct \ effect)TIE(total indirect effect)TIE(total \ indirect \ effect),首先解释一下它们。观察上面的因果图,YY的值可以由指向它的两个节点得到,其中,IIYY有直接的影响,同时,II还通过KKYY有间接的影响。 Yi,k=Y(I=i,K=k)Y_{i,k} = Y(I=i,K=k) 其中Y(.)Y(.)是一个YY的评分函数。同理,k=Ki=K(I=i)k=K_i=K(I=i),我们可以用神经网络(例如全连接层)来实例化K(I)K(I)Y(I,K)Y(I,K)

TETE可以理解为IIYY的全部影响,可以用两个假设结果的差来表示,I=iI=i^{*}代表此时II的取值是虚拟的,即置空或者null,KiK_{i^{*}}代表此时I=iI=i^{*}TETE可以分解成NDENDETIETIE, TE=Yi,KiYi,KiTE=Y_{i,K_{i}}-Y_{i^{*},K_{i^{*}}}

NDENDE表示的是IIYY的直接影响,即II的取值由ii^{*}变为ii时在IYI \rightarrow Y这条直接的路径上对YY取值产生的影响 NDE=Yi,KiYi,KiNDE=Y_{i,K_{i^{*}}}-Y_{i^{*},K_{i^{*}}} 其中Yi,Ki=Y(I=i,K=K(I=i))Y_{i,K_{i^{*}}}=Y(I=i,K=K(I=i^{*})),对Yi,KiY_{i,K_{i^{*}}}的计算实际上是一种反事实推理,它要求II的值在不同的路径上不同(可以假想KKII没关系的情况下YYII的变动)。

TIETIE可以根据上面两者的差来得到 TIE=TENDE=Yi,KiYi,KiTIE=TE-NDE=Y_{i,K_{i}}-Y_{i,K_{i^{*}}}

2.3 框架

理解了这三者的关系,我们来看文章提出的MACR框架,这个框架通过多任务学习进行训练,执行反事实推理进行无偏推荐。

MACR框架

这个框架遵循图c中的因果图,橙色部分表示传统的推荐系统,蓝色和绿色部分表示物料和商品的模块。框架可以用在任何现有的推荐模块中。

y^i=Yi(I=i)\hat{y}_{i} = Y_{i}(I = i)建模了物料的流行度,越受欢迎的物料越可能获得高的分数。无论偏好是否匹配,y^u=Yu(U=u)\hat{y}_{u} = Y_{u}(U = u)衡量了用户和物料的交互程度。y^k=Yk(K(U=u,I=i))\hat{y}_{k} = Y_{k}(K(U = u,I = i))是现有排序模型的分数。三个分支汇总成最终的预测得分: y^ui=y^kσ(y^i)σ(y^u)\hat{y}_{ui}=\hat{y}_{k} * \sigma(\hat{y}_{i}) * \sigma(\hat{y}_{u})

大多数的推荐排序模型都使用下面的BCE loss,其中,y^u,i\hat{y}_{u,i}是排序分数,表示YKu,iY_{K_{u,i}},但其实包含了UUIIYY的影响,即Yu,i,Ku,iY_{u,i,K_{u,i}},这会使得使用经验风险最小化的极大似然估计时,高估流行度较高的用户-物料的出现概率。

LO=(u,i)Dyuilog(σ(y^ui))(1yui)log(1σ(y^ui))L_{O}=\sum_{(u,i)\in D}-y_{ui}\log(\sigma(\hat{y}_{ui}))-(1-y_{ui})\log(1-\sigma(\hat{y}_{ui}))

文章利用多任务学习的思想,构建了两个额外的损失函数LIL_ILUL_U,两个损失函数的公式如下

LU=(u,i)Dyuilog(σ(y^u))(1yui)log(1σ(y^u))L_{U}=\sum_{(u,i)\in D}-y_{ui}\log(\sigma(\hat{y}_{u}))-(1-y_{ui})\log(1-\sigma(\hat{y}_{u}))

LI=(u,i)Dyuilog(σ(y^i))(1yui)log(1σ(y^i))L_{I}=\sum_{(u,i)\in D}-y_{ui}\log(\sigma(\hat{y}_{i}))-(1-y_{ui})\log(1-\sigma(\hat{y}_{i}))

整体的训练loss为 L=LO+αLI+βLUL=L_O+\alpha*L_I+\beta*L_U

通过正确的构建数据的因果图,训练时拟合观测数据,进行模型参数的学习。在预测时,我们只关注YKu,iY_{K_{u,i}},这需要用到上面计算TIETIE的方法,消除掉UUIIYY的直接影响。

NDE=Y(U=u,I=i,K=Ku,i)Y(U=u,I=i,K=Ku,i)NDE=Y(U=u,I=i,K=K_{u^{*},i^{*}})-Y(U=u^{*},I=i^{*},K=K_{u^{*},i^{*}})

TE=Y(U=u,I=i,K=Ku,i)Y(U=u,I=i,K=Ku,i)TE=Y(U=u,I=i,K=K_{u,i})-Y(U=u^{*},I=i^{*},K=K_{u^{*},i^{*}})

TENDE=Y(U=u,I=i,K=Ku,i)Y(U=u,I=i,K=Ku,i)TE-NDE=Y(U=u,I=i,K=K_{u,i})-Y(U=u,I=i,K=K_{u^{*},i^{*}})

其中Y(U=u,I=i,K=Ku,i)=y^kσ(y^i)σ(y^u)Y(U=u,I=i,K=K_{u,i})=\hat{y}_{k}*\sigma(\hat{y}_{i})*\sigma(\hat{y}_{u})Y(U=u,I=i,K=Ku,i)=cσ(yi^)σ(yu^)Y(U=u,I=i,K=K_{u^*,i^*})=c*\sigma(\hat{y_i})*\sigma(\hat{y_u})uu^{*}II^{*}代表一种常规值,通常用对应变量的均值来表示,最终TIETIE表示为

TIE=y^kσ(yi^)σ(yu^)cσ(yi^)σ(yu^)TIE=\hat{y}_k*\sigma(\hat{y_i})*\sigma(\hat{y_u})-c*\sigma(\hat{y_i})*\sigma(\hat{y_u}) cc代表着当K=Ku,iK=K_{u^{*},i^{*}}y^k\hat{y}_{k}的值。

3 因果推断在转转场景下的实践

我们在首页默认tab进行了流行度偏差的debias实验,转转首页默认tab是一个多种物料共存的混合推荐场,其中商品维度上只有一个单独的点击率模型,便于我们观察实验效果。

3.1 实验一

因果图

一期方案我们的思路如因果图中的图一,商品的流行度不会对用户的偏好产生影响,这样流行度与用户的偏好对点击的影响就是线性的叠加。

实验一结构

我们采用了两阶段的训练方法,从使用的特征中选取了部分商品的静态属性特征(商品的类目、质检项等)作为bias特征,全部特征作为prefer特征。可以看到特征和网络结构都是完全独立的。

先训练bias部分,此时y^b=σ(outb)\hat{y}_{b}=\sigma{(out_b)},收敛后再进行下一步,训练prefer部分时,两部分全联接层的输出相加再过sigmoid,即y^=σ(outp+αoutb)\hat{y} = \sigma{(out_{p} + \alpha * out_{b})}

实验证明,该方案并无明显提升。

3.2 实验二

MACR模型因果图如图2所示,算法考虑了商品和用户两部分偏置对用户偏好带来的影响。参考MACR算法,我们考虑到二手平台用户行为的稀疏性,故暂时忽略用户偏置项,最终因果关系如图3所示。

实验二结构

输入特征不是独立的,prefer部分包含着bias侧的特征,训练时loss公式为L=Lprefer+αLbiasL = L_{prefer}+\alpha*L_{bias}LpreferL_{prefer}y^\hat{y} = y^preferσ(y^bias)\hat{y}_{prefer}*\sigma(\hat{y}_{bias}),这里α\alpha以及TIETIE中的cc是一个超参数,网格搜索后取0.1和30。

AB实验在首页推荐整体取得了pctr+1.95%,uctr+0.70%的显著收益,同时缓解了商品的马太效应。

3.3 后续工作

  • 使用因果推断进行曝光bias等多种bias的纠偏。
  • 结合转转知识图谱和因果推断为具体业务提供指导。

参考文献

[1] Causal Inference in Recommender Systems: A Survey and Future Directions

[2] www.bradyneal.com/causal-infe…

[3] Model-Agnostic Counterfactual Reasoning for Eliminating Popularity Bias in Recommender System

[4] 因果推断推荐系统工具箱 - MACR:www.jianshu.com/p/ffed9c926…

[5] 推荐系统流行度偏差专题:zhuanlan.zhihu.com/p/613111042


关于作者

郭辰,转转算法工程师,主要负责推荐召回、精排的相关工作。

> 转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。``> 关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~