【论文阅读】 推荐系统去噪文章 The World is Binary: Contrastive Learning for Denoising Next Basket Recommendation

本文主要面对的场景是购物篮推荐下的一篇去噪的经典文章。
发表在SIGIR2021上,作者来自北大:作者
论文原链接:https://dl.acm.org/doi/10.1145/3404835.3462836

原文简介

下一次购物篮推荐旨在通过考虑用户之前购买的一系列购物篮来推断用户在下次访问时将购买的一组商品。 这项任务越来越受到学术界和工业界的关注。 现有的解决方案主要集中于对其历史交互的顺序建模。 然而,由于用户行为的多样性和随机性,并非所有这些篮子都有助于识别用户的下一步行动。 有必要对篮子进行去噪并提取可信的相关项目以提高推荐性能。 不幸的是,这个维度在当前的文献中通常被忽视。 为此,在本文中,我们提出了一种对比学习模型(称为 CLEA)来自动提取与目标项目相关的项目以进行下一个购物篮推荐。 具体来说,在 Gumbel Softmax 的支持下,我们设计了一个去噪生成器来自适应地识别历史购物篮中的每个项目是否与目标项目相关。 通过这个过程,我们可以获得每个用户的每个篮子的正子篮子和负子篮子。 然后,我们通过基于 GRU 的上下文编码器根据每个子篮的组成项目推导每个子篮的表示,该表示表示与目标项目相关的偏好或不相关的噪声。 之后,设计了一种新颖的两阶段锚引导对比学习过程,以同时指导这种相关性学习,而不需要任何项目级相关性监督。 据我们所知,这是第一个以端到端方式对篮子进行项目级去噪以进行下一个篮子推荐的工作。 在四个具有不同特征的现实世界数据集上进行了广泛的实验。 结果表明,我们提出的 CLEA 比现有最先进的替代方案取得了显着更好的推荐性能。 此外,进一步的分析还表明,CLEA 可以成功地发现与推荐决策真正相关的项目。

简介部分

下一个购物篮推荐:一般来说,给定用户的一系列历史购物篮,其中每个购物篮包含一组物品,我们希望推荐用户下一步可能购买的购物清单。
由于用户行为的多样性和随机性,购物篮中往往包含许多与他/她的下一个选择无关的项目,这往往会淹没来自少数真正相关的有用信号。 因此,一个好的推荐器应该能够提取与目标项目相关的这些项目,以推断出正确的推荐。

但是面临了两个问题:
1)由于在购物篮推荐场景中没有直接的机制来收集项目级相关信息,因此很难在不招募任何项目级监督信号的情况下训练有效的去噪模型来增强用户理解。
2)去噪过程应该是上下文感知的,使得历史项目的相关性应该依赖于目标项目。 此外,用户行为的随机性也可能带来一些与任务无关的项目,这无疑会加剧相关性学习过程。

这两个问题直接说明不好理解,所以见下图:
一个激励性的例子来说明为下一个篮子推荐进行数据去噪的必要性。 给定前两个篮子(B=1 和 B=2),我们的目标是推荐用户将在下一个篮子(即 B=3)中购买的商品。
给定前两个篮子(B=1 和 B=2),我们的目标是推荐该用户将在下一个篮子(即 B=3)中购买的商品。 有趣的是,第二个篮子中的项目电话应该被忽略,因为它与目标篮子中的所有项目没有明显的关系。 此外,虽然足球鞋和足球衫表明与足球有很强的联系,但它却分散了人们对葡萄品种的偏好。
其中第一点项目级别相关信息需要进一步添加监督信号,第二点指需要项目之间的信息,笔者认为就是编码层面仅仅为一个购物篮生成一个embedding,而不是item,此外item没有上下文购物篮中的信息,换言之存在噪声。
大多数工作缺乏下文感知建模,将整个序列转换为固定长度的向量,这可能会在模型学习过程中引入太多的噪声。

