Session-based Recommendation with Graph Neural Networks笔记

一、这篇论文解决什么问题

session-based recommendation:用户未登录状态下, 仅仅依赖匿名会话进行用户下一个行为预测的一种算法(session-based recommendation

作者认为此论文发表前其他方法的不足:

1. 如果一个session内用户行为数据不多,效果不好

2. 只注意到了行为序列中两个连续item的转移,没有注意到全局的item转移

作者如何克服上述不足:GNN

二、这篇论文的几个核心点

如何构造图

每一个session都是一个图,构造图就是构造连接矩阵:

这里需要注意的是:

1. 构造时,边的权重归一化了

2. 每个连接矩阵都是每个session特有的,不参与参数更新,对这个session来说是固定的,而GNN中的权重W是所有session共用的,是需要在训练的时候更新的

如何得到item的embedding

在每个session的图中,按照如下公式进行计算:在每个时间步,这个session的节点一起更新。当更新所有的子图直到收敛时,就可以得到每个节点的vetcor了,也就是item的embedding结果

如何得到一个session的embedding

结合局部和全局embedding:

1. 局部的embbeding,最后一次点击的item的embedding

2. 全局的embedding,soft-attention机制

预测:训练好之后,每个item的embedding是固定的了,可以直接拿来用,然后再得到当前session的embedding,点积就是得分,最后通过softmax得到item的预测概率

训练:损失函数为交叉熵

三、关于模型的几点分析

1. 连接矩阵的构造方式

SR-GNN:针对每个session构造,实际上有两个矩阵

SR-GNN-NGC:在所有session的基础上构造全局的连接矩阵,实际上有两个矩阵

SR-GNN-FC:所有high-order关系都表示成1,其他表示成0,形成的矩阵和SR-GNN的矩阵放在一起(把high-order关系原来的0替换成1),实际上有两个矩阵(什么是high-order关系:[v1, v2, v3, v4]这个序列,v1->v2就是1-order,v1->v3就是2-order,v1->v4就是3-order)

实验说明,SR-GNN效果最好,SR-GNN-GNC中全局对本来在某session内出/入度高的边影响较大,尤其是各个session中这个出/入度差异大的时候,这个影响更明显,SR-GNN-FC中将high-order的关系表示成连接是不太合理的,影响模型效果。

2. session embedding方式

SR-GNN:局部embedding + 全局embedding

SR-GNN-L:局部embedding

SR-GNN-AVG:session内item的embedding的平均

SR-GNN-ATT:全局embedding

实验说明,依然是SR-GNN最好,证明了结合的好处;SG-GNN-ATT优于SG-GNN-AVG,说明session内部会存在噪声行为,attention机制可以提取有意义的行为;SR-GNN-L和SG-GNN-ATT接近,都优于SG-GNN-AVG,说明当前兴趣点和长时间的偏好都很重要,其实就是SR-GNN这种都考虑了的模型更好。

3. 模型的稳定性

SR-GNN以及几种变种,在长短session上效果都不错,稳定性很高

四、对这篇论文的感受

优雅

建模优雅,对模型的变种和分析也优雅,就感觉这个事儿这样做是恰当的。

PS:本文的所有公式和图表都来自于论文:Session-based Recommendation with Graph Neural Networks,有理解不对的地方,欢迎指正

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容