首页 > 其他分享 >SGL论文阅读笔记

SGL论文阅读笔记

时间:2023-09-07 16:24:17浏览次数:47  
标签:node 笔记 dropout 论文 视图 SGL 节点

SGL论文阅读笔记

摘要部分内容

​ 首先,论文提出了目前用户-项目图所面临的两大问题

  • 长尾问题:高度数的节点对表示学习产生更大的影响 ,导致低度数的结点的推荐比较困难
  • 鲁棒性问题:用户的交互数据中包含很多噪声,而邻居聚合策略会更进一步放大聚合的影响

​ 于是,这篇论文提出了自监督学习,主要思想是用一个辅助的监督任务来补充经典的推荐监督任务,这个辅助的监督任务具体来说,就是生成一个节点的多个视图,然后提高同一个节点在不同视图表征之间的相似性,最小化不同节点表征之间的相似性

​ 这里该论文提出了三种产生不同视图的方法,分别是

  • node dropout
  • edge dropout
  • random walk

之后该论文提出了通过对比学习,SGL具有自动挖掘hard negative node的能力,提高了推荐精度,对于长尾项以及对交互噪声的鲁棒性

正文部分内容

该论文提出了当前GCN的推荐系统有以下三个限制

  • 稀疏的监督信号,就是数据是稀疏的,用户和物品之间有交互的很少
  • 倾斜的数据分布,普通的GCN容易偏向度数高的节点,降低了度数低的节点的表示性能,也就是长尾问题
  • 交互中的噪声,就是学习容易受交互噪声的影响

该论文构建的辅助任务有两个关键部分组成

  • 数据增强,也就是给每个节点生成多个视图
  • 对比学习,也就是使同一节点不同视图之间的一致性最大化

​ 在对比学习中,通过改变图邻接矩阵来构造“未标记”数据空间,然后就采用上述提到的三种方式来生成多个视图,之后对变化的结构进行对比学习,SGL是通过探索节点间的内部关系来增强节点表示学习的

​ SGL从三个方面补充了现有的推荐模型

  • 节点自我识别提供了辅助的监督信号,补充了仅通过观察交互的经典监督
  • 数据增强,尤其是edge dropout,通过有意降低高度节点的影响来减轻度的偏差
  • 节点的多视图不同的局部结构增强了模型对交互噪声的鲁棒性

​ 最后还发现了有挖掘hard negative节点的能力,不仅提高了性能,而且加速了训练过程

​ SGL还是模型无关的,可以应用到任何基于用户/项目嵌入的基于图的模型

​ 模型的示意图如下:

pPy1gbT.png

图结构数据增强

$ z_ {1}^ {(l)} $ =H( $ Z_ {1}^ {(l-1)} $ , $ s_ {1} $ (G)), $ Z_ {2}^ {(l)} $ =H( $ Z_ {2}^ {(l-1)} $ , $ s_ {2} $ (G)), $ s_ {1} $ , $ s_ {2} $ $ \sim S$ ,

这与GNN进行节点编码的范式差不多,有区别的是对图结构进行了dropout操作,这里要做两次从而形成两个不同的子视图