因此本文提出了CLEA(Contrastive Learning Model)用于自动提取与目标商品相关的商品,以进行下一次购物篮推荐。
CLEA包括一个子篮子序列生成器,上下文编码器,和相关性建模的对比学习过程(a sub-basket sequence generator, a context encoder, and a contrastive learning process for relevance modeling)
序列生成器用作具有Gumbel Softmax的去噪生成器(表示为G),以显式地从每个篮子中提取与目标项目相关的项目。在这个意义上,去噪生成器将每个篮子分成两个不相交的子篮子:子篮子和子篮子。正子篮子包含相应篮子内的所有相关项目,而负子篮子则包含其他不相关的项目。在这种项目级去噪之后,我们可以基于去噪生成器的输出来形成两个子篮子序列。对于每个子篮子序列,我们然后通过基于GRU的上下文编码器,它表示相关的偏好或无关的噪声关于目标项的基础上,其组成项目推导出每个子篮子的表示。

相关工作

这部分主要说了下一购物篮推荐和基于注意力的推荐,就不多提了。

提出的方法

问题模型

用户集合 U = { u 1 , u 2 , ⋯   , u ∣ U ∣ } \mathcal{U}=\{u_{1},u_{2},\cdots,u_{|U|}\} U={u1,u2,,uU},item集合 I = { i 1 , i 2 , ⋯   , i ∣ I ∣ } \mathcal{I}=\{i_{1},i_{2},\cdots,i_{|I|}\} I={i1,i2,,iI},对于每个用户u,使用 B u = { b u 1 , b u 2 , ⋯   , b u n } \mathcal{B}_{u}=\{b_{u}^{1},b_{u}^{2},\cdots,b_{u}^{n}\} Bu={bu1,bu2,,bun}代表最近购买的n个物品的历史,上角标是第几个购物篮子。
目标是从 B u \mathcal{B}_{u} Bu中挑出一个子篮子序列 B u , i c = { b u , i c 1 , b u , i c 2 , ⋯   , b u , i c n } \mathcal{B}_{u, i_{c}}=\left\{b_{u, i_{c}}^{1}, b_{u, i_{c}}^{2}, \cdots, b_{u, i_{c}}^{n}\right\} Bu,ic={bu,ic1,bu,ic2,,bu,icn},其中的所有的b都为 B u \mathcal{B}_{u} Bu的对应位置去噪后的购物篮,即 b u , i c t ⊆ b u t b_{u, i_{c}}^{t} \subseteq b_{u}^{t} bu,ictbut
由于本文都针对单个用户,因此下文中下角标u省略。

去噪生成器

CLEA的整体流程图如下:
CLEA
给定一个篮子𝑏𝑡和一个目标项目𝑖𝑐,我们的目标是设计一个去噪生成器来自动识别篮子𝑏𝑡内的项目,这些项目携带有关用户对项目𝑖𝑐的偏好的信息信号。 直观上,去噪生成器可以被视为二元分类器 𝑦𝑗,𝑐 = G(𝑖 𝑗, 𝑖𝑐) 来决定项目 𝑖 𝑗 ∈ 𝑏𝑡 是否与item 𝑖𝑐 相关。 当𝑦𝑗,𝑐=1时,表示𝑖𝑗与𝑖𝑐相关。 相反,𝑦𝑗,𝑐 = 0 表示它们不相关。 形式上,让x𝑗和x𝑐分别表示项目𝑖𝑗和𝑖𝑐的独热表示,我们可以简单地将去噪生成器构建为多层感知(MLP)来建模𝑖𝑗和𝑖𝑐之间的相关性:

G ( i j , i c ) ∼ f ( x j ⊕ x c ) (1) \mathcal G(i_j,i_c)\sim f(\text x_j\oplus \text x_c) \tag 1 G(ij,ic)f(xjxc)(1)

