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-to￾mask 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的用法

python中ma.masked_where的用法和legend的用法

在 BertForMaskedLM 中,masked_lm_labels 参数如何工作?