0 作者

Shuyun Gu , Xiao Wang , Chuan Shi∗^∗∗ and Ding Xiao

1 动机

  • 传统推荐系统一般只考虑购买行为,忽略了放入购物车、浏览行为;
  • 本文将购买、放入购物车、浏览三个行为一起考虑;
  • 考虑购买和放入购物车行为的差异,进行对比学习;
  • 考虑购买和浏览行为的差异,进行对比学习。

2 相关工作

Graph Neural Networks(GNN): 参考文献[3]
NGCN: 参考文献[4]
LightGCN: 参考文献[5]

3 主要算法

上图表明将算法主要分为三个部分。图中下标1、2、3分别表示购买、放入购物车、浏览三个行为。

  • 1◯\textcircled{1}1◯利用GCN对三个行为进行编码,得到X1X_{1}X1​、X2X_{2}X2​、X3X_{3}X3​;
  • 2◯\textcircled{2}2◯ 求出用户和商品的编码eue_{u}eu​和eie_{i}ei​;
  • 3◯\textcircled{3}3◯利用对比学习(Contrastive Learning)来建立购买和放入购物车行为之间的差异、购买和浏览行为之间的差异。

3.1 子图1◯\textcircled{1}1◯

子图1◯\textcircled{1}1◯: 对三个行为编码。
子图1◯\textcircled{1}1◯ 的数据说明:

  • GGG:原始数据集,包含用户ID以及他们的购买、放入购物车、浏览三个行为。
  • G1G_1G1​:用户和购买关系图;
  • G2G_2G2​:用户和放入购物车关系图;
  • G3G_3G3​:用户和浏览关系图。
    算法流程:
  • 利用GCN对三个行为进行编码,得到X1X_{1}X1​、X2X_{2}X2​、X3X_{3}X3​。

3.2 子图2◯\textcircled{2}2◯

子图2◯\textcircled{2}2◯求用户和商品的编码。 首先将X1X_{1}X1​、X2X_{2}X2​、X3X_{3}X3​拆分为用户在三个行为下的编码XU1X_{U1}XU1​、XU2X_{U2}XU2​、XU3X_{U3}XU3​和商品在三个行为下的编码XI1X_{I1}XI1​、XI2X_{I2}XI2​、XI3X_{I3}XI3​。接下来分别求用户的编码和商品的编码。

3.2.1 对用户编码

  • 利用用户uuu的购买、放入购物车、浏览三个行为的编码,对用户uuu进行编码:
    eu=σ{W(∑k=1Kauk∗xuk)+b}(1)\boldsymbol{e}_{\boldsymbol{u}}=\sigma\left\{\boldsymbol{W}\left(\sum_{k=1}^{K} a_{u k} * \boldsymbol{x}_{\boldsymbol{u} \boldsymbol{k}}\right)+\boldsymbol{b}\right\} \tag1 eu​=σ{W(k=1∑K​auk​∗xuk​)+b}(1)
    – auka_{u k}auk​:用户uuu的行为kkk对应的权重;
    – xuk\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{k}}xuk​:用户uuu在行为kkk下的编码,来源于XU1,XU2,XU3X_{U1}, X_{U2}, X_{U3}XU1​,XU2​,XU3​;
    – W\boldsymbol{W}W和b\boldsymbol{b}b:神经网络的权重和偏置;
  • 计算auka_{u k}auk​:分子为单个行为,分母为三个行为的加权累加和。
    auk=exp⁡(wk∗nuk)∑m=1Kexp⁡(wm∗num)(2)a_{u k}=\frac{\exp \left(w_{k} * n_{u k}\right)}{\sum_{m=1}^{K} \exp \left(w_{m} * n_{u m}\right)} \tag2 auk​=∑m=1K​exp(wm​∗num​)exp(wk​∗nuk​)​(2)
    – wkw_{k}wk​:行为kkk的下标,作者用的是一个全局的变量,所用用户采用的同一个值,比如购买是0.5,放入购物车是0.3,浏览是0.2;
    – numn_{u m}num​:用户uuu在行为mmm下的物品个数,比如张三购买了2个商品,将3个商品放入购物车,浏览了5个商品。
  • 作者提供的代码里,本部分对应的代码如下。
    – Lines181-183是式(2)的分子。在论文里,nukn_{uk}nuk​是the number of associations of user uuu under behavior kkk。但是在作者提供的代码里,使用的是各个行为下物品个数的占比。
    – Lines184-186分别求出au1a_{u 1}au1​、au2a_{u 2}au2​、au3a_{u 3}au3​。Line187 中pachas_u、cart_u以及view_u分别表示用户购买行为、放入购物车行为、浏览行为的编码矩阵。
    – Line187为式(1)中的∑k=1Kauk∗xuk\sum_{k=1}^{K} a_{u k} * \boldsymbol{x}_{\boldsymbol{u} \boldsymbol{k}}∑k=1K​auk​∗xuk​。

