首页 > 其他分享 >论文解读(LightGCL)《LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation》

论文解读(LightGCL)《LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation》

时间:2023-08-08 17:55:25浏览次数:53  
标签:Contrastive Effective top boldsymbol right mathcal LightGCL hat left

Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ]

论文信息

论文标题:LightGCL: Simple Yet Effective Graph Contrastive Learning for Recommendation
论文作者:Cai, Xuheng and Huang, Chao and Xia, Lianghao and Ren, Xubin
论文来源:2023 ICLR
论文地址:download 
论文代码:download
视屏讲解:click

1 介绍 

  出发点:现有图对比推荐方法主要么对用户-项目交互图执行随机增强(例如,节点/边缘扰动),要么依赖于基于启发式的增强技术(例如,用户聚类)来生成对比视图。本文认为这些方法不能很好的保存图内部的语义结构,而且容易收到噪声的干扰;

  贡献

    • 在本文中,我们通过设计一个轻量级和鲁棒的图对比学习框架来增强推荐系统,以解决与该任务相关的关键挑战;
    • 我们提出了一种有效的对比学习范式用于图的增强。通过全球协作关系的注入,我们的模型可以缓解不准确的对比信号所带来的问题;
    • 与现有的基于gcl的方法相比,我们的方法提高了训练效率;
    • 在几个真实数据集上进行的大量实验证明了我们的LightGCL的性能优势。深入的分析证明了LightGCL的合理性和稳健性;

2 方法

2.1 模型框架

  

2.2 局部图依赖关系建模

  使用一个 两层的 GCN 捕获用户-物品之间的局部关系:

    $\boldsymbol{z}_{i, l}^{(u)}=\sigma\left(p\left(\tilde{\mathcal{A}}_{i,:}\right) \cdot \boldsymbol{E}_{l-1}^{(v)}\right), \quad \boldsymbol{z}_{j, l}^{(v)}=\sigma\left(p\left(\tilde{\mathcal{A}}_{:, j}\right) \cdot \boldsymbol{E}_{l-1}^{(u)}\right)$

  最终的用户和物品嵌入表示如下(每层嵌入的加和):

    $\boldsymbol{e}_{i}^{(u)}=\sum_{l=0}^{L} \boldsymbol{z}_{i, l}^{(u)}, \quad \boldsymbol{e}_{j}^{(v)}=\sum_{l=0}^{L} \boldsymbol{z}_{j, l}^{(v)}, \quad \hat{y}_{i, j}=\boldsymbol{e}_{i}^{(u) \top} \boldsymbol{e}_{j}^{(v)}$

2.3 高效的全局协作关系学习

  为使图对比学习与全局结构学习一起进行推荐,引入 SVD 以便从全局的角度有效地提取重要的协作信号。

  首先对归一化邻接矩阵进行 SVD 分解:

    $\tilde{\mathcal{A}}=\boldsymbol{U} \boldsymbol{S} \boldsymbol{V}^{\top} $

  注意:$\boldsymbol{U}$ 和 $\boldsymbol{V}$ 分别是  $I \times I $ 和  $J \times J$ 的矩阵,$S$ 是  $I \times J $ 的对角矩阵(主对角线为从大到小的奇异值);

  由于最大的奇异值通常与矩阵的主成分相关联。因此,本文截断奇异值列表以保持大的奇异值值,并重构被截断的归一化邻接矩阵:

    $\hat{\mathcal{A}}=\boldsymbol{U}_{q} \boldsymbol{S}_{q} \boldsymbol{V}_{q}^{\top} $

  注意:$\boldsymbol{U}_{q} \in \mathbb{R}^{I \times q}$、$\boldsymbol{V}_{q} \in \mathbb{R}^{J \times q}$、$\boldsymbol{S}_{q} \in \mathbb{R}^{q \times q} $;

  优点:

    ①:通过识别对用户偏好表示很重要和可靠的 user-item 交互来强调图的主成分;

    ②:生成的新图结构通过考虑每个 user-item 对来保持全局协作信号;

  基于重构的 $\hat{\mathcal{A}}$ 进行消息传递:

    $\boldsymbol{g}_{i, l}^{(u)}=\sigma\left(\hat{\mathcal{A}}_{i,:} \cdot \boldsymbol{E}_{l-1}^{(v)}\right), \quad \boldsymbol{g}_{j, l}^{(v)}=\sigma\left(\hat{\mathcal{A}}_{:, j} \cdot \boldsymbol{E}_{l-1}^{(u)}\right)$

  由于在大的矩阵上进行 SVD 分解困难,本文采用了 低阶一阶近似的解法:

    $\hat{\boldsymbol{U}}_{q}, \hat{\boldsymbol{S}}_{q}, \hat{\boldsymbol{V}}_{q}^{\top}=\operatorname{ApproxSVD}(\tilde{\mathcal{A}}, q), \quad \hat{\mathcal{A}}_{S V D}=\hat{\boldsymbol{U}}_{q} \hat{\boldsymbol{S}}_{q} \hat{\boldsymbol{V}}_{q}^{\top}$

  因此,基于重构的 user-item 邻接矩阵的消息传递重写为:

    $\boldsymbol{G}_{l}^{(u)}=\sigma\left(\hat{\mathcal{A}}_{S V D} \boldsymbol{E}_{l-1}^{(v)}\right)=\sigma\left(\hat{\boldsymbol{U}}_{q} \hat{\boldsymbol{S}}_{q} \hat{\boldsymbol{V}}_{q}^{\top} \boldsymbol{E}_{l-1}^{(v)}\right) ; \quad \boldsymbol{G}_{l}^{(v)}=\sigma\left(\hat{\mathcal{A}}_{S V D}^{\top} \boldsymbol{E}_{l-1}^{(u)}\right)=\sigma\left(\hat{\boldsymbol{V}}_{q} \hat{\boldsymbol{S}}_{q} \hat{\boldsymbol{U}}_{q}^{\top} \boldsymbol{E}_{l-1}^{(u)}\right)$

