论文《Contrastive Meta Learning with Behavior Multiplicity for Recommendation》阅读

论文概况

今天带来的是发表在WSDM 2022上关于多行为推荐的对比元学习论文《Contrastive Meta Learning with Behavior Multiplicity for Recommendation》,提出模型CML。论文由香港大学韦玮等人完成。
论文地址:Paper
代码地址:Code

论文主要贡献

本文的主要贡献是提出了一个多行为推荐(Multi-Behavior Recommendation)框架CMLContrastive Meta Learning),主要通过元学习(Meta Learning)结合对比学习(Contrastive Learning)完成,主要创新在于对比学习与元学习框架的结合。

Background & Motivation

论文的intro部分主要介绍了多行为推荐的必要性,即能够完成多行为之间的关联的学习。

之后引出主要问题,即多行为推荐中目标行为(target behavior)比较稀疏,由此引出自监督学习的必要性。

(自监督学习解决多行为推荐的作品之前应该就已经有解决,本文的主要创新在于meta learning,但是intro部分并没有给出meta框架的必要性)

方法论

CML
如上框架图所示,模型CML主要由图神经网络和多行为对比学习框架结合完成,并通过元学习进行模型参数的学习。

单行为图神经网络(Behavior-aware GNN)

e u k , ( l + 1 ) = ∑ i ∈ N u k e i k , ( l ) (1) \mathbf{e}_{u}^{k,(l+1)}=\sum_{i \in \mathcal{N}_{u}^{k}} \mathbf{e}_{i}^{k,(l)} \tag{1} euk,(l+1)=iNukeik,(l)(1)

e i k , ( l + 1 ) = ∑ u ∈ N i k e u k , ( l ) (2) \mathbf{e}_{i}^{k,(l+1)}=\sum_{u \in \mathcal{N}_{i}^{k}} \mathbf{e}_{u}^{k,(l)} \tag{2} eik,(l+1)=uNikeuk,(l)(2)

其中 k ∈ { 1 , 2 , ⋯   , K } k \in \{1, 2, \cdots, K\} k{1,2,,K}用于标记行为编号, l ∈ { 1 , 2 , ⋯   , L } l \in \{1,2,\cdots, L\} l{1,2,,L}用于标记层深, u ∈ U u\in \mathcal{U} uU i ∈ I i \in \mathcal{I} iI 分别表示任意用户及物品。图神经网络采用LightGCN的轻量化聚合方案。

多行为聚合采用一个均值池化外加单层MLP完成,激活函数使用 P R e L U ( ⋅ ) PReLU(\cdot) PReLU()函数完成,如下所示:

e u = PReLu ⁡ ( W L ⋅ ∑ k ∈ K e u k , ( L + 1 ) K ) (3) \mathbf{e}_{u} = \operatorname{PReLu}\left(\mathbf{W}^{L} \cdot \frac{\sum_{k \in K} \mathbf{e}_{u}^{k,(L+1)}}{K}\right) \tag{3} eu=PReLu(WLKkKeuk,(L+1))(3)

这里对公式(3)进行了小修改,原文应该是表述有点问题,作者应该是使用多层GNN最后一层的embedding进行最终表示,并且后文并没有交代,这里先这样表示,并与后文中符号 e u \mathbf{e}_{u} eu保持一致。

多行为对比学习

作者使用InfoNCE来突出对比对象,即同一用户的多个行为进行靠近(positive views),不同用户进行疏远(negative views),如下所示:

L c l k , k ′ = ∑ u ∈ U − log ⁡ exp ⁡ ( φ ( e u k , e u k ′ ) / τ ) ∑ u ′ ∈ U exp ⁡ ( φ ( e u k , e u ′ k ′ ) / τ ) (4) \mathcal{L}_{c l}^{k, k^{\prime}}=\sum_{u \in \mathcal{U}}-\log \frac{\exp \left(\varphi\left(\mathbf{e}_{u}^{k}, \mathbf{e}_{u}^{k^{\prime}}\right) / \tau\right)}{\sum_{u^{\prime} \in \mathcal{U}} \exp \left(\varphi\left(\mathbf{e}_{u}^{k}, \mathbf{e}_{u^{\prime}}^{k^{\prime}}\right) / \tau\right)} \tag{4} Lclk,k=uUloguUexp(φ(euk,euk)/τ)exp(φ(euk,euk)/τ)(4)

私以为,这里的下标 u ∈ U u \in \mathcal{U} uU 换成 v ∈ U ∪ I v \in \mathcal{U} \cup \mathcal{I} vUI 更为合适。公式(4)中, φ ( ⋅ ) \varphi\left( \cdot \right) φ() 是判别函数,但是文中并没有进行进一步说明如何实现,是cosine还是内积还是什么。 τ \tau τ 是温度系数,文中也没有进行说明赋值到底多少。

针对目标行为标号 k k k及辅助行为标号 k ′ ∈ { 1 , 2 , ⋯   , K } k^{\prime} \in \{1, 2, \cdots, K\} k{1,2,,K},共形成 K K K 对 对比学习目标损失项,合在一起构成总的对比学习损失项:
L c l = L c l k , 1 + … + L c l k , k ′ + … + L c l k , K (5) \mathcal{L}_{c l}=\mathcal{L}_{c l}^{k, 1}+\ldots+\mathcal{L}_{c l}^{k, k^{\prime}}+\ldots+\mathcal{L}_{c l}^{k, K} \tag{5} Lcl=Lclk,1++Lclk,k++Lclk,K(5)

元对比编码

Z u , 1 k , k ′ = ( d ( L c l k , k ′ ) ⋅ γ ) ∥ e u k ′ ∥ e u (6) \mathbf{Z}_{u, 1}^{k, k^{\prime}}=\left(d\left(\mathcal{L}_{c l}^{k, k^{\prime}}\right) \cdot \gamma\right)\left\|\mathbf{e}_{u}^{k^{\prime}}\right\| \mathbf{e}_{u} \tag{6} Zu,1k,k=(d(Lclk,k)γ) euk eu(6)

Z u , 2 k , k ′ = L c l k , k ′ ⋅ ( e u k ′ ∥ e u ) (7) \mathbf{Z}_{u, 2}^{k, k^{\prime}}=\mathcal{L}_{c l}^{k, k^{\prime}} \cdot\left(\mathbf{e}_{u}^{k^{\prime}} \| \mathbf{e}_{u}\right) \tag{7} Zu,2k,k=Lclk,k(eukeu)(7)
文中选择了两种encoder,一种直接进行乘法(公式(7)),一种进行了编码、放大和连接(公式(6))。编码函数 d ( ⋅ ) d\left( \cdot \right) d()(文中成为复制函数,这里还不甚了解,后续这一部分将进行扩充,同时需要指出的是作者并没有对函数 d ( ⋅ ) d(\cdot) d() 进行说明)。

ξ ( Z u k , k ′ ) = PReLU ⁡ ( Z u k , k ′ ⋅ W ξ + b ξ ) (8) \xi\left(\mathbf{Z}_{u}^{k, k^{\prime}}\right)=\operatorname{PReLU}\left(\mathbf{Z}_{u}^{k, k^{\prime}} \cdot \mathbf{W}_{\xi}+\mathbf{b}_{\xi}\right) \tag{8} ξ(Zuk,k)=PReLU(Zuk,kWξ+bξ)(8)

ω u k , k ′ = ω u , 1 k , k ′ + ω u , 2 k , k ′ = ξ ( Z u , 1 k , k ′ ) + ξ ( Z u , 2 k , k ′ ) (9) \omega_{u}^{k, k^{\prime}}=\omega_{u, 1}^{k, k^{\prime}}+\omega_{u, 2}^{k, k^{\prime}}=\xi\left(\mathbf{Z}_{u, 1}^{k, k^{\prime}}\right)+\xi\left(\mathbf{Z}_{u, 2}^{k, k^{\prime}}\right) \tag{9} ωuk,k=ωu,1k,k+ωu,2k,k=ξ(Zu,1k,k)+ξ(Zu,2k,k)(9)
同样使用单层MLP完成,这里的目的是将 Z u , ⋅ k , k ′ \mathbf{Z}_{u, \cdot}^{k, k^{\prime}} Zu,k,k变成标量,并融入到对比学习的各项loss中。

这里需要指出的是,文中对这里的解释是有问题的,一方面 PReLU ⁡ ( ⋅ ) \operatorname{PReLU}\left( \cdot \right) PReLU() 输出的是向量,不是标量,与公式(9)相矛盾,另一方面,文中给出的维度也有问题( W ξ ∈ R d × d  and  b ξ ∈ R d \mathbf{W}_{\xi} \in \mathbb{R}^{d \times d} \text { and } \mathbf{b}_{\xi} \in \mathbb{R}^{d} WξRd×d and bξRd 这里很明显是有问题的,两种encoder向量维度不同)。

模型训练

L B P R k = ∑ ( u , i + , i − ) ∈ O k − In ⁡ ( sigmoid ⁡ ( x ^ u , i + k − x ^ u , i − k ) ) + λ ∥ Θ ∥ 2 (10) \mathcal{L}_{B P R}^{k}=\sum_{\left(u, i^{+}, i^{-}\right) \in O_{k}}-\operatorname{In}\left(\operatorname{sigmoid}\left(\hat{x}_{u, i^{+}}^{k}-\hat{x}_{u, i^{-}}^{k}\right)\right)+\lambda\|\Theta\|^{2} \tag{10} LBPRk=(u,i+,i)OkIn(sigmoid(x^u,i+kx^u,ik))+λ∥Θ2(10)
L B P R k \mathcal{L}_{B P R}^{k} LBPRk表示目标行为 k k k 的BPR损失。

这个模型使用元学习框架进行参数更新,目前我对元学习部分的了解不是太深入,后续再进行补充。更新分为三步:1. 先优化图神经网络参数 Θ G \varTheta_{\mathcal{G}} ΘG;2. 根据优化过的 Θ G \varTheta_{\mathcal{G}} ΘG 对对比学习参数 Θ M \varTheta_{M} ΘM 进行优化;3. 根据优化完成的 Θ M \varTheta_{M} ΘM 进一步优化参数 Θ G \varTheta_{\mathcal{G}} ΘG。如下图所示。
Meta Learning
元学习的宗旨就是学会学习(learn to learn),其大致思想是通过对数据集进行分割,分别完成对目标模型和目标模型的设置的学习。结合到本文的模型即为,分别学习模型的参数,以及模型关键参数的设置(即 ω u k , k ′ \omega_{u}^{k, k^{\prime}} ωuk,k)。这里可能有理解不到位或者错误的地方,欢迎评论区指出。

最终,模型的损失函数可以定义为:

Θ G ∗ = arg ⁡ min ⁡ θ ≜ ∑ k = 1 K ∑ b = 1 B ( M ( ( L c l , k trainumeta  , E , E k ) ; Θ M ) ⋅ L c l , k train  + M ( ( L bpr  , k train  ∪  meta  , E , E k ) ; Θ M ) ⋅ L b p r , k train  ) (11) \begin{aligned} \Theta_{\mathcal{G}}^{*} &=\underset{\theta}{\arg \min } \triangleq \sum_{k=1}^{K} \sum_{b=1}^{B}\left(\mathcal{M}\left(\left(\mathcal{L}_{c l, k}^{\text {trainumeta }}, \mathbf{E}, \mathbf{E}^{k}\right) ; \Theta_{\mathcal{M}}\right) \cdot \mathcal{L}_{c l, k}^{\text {train }} \right. \\ & \left. + \mathcal{M}\left(\left(\mathcal{L}_{\text {bpr }, k}^{\text {train } \cup \text { meta }}, \mathbf{E}, \mathbf{E}^{k}\right) ; \Theta_{\mathcal{M}}\right) \cdot \mathcal{L}_{b p r, k}^{\text {train }}\right) \end{aligned} \tag{11} ΘG=θargmink=1Kb=1B(M((Lcl,ktrainumeta ,E,Ek);ΘM)Lcl,ktrain +M((Lbpr ,ktrain  meta ,E,Ek);ΘM)Lbpr,ktrain )(11)
结合到本例中,即为先进行模型的训练,再进行meta参数的学习。

实验部分

这里其余内容不再过多赘述,主要讲一下可视化部分,可视化部分(b)中,作者在上面显示了消融实验去掉对比学习部分的模型CML w/o CLF和总模型CML,分别展示在第一行和第二行中。为什么我看到的结果是CML w/o CLF要好于CML???这里着实不懂。

visualization

论文总结

本文提出了一种元对比学习框架CML,完成了多行为推荐任务。本文使用元学习结合对比学习是比较创新的,但文中也确实出现了一部分符号表示混乱,intro和related work不够全面等问题。另外,在参数设置部分,论文没有对参数进行具体说明,给复现带来了困难,具体来说,诸如 φ ( ⋅ , ⋅ ) \varphi(\cdot, \cdot) φ(,), τ \tau τ, d ( ⋅ ) d(\cdot) d(), γ \gamma γ的参数设置值都没有进行说明。除此以外的其他部分完成得相当不错。欢迎大家在评论区进行批评指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值