3.2.2 对商品进行编码

  • 利用多层感知机将第iii个商品在行为kkk下的编码拼接起来。
    ei=g{Cat⁡(xik)}(3)\boldsymbol{e}_{\boldsymbol{i}}=g\left\{\operatorname{Cat}\left(\boldsymbol{x}_{\boldsymbol{i k}}\right)\right\} \tag3 ei​=g{Cat(xik​)}(3)
  • 作者提供的代码里,本部分对应的代码如上图。
    – Line190和Line191是将物品三个行为的编码矩阵按照第二维和第三维进行拼接,得到pos_i_emb和neg_i_emb。
    – Line194计算BPR loss。将Lines 187、190、191的u_embu\_embu_emb、pos_i_embpos\_i\_embpos_i_emb、neg_i_embneg\_i\_embneg_i_emb作为输入,带入BPR loss计算式中,求得BPR loss。

3.3 子图3◯\textcircled{3}3◯

子图3◯\textcircled{3}3◯ 为利用constractive learning计算两两行为之间的差异:购买和放入购物车之间的差异、购买和浏览之间的差异。以下分两个方面考虑:用户购买和放入购物车之间的差异、购买和浏览之间的差异以及商品被购买和被放入购物车之间的差异、被购买和被浏览之间的差异。

3.3.1 计算用户购买和放入购物车之间的差异、购买和浏览之间的差异

计算式如下:
Lsst_k′user=∑u∈U−log⁡∑u+∈Uexp⁡{(xu1)Txu+k′/τ)}∑u−∈Uexp⁡{(xu1)Txu−k′/τ}(4)\mathcal{L}_{s s t\_k^{\prime}}^{u s e r}=\sum_{u \in U}-\log \frac{\left.\sum_{u^{+} \in U} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{u}^+\boldsymbol{k}^{\prime}} / \tau\right)\right\}}{\sum_{u^{-} \in U} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{u} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{u}^{-} \boldsymbol{k}^{\prime}} / \tau\right\}} \tag4 Lsst_k′user​=u∈U∑​−log∑u−∈U​exp{(xu1​)Txu−k′​/τ}∑u+∈U​exp{(xu1​)Txu+k′​/τ)}​(4)
– k′k^{\prime}k′:取值为2和3,2代表放入购物车,3代表浏览;
– u+u^{+}u+和u−u^{-}u−:以用户uuu为基础,找到用户uuu的正用户集和负用户集,PMIP M IPMI值用于衡量两个用户uuu和u′u'u′的相似度。当该大于某个阈值时,u′u'u′为uuu的正用户,否则为uuu的负用户。计算方法如下:
PMI(u,u′)=log⁡p(u,u′)p(u)p(u′)p(u)=∣I(u)∣∣I∣p(u,u′)=∣I(u)∩I(u′)∣∣I∣(5)\begin{array}{c} P M I\left(u, u^{\prime}\right)=\log \frac{p\left(u, u^{\prime}\right)}{p(u) p\left(u^{\prime}\right)} \\ p(u)=\frac{|I(u)|}{|I|} \\ p\left(u, u^{\prime}\right)=\frac{\left|I(u) \cap I\left(u^{\prime}\right)\right|}{|I|} \end{array} \tag5 PMI(u,u′)=logp(u)p(u′)p(u,u′)​p(u)=∣I∣∣I(u)∣​p(u,u′)=∣I∣∣I(u)∩I(u′)∣​​(5)
式(5)中第一行对数后方的分子:为式(5)中第三行。式(5)中第三行计算两个用户uuu和u′u'u′的相似度,其分子为两个用户在同一个行为下的相同商品的个数,分母为所有商品的个数。
式(5)中第一行对数后方的分母:为式(5)中第二行。计算用户uuu在某个行为下的商品个数/所有商品的个数。
– τ\tauτ:温度参数,作者的代码里τ\tauτ取值为1。

