关注我们,一起学习~
标题:Dually Enhanced Propensity Score Estimation in Sequential Recommendation
地址:https://gsai.ruc.edu.cn/uploads/20220903/bee817cd0a82cc1b93a55317f7edf979.pdf
代码:https://github.com/XuChen0427/Dually-EnhancedPropensity-Score-Estimation-in-Sequential-Recommendation
会议:CIKM 2022
学校,公司:人大,华为
1. 导读
对于序列推荐中的数据有偏问题,现有的基于逆向倾向分数(IPS)的无偏学习是在商品维度的,即将反馈数据视为与用户交互的商品序列。然而,也可以从用户的角度将反馈数据视为与商品交互的用户序列。此外,这两种视角可以共同增强倾向得分估计。本文从用户和商品的角度来估计倾向得分,称为双重增强倾向得分估计(DEPS)。具体而言,给定目标用户-商品对以及相应的商品和用户交互序列,DEPS首先构建一个时间感知因果图来表示用户-商品观察概率。根据该图,基于同一组用户反馈数据,分别从商品和用户的视图估计两个互补倾向得分。最后,设计了两个Transformer来进行最终的偏好预测。
2. 问题定义
2.1 序列推荐
用户-商品交互为
\mathcal{D}=\{(u,i,c_t)\}表示时间t时,用户u与商品i交互,
c_t\in\{0,1\}为反馈,是否点击。用户和商品的embedding表示为
\mathbf{e}(u),
\mathbf{e}(i)。在时间t,给定用户-商品对 (u, i),有两种交互序列:1. 用户交互的商品序列
\mathbf{h}_u^{ < t}=[i^1,...,i^{l(u,t)}],2. 商品交互的用户序列
\mathbf{h}_i^{ < t}=[u^1,...,u^{l(i,t)}]。
l()表示在时间t之前的交互个数。
基于上述序列,目标是构建函数
\hat{r}=f(u,i,\mathbf{h}_u^{ < t},\mathbf{h}_i^{ < t})预测用户在t时刻是否会和商品i交互。
2.2 序列推荐中的偏差
在序列推荐中,当用户u系统性地被曝光某些商品时就会出现偏差,即数据是有偏的。如图3(a)所示,从因果意义上讲,用户在t时刻点击一个商品 (𝑐𝑡 = 1) 仅当商品i与用户u相关 (
r_t=1) 并且i曝光给𝑢 (
o_{uit}=1) ,其中
o_{uit} \in \{0,1\}和
r_t\in\{0,1\}分别表示用户u感知到商品i并且与i相关, 可以表示为
c_t=r_t\cdot o_{uit}。进一步假设两个相互作用序列
\mathbf{h}_u^{ < t} 和
\mathbf{h}_i^{ < t} 也会影响u感知i。由于模型预测用户偏好
r_t是基于观察到的数据 , 预测的时候不可避免地受到物品曝光的影响。
因此,用户在t时刻点击商品的概率预测可以表示为下式,
P\left(c_{t}=1 \mid u, i, t\right)=P\left(r_{t}=1 \mid u, i, \mathbf{h}_{u}^{ < t}, \mathbf{h}_{i}^{ < t}\right) \cdot P\left(o_{u i t}=1\right)
2.3 无偏目标构建
理想情况下,推荐系统的学习目标应基于真实偏好和推荐模型预测得分之间的相关性来构建,如下式,
\hat{r}表示预测的相关性。
\delta是损失函数。理想情况下的损失是无法直接优化的,因为我们无法知道真实偏好
r。
\mathcal{L}_{n}^{\text {ideal }}=\sum_{u \in \mathcal{U}} \sum_{i \in I} \delta(r, \hat{r}(u, i)),
传统RS将观察到的点击c作为学习模型的标签,这不可避免地受到曝光或选择偏差的影响,如图3(b)所示。可以通过混杂因素的倾向得分来纠正偏差。通过倾向性得分
P(o=1)进行加权,公式如下,
\mathcal{L}_{n}^{\text {unbiased }}=\sum_{u \in \mathcal{U}} \sum_{i \in I}\left[\mathbb{I}\left(o_{u i}=1\right) \frac{\delta(c, \hat{r}(u, i))}{P\left(o_{u i}=1\right)}\right]
3. 所提方法:DEPS
3.1 无偏损失
给定用户商品史交互D,将理想学习目标定义为评估用户每次访问系统时的偏好:
\mathcal{L}_{s}^{\text {ideal }}=\sum_{u \in \mathcal{U}} \sum_{t:\left(u, i^{\prime}, c_{t}\right) \in \mathcal{D}} \sum_{i \in \mathcal{I}} \delta\left(r_{t}, \hat{r}_{t}\left(u, i, \mathbf{h}_{i}^{ < t}, \mathbf{h}_{u}^{ < t}\right)\right)
与非序列无偏推荐者模型不同,序列推荐中的倾向得分与时间相关,如图3(a)中的因果图所示。可以基于历史交互序列,预估时间t时的倾向性分数。给出以下定理1,时间感知的无偏学习目标函数,主要是基于商品交互序列和用户交互序列来估计倾向性分数,然后纠偏后,得到两个损失函数。其中α是平衡两个损失的系数,
\mathcal{D}^u=\{(i,c_t):(u,i,c_t) \in \mathcal{D}\},
\mathcal{D}^i=\{(u,c_t):(u,i,c_t) \in \mathcal{D}\},
P(i,\mathbf{h}_u^{ < t})表示商品i和
\mathbf{h}_u^{ < t}出现的概率,
P(u,\mathbf{h}_i^{ < t})同理。
\mathbb{E}_{o}\left[\mathcal{L}_{s}^{\text {unbiased }}\right]=\mathbb{E}_{o}\left[\alpha \mathcal{L}_{u}+(1-\alpha) \mathcal{L}_{i}\right]=\mathcal{L}_{s}^{\text {ideal }}
\begin{array}{l}
\mathcal{L}_{u}=\sum_{\left(u, i, c_{t}\right) \in \mathcal{D}}\left[\frac{\delta\left(c_{t}, \hat{r}_{t}\right)}{P\left(i, \mathbf{h}_{u}^{ < t}\right)}\right]=\sum_{u \in \mathcal{U}} \sum_{\left(i, c_{t}\right) \in \mathcal{D}^{u}} \frac{\delta\left(c_{t}, \hat{r}_{t}\right)}{P\left(i, \mathbf{h}_{u}^{ < t}\right)} \\
\mathcal{L}_{i}=\sum_{\left(u, i, c_{t}\right) \in \mathcal{D}}\left[\frac{\delta\left(c_{t}, \hat{r}_{t}\right)}{P\left(u, \mathbf{h}_{i}^{ < t}\right)}\right]=\sum_{i \in I} \sum_{\left(u, c_{t}\right) \in \mathcal{D}^{i}} \frac{\delta\left(c_{t}, \hat{r}_{t}\right)}{P\left(u, \mathbf{h}_{i}^{ < t}\right)}
\end{array}为了提升预估的稳定性,对预估后的倾向性分数做裁剪,公式如下,
M \in (0,1)为裁剪的值
\begin{array}{l}
\widetilde{P}\left(i, \mathbf{h}_{u}^{ < t}\right)=\max \left\{P\left(i, \mathbf{h}_{u}^{ < t}\right), M\right\} \\
\widetilde{P}\left(u, \mathbf{h}_{i}^{ < t}\right)=\max \left\{P\left(u, \mathbf{h}_{i}^{ < t}\right), M\right\}
\end{array}基于上述信息,可以将无偏的序列推荐学习分为三步:1. 利用元组
(u,i,\mathbf{h}_u^{ < t},\mathbf{h}_i^{ < t})估计倾向性分数
\tilde{P}(i,\mathbf{h}_{u}^{ < t}),
\tilde{P}(u,\mathbf{h}_{i}^{ < t})。2. 构建序列推荐模型。3. 基于损失函数训练模型。
3.2 基于GRU估计倾向性分数
序列
\mathbf{h}_u^{ < t}和
\mathbf{h}_i^{ < t} 与整个商品和用户集相比,它们非常稀疏。在本文中,使用GRU和裁剪来估计倾向得分。具体来说,两个GRU分别用于估计
P(i,\mathbf{h}_u^{ < t})和
P(u,\mathbf{h}_i^{ < t}), 如图2(c)所示。给定一个元组
(u,i,\mathbf{h}_u^{ < t},\mathbf{h}_i^{ < t}), 从商品的角度来看,其倾向性得分估计为M和
P(i,\mathbf{h}_u^{ < t})的最大值,公式如下,其中
y(i^{l(u,t)})\in \mathbb{R}^d是GRU最后一层的输出。
\widetilde{P}\left(i, \mathbf{h}_{u}^{ < t}\right)=\max \left\{\frac{\exp \left(\mathbf{e}(i)^{T} \mathbf{y}\left(i^{l(u, t)}\right)\right)}{\sum_{i^{\prime} \in I} \exp \left(\mathbf{e}\left(i^{\prime}\right)^{T} \mathbf{y}\left(i^{l(u, t)}\right)\right)}, M\right\}
GRU在序列中中扫描商品,在第k层,它以第k个商品的embedding
\mathbf{e}(i^k)作为输入,输出
y(i^k)表示子序列
[i^1,...,i^k]。公式如下,其中z是各个隐藏层的输出向量。同理可以得到
\tilde{P}(u,\mathbf{h}_i^{ < t})y(i^k),z^k=GRU_1(\mathbf{e}(i^k),z^{k-1})
3.3 基于Transformer的推荐系统
如图4所示,序列推荐模型的实现由Transformer层和预测层组成。Transformer层由两个Transformer组成。一个转换序列
h_u^{ < t} 和目标商品i为相应的向量, 另一个将序列
h_i^{ < t}和目标用户u转换成相应的表征向量。预测层连接向量并使用MLP进行预测。
3.3.1 Transformer层
输入元组(u,i,t) 的表征可以表示为商品id的embedding和用户历史序列embedding的拼接:
e^{iv}(u,i,t)=[e(h_u^{ < t})||e(i)],e(i)为商品embedding,
e(h_u^{ < t})为t之前的序列的embedding,对序列采用Transformer编码,然后对其输出做均值得到序列表征,公式如下,同理可以基于商品交互的用户序列得到
e^{uv}(u,i,t)。
e(h_u^{ < t})=Mean(Transformer_1([e(i^1),...,e(i^{l(u,t)})]))
3.3.2 预测层
最后通过MLP预测商品和用户的相关性,公式如下,
\hat{r}=\sigma\left(\mathbf{M L P}\left(\mathbf{e}^{\mathrm{iv}}(u, i, t) \| \mathbf{e}^{\mathrm{uv}}(u, i, t)\right)\right)
3.4 基于倾向性分数的训练
所提方法包含的参数为
\Theta=\{\theta_e,\theta_p,\theta_t,\theta_m\}这些参数分别对应于embedding模型的参数,通过商品和用户序列训练倾向性分数估计模型的参数,分别编码用户序列和商品序列的Transformer的参数和最终的预测层的参数。
本文采用的是两阶段的训练方法,
\{\theta_e,\theta_p,\theta_t\}采用无监督学习训练,从而使网络有一个较好的初始值
3.4.1 第一阶段:无监督学习
在第一阶段,所有用户和商品对应的序列会用于无监督训练,即
h_u^{ < t}和
h_i^{ < t}。基于自回归语言模型和掩蔽语言模型,设计两个学习任务,分别将这两个语言模型应用于用户序列和商品序列,从而得到以下损失函数,其中
\lambda_p为平衡两部分损失的系数,AR对应的损失是自回归模型应用于用户和商品两个序列构造的损失函数,即以不同的子序列预测后一个时间的商品,MLM对应的是掩码语言模型,MLM这部分和bert4rec中的类似。
\mathcal{L}^{\text {stage-1 }}=\left(\mathcal{L}_{u}^{\mathrm{AR}}+\mathcal{L}_{i}^{\mathrm{AR}}\right)+\lambda_{p}\left(\mathcal{L}_{u}^{\mathrm{MLM}}+\mathcal{L}_{i}^{\mathrm{MLM}}\right)
\mathcal{L}_{u}^{\mathrm{AR}}=\sum_{u \in \mathcal{U}} \mathrm{AR}\left(\mathbf{h}_{u}^{ < t}\right)=\sum_{u \in \mathcal{U}} \sum_{m=1}^{l(u, t)}-\log P\left(i^{m} \mid\left[i^{1}, \cdots, i^{m-1}\right]\right),
\mathcal{L}_{i}^{\mathrm{AR}}=\sum_{i \in I} \operatorname{AR}\left(\mathbf{h}_{i}^{ < t}\right)=\sum_{i \in I} \sum_{m=1}^{l(i, t)}-\log P\left(u^{m} \mid\left[u^{1}, \cdots, u^{m-1}\right]\right)
3.4.2 第二阶段:无偏学习
基于前面的无偏目标函数和用户商品相关性的预测方式,这里采用常用的交叉熵损失函数,可结合前面提到的无偏损失函数来构建最终的训练目标。
\delta(c, \hat{r})=c \cdot \log (\hat{r})+(1-c) \log (1-\hat{r})
4. 结果