A Model-Agnostic Causal Learning Framework for Recommendation using Search Data
1 Abstract
基于机器学习的推荐系统已经成为人们自动发现兴趣的一种有效的方式。现有的方法经常将推荐的富信息,例如项目、用户、以及上下文等信息表示为embedding向量,并且利用这些向量来预测用户的反馈。从因果分析的角度来看,嵌入向量与用户反馈之间的关联,混合了能够表示用户为何偏好某个项目的因果部分以及仅仅表示统计相关性的非因果部分,例如曝光机制、公共观点、展示位置等。
然而,现存的推荐系统在使用这些嵌入向量的时候大都忽略了因果部分和非因果部分之间的显著差异。本文中,作者提出了以一种模型无关的框架IV4Rec,该框架可以有效地将嵌入向量分解成两个部分,从而增强了推荐的结果。作者联合考虑了用户在搜索场景下和推荐场景下的行为。采用因估计因果分析的概念,将用户的搜索行为嵌入为instrumental variables(IVs)(工具变量),也就是处理(treatment),来帮助将推荐中原始的嵌入向量进行分解,IV4Rec之后通过深度神经网络来将这两部分融合,使用融合的结果作为推荐。
IV4Rec是一种模型无关的框架,可以被用到大量的现有的推荐系统中,如DIN和NRHUB。在公共数据集和专有的工业数据集上的实验都证明了IV4Rec可以强化推荐系统,并优于联合考虑搜索和推荐的框架。
2 问题形式化
本节的主要目标是将使用搜索数据作为工具变量IVs的推荐问题形式化。
2.1 背景
2.1.1 在同一平台上的推荐和搜索
大量的内容提供平台都同时提供搜索和推荐的功能,为同一用户集合提供相同的项目集合。从推荐的观点来看,一个用户 u ∈ U u\in \mathcal{U} u∈U接入平台后,平台会通过现存的推荐系统为用户提供一系列的项目 i ∈ I i\in \mathcal{I} i∈I。通常,用户 u u u和具有表示为 p u p_u pu的特定上下文信息中的项目进行交互,包括用户模型、搜索历史或者环境上下文,这些数据都可以被平台收集并且表示为具有实际值的向量(嵌入) p u ∈ R d c p_u\in \mathbb{R}^{d_c} pu∈Rdc,这里的 d c d_c dc是上下文嵌入的维度。通常,每个用户 u u u和每个项目 i i i可以被表示为具有真实值的向量,分别表示为 t u ∈ R d u t_u\in \mathbb{R}^{d_u} tu∈Rdu以及 t i ∈ R d i t_i \in \mathbb{R}^{d_i} ti∈Rdi。推荐系统通常使用历史用户-系统交互数据 D r e c \mathcal{D}^{rec} Drec进行训练,训练集中的每个元组 ( u , i , c ) (u,i,c) (u,i,c)表示商品 i i i被展示给用户 u u u,交互为 c ∈ { 0 , 1 } c\in \{0, 1\} c∈{0,1},其中的 c = 1 c=1 c=1表示点击, c = 0 c=0 c=0表示没有点击。
从搜索的角度来看,当一个用户 u ∈ U u\in \mathcal{U} u∈U提出了一个查询 q ∈ Q q\in \mathcal{Q} q∈Q,这里的 q q q为文本查询并且 Q \mathcal{Q} Q是所有查询的集合。系统在现有的推荐模型也提供了一系列的项目 i ∈ I i\in \mathcal{I} i∈I。类似地,每个查询都能表示为一个嵌入向量 t q ∈ R d q t_q\in \mathbb{R}^{d_q} tq∈Rdq,这里的 d q d_q dq是嵌入的维度。搜索和推荐共享相同的用户集 U \mathcal{U} U和项目集 I \mathcal{I} I。在搜索中,历史用户-系统交互可以被表示为 D s r c \mathcal{D}^{src} Dsrc, ( u , q , i , c ) ∈ D s r c (u,q,i,c)\in \mathcal{D}^{src} (u,q,i,c)∈Dsrc表明当提出查询 q q q之后,向用户 u u u展示项目 i i i,以及用户的动作 c ∈ { 0 , 1 } c\in \{0,1\} c∈{0,1},由于推荐和搜索都使用相同的项目集来服务相同的用户集,所以 D r e c D^{rec} Drec和 D s r c D^{src} Dsrc中不可避免地存在重叠,也就是说它们具有相同的目标项目。
2.1.2 工具变量方法
在因果推理中,IVs[1, 5]方法是当存在于处理和结果同时相关的变量的情况下,估计处理变量 X X X和结果变量 Y Y Y之间的因果效应。从理论上来讲,当一个变量 Z Z Z未被混杂因子影响,并且只通过 X X X影响结果 Y Y Y,那么则称这种变量为工具变量(instrumental variable)。典型的IVs方法例如2SLS[17]使用了一个两阶段最小二乘法来找到处理 X X X和结果 Y Y Y之间的因果效应:首先将处理对工具变量进行回归,获得一个重构的处理;然后将结果对第一阶段的重构处理进行回归。通过第二阶段的回归系数便可以获得对因果效应的一个无偏估计。
2.2 因果视角下的推荐
目前的推荐系统通常基于用户-系统的历史动作 D r e c \mathcal{D}^{rec} Drec来进行训练,并且假设每个训练记录 ( u , i , c ) ∈ D r e c (u,i,c)\in \mathcal{D}^{rec} (u,i,c)∈Drec中的点击 c c c能够无偏地反映用户 u u u到项目 i i i的偏好。然而在现实世界中, D r e c \mathcal{D}^{rec} Drec中的点击记录经常受到许多其他因素的影响(例如,混杂因子),包括位置偏差、选择偏差[10]以及流行度偏差[13]等等。从因果推理的观点上,我们可以将嵌入向量视为处理 T u , i \mathcal{T}_{u,i} Tu,i,将用户的反馈视为结果 Y u , i Y_{u,i} Yu,i。
在[23]中的框架里,传统推荐系统的因果图可以被构建为如图二(a)所示。传统的推荐系统简单地估计了处理 T u , i \mathcal{T}_{u,i} Tu,i和结果 Y u , i Y_{u,i} Yu,i之间的混合联系。由于(未知的)混杂因子的存在,从处理 T u , i \mathcal{T}_{u,i} Tu,i到结果 Y u , i Y_{u,i} Yu,i之间存在两条路径,包括由混杂因子导致的非因果联系以及表示为何项目被用户偏好的因果联系。
基于存在偏差的观测数据 D r e c \mathcal{D}^{rec} Drec来识别因果联系是很困难的。幸运的是, D s r c \mathcal{D}^{src} Dsrc中用户的搜索活动提供给了我们一个机会来将处理 T u , i \mathcal{T}_{u,i} Tu,i进行分解。如图二(b)所示,作者利用相关的查询作为工具变量IVs,表示为 Z u , i \mathcal{Z}_{u,i} Zu,i,并且将 T u , i \mathcal{T}_{u,i} Tu,i对 Z u , i \mathcal{Z}_{u,i} Zu,i进行回归,从而得到 T ^ u , i \hat{\mathcal{T}}_{u,i} T^u,i,它不再依赖混杂因子 B B B。因此 T ^ u , i \hat{\mathcal{T}}_{u,i} T^u,i和 Y u , i Y_{u,i} Yu,i之间的关系可以被视为因果关系。作者又计算了回归的残差 T ~ u , i \tilde{\mathcal{T}}_{u,i} T~u,i, T ~ u , i \tilde{\mathcal{T}}_{u,i} T~u,i和 T u , i T_{u,i} Tu,i之间的关系可以视为非因果关系。处理被重构为 T ^ u , i \hat{\mathcal{T}}_{u,i} T^u,i以及 T ~ u , i \tilde{\mathcal{T}}_{u,i} T~u,i的一个结合。因此用户的搜索活动通过一个因果学习框架被注入到推荐系统中。
3 实现方法
3.1 构建处理和IVs
为了预测目标用户-项目对 ( u , i ) (u,i) (u,i)的偏好得分,可以将推荐系统中的一个处理变量 T u , i \mathcal{T}_{u,i} Tu,i定义为一组嵌入向量,包括目标项目 i i i的嵌入以及与用户 u u u有过交互的项目的嵌入向量:
T u , i = { t j : j ∈ I u ∪ { i } } (1) \mathcal{T}_{u,i}=\{t_j:j\in \mathcal{I}_u\cup \{i\}\}\tag{1} Tu,i={tj:j∈Iu∪{i}}(1)
这里的 t j ∈ R d i t_j\in \mathbb{R}^{d_i} tj∈Rdi是项目 j j j的嵌入向量,经常是通过一些表示学习方法来将项目特征(如,内容)投影成一个稠密向量, I u \mathcal{I}_u Iu表示在 D r e c \mathcal{D}^{rec} Drec和用户 u u u有过交互的项目集合。
I u = { i ′ : ∃ ( u , i ′ , c = 1 ) ∈ D r e c } \mathcal{I}_u=\{i':\exist(u,i',c=1)\in \mathcal{D}^{rec}\} Iu={i′:∃(u,i′,c=1)∈Drec}
处理 T u , i \mathcal{T}_{u,i} Tu,i对应的工具变量IVs Z u , i \mathcal{Z}_{u,i} Zu,i被定义为矩阵 Z j Z_j Zj的集合:
Z u , i = { Z j : j ∈ I u ∪ { i } } (2) \mathcal{Z}_{u,i}=\{Z_j:j\in \mathcal{I}_u\cup \{i\}\}\tag{2} Zu,i={Zj:j∈Iu∪{i}}(2)
其中每个矩阵 Z j Z_j Zj被定义为与项目 j j j相关的搜索查询的嵌入向量的堆叠。注意到每个 Z j Z_j Zj对应着处理 T u , i \mathcal{T}_{u,i} Tu,i中的一个向量 t j t_j tj。准确来讲, Z j Z_j Zj可以如下进行构建。首先从 D s r c \mathcal{D}^{src} Dsrc中获得一组查询:
Q j = { q : ∃ ( u ′ , q , j , c = 1 ) ∈ D s r c } \mathcal{Q}_j=\{q:\exist (u',q, j,c=1)\in \mathcal{D}^{src}\} Qj={q:∃(u′,q,j,c=1)∈Dsrc}
然后, Q j \mathcal{Q}_j Qj中的查询可以根据例如在 D s r c \mathcal{D}^{src} Dsrc中对项目 j j j的点击数量进行排序。前N个查询将被保留下来,表示为 { q k } k = 1 N ⊆ Q j \{q_k\}_{k=1}^N\subseteq \mathcal{Q}_j {qk}k=1N⊆Qj。最终,项目 j j j的IVs可以被定义为前N个查询的嵌入向量的堆叠:
Z j = [ t q 1 , ⋯ , t q k , ⋯ , t q N ] Z_j=[t_{q_1}, \cdots, t_{q_k}, \cdots, t_{q_N}] Zj=[tq1,⋯,tqk,⋯,tqN]
这里的 Z j ∈ R d q × N Z_j\in \mathbb{R}^{d_q\times N} Zj∈Rdq×N。查询的嵌入可以通过BERT模型来获得。
在预处理之后,对于搜索数据 D s r c \mathcal{D}^{src} Dsrc中每个项目 j j j,相关的查询 Q j \mathcal{Q}_j Qj被收集起来并且堆叠起来,离线分解工具变量 Z j Z_j Zj
3.2 处理的重构
基于原始的处理 T u , i \mathcal{T}_{u,i} Tu,i和工具变量 Z u , i \mathcal{Z}_{u,i} Zu,i,可以通过将 T u , i \mathcal{T}_{u,i} Tu,i对 Z u , i \mathcal{Z}_{u,i} Zu,i进行回归,然后将拟合的向量以及残差结合起来创造新的处理 T u , i r e \mathcal{T}^{re}_{u,i} Tu,ire,如图三的右部所示。
3.2.1 处理分解
工具变量方法的目标是隔离从处理到结果之间传递的因果联系。如图二(b)所示。根据IVs的特点,即未被混杂因子混杂并且只通过处理 X X X来影响结果 Y Y Y。作者将 T u , i \mathcal{T}_{u,i} Tu,i对 Z u , i \mathcal{Z}_{u,i} Zu,i进行回归,获得了不依赖混杂因子 B B B的 T ^ u , i \hat{\mathcal{T}}_{u,i} T^u,i
其中 t j ∈ T u , i , Z j ∈ Z u , i , f p r o j : R d i × R d q × N t_j\in \mathcal{T}_{u,i}, Z_j \in \mathcal{Z}_{u,i},f_{proj}:\mathbb{R}^{d_i}\times \mathbb{R}^{d_q\times N} tj∈Tu,i,Zj∈Zu,i,fproj:Rdi×Rdq×N,这里的 f p r o j f_{proj} fproj被定义为矩阵 Z j Z_j Zj和一个N维向量 τ j \tau_j τj之间的乘积:
f p r o j ( t j , Z j ) = Z j τ j f_{proj}(t_j,Z_j)=Z_j\tau_j fproj(tj,Zj)=Zjτj
τ j \tau_j τj是最小二乘法的闭合解(闭合解,closed form solution),最小二乘法为:
这里的 Z j † Z^{\dag}_j Zj†是 Z j Z_j Zj的Moore-Penrose伪逆(机器学习笔记 - Moore-Penrose 伪逆), MLP 0 : R d i ↦ R d q \text{MLP}_0:\mathbb{R}^{d_i}\mapsto \mathbb{R}^{d_q} MLP0:Rdi↦Rdq是多层感知机,将项目 j j j的嵌入向量映射到 d q d_q dq维的隐空间。这里称 t ^ j ∈ T ^ u , i \hat{t}_j\in \hat{\mathcal{T}}_{u,i} t^j∈T^u,i为嵌入向量 t j t_j tj的拟合部分,反映了在推荐系统中该向量和结果之间的因果联系。
获得了拟合向量之后,拟合的残差也是很好计算的:
在残差中包含着推荐系统内的非因果联系,从直觉上来讲,就是将嵌入向量的非线性表示投影到由IVs的列向量张成的子空间,将拟合部分和残差部分分离开。有区别地干预拟合部分和残差部分,可以帮助挖掘两个部分对于推荐系统结果预测的不同影响。
传统的工具变量方法常使用线性模型来进行回归,这里对线性假设进行了松弛,首先使用了一个非线性神经网络来将处理映射到隐空间中,使得整体模型既拥有了工具变量方法的优点,同时也拥有了非线性神经网络强大的表示能力。
3.2.2 处理组合
拟合向量 T ^ u , i \hat{\mathcal{T}}_{u,i} T^u,i以及残差向量 T ~ u , i \tilde{\mathcal{T}}_{u,i} T~u,i可以被重新结合,获得重构的处理:
两个多层感知机的输入,是转换后的 t j t_j tj和 Z j Z_j Zj的连接。
传统的因果推理中,主要的挑战是如何从观测数据中识别因果联系,因此为了移除混杂因子的影响,残差部分一般会被直接丢弃。也就是在图二(b)中移除从混杂因子到残差 T ~ u , i \tilde{\mathcal{T}}_{u,i} T~u,i的边。然而在推荐系统场景中,主要目标还是提升偏好估计的精确度,而不仅仅是识别因果效应。现存的研究已经发现,非因果联系可以提升预测的精确度[44]。这一发现表明,并不是所有的混杂因子(偏差)需要被丢弃。所以可以利用残差来提升推荐的效果。
3.3 模型无关的应用
很多推荐系统[31, 37, 46]都分享了类似的结构,称为底层模型,如图三左部所示。底层模型将项目表示为嵌入向量,使用用户的历史行为来学习用户表示,并且基于习得的表示来预测 ( u , i ) (u,i) (u,i)的偏好分数。作者提出了IV4Rec这个模型无关框架,该框架可以在现有以基础模型为基础的推荐系统下实现,只需要简单地增加一个对项目嵌入向量的处理重构模块。该过程遵循图二(b)的因果图,使用查询作为工具变量来重构处理。
现有的推荐系统中, ( u , i ) (u,i) (u,i)的表示被表示为 t u t_u tu和 t i t_i ti, t u t_u tu可以通过聚合用户的历史交互项目以及其他上下文信息(例如用户模型、搜索历史等等)来进行计算。重构了处理之后,可以得到重构的项目嵌入向量 t i r e t_i^{re} tire以及重构的用户嵌入向量 t u r e t_u^{re} ture,这里的 t u r e t_u^{re} ture被计算为:
t 1 r e , t 2 r e , ⋯ , t n r e t_1^{re},t_2^{re},\cdots,t_n^{re} t1re,t2re,⋯,tnre是交互项目集 I u \mathcal{I}_u Iu中重构的项目向量, p u p_u pu是用户u的其他上下文的表示。 f u s e r f_{user} fuser可以是任何从用户行为中学习用户表示的模块。最终,用户的偏好可以基于习得的用户/项目表示来进行预测。
这里的 f p r e d f_{pred} fpred可以是MLP[46]或者内积[31]。
注意到训练的处理重构模块可以一种离线方式应用到项目上。当处理重构模块中的参数,即 M L P 0 MLP_0 MLP0、 M L P 1 MLP_1 MLP1、 M L P 2 MLP_2 MLP2中的参数,被确定后,模块可以用来重构所有项目嵌入向量,作为预训练的步骤。在线情况下,底层模型直接使用重构的项目。因此IV4Rec模型在在线推荐中并不需要任何额外的时间损耗。
3.4 模型训练
IV4Recs中的参数包括MLP中的参数以及底层推荐模型中的参数。所有的可训练的参数都被表示为 Θ \Theta Θ,并且基于 D r e c \mathcal{D}^{rec} Drec进行训练。更准确地来说,模型训练的任务等价于最优化接下来的交叉熵损失:
y ^ u , i \hat{y}_{u,i} y^u,i是对 ( u , i ) (u,i) (u,i)预测的偏好分数, ∣ ∣ Θ ∣ ∣ 2 \vert\vert\Theta \vert\vert^2 ∣∣Θ∣∣2是避免过拟合的正则化项, λ > 0 \lambda > 0 λ>0为系数。
4 讨论
4.1 使用搜索查询作为工具变量的可行性
根据工具变量估计理论,工具变量有两个假设:外生性和相关性。
对于外生性,意味着IVs(搜索查询)与(未观测的)混杂因子不相关。在推荐中,常见的混杂因子,例如可变偏差,包括位置偏差、选择偏差等。注意到目前搜索和推荐经常被部署为一个app的不同服务。当用户开始搜索时,查询被发起,同时当用户访问推荐系统的服务时,偏差也就出现了。此外,没有访问推荐服务用户也会发起查询。因此,这些搜索用户不会被推荐系统中的项目排序位置/曝光所影响。
至于相关性,意味着IVs是处理的原因,但是并不直接影响推荐系统的结果,例如用户的点击行为。搜索和推荐分享一个共同的目标:提供给用户满足他们信息需要的项目。在搜索中,用户的信息需求被精确地总结为查询。在推荐系统中,信息需求通过用户和项目的表示来被隐式地总结出来。当搜索引擎和推荐系统被部署到一个app里并且将相同的项目集服务于相同的用户群组,大量的搜索查询反映了推荐系统中部分的用户信息需求。该现象表明搜索查询可以被视为推荐中处理的一个原因。考虑到IVs(与一个项目有关的搜索查询)是用户搜索中产生的特定请求,很明显搜索不能直接影响推荐系统中的结果。
因此可以说搜索查询的嵌入向量很好地满足了外生性和相关性假设。
4.2 与传统IVs方法的不同
在因果推理领域,IVs方法提供了一个很有用的框架来学习处理和结果之间的因果效应,即使在混杂因子存在的情况下。提出的IV4Rec模型受IVs方法的启发,拥有其很多优势,包括使用外部搜索信息来构建推荐中的工具变量、使用最小二乘回归来分解处理。然而,IV4Rec方法做出了下面几个基础的改变来让传统的IVs方法适应推荐场景:
- 处理的表示: 作者使用原始的嵌入向量作为深度神经网络的输入,并且获得了嵌入向量的神经表示,而不是直接使用最小二乘法。在实际操作中,作者通过最小化在推荐任务中的CTR预测损失来更新这个神经表示,使得对IVs的应用变成了一个端到端的过程。修改使得提出的模型同时拥有IVs和神经网络的优点。
- 使用因果部分和非因果部分进行处理重构: 在传统的IVs方法中,最小二乘回归中的残差部分被丢弃。在作者提出的方法中,残差部分被用作间接联系部分的嵌入表示。这是因为作者的目标不是单纯识别因果联系。从原始的处理中找到合适的因果部分和非因果部分的重构对提升推荐的精确度更有用。
推荐任务中,偏差无处不在,例如选择偏差和流行度偏差,然而这些偏差常常混杂在一起并且很难去识别。本论文中,作者不去精确地对模型进行建模,而且集中使用搜索数据作为工具变量IVs来改进推荐的效果,探索了搜索和推荐任务之间的因果关系。IVs可以被用来调整已观测的以及未观测的混杂效应,提出的模型可以被当作一个使用搜索数据的因果学习框架。
5 实验
5.1 实验设置
5.1.1 数据集
IV4Rec需要搜索数据和推荐数据。本实验中,作者创造了两个数据集,一个是从快手短视频app上收集的日志数据,另一个是基于公开的MIND数据集[32]。表二展示了这些数据集的部分统计数据。
(说实话,作者造实验数据的过程看起来挺迷幻的,而且快手的数据集也不是公开的,感觉可以参考的价值不大)