3.3.2 计算商品被购买和被放入购物车之间的差异、被购买和被浏览之间的差异

  • 计算商品被购买和放入购物车之间的差异、商品被购买和浏览之间的差异,计算方法与用户类似。 计算式如下:
    Lsst_k′item=∑i∈I−log⁡∑i+∈Iexp⁡{(xi1)Txi+k′/τ)}∑i−∈Iexp⁡{(xi1)Txi−k′/τ}(6)\mathcal{L}_{s s t\_k^{\prime}}^{item}=\sum_{i \in I}-\log \frac{\left.\sum_{i^{+} \in I} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{i} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{i}^+\boldsymbol{k}^{\prime}} / \tau\right)\right\}}{\sum_{i^{-} \in I} \exp \left\{\left(\boldsymbol{x}_{\boldsymbol{i} \boldsymbol{1}}\right)^{T} \boldsymbol{x}_{\boldsymbol{i}^{-} \boldsymbol{k}^{\prime}} / \tau\right\}} \tag6 Lsst_k′item​=i∈I∑​−log∑i−∈I​exp{(xi1​)Txi−k′​/τ}∑i+∈I​exp{(xi1​)Txi+k′​/τ)}​(6)

3.3.3 Contrastive learning中的问题

在作者提供的代码里,并没有看到PMI的计算。式(4)和(6)也与代码不一致。在代码里,Contrastive learning 的计算步骤为:

  1. Line 19调用Lines 9-16计算两个行为的相似度矩阵sim()
    Lines10-11:分别计算用户在两个行为下的二范数。
    Lines13-14:(未完待续)
  2. 计算…(未完待续)

3.4 损失函数

总的损失函数如下:
L=Lst+λLsst+μ∥Θ∥22(8)\mathcal{L}=\mathcal{L}_{s t}+\lambda \mathcal{L}_{s s t}+\mu\|\Theta\|_{2}^{2} \tag8 L=Lst​+λLsst​+μ∥Θ∥22​(8)
第一项为BPR Loss:
Lst=∑(u,i,j)∈O−log⁡{σ(euTei−euTej)}(9)\mathcal{L}_{s t}=\sum_{(u, i, j) \in O}-\log \left\{\sigma\left(e_{u}^{T} e_{i}-e_{u}^{T} e_{j}\right)\right\} \tag9 Lst​=(u,i,j)∈O∑​−log{σ(euT​ei​−euT​ej​)}(9)

  • eue_ueu​:用户uuu的编码;
  • eie_iei​:用户uuu购买过、或放入购物车、或浏览过的商品编码;
  • eje_jej​:用户uuu未购买过、或未放入购物车、或未浏览过的商品编码,作者在代码里面选的64个未产生过行为的商品。

第二项为对比学习产生的Loss:
Lsst=∑k′=2K(Lsst−k′user+Lsst−k′item)(10)\mathcal{L}_{s s t}=\sum_{k^{\prime}=2}^{K}\left(\mathcal{L}_{s s t-k^{\prime}}^{u s e r}+\mathcal{L}_{s s t{-k^{\prime}}}^{i t e m}\right) \tag{10} Lsst​=k′=2∑K​(Lsst−k′user​+Lsst−k′item​)(10)

  • Lsst_k′user\mathcal{L}_{s s t\_k^{\prime}}^{u s e r}Lsst_k′user​:同公式(4);
  • Lsst_k′item\mathcal{L}_{s s t{\_k^{\prime}}}^{i t e m}Lsst_k′item​:商品的Loss。

参考文献

[1] Self-supervised Graph Neural Networks for Multi-behavior Recommendation
[2] 源代码:https://github.com/GuShuyun/MBRec
[3]Chen Gao, Yu Zheng, Nian Li, Yinfeng Li, Yingrong Qin, Jinghua Piao, Yuhan Quan, Jianxin Chang,
Depeng Jin, Xiangnan He, et al. Graph neural networks for recommender systems: Challenges, methods, and directions.arXiv preprint arXiv:2109.12843, 2021.
[4]Xiang Wang, Xiangnan He, Meng Wang, Fuli Feng, and Tat-Seng Chua. Neural graph collaborative filtering. In Proceedings of the 42nd international ACM SIGIR conference on Research and Development in Information Retrieval, pages 165–174, 2019.
[5]Xiangnan He, Kuan Deng, Xiang Wang, Yan Li, Yongdong Zhang, and Meng Wang. LightGCN:
Simplifying and powering graph convolution network for recommendation. In Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval, pages 639–648, 2020.