其中 ⊕ 是向量串联操作,并且 MLP 网络 𝑓(·) 与方程 1 中使用的 sigmoid 激活函数执行非线性传输来识别两个项目之间的相关性。 这里,我们可以采用简单的阈值或采样策略,通过 𝑓(·) 对实值输出进行二值化。 例如,当 𝑓(x𝑗 ⊕ x𝑐) ≥ 0.5 时,𝑦𝑗,𝑐 设置为 1。

然而,G 对项目级相关性的这种硬编码(即 0 与 1)是不可微分的,并且阻止模型通过反向传播得到良好的训练。 为了解决这个问题,受 [26, 34] 的启发,我们将 Gumbel Softmax 集成到我们的去噪生成器中作为可微分代理,以支持对离散输出的模型学习。 具体来说,新的去噪生成器重写如下:

p = f ( x j ⊕ x c ) (2) p=f(\mathbf{x}_{j}\oplus\mathbf{x}_{c})\tag 2 p=f(xjxc)(2)
G ( i j , i c ) = exp ⁡ ( ( log ⁡ ( p ) + g 1 ) / τ ) ∑ y = 0 1 exp ⁡ ( log ⁡ ( p y ( 1 − p ) 1 − y ) + g y ) / τ ) (3) G(i_{j},i_{c})=\frac{\exp((\log(p)+g_{1})/\tau)}{\sum_{y=0}^{1}\exp(\log(p^{y}(1-p)^{1-y})+g_{y})/\tau)}\tag 3 G(ij,ic)=y=01exp(log(py(1p)1y)+gy)/τ)exp((log(p)+g1)/τ)(3)

其中 𝑔𝑦 是从 Gumbel 分布中采样的独立同分布作为噪声干扰: 𝑔 = − log(− log(𝑥)) 和 𝑥 ∼ Uniform(0, 1)。 τ \tau τ是用于平滑 G 的离散分布的温度参数,也就是说,𝜏调整G生成的相关性估计的锐度。当𝜏→0时,G近似于one-hot向量。 另一方面,当 𝜏→∞ 时,G 无法区分相关性和对应项。

Gumbel Softmax:允许模型中有从离散的分布(比如类别分布categorical distribution)中采样的这个过程变得可微,从而允许反向传播时可以用梯度更新模型参数。 来源知乎

现在,当 G(𝑖𝑗, 𝑖𝑐) ≥ 0.5 时,我们可以应用一个简单的阈值策略将项目 𝑖𝑗 分类为正子篮 b t p o s b_{t}^{pos} btpos; 否则,子篮子为负数 b t n e g b_{t}^{neg} btneg。 换句话说,我们可以将用户𝑢的购买历史显式分解为一系列正子篮 B i c p o s = { b 1 p o s , b 2 p o s , ⋯   , b n p o s } B_{i_{c}}^{pos}=\{b_{1}^{pos},b_{2}^{pos},\cdots,b_{n}^{pos}\} Bicpos={b1pos,b2pos,,bnpos} 和一系列负子篮 B i c n e g = { b 1 n e g , b 2 n e g , ⋯   , b n n e g } B_{i_{c}}^{neg}=\{b_{1}^{neg},b_{2}^{neg},\cdots,b_{n}^{neg}\} Bicneg={b1neg,b2neg,,bnneg}

上下文编码器