2.4 简化的局部-全局对比学习

  传统方法:采用三视图范式,使用增强图之间的对比策略,而不使用原始图;

  本文:认为,增强图之间的对比可能带来错误信息知道,可能是由于破坏了图结构,然而,在本文提出的方法中,增强图视图是通过全局协作关系创建的,这可以增强主视图的表示。

  本文采取主视图和基于 SVD 分解重构图之间的对比,InfoNCE loss:

    $\mathcal{L}_{s}^{(u)}=\sum_{i=0}^{I} \sum_{l=0}^{L}-\log \frac{\exp \left(s\left(\boldsymbol{z}_{i, l}^{(u)}, \boldsymbol{g}_{i, l}^{(u)} / \tau\right)\right)}{\sum_{i^{\prime}=0}^{I} \exp \left(s\left(\boldsymbol{z}_{i, l}^{(u)}, \boldsymbol{g}_{i^{\prime}, l}^{(u)}\right) / \tau\right)}$

  注意:为防止过拟合,在 mini-batch 中实现了一个随机节点丢弃,以排除一些节点参与对比学习;

  推荐任务损失:

    $\mathcal{L}_{r}=\sum_{i=0}^{I} \sum_{s=1}^{S} \max \left(0,1-\hat{y}_{i, p_{s}}+\hat{y}_{i, n_{s}}\right)$

  总损失:

    $\mathcal{L}=\mathcal{L}_{r}+\lambda_{1} \cdot\left(\mathcal{L}_{s}^{(u)}+\mathcal{L}_{s}^{(v)}\right)+\lambda_{2} \cdot\|\Theta\|_{2}^{2} $

标签:Contrastive,Effective,top,boldsymbol,right,mathcal,LightGCL,hat,left
From: https://www.cnblogs.com/BlairGrowing/p/17614670.html

相关文章

  • 【Java异常】Variable used in lambda expression should be final or effectively fi
    https://blog.csdn.net/weixin_44299027/article/details/117333667*lambda表达式中使用的变量应该是final或者有效的final*,也就是说,lambda表达式只能引用标记了final的外层局部变量,这就是说不能在lambda内部修改定义在域外的局部变量,否则会编译错误......
  • 使用show effective grants查看权限
    1、问题描述用户showgrants显示只有连接权限,但该用户却能执行sbtest.*下的所有操作GreatSQL>\s...Serverversion:8.0.32-24GreatSQL,Release24,Revision3714067bc8c...GreatSQL>showgrants;+---------------------------------------+|Grantsforuser1@1......
  • cpuset.cpus.effective: no such file or directory (修改 docker cgroup 版本的方法)
    要切换使用v1版cgroup,需要做如下配置: vim/etc/default/grub   GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0" update-grubreboot  完美解决 ......
  • Effective Diversity in Population-Based Reinforcement Learning
    发表时间:2020(NeurIPS2020)文章要点:这篇文章提出了DiversityviaDeterminants(DvD)算法来提升种群里的多样性。之前的方法通常都考虑的两两之间的距离,然后设计一些指标或者加权来增加种群多样性,这种方式容易出现cycling,也就是类似石头剪刀布的循环克制的关系,造成训练不上去,......
  • 《Effective C++ 改善程序与设计的55个具体做法》读书笔记
    1.让自己习惯C++条款01视C++为一个语言联邦CObject-OrientedC++TemplateC++STLC++高效编程守则视情况而变化,取决于你使用C++的哪一部分。条款02尽量与const,enum,inline替换#define对于单纯常量,最好以const对象或enums替换#defines。对于形似函数的宏(macros),最好改......
  • Variable 'xxxx' is accessed from within inner class, needs to be final or effect
    问题的原因问题代码:publicstaticvoidmain(String[]args){Integersum=0;Integercount=0;List<Integer>list=newArrayList<>(Arrays.asList(1,2,3,4,5));list.stream().forEach(e->{sum+=e;//这步会编译错误--Varia......
  • Book-Effective C++ 改善程序与设计的55个具体做法
    Book-EffectiveC++改善程序与设计的55个具体做法让自己习惯C++AccustomingYourselftoC++条款01:视C++为一个语言联邦/ViewC++asafederationoflanguages.条款02:尽量以const,enum,inline替换#define/Preferconsts,enums,andinlinesto#defines.条款0......
  • 2022年最新对比学习(Contrastive Learning)相关必读论文整理分享
        要说到对比学习(ContrastiveLearning),首先要从自监督学习开始讲起。自监督学习属于无监督学习范式的一种,特点是不需要人工标注的类别标签信息,直接利用数据本身作为监督信息,来学习样本数据的特征表达,并用于下游任务。    当前自监督学习可以被大致分为两类:    Genera......
  • 【C++】Effective Modern C++ Key Notes
    [errataveryimportant](https://www.aristeia.com/BookErrata/emc++-errata.html)>Argument,ActualArgument>Parameter,FormalParameter##一类型推导C++98有一套类型推导的规则:用于函数模板的规则。C++11修改了其中的一些规则并增加了两套规则,一套用于auto,一套用于dec......
  • effective java读后感1(1-5点)
    effectivejava中提供了57条建议。针对这些建议,我谈谈自己的理解。1.考虑用静态工厂方法代替构造函数静态工厂方式相比于构造函数的两个优点:1)可以有符合自己身份的方法名,方便客户端代码的阅读2)调用的时候,不要求创建一个新的实例。可以返回缓存实例,或者singleton实例等静态工厂方法......