Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Presentation] Self-Supervised Learning for Recommender Systems: A Survey #311

Open
huangfan0 opened this issue Dec 2, 2024 · 9 comments

Comments

@huangfan0
Copy link

Title

Self-Supervised Learning for Recommender
Systems: A Survey

Link

https://ieeexplore.ieee.org/document/10144391/

Year

2024

Author and affiliation

Junliang Yu

Conference or Journal

IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING

Rank

SCI1区

Keywords

No response

Selecting Reason

可以应用至自监督的图协作网络的推荐与链接预测

Supplementary

No response

@frank-zsy
Copy link
Collaborator

这个链接预测的工作很有意义,有几个点想讨论一下:

  • 关于损失函数,一定要加入全域 OpenRank 吗,因为全域 OpenRank 本身也可以看成是一种节点表征,本质上属于一个节点特征,而且这个特征我直觉上对于链接预测这个任务的影响应该不会很大。
  • 对于多种类型边异质网络的节点表征,如果不采用边加权,而是一层层计算的话,其实 PageRank 也有类似的做法,叫做多路复用的 PageRank 算法,而且结论上而言我记得是计算顺序对结果的影响是显著的,先计算的边类型会起主导地位。所以在多层计算时,计算顺序可能是一个重要因素,这块可以多做一些实验看看结果。
  • 对于开发者和仓库节点的特征,仓库用了标签、README 是挺好的,另外可以考虑抽取仓库的日常协作语言,这个可以从 Issue PR 的内容和交流信息中获取,简单通过 LLM 做一个自动化流程就可以得到使用的语言分布,例如中文、英文、日语等;开发者的话可以考虑其活跃时间段作为一个特征,这个代表了其所处的时区,另外其日常使用语言分布也是一种重要特征。我个人觉得语言特征可能可以很好的作为一个链接预测的特征。可以看看加上以后对结果的影响。

@huangfan0
Copy link
Author

对于第二个问题,我在做embedding计算的时候顺序是pr,issue,push,fork,release,共用一个节点特征(包括开发者和仓库)每次计算的时候边不同。后续我再尝试一下顺序

@huangfan0
Copy link
Author

针对问题为什么developer->repository 链接预测的效果比repository-->developer的效果差,娄博的数学推导:
微信图片_20241202235517
微信图片_20241202235531

@birdflyi
Copy link
Collaborator

birdflyi commented Dec 2, 2024

子图1:D->R实际对应的节点集合是S_(D1)N(S_(D1)),即S_(D1)S_(R1∪R2),或S_(D1)S_(R1)∪S_(R2),

  • 节点个数为I(S_(D1) U S_(R1∪R2)),
  • 边个数为I(S(A_[(D1) × (R1∪R2)]))
    子图2:R->D实际对应的节点集合是S_(R1∪R2)N(S_(R1∪R2)), 即S_(R1∪R2)S_(D1∪D2),或S_(R1)∪S_(R2))S_(D1)∪S_(D2),
  • 节点个数为I(S_(R1∪R2) U S_(D1∪D2)),
  • 边个数为I(S(A_[(R1∪R2) × (D1∪D2)])).

其中×为笛卡尔积运算。

@zhingoll
Copy link

zhingoll commented Dec 2, 2024

image
@birdflyi 娄博,这块是啥意思?另外,为啥D->R对应的节点集合中不包括S_(D2),而R->D对应的节点集合中又包括了S_(D2)?

@birdflyi
Copy link
Collaborator

birdflyi commented Dec 2, 2024

不包括S_(D2)的是子图2:R->D。子图1和子图2是样本的不同子图。如果前面标号造成的误解,应该可以跳过下面的解释。

  • 左边的邻接矩阵是为了推导出右边的采样边比率的。
  • 滚雪球式采样R1->D1->R2只采样到R2就结束了,D2是额外加的符号,它在现实中对应与R2相连的D类型节点集合,在此样本集对应空集。
  • 采样数据最终构建的图中D类型节点包含S_(D1),而R类型节点包含S_(R1∪R2).
  • R->D的记号是以样本集中的所有R类型节点到D类型节点的连边为训练、验证、测试对象,对其中每个R类型节点的预测情况取AUC(详细算法询问 @huangfan0 ),它不包含S_(D2)的原因是,样本集中R类型节点的D类型邻居节点只采样了S_(D1),相当于将实际的S_(D2)替换成了∅。
  • 边的有和无都是包含信息的,但是未知状态相当于NLP里的被MASK掩盖掉,是不包含信息的。真实世界中有确切的连边是否存在的信息,却因为未采样而处于未知状态与邻接矩阵中的无边连接状态是不同的。