对于每个子篮,我们首先利用简单的平均池化操作导出嵌入表示,如下所示:
b t p o s = 1 ∑ i j ∈ b t p o s G ( i j , i c ) ∑ i j ∈ b t p o s G ( i j , i c ) ⋅ v i j (4) \mathbf{b}_{t}^{pos} =\frac{1}{\sum_{i_{j}\in b_{t}^{pos}}G(i_{j},i_{c})}\sum_{i_{j}\in b_{t}^{pos}}G(i_{j},i_{c})\cdot\mathbf{v}_{i_{j}}\tag 4 btpos=ijbtposG(ij,ic)1ijbtposG(ij,ic)vij(4)
b t n e g = 1 ∑ i j ∈ b t n e g ( 1 − G ( i j , i c ) ) ∑ i j ∈ b t n e g ( 1 − G ( i j , i c ) ) ⋅ v i j (5) \mathbf{b}_{t}^{neg} =\frac{1}{\sum_{i_{j}\in b_{t}^{neg}}(1-G(i_{j},i_{c}))}\sum_{i_{j}\in b_{t}^{neg}}(1-G(i_{j},i_{c}))\cdot\mathbf{v}_{i_{j}} \tag 5 btneg=ijbtneg(1G(ij,ic))1ijbtneg(1G(ij,ic))vij(5)