三种方式的dropout策略如下:

  • node dropout:使用两个不同的掩码矩阵与节点矩阵相乘来产生两个不同的子视图
  • $ s_ {1} $ (G)=(M' $ \odot $ V, $ \varepsilon $ ), $ s_ {2} $ (G)=(M″ $ \odot $ V, $ \varepsilon $ )
  • edge dropout:使用两个不同的掩码矩阵与边矩阵相乘来产生两个不同的子视图
  • $ s_ {1} $ (G)=(V, $M_1 \odot $ $ \varepsilon $), $ s_ {2} $ (G)=( V, $M_2 \odot $ $ \varepsilon $)
  • random walk:在每一层里,使用两个不同的掩码矩阵与边矩阵相乘来产生两个不同的子视图
  • $ s_ {1} $ (G)=(V, $M_1^{(l)} \odot $ $ \varepsilon $), $ s_ {2} $ (G)=( V, $M_2^{(l)} \odot $ $ \varepsilon $)

在训练时,我们在每个epoch开始时生成每个节点的两个不同的视图,对于s1和s2,dropout的比例应当相同

对比学习

该论文将同一节点在不同视图的表示看成一对正样本,把不同节点的表征看作负样本,于是我们采用的对比损失函数如下:

pPy8oB6.png

s表示两个向量之间的相似度,本论文采用的是余弦相似度,\(\tau\)是温度系数

我们结合用户和项目的损失函数,之后的损失函数为:

\(L_{ssl}=L_{ssl}^{user}+L_{ssl}^{item}\)

之后就是进行多任务训练,把经典的推荐任务和自监督学习任务结合起来,我们得到最终的损失函数为

\(L=L_{main}+\lambda_1L_{ssl}+\lambda_2 \|\Theta\|_2^2\)

其中,\(\Theta\)为\(L_{main}\)模型参数的集合

理论分析部分

第一部分主要分析了温度系数\(\tau\)对挖掘hard negative node的影响

hard negative node就是其表示与positive节点相似,即表示的相似性x在0到1之间

用数学方式分析了,当\(\tau\)在一定范围内的时候,hard negative node对梯度的贡献很大,能够有效的加快收敛

所以SGL也能够有效的挖掘hard negative node

之后分析了SGL的复杂度,主要优化思路是拿同一个batch的其他节点作为负样本,而不是整个图的节点作为负样本,复杂度略涨,但还是在可接受的范围内

标签:node,笔记,dropout,论文,视图,SGL,节点
From: https://www.cnblogs.com/anewpro-techshare/p/17685259.html

相关文章

  • .NET5学习笔记
    1、SDK 2、VS2019落落安装出错:网络-以太网-更改适配器网站-修改协议 安装板块:Web安装......
  • 整体二分学习笔记
    有一些题目需要用到二分,但多次询问直接二分,会导致TLE,那么就需要用到一个离线算法,将多个询问放在一起二分,这就是整体二分。条件能够用整体二分解决的题目需要满足以下性质:1.题目具有可二分性(即单调性);2.修改对判定答案的贡献相互独立,修改之间互不影响效果。3.修改如果对判定答......
  • 【爬虫笔记】Python爬虫简单运用爬取代理IP
    一、前言近些年来,网络上的爬虫越来越多,很多网站都针对爬虫进行了限制,封禁了一些不规则的请求。为了实现正常的网络爬虫任务,爬虫常用代理IP来隐藏自己的真实IP,避免被服务器封禁。本文将介绍如何使用Python爬虫来获取代理IP,以及如何在爬虫中使用代理IP。二、获取代理IP获取代理IP有两......
  • Acegi-security-samples-tutorial-1.0.7.zip 实例学习笔记
    eclipse环境下新建一个webproject项目AcegiTest,把Acegi-security-samples-tutorial-1.0.7.zip中的代码放入项目中的对应目录下:IE地址栏输入:http://localhost/AcegiTest/转到index.jsp 页面: 主页任何人可浏览此页面。安全页面超级安全页面 (1)点“安全页面”则进入登录页......
  • Heritrix架构学习笔记(三)
    3、Frontier链接制造工厂在heritrix-1.12.1/docs/articles/developer_manual/frontier.html下可找到Heritrix的官方文档的一个Frontier例子:/***AsimpleFrontierimplementationfortutorialpurposes*/publicclassMyFront......
  • Heritrix架构学习笔记(一)
    1、抓取起点CrawlOrder在heritrix-1.12.1/docs/apidocs目录下可以查看其API:org.archive.crawler.datamodelClassCrawlOrderjava.lang.Objectjavax.management.Attributeorg.archive.crawler.settings.Typeorg.archive.crawler.settings.Complex......
  • [个人笔记][C#]异步调用控制流的一些测试结论
    await调用逻辑总结如下:调用线程A执行到await时,在await处返回并继续执行调用点后面的代码,await处新开一个线程B执行task线程B执行完task后继续执行await后面的代码如果再次遇到await,线程B在await处返回,新开一个线程C执行task线程C执行完task后继续执行await后面的代码"新开......
  • sqlserver移植为Oracle笔记(更新,新增字段名;批量新增记录;日期查询;截取字串函数)
    下面是这两天在项目要sqlserver和oracle兼容的改造中测试出来的笔记:--sqlserver--更改主键字段名'ID'为'ID_'sp_rename  'tb_doc_cat_statistic.ID','ID_','column'--新增字段cat_codealtertabletb_doc_cat_statisticaddcat_codevarchar(100) --oracle--......
  • 【刷题笔记】
    题目Givenacollectionofcandidatenumbers(candidates)andatargetnumber(target),findalluniquecombinationsin candidates wherethecandidatenumberssumsto target.Eachnumberin candidates mayonlybeused once inthecombination.Note:All......
  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo
    前言  在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。<br>补充说明  本篇是基于《RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传......