【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

结构图:

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

首先,将所有会话序列建模为定向会话图,其中每个会话序列可以作为子图处理。然后依次处理每个会话图,通过门控图神经网络得到每个图中所有节点的潜在向量。然后,我们将每个会话表示为全局首选项和用户当前对该会话的兴趣的组合,其中这些全局和本地会话嵌入向量都由节点的潜在向量组成。最后,对于每个会话,我们预测每个条目成为下一个单击的概率。在真实数据集上进行的大量实验证明了该方法的有效性。
开源代码在:https://github.com/CRIPAC-DIG/SR-GNN.

相关工作

之前的因子分解模型、基于物品的邻域方法效果都不太好,马尔科夫链的模型在预测用户下一个行为的同时,用到了用户现在的行为。
顺着这个思路下去,就提到了深度学习中的RNN,循环神经网络,通过权重来调节之前的行为对之后的行为到底有没有影响,有多大影响。RNN在语句模型中非常成功。(之前了解,LSTM效果最好了,因为有三个gate)

GNN

图神经网络,Neural network on graphs.。目前,神经网络已被用于生成图形结构数据的表示,例如,社交网络和知识库,又扩展到了word2vec,之后打算整理一下node2vec和word2vec,虽然现在没那么火了,但是起码embedding是word2vec带起来的。
最近,GNN被广泛应用于不同的任务,如脚本事件预测、情景识别(Li et al. 2017b)和图像分类。

表达的方式

令V = {v1, v2,…, vm}表示包含所有会话中涉及的所有唯一项的集合。【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解
这里用到了GRU控制单元。
z是复位门;Reset gate 决定有多少之前的记忆需要和新的输入结合
r是更新门;update gate 决定多少之前的记忆被保留下来。
感觉就像之前的行为要先经过更新门,先丢掉一些,得到了V~
然后z再决定之前的数据有多少要跟新的数据结合。

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

下面这个是A矩阵,前面的是出度矩阵,后面的入度矩阵。
意思就是:1只会到2而没有数能到底,第一行就是0100 0000 以此类推…
此外,当节点存在描述和分类信息等内容特征时,可以进一步推广该方法。具体来说,我们可以将特征与节点向量连接起来来处理这些信息。
然后,两个门,即更新门和复位门,分别决定保留哪些信息和丢弃哪些信息
最后的状态是之前的隐藏状态和候选状态的组合,在更新门的控制下。对会话图中的所有节点进行更新直到收敛,就可以得到最终的节点向量。

为了更好地预测用户的下一次点击,我们计划开发一种策略,将会话的长期偏好和当前兴趣结合起来,并将这种结合的嵌入作为会话嵌入。局部嵌入可以简单定义为最后点击的项目vs的vnof,n,即sl= vn。
然后考虑全局嵌入向量,【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

局部和全局的嵌入向量进行拼接,然后进行线性变换。【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

Making recommendation and model training

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解
【SR-GNN】Session-based Recommendation with Graph Neural Networks详解
where y denotes the one-hot encoding vector of the ground
truth item.
然后用时间反向传播去训练模型:BPTT

实验的效果

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解

在实际部署方面,可以将推荐人分为两部分,即线下部分和线上部分。离线部分学习项目嵌入,不需要实时更新,而在线部分只负责预测,可以实时完成。

Baseline Algorithms,几种基准算法

POP and S-POP:分别推荐训练集和当前时段最常出现的前n个项目
Item-KNN:在会话中推荐与之前单击的项相似的项,其中相似度定义为会话向量之间的余弦相似度

BPR-MF:通过随机梯度下降优化两两排序的目标函数。
FPMC:是一种基于马尔可夫链的序列预测方法。

GRU4REC:用RNNs为基于会话的推荐建立用户序列模型。

NARM:使用具有注意机制的RNNs来捕捉用户的主要目的和顺序行为。

STAMP:获取用户当前会话的一般兴趣和最后一次单击的当前兴趣。

怎么评判效果呢?

**[email protected](精度)**被广泛用作预测精度的度量。它表示前20个项目中正确推荐的项目所占的比例。
[email protected](**平均倒数排名)**是正确推荐项目倒数排名的平均值。当秩超过20时,倒数秩被设置为0。MRR度量考虑推荐排名的顺序,其中较大的MRR值表示正确的推荐位于排名列表的顶部。

【SR-GNN】Session-based Recommendation with Graph Neural Networks详解
可以看出SR-GNN真好

总结

本文提出了一种新的基于会话的推荐体系结构,该体系结构将图形模型融合到表示会话序列中。该方法不仅考虑了会话序列项之间的复杂结构和过渡,而且提出了一种将会话的长期偏好和当前兴趣结合起来的策略,从而更好地预测用户的下一步动作。