Shuyun Gu , Xiao Wang , Chuan Shi ∗ ^∗ ∗ and Ding Xiao
Graph Neural Networks(GNN): 参考文献[3]
NGCN: 参考文献[4]
LightGCN: 参考文献[5]
上图表明将算法主要分为三个部分。图中下标1、2、3分别表示购买、放入购物车、浏览三个行为。
子图 1 ◯ \textcircled{1} 1◯: 对三个行为编码。
子图 1 ◯ \textcircled{1} 1◯ 的数据说明:
子图 2 ◯ \textcircled{2} 2◯求用户和商品的编码。 首先将 X 1 X_{1} X1、 X 2 X_{2} X2、 X 3 X_{3} X3拆分为用户在三个行为下的编码 X U 1 X_{U1} XU1、 X U 2 X_{U2} XU2、 X U 3 X_{U3} XU3和商品在三个行为下的编码 X I 1 X_{I1} XI1、 X I 2 X_{I2} XI2、 X I 3 X_{I3} XI3。接下来分别求用户的编码和商品的编码。
子图 3 ◯ \textcircled{3} 3◯ 为利用constractive learning计算两两行为之间的差异:购买和放入购物车之间的差异、购买和浏览之间的差异。以下分两个方面考虑:用户购买和放入购物车之间的差异、购买和浏览之间的差异以及商品被购买和被放入购物车之间的差异、被购买和被浏览之间的差异。
计算式如下:
L s s t _ k ′ u s e r = ∑ u ∈ U − log ∑ u + ∈ U exp { ( x u 1 ) T x u + k ′ / τ ) } ∑ u − ∈ U exp { ( x u 1 ) T x u − 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−∈Uexp{(xu1)Txu−k′/τ}∑u+∈Uexp{(xu1)Txu+k′/τ)}(4)
– k ′ k^{\prime} k′:取值为2和3,2代表放入购物车,3代表浏览;
– u + u^{+} u+和 u − u^{-} u−:以用户 u u u为基础,找到用户 u u u的正用户集和负用户集, P M I P M I PMI值用于衡量两个用户 u u u和 u ′ u' u′的相似度。当该大于某个阈值时, u ′ u' u′为 u u u的正用户,否则为 u u u的负用户。计算方法如下:
P M I ( 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)中第三行计算两个用户 u u u和 u ′ u' u′的相似度,其分子为两个用户在同一个行为下的相同商品的个数,分母为所有商品的个数。
式(5)中第一行对数后方的分母:为式(5)中第二行。计算用户 u u u在某个行为下的商品个数/所有商品的个数。
– τ \tau τ:温度参数,作者的代码里 τ \tau τ取值为1。
在作者提供的代码里,并没有看到PMI的计算。式(4)和(6)也与代码不一致。在代码里,Contrastive learning 的计算步骤为:
总的损失函数如下:
L = L s t + λ L s s t + μ ∥ Θ ∥ 2 2 (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:
L s t = ∑ ( u , i , j ) ∈ O − log { σ ( e u T e i − e u T e j ) } (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{σ(euTei−euTej)}(9)
第二项为对比学习产生的Loss:
L s s t = ∑ k ′ = 2 K ( L s s t − k ′ u s e r + L s s t − k ′ i t e m ) (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)
[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.