其中 b t p o s \mathbf{b}_{t}^{pos} btpos b t n e g \mathbf{b}_{t}^{neg} btneg分别是第t个篮子的正子篮表示和负子篮表示,v𝑖𝑗是项目 𝑖 𝑗 的可学习嵌入表示。 之后,分别对两个子篮序列 B i c p o s \mathcal{B}_{i_c}^{pos} Bicpos B i c n e g \mathcal{B}_{i_c}^{neg} Bicneg的顺序交互进行建模就变得很简单。 在这里,我们利用门控循环单元(GRU)作为上下文编码器来导出相应序列1中每个子篮的隐藏状态:
h t p o s = G R U ( b t p o s , h t − 1 p o s ) (6) \mathbf{h}_t^{pos}=\mathrm{GRU}(\mathbf{b}_t^{pos},\mathbf{h}_{t-1}^{pos})\tag 6 htpos=GRU(btpos,ht1pos)(6)
为最后一个子篮( b n p o s {b}_n^{pos} bnpos计算的隐藏状态(表示为 ( h i c p o s (\mathbf{h}_{i_c}^{pos} (hicpos)作为用户对目标项目 𝑖𝑐 的偏好的组合。 相反,隐藏状态 ( h i c n e g (\mathbf{h}_{i_c}^{neg} (hicneg可以被视为与 𝑖𝑐 无关的用户偏好的混合。 请注意,相同的 GRU 网络适用于两个子篮序列(即 B i c p o s \mathcal{B}_{i_c}^{pos} Bicpos B i c n e g \mathcal{B}_{i_c}^{neg} Bicneg)。

锚-引导对比学习

模型优化的目标是指导去噪生成器的相关性学习,并帮助估计用户对目标项目的偏好。 如上所述,偏好特征 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos预计能够精确捕获与目标项目 𝑖𝑐 相关的信息语义。 因此,我们想就 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos做出正确的推荐。 实际上,有两个相关的观点可以实现这一目的:
(1) 去噪生成器 G 提取的每个相关项目确实携带了一些区分信号,表明用户对项目 𝑖𝑐 的偏好与其他项目的偏好。 从这个意义上说,通过对正子篮(即 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos)执行顺序建模,应该可以轻松推断目标项目(即高偏好估计);
(2) 去噪生成器 G 提取的每个不相关项目不应该告诉用户对项目 𝑖𝑐 的偏好。 因此,根据 h i c n e g \mathbf{h}_{i_c}^{neg} hicneg做出的偏好估计应该相对较低。

因此,我们首先计算用户购买商品𝑖𝑐的可能性如下:
D ( h i c p o s ) = e x p ( h i c p o s ⋅ w c ) ∑ i l ∈ I e x p ( h i c p o s ⋅ w l ) (7) \mathcal{D}(\mathbf{h}_{i_c}^{pos})=\frac{exp(\mathbf{h}_{i_c}^{pos}\cdot\mathbf{w}_c)}{\sum_{i_l\in I}exp(\mathbf{h}_{i_c}^{pos}\cdot\mathbf{w}_l)}\tag 7 D(hicpos)=ilIexp(hicposwl)exp(hicposwc)(7)
其中 w𝑐 和 w𝑙 分别是项目 𝑖𝑐 和 𝑖𝑙 的可学习偏好嵌入, D ( h i c p o s ∈ ( 0 , 1 ) \mathcal{D}(\mathbf{h}_{i_c}^{pos}\in (0, 1) D(hicpos(0,1) 是值越大表示偏好越高的可能性。 那么目标函数表述如下:
ℓ = ∑ i c ∈ b u n + 1 [ l o g ( D ( h i c p o s ) ) + l o g ( 1 − D ( h i c n e g ) ) ] − λ ∣ ∣ Φ ∣ ∣ 2 (8) \ell=\sum_{i_{c}\in b_{u}^{n+1}}\left[log\big(\mathcal{D}(\mathbf{h}_{i_{c}}^{pos})\big)+log\big(1-\mathcal{D}(\mathbf{h}_{i_{c}}^{neg})\big)\right]-\lambda||\Phi||^{2}\tag 8 =icbun+1[log(D(hicpos))+log(1D(hicneg))]λ∣∣Φ∣2(8)
其中 𝜆 是正则化系数。 符号 Φ 表示所有模型参数,包括用于去噪生成器 G 的 Φ𝐺、用于 GRU 模块的 Φ𝐺𝑅𝑈 以及用于似然计算器 D 的 Φ𝐷。可以利用许多随机梯度下降技术来执行模型学习。 在这里,我们使用 Adam 优化器 [5] 来最大化所有训练实例的目标函数。 此外,为了减少模型初始化的影响并探索更大空间中的参数,我们使用一些相对较大的 𝜏 来进行去噪生成器 G 的模型训练,然后将其逐渐退火到一个小的常数。

请注意,降噪生成器 G 有望通过在相关项目和篮子噪声之间进行更精确的区分来优化目标函数。 然而,这个目的并不能得到保证,因为没有提供项目级相关信息来监督 G 的学习。在公式8中,我们仅计算所提出的 CLEA 基于训练集估计用户偏好的准确度。 在初步研究中,我们发现使用公式8训练的模型经常产生不稳定的性能。 由于缺乏监督信号,G 的较差学习可以通过更新其他参数(例如上下文编码器或偏好嵌入)轻松修复(参考公式7)。

受[21]的启发,我们引入了两阶段锚引导对比学习过程来促进 CLEA 的优化。 当去噪生成器 G 的性能低于预期时,我们可以根据 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos确定用户对目标项目 𝑖𝑐 的偏好。 然而,当我们通过将每个篮子中的所有项目视为相关来关闭 G 时,历史篮子的原始序列相当于相应的正子篮子序列。 在这种情况下,我们可以通过将等式4中的 G(𝑖 𝑗, 𝑖𝑐) 设置为 1,将上下文编码器导出的结果 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos视为偏好锚 h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor。我们认为 h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor可能会引入一些不确定性,导致相对较低的偏好估计, D ( h i c p o s ) > D ( h i c a n c h o r ) \mathcal{D}(\mathbf{h}_{i_c}^{pos})>\mathcal{D}(\mathbf{h}_{i_c}^{anchor}) D(hicpos)>D(hicanchor)。 类似地,当 G 表现良好时,G 生成的负子篮子无法推断出用户对商品 𝑖𝑐 的偏好。 也就是说, h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor做出的偏好估计应该大于 h i c n e g \mathbf{h}_{i_c}^{neg} hicneg的对应偏好估计,即 D ( h i c a n c h o r ) > D ( h i c n e g ) \mathcal{D}(\mathbf{h}_{i_c}^{anchor})>\mathcal{D}(\mathbf{h}_{i_c}^{neg}) D(hicanchor)>D(hicneg)。 因此,这个目标函数可以写成如下:
ℓ = ∑ i c ∈ b u n + 1 [ l o g σ ( D ( h i c p o s ) − D ( h i c a n c h o r ) ) ] + l o g σ ( D ( h i c a n c h o r ) − D ( h i c n e g ) ) ] − λ ∣ ∣ Φ ∣ ∣ 2 (9) \ell=\sum_{i_{c}\in b_{u}^{n+1}}\left[log\sigma\big(\mathcal{D}(\mathbf{h}_{i_{c}}^{pos})-\mathcal{D}(\mathbf{h}_{i_{c}}^{anchor})\big)\right]\\+log\sigma\big(\mathcal{D}(\mathbf{h}_{i_{c}}^{anchor})-\mathcal{D}(\mathbf{h}_{i_{c}}^{neg})\big)\bigg]-\lambda||\Phi||^{2}\tag 9 =icbun+1[logσ(D(hicpos)D(hicanchor))]+logσ(D(hicanchor)D(hicneg))]λ∣∣Φ∣2(9)

其中 𝜎 是非线性函数,𝜎(𝑥) = 1/(1+𝑒−𝑥) 。 正如我们所看到的,与等式8进行比较,新添加的 D ( h i c a n c h o r ) \mathcal{D}(\mathbf{h}_{i_c}^{anchor}) D(hicanchor)分别为 D ( h i c p o s ) \mathcal{D}(\mathbf{h}_{i_c}^{pos}) D(hicpos) D ( h i c n e g ) \mathcal{D}(\mathbf{h}_{i_c}^{neg}) D(hicneg) 引入了对比学习目标。 这迫使 CLEA 学习强大的 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos来捕获每个篮子中可信的相关商品。 请注意,由于 h i c p o s \mathbf{h}_{i_c}^{pos} hicpos h i c n e g \mathbf{h}_{i_c}^{neg} hicneg都与锚 h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor进行比较,因此 h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor应该足够强大以支持去噪篮子的目标以获得更好的推荐。

因此,我们设计了一个两阶段的学习过程来适应 h i c a n c h o r \mathbf{h}_{i_c}^{anchor} hicanchor的优化。 具体来说,整个边缘学习过程如下:

第一步:我们首先训练 D ( h i c a n c h o r ) \mathcal{D}(\mathbf{h}_{i_c}^{anchor}) D(hicanchor)以获得不执行去噪生成器的基准,目标函数为:
ℓ a n c h o r = ∑ i c ∈ b u n + 1 l o g ( D ( h i c a n c h o r ) ) − λ ∣ ∣ Φ ∣ ∣ 2 (10) \ell_{anchor}=\sum_{i_{c}\in b_{u}^{n+1}}log\big(\mathcal{D}(\mathbf{h}_{i_{c}}^{anchor})\big)-\lambda||\Phi||^{2}\tag {10} anchor=icbun+1log(D(hicanchor))λ∣∣Φ∣2(10)
第二步:我们使用经过良好预训练的 D ( h i c a n c h o r ) \mathcal{D}(\mathbf{h}_{i_c}^{anchor}) D(hicanchor)来指导 D ( h i c p o s ) \mathcal{D}(\mathbf{h}_{i_c}^{pos}) D(hicpos) D ( h i c n e g ) \mathcal{D}(\mathbf{h}_{i_c}^{neg}) D(hicneg) 的学习过程。 我们迭代这两个步骤直到覆盖。

详细算法如算法1所示。对于下一个篮子推荐,我们使用方程3直接生成阈值0.5的相关项目。 然后,使用学习到的似然计算器 D 通过方程 7 为每个候选项目分配似然得分。然后,我们选择 top-𝐾 项目作为最终推荐。

算法

实验

数据处理

首先对四个数据集TaFeng、ValuedShopper、Dunnhumby和 Instacart进行了预处理,从测试类型用户集中抽取 10% 用户的所有交易(即 75000 中的 75、00)进行实验。删除所有数据集中交互记录少于 10 个的用户和项目。 此外,过滤掉所有交易次数少于 3 次的用户。结果:
处理后的数据集
对于每个用户,我们根据时间戳对她/他的记录进行排序,形成篮子序列。 根据排序后的篮子,我们将每个用户的最后一个篮子作为测试数据,倒数第二个作为验证数据,其余的作为训练数据。 与[11]类似,我们利用采样指标来加速计算。 为了提高估计的质量,每个真实值篮子都与 1,000 个负项配对 [12]。

Gumbel Softmax 中的初始温度 𝜏 设置为 10。我们按照 [10] 根据以下计划对 𝜏 进行退火
τ ← m a x ( 0.3 , τ e x p ( − r t ) ) \tau\leftarrow max\begin{pmatrix}0.3,\tau exp(-rt)\end{pmatrix} τmax(0.3,τexp(rt))
其中𝑡是全局训练批次,𝑟表示衰减率,设置为𝑟 = 10−4。 每 500 个批次后,我们根据上述函数对温度进行退火。

比较结果

结果
(1)对于传统方法,预计 Pop-K 在所有数据集上表现最差。 通过考虑项目之间的交互,PSP 和 ItemKNN 的表现都比 Pop-K 更好。 与 ItemKNN 相比,PSP 可以捕获高阶序列模式,从而在所有数据集上获得更好的性能。 尽管有效,PSP 和 ItemKNN 仍面临稀疏问题,因为这些统计方法需要足够的数据。 通过对用户的一般品味和顺序模式进行建模,FPMC 缓解了稀疏问题,并且比其他传统方法表现得更好。
(2) 很明显,深度方法在所有数据集上都比传统方法表现更好。 这验证了应用非线性学习来建模项目之间复杂交互的必要性。 在这些模型中,Beacon 利用项目的相关信息来增强篮子序列的表示,并且优于 DREAM 和 GRU4Rec,后者平等地对待顺序模型中所有项目的贡献。 此外,我们观察到SASRec在四个数据集上也优于DREAM和GRU4Rec,这表明自注意力机制对于顺序建模是有效的。 值得强调的是 BERT4Rec > Beacon > SASRec。 原因可能是双向自注意力网络和完形填空目标对序列信息建模更有效,这在[22]中得到了证实。
(3) 最后,我们提出的 CLEA 在四个数据集上相对于所有方法实现了最佳性能。 尽管 Beacon 还表明存在有利于下一个购物篮推荐的信息相关性,但它无法识别估计下一个选择真正需要哪个项目。 此外,不相关的噪声也被保留,这可能会使偏好学习变得复杂。 CLEA 的核心新颖之处在于自动分析历史项目和目标项目之间的交互。 与Beacon相比,CLEA可以从更微观的角度很好地模拟这些相互作用。 因此,可以学习对用户偏好的更精确的估计。 具体来说,以 Instacart 数据集为例,与最佳基线方法(即 BERT4Rec)相比,CLEA 在 Precision@5、Recall 方面的绝对性能提升约为 3.94%、4.33%、3.73% 和 3.91% 分别为@5、F1-score 和NDCG@5。

进阶分析

不同用户群分析

为了进一步研究不同方法的性能,我们根据平均购物篮大小将用户分为三组(即稀疏、中等和密集),并对不同用户组进行比较。 以Instacart数据集为例,如果平均篮子大小小于5,则将用户分为稀疏组;如果大于10,则将用户分为密集组。其余用户作为媒介。 这样,稀疏、中、密的比例分别为20%、45%、35%。 这里我们只报告Instacart数据集上的比较结果,从其他数据集也可以得出类似的结论。 结果如表 3 所示。从结果中我们可以看到,CLEA 相对于所有基线(包括基于注意力的解决方案,如 SASRec 和 BERT4Rec)始终取得了显着的性能提升。 这进一步验证了 CLEA 进行篮子去噪以获得更好的推荐性能的有效性。
进阶分析

消融实验

CLEA 的核心优点是设计了去噪生成器和对比学习过程 G,仅利用与目标项目相关的项目进行偏好学习。 在这里,我们进行了一系列的消融研究,以检查每个设计选择的效果以及测试集上的性能差异。

有无锚向量
锚

去噪生成器
去噪

Gumble Softmax
Gumble Softmax
我们需要一个大的初始温度来保证方程3有更宽的采样范围。另一方面,当我们继续提高初始温度时,整体性能会下降。 原因是较高的温度加剧了模型收敛的难度。 对 𝛾 也进行了类似的观察。 具体来说,小的 𝛾(即 𝛾 = 10−5)使得 CLEA 难以收敛,而高的 𝛾(即 𝛾 = 10−2)限制了在更广泛的采样空间中探索的能力。 根据结果​​,我们在实验中将初始温度设置为 10,衰变稀有度 𝛾 设置为 10−4。

embedding size
embedding

实例研究

我们通过对 Instacart 数据集的案例研究进一步进行定性分析。 具体来说,如图 6 所示,我们呈现了示例用户的购物篮序列的快照。 为了便于说明,我们只显示最后 3 个篮子。 给定购物篮序列,我们使用 CLEA 和 Beacon 来推荐用户接下来要购买的商品。 为了方便演示,我们提供了两个模型的top-3推荐结果。
case
我们可以看到 CLEA 可以正确推荐所有 3 个项目。 例如,在确定是否首选草莓时,CLEA 将 {𝑔𝑟𝑎𝑝𝑒, 𝑡𝑜𝑚𝑎𝑡𝑜} 识别为相关项目,并根据等式 1 生成高似然得分。 7. 面包和鳄梨也观察到类似的决策过程,CLEA 发现 {𝑡𝑜𝑚𝑎𝑡𝑜、𝑡𝑢𝑟𝑘𝑒𝑦、𝑐ℎ𝑒𝑒𝑠𝑒、 𝑜𝑛𝑖𝑜𝑛} 和 {𝑡𝑜𝑚𝑎𝑡𝑜, 𝑐ℎ𝑒𝑒𝑠𝑒} 分别是两个重要的模式。 相比之下,通过应用草莓的全局相关性分析,Beacon 认为香蕉和葡萄是另外两种最佳推荐。 我们可以看到,通过去噪生成器生成正子篮序列,我们的 CLEA 可以很好地捕获不同的用户偏好,进而做出更精确的推荐。

我们还统计了 CLEA 删除的不相关项目。 具体来说,TaFeng、Instcacart、Dunnhumby 和 ValuedShopper 上每个购物篮的平均移除商品分别为 5.01、7.54、8.92 和 6.23。 它表明 CLEA 确实可以对篮子中的物品进行降噪。 通过删除这些不相关的项目,CLEA 在所有数据集上获得了卓越的性能。

结论

在本文中,我们解决了下一篮子推荐场景中的去噪问题,提出了一种对比学习模型(称为 CLEA)来自动提取与下一篮子推荐的目标项目相关的项目。 具体来说,我们首先设计一个去噪生成器来自适应地识别历史篮子中的每个项目是否与目标项目相关。 通过将初始篮子分成两个子篮子,我们通过基于 GRU 的上下文编码器导出它们的表示,该编码器表达与目标项目相关的兴趣或不相关的噪声。 之后,设计了一种新颖的锚引导对比学习过程来同时指导这种相关性学习,而不需要任何项目级相关性监督。 据我们所知,这是第一个以端到端方式对篮子进行项目级去噪以进行下一个篮子推荐的工作。 作为未来的工作,我们计划利用弱监督信号来更好地理解项目之间的相互作用,以进一步改进。

笔者后续持续更新

具体而言,本文锚向量的想法作用于自适应是否相关有趣。对比学习放到24年已经比较多,但是本文从实际出发,并且引入Gumble Softmax,让人耳目一新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值