@zhingoll
Copy link

zhingoll commented Dec 3, 2024

感谢娄博的解答。但还是有些疑惑想请教:
目前数据集中只有S_(D1)∪S_(R1∪R2),也就是说,无论是给开发者推荐仓库(D->R),还是给仓库预测可能贡献的开发者(R->D),背后的数据应该也只是在这个数据集的范围内,所以

  • 为什么还需要考虑S_(R2)周围的其他开发者S_(D2)
  • 第二个公式中,数据集中本没有涉及到S_(D2)S_(D2)为∅没问题,但是为啥最后结果会<1?

@frank-zsy
Copy link
Collaborator

frank-zsy commented Dec 3, 2024

我也不太确定双向的预测准确度为什么会有差异以及是否和采样数据集的采样策略相关。我觉得有可能是因为使用的非线性规范化方法,图机器学习的表征中,特征传播使用的是 L2 规范化方法,这对于两侧的节点本身就是不对称的,主要是为了消除图学习中度高的节点带来过大的影响。可能可以考虑使用 L1 规范化也就是线性规范化方法,看是否会影响两个方向下的预测效果。

因为从统计上来说,仓库节点的平均度应该是远大于开发者节点的,尤其是头部仓库的开发者数量肯定是极高的,而普通开发者的活跃仓库数量是有上限的,一年中达到几百个就已经很高的,所以两类节点的度有很大的差异,也可以做一下统计上的对比。

@birdflyi
Copy link
Collaborator

birdflyi commented Dec 4, 2024

感谢娄博的解答。但还是有些疑惑想请教: 目前数据集中只有S_(D1)∪S_(R1∪R2),也就是说,无论是给开发者推荐仓库(D->R),还是给仓库预测可能贡献的开发者(R->D),背后的数据应该也只是在这个数据集的范围内,所以

  • 为什么还需要考虑S_(R2)周围的其他开发者S_(D2)
  • 第二个公式中,数据集中本没有涉及到S_(D2)S_(D2)为∅没问题,但是为啥最后结果会<1?
  • 考虑S_(R2)周围的其他开发者S_(D2)是从样本数据集与完整数据集的信息对比角度出发的,引入S_(D2)只是为了解释这种滚雪球2步采样会导致与S_(R2)有关的偏差,如果对R类型节点评价只是对S_(R1)评价则不会出现因为样本导致的偏差,只是参与的R类型节点会变少。
  • 最后的结果小于1是因为分数的左边的分母部分大于右边的分子部分。分母表示的是在一阶齐次的简单假设下,完整数据集中的R类型节点与D类型邻居节点的已知的边分布律的节点对的数目,分子则是样本数据集中的边分布律的节点对的数目。在分布律中,0也是包含着概率信息的,因此点对数目等于两个集合作笛卡尔积后的集合元素数。当分析样本集中的所有Repo节点时,不仅仅包含初始的R1中的种子节点,还包含R2中的节点,此时S_(D2)的差异所带来的信息差也是无法忽略的(计算方法见[1]),在这个差异的影响下,之后所有的信息分析都是有偏的;而当将分析的Repo节点限制在初始的S_(R1)时,是可以忽略S_(D2)的,不过带来的是节点数减少而使得分析结果的代表性弱。

[1]量化计算我们的子图的假设空间与全样本图的完整空间之间的信息差异(假设完整数据集边分布律的节点对的集合为E,被Mask的边分布律的节点对集合为E_MASK,则样本数据集边分布律的节点对集合为E-E_MASK,假设边e_i的存在概率是p_i,则完整数据集与样本数据集的信息差由E_MASK决定:I = Σ_{e_i ∈ E_MASK} (- p_i ln p_i),其中p_i>=0),在一阶齐次假设下,这个信息量与扩展到S_(D2)所引入的信息量是相等的,如果是二阶甚至更高的假设,丢失的信息会更多。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants