Graph Masked Autoencoder for Sequential Recommendation
Posted 馒头and花卷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Graph Masked Autoencoder for Sequential Recommendation相关的知识,希望对你有一定的参考价值。
Ye Y., Xia L. and Huang C. Graph masked autoencoder for sequential recommendation. SIGIR, 2023.
概
图 + MAE.
符号说明
- \\(\\mathcalU, \\mathcalV\\), users, items;
- \\(S^u = (s_1^u, s_2^u, \\cdots, s_l_u^u)\\), 某个序列;
- \\(\\mathcalG = (\\mathcalV, \\mathcalE)\\), global item transition graph, 这里\\[\\mathcalE = \\(s_t^u, s_t\'^u): u \\in \\mathcalU, |t - t\'| \\le h, 1 \\le t, t\' \\le l_u\\, \\]其中 \\(h\\) 是人为给定的距离.
- \\(\\mathcalN_v^k\\), 结点 \\(v\\) 的 k-hop neighbors;
MAERec
Learning to Mask
-
定义 semantic relatedness:
\\[\\gamma(v) = \\frac1|\\mathcalN_v^k|k \\sum_v\' \\in \\mathcalN_v^k \\frac\\mathbfe_v^T \\mathbfe_v\'\\|\\mathbfe_v\\| \\|\\mathbfe_v\'\\|. \\] -
\\(\\gamma(v)\\) 越大, 说明 \\(v\\) 与它的 k-hop 邻居的结构一致性越好, 此时由该结点所导出的 path 往往具有更少的 noise.
-
为了更鲁棒的结果, 作者从如下分布中采样 (see here):
\\[\\gamma\'(v) \\sim \\textGumbel(x; \\gamma(v), 1), \\]实际中, 我们可以通过如下的方式采样:
\\[\\gamma\'(v) = \\gamma(v) - \\log(-\\log(\\mu)), \\: \\mu \\sim \\textUniform(0, 1). \\] -
To elevate the adaptability and learnability of the learning-tomask component for data augmentation, 作者施加如下损失 (关于 embedding) 以促进学习到更好的 mask:
\\[\\mathcalL_mask = - \\sum_v \\in \\mathcalV \\gamma\' (v). \\]
Transition Path Masking
-
为了减少 noise 的影响, 我们采样具有更好的 semantic relatedness 的 items 作为候选点 \\(\\mathcalV_a\\).
-
以 \\(\\mathcalP^1 := \\mathcalV_a\\) 为起点, 接下来的第 \\(k\\) 步:
\\[\\mathcalP^k = \\mathcalP^k-1 \\cup \\varphi (\\mathcalN(\\mathcalP^(k-1)), p^k), \\]其中 \\(\\varphi(\\cdot, p)\\) 表示按照 \\(p\\) 为 drop ratio 的采样操作. \\(\\mathcalN(\\mathcalP) := \\v \\in \\mathcalV: (v, v\') \\in \\mathcalE, v\' \\in \\mathcalP\\\\).
-
\\(\\mathcalP\\) 中 nodes 都会被 mask 掉.
Task-Adaptive Augmentation
- 为了降低 task-irrelevant 信息的影响, 作者引入:\\[r(\\mathcalL_rec) = \\left \\ \\beginarrayll 1 & \\text if \\nabla \\mathcalL_rec > \\bar\\nabla \\mathcalL_rec\' \\\\ \\epsilon & \\text otherwise \\endarray \\right .. \\]其中 \\(\\nabla \\mathcalL_rec\\) 表示当前的推荐损失和上一步的推荐损失的差, \\(\\bar\\nabla \\mathcalL_rec\'\\) 则是以往的推荐损失的平均, \\(\\epsilon < 1\\). 它施加在:\\[\\mathcalL_mask = -r(\\mathcalL_rec) \\sum_v \\in \\mathcalV \\gamma\' (v), \\]倘若当前的 mask 对于推荐损失不怎么友好, 那么更多的权重需要被施加在 mask 的学习之上.
模型
-
GCN-based Graph Encoder:
\\[\\tag3 \\mathbfe_v^l+1 = \\mathbfe_v^l + \\sum_v\' \\in \\mathcalN_v \\mathbfe_v\'^l; \\: \\tilde\\mathbfe_v = \\sum_l=1^L \\mathbfe_v^l. \\] -
Decoder: 用于重建被 mask 的边, 对于 edge \\((v, v\')\\) 作者这里将 encoder 中不同的层的结果交叉的耦合在一起:
\\[\\mathbfe_v, v\' = \\|_i, j = 1^L \\mathbfe_v^i \\odot \\mathbfe_v\'^j. \\]经过 MLP 转换后得到 score \\(s_v, v\'\\). 这里, 我们用如下损失用于重构:
\\[\\mathcalL_con = -\\sum_(v, v\') \\in \\underbrace\\mathcalE \\setminus \\mathcalP^k_\\textmasked edges \\log \\frac\\exp(s_v, v\')\\sum_v\'\' \\in \\mathcalV \\exp(s_v, v\'\'). \\] -
Sequence Encoder: 与一般的 Transformer 有所区别的是, 这里的 embedding 采用的是 (3) 中的 \\(\\tilde\\mathbfe_v\\). 然后用 BCE 损失来建模 \\(\\mathcalL_rec\\).
-
最后总的损失为:
\\[\\mathcalL = \\mathcalL_rec + \\mathcalL_mask + \\mathcalL_con + \\lambda \\|\\Theta\\|_F^2. \\]
代码
[official]
以上是关于Graph Masked Autoencoder for Sequential Recommendation的主要内容,如果未能解决你的问题,请参考以下文章
Masked Autoencoders Are Scalable Vision Learners 论文研读
无法解析模块 @react-native-masked-view/masked-view 2021
T-SQL::join sys.masked_columns 返回表中的所有列
python中ma.masked_where的用法和legend的用法