Disentangled Contrastive Collaborative Filtering 论文阅读笔记
Disentangled Contrastive Collaborative Filtering 论文阅读笔记
Abstract
存在的问题:
- 大多数现有的基于gcl的CF模型仍然受到限制,因为忽略了用户-项目交互行为往往是由各种潜在意图因素驱动的(例如,为了家庭聚会购物,首选颜色或产品品牌)
- 引入的非自适应增强技术容易受到噪声信息的影响,这引起了人们对模型的鲁棒性和合并误导性自我监督信号的风险的关注。
解决方法:
我们提出了一种解耦对比协同过滤框架(DCCF)来实现一种自适应的自监督增强的意图解耦。通过全局背景学习解耦表示,我们的DCCF不仅能够从纠缠的自监督信号中提取更细粒度的潜在因素,而且可以减轻增强诱导的噪声。最后,引入了交叉视图对比学习任务,利用参数化交互掩模生成器实现自适应增强。
Introduction
详细介绍存在的问题:
第一:由于偏好的多样性,用户-项目交互背后的潜在因素是高度纠缠的,从而导致了次优的增强诱导的用户表示。在现实应用中,用户项目交互的形成是由许多意图因素驱动的,例如为家庭聚会购买产品或被某些服装特征所吸引。然而,在当前基于gcl的推荐方法中,学习到的用户偏好与编码的不变表示纠缠在一起,这使得很难捕获用户和项目之间更细粒度的交互模式。这阻碍了推荐者捕获真正的用户偏好和提供准确的意图感知的自我监督的能力。因此,迫切需要一种新的生成解耦对比信号的信息增强方法。
第二:老生常谈的数据噪声问题。在对比增强框架下,如果节点或边SSL信号的重要性没有区分,方法可以很容易地通过补充来自噪声节点的自监督信号来产生偏差,例如,用户有许多错误点击行为或高度符合流行偏差
在本文中,我们提出了一种新的基于分离对比学习的协同滤波模型,称为DCCF,以解决现有方法的局限性。具体来说,我们的模型通过考虑用户和项目之间的全局依赖关系来编码多意图表示。我们通过设计补丁级节点和全局级意图原型之间的意图信息传递和聚合来实现这一点。我们的目标是识别重要的图结构信息,以捕获准确和有用的环境不变模式的意图解耦。这样,我们就可以防止具有严重噪声信号的自监督信息的蒸馏。为了实现我们的目标,我们创建了参数化的边掩码生成器,它捕获了用户和项目之间的隐式关系,并注入了具有意图感知能力的全局依赖关系。因此,图结构掩模可以自然地捕获每个交互的重要性,以实现对比增强,这是自适应用户-项目关系的。
本文的主要贡献如下:
- 在这项工作中,我们研究了在一个更具挑战性的但实际的场景下的推荐系统的泛化问题:将图对比学习适应于意图纠缠与自监督噪声的协同滤波。
- 我们开发了一个名为DCCF的新推荐模型,具有参数化掩码生成器,自适应在全局上下文增强的解耦GNN架构上构建。这提高了推荐器的鲁棒性和泛化能力。
Method
模型的整体框架如下:
解耦意图表示
建模潜在的意图因素
我们的模型旨在预测候选用户在其观察到的交互作用下采用一个项目的可能性。从概率的角度来看,我们的预测模型旨在估计用户𝑢𝑖和项目𝑣𝑗之间交互的条件概率𝑃(𝑦|𝑢𝑖,𝑣𝑗),其中𝑦是学习的偏好得分
当与物品互动时,用户通常会有不同的意图,比如对特定品牌的偏好或对电影的类型和演员的兴趣。为了捕获这些不同的意图,我们分别从用户端和项目端假设𝐾不同的意图𝑐𝑢和𝑐𝑣。物品方面的意图也可以被理解为物品的上下文,例如,一个打算在情人节购物的用户可能会偏好具有“浪漫”上下文的物品。我们对用户-项目偏好的预测目标可以呈现如下:
\(\sum_k^KP(y,c_u^k,c_v^k|u,v)\)
用户-项目交互概率𝑦由潜在意图𝑐𝑢和𝑐𝑣决定,可以通过以下公式推导出:
上述公式等于:\(\mathbb{E}_{P(c_u|u)P(c_v|v)}[P(y|c_u,c_v)].\)
在这里,我们使用𝑓(·)来表示编码意图上的预测函数。根据中的统计理论,我们做了以下近似来推导出我们的预测目标:
\(\mathbb{E}_{P(c_u|u)P(c_v|v)}[f(c_u,c_v)]\approx f(\mathbb{E}_{P(c_u|u)}[c_u],\mathbb{E}_{P(c_v|v)}[c_v]).\)
具有全局上下文的多意图表示
虽然意图多样性通过解耦表示被编码在现有的推荐系统中,但全球层面的意图感知协作关系在很大程度上被忽视了。全局级用户(项目)依赖建模可以通过不受直接局部连接的限制,增强基于GNN的消息传递模型对稀疏性和过平滑问题的鲁棒性。为此,我们建议通过本地和全局级别的嵌入来理清用户和项目之间的协作关系,以便进行信息传播。
基于图的消息传递:跟正常图的消息传递相似,没有什么好说的
基于意图感知的信息聚合:我们将描述如何将具有意图感知的全局用户(项目)依赖项合并到基于gnn的协作过滤框架中。在我们的多意图编码器中,解耦的用户-条目偏好保留在\(\mathbb{E}_{P(c_u|u)}[c_u]\mathrm{~and~}\mathbb{E}_{P(c_v|v)}[c_v].\)中。在我们的DCCF中,我们分别为用户和项目定义了𝐾全局意图原型\(\{\mathbf{c}_u^k\in\mathbb{R}^d\}_{k=1}^K\mathrm{~and~}\{\mathbf{c}_v^k\in\mathbb{R}^d\}_{k=1}^K\)。(这里C是可学习的嵌入,代码中应该采用了随机初始化,所以没有c的计算公式)有了这些可学习的意图嵌入,我们通过使用第𝑙个图嵌入层的全局上下文聚合不同𝐾意图原型之间的信息来生成用户和项目表示,使用以下设计:
\(\begin{aligned}\mathbf{r}_{i,l}^{(u)}&=\mathbb{E}_{P(\mathbf{c}_{u}|\mathbf{e}_{i,l}^{(u)})}[\mathbf{c}_{u}]=\sum_{k}^{K}\mathbf{c}_{u}^{k}P(\mathbf{c}_{u}^{k}|\mathbf{e}_{i,l}^{(u)}),\\\mathbf{r}_{j,l}^{(v)}&=\mathbb{E}_{P(\mathbf{c}_{v}|\mathbf{e}_{j,l}^{(v)})}[\mathbf{c}_{v}]=\sum_{k}^{K}\mathbf{c}_{v}^{k}P(\mathbf{c}_{v}^{k}|\mathbf{e}_{j,l}^{(v)}),\end{aligned}\)
用户𝑢𝑖与每个意图原型c𝑢之间的相关性得分定义为\(P(\mathbf{c}_u^k|\mathbf{e}_{i,l}^{(u)})\),可以通过以下来计算:
这里\(\eta(\cdot)=\exp(\cdot)\)
在生成传播的消息后,我们将局部协同滤波信号与全局解耦协同关系集成,对其进行细化,如下:
\(\mathbf{E}_l^{(u)}=\mathbf{E}_{l-1}^{(u)}+\mathbf{Z}_{l-1}^{(u)}+\mathbf{R}_{l-1}^{(u)},\quad\mathbf{E}_l^{(v)}=\mathbf{E}_{l-1}^{(v)}+\mathbf{Z}_{l-1}^{(v)}+\mathbf{R}_{l-1}^{(v)}.\)
解耦图对比学习
从对比学习的最新发展中得到启发,我们探索了对比增强的潜力,以解决推荐系统中的数据稀疏性问题。虽然自我监督信号可以通过最大化对比视图之间的正对之间的一致性来产生,但我们认为这种增强容易受到数据噪声的影响,如错误点击。有噪声的对比正则化可能会误导自监督的学习过程。例如,通过有噪声交互边缘上的节点自识别来增强模型以实现嵌入一致性,可能涉及有噪声的自监督信号,导致次优表示
为了解决这一挑战,我们设计了可学习的增强器,它同时考虑本地协作关系和全局分离的用户(项)依赖关系。通过这样做,可学习的对比增强器可以自适应地学习解耦的SSL信号。
解耦数据增强
可学习的图掩码
这里自适应的数据去噪方法与其它论文的方法比较相似,在之前的论文SIGIR2022的RGCF中看到过类似的去噪方法,计算物品与用户的余弦相似度,然后将其范围变换到[0,1],用变换后的相似度当作掩码的权重,这里就不详细介绍了。增强后的邻接矩阵为:\(G^{l}=\mathcal{M}^{l}\odot\mathcal{H}\)
可学习的图增强
我们利用节点的度对增强后的邻接矩阵进行归一化
\(\bar{G}_{i,j}=G_{i,j}/\sum_{j^{\prime}}^{J}G_{i,j},\quad\bar{G}_{j,i}^T=G_{j,i}^T/\sum_{i^{\prime}}^{I}G_{j,i^{\prime}}^T.\)
之后用这个归一化后的增强邻接矩阵进行消息传播:
\(\mathbf{H}_l^{(u)}=\bar{G}\cdot\mathbf{E}_l^{(v)},\quad\mathbf{H}_l^{(v)}=\bar{G}^T\cdot\mathbf{E}_l^{(u)}\)
为了生成多个对比视图,我们同时考虑了局部协作信号和全局解耦关系。局部协作信号的自适应掩码使用Z来计算,全局解耦关系的自适应掩码使用R来计算,最后每层的消息传播的公式如下:
\(\mathbf{E}_{l}^{(u)}=\mathbf{E}_{l-1}^{(u)}+\mathbf{Z}_{l-1}^{(u)}+\mathbf{R}_{l-1}^{(u)}+\mathbf{H}_{l-1}^{\beta,(u)}+\mathbf{H}_{l-1}^{\gamma,(u)}\)
对比学习
这里就比较好理解,使用局部和全局的表示\(H^{\beta}\)和\(H^{\gamma}\)进行对比学习
论文的描写挺复杂的,需要结合代码看才比较清晰