Self-supervised Graph Neural Networks for Multi-behavior Recommendation-IJCAI 2022 读书笔记相关推荐

  1. 图神经网络 Graph Neural Networks 系列(1)图神经网络基础知识介绍

    图是一种对一组对象(节点)及其关系(边)进行建模的数据结构.近年来,利用机器学习分析图的研究越来越受到重视,因为图具有很强的表现力,即图可以作为社会科学(社会网络)和自然科学等多个领域中大量系统的表示 ...

  2. 【阅读】A Comprehensive Survey on Electronic Design Automation and Graph Neural Networks——EDA+GNN综述翻译

    转载请注明出处:小锋学长生活大爆炸[xfxuezhang.blog.csdn.net] Paper原文:https://dl.acm.org/doi/pdf/10.1145/3543853​​​​​​ ...

  3. Graph Neural Networks: A Review of Methods and Applications(图神经网络:方法与应用综述)

    Graph Neural Networks: A Review of Methods and Applications 图神经网络:方法与应用综述 Jie Zhou , Ganqu Cui , Zhe ...

  4. A Comprehensive Survey on Graph Neural Networks(图神经网络综合研究)

    A Comprehensive Survey on Graph Neural Networks 图神经网络综合研究 Zonghan Wu, Shirui Pan, Member, IEEE, Feng ...

  5. 论文导读|Representing Schema Structure with Graph Neural Networks for Text-to-SQL Parsing

    论文导读|Representing Schema Structure with Graph Neural Networks for Text-to-SQL Parsing 编者按 1.背景知识 2.S ...

  6. Paper:《Graph Neural Networks: A Review of Methods and Applications—图神经网络:方法与应用综述》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications-图神经网络:方法与应用综述>翻译与解读 目录 < ...

  7. 【论文】A Comprehensive Survey on Graph Neural Networks

    A Comprehensive Survey on Graph Neural Networks 1 Introduction 2 Definition 3 Categorization GNN分类 框 ...

  8. TNNLS | GNN综述:A Comprehensive Survey on Graph Neural Networks

    目录 前言 Abstract I. Introduction II. Background And Definition A. Background B. Definition III. Catego ...

  9. 论文阅读笔记:Link Prediction Based on Graph Neural Networks

    文章目录 说明 Abstract 1 Introduction 2 Preliminaries Notations Latent features and explicit features Grap ...

最新文章

  1. http强制跳转https,POST请求变成GET
  2. Python教程:自定义排序全套方案
  3. 最邻近插值法(The nearest interpolation)实现图像缩放
  4. PyQt5学习笔记(一)PyQt5入门QLabel控件及使用
  5. DIV滚动条滚动到指定位置(jquery的position()与offset()方法区别小记)
  6. error LNK2001: 无法解析的外部符号 _ft_sdf_renderer_class/ _ft_bitmap_sdf_renderer_class
  7. 多看系统kindle最新版_更新到最新版微信后,我要吹爆这一功能!
  8. ==和 equals 的区别
  9. 周伯通招聘发现频道之追梦网
  10. Cesium 地形图
  11. 如何在工作中设定和使用 SMART 目标
  12. Java语言高级-常用API-第四节 ArrayList集合
  13. NADH二钠CAS 606-68-8的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  14. 【附源码】计算机毕业设计java装修信息分享管理系统设计与实现
  15. Qt Design Studio 2.2 测试版发布啦!迎来全新属性视图
  16. 超简单,为自己的项目增加微信消息提醒功能
  17. 《电路分析导论(原书第12版)》一3.11 超导体
  18. 数据结构考研/考博复试常见问题
  19. 荧光光谱检测技术在材料测试中的特点
  20. 计算机一级选择题知识,计算机一级考试试题(选择题)

热门文章

  1. mysql数据库的原则_mysql数据库的表设计原则
  2. 6.堆(动态内存 heap)的初始化和使用
  3. ELK继续分析V2EX(我自己搬运我自己)
  4. SPDK+NVMe SSD对接Virtio支撑红包场景性能
  5. 南阳百里奚计算机学校,南阳之子 百里奚
  6. 计算机网络(谢希仁-第八版)第五章习题全解
  7. 进程:multiprocessing
  8. 搭建电商系统平台需要多少钱?
  9. [转载]《武林外传》每一集都教会我们一个道理
  10. 【论文投稿】(一)新手向投稿准备