文章目录
Info
本文首发于公众号:code路漫漫,欢迎关注
原文:Session-based Recommendation with Graph Neural Networks
官方code:https://github.com/CRIPAC-DIG/SR-GNN
思维导图地址:https://github.com/hhmy27/MyNotes
SR-GNN 是 session based recsys 里面常见的baseline
具体步骤是:
- 生成 session graph
- 生成 node embedding
- 生成 session embedding
- 进行预测
用到的技术有:gate GNN,soft-attention
模型图:
实验结果:
后续有一篇论文 GC-SAN 是SR-GNN 的改进版本,两篇论文的思路、框架都非常相似,这里是 GC-SAN 的文章链接:
https://blog.csdn.net/hhmy77/article/details/117412390
另外对官方放出的 code 做了一点阅读,这是笔记链接:
https://blog.csdn.net/hhmy77/article/details/116891862
1 Motivation
在序列推荐中,传统工作直接把 session 处理成序列然后对用户建模,忽略了复杂的物品转移模式
传统序列推荐的几个 limitations:
- session 如果不够长,那么很难有效的生成用户表示
- 忽略了物品复杂的转移模式,远距离的依赖往往被忽略
基于此,论文提出了 SR-GNN 框架,它能够:
- 捕捉复杂的用户转移
- 把 session 建模成 graph 结构,从而使用 GNN 技术,而不是建模成序列
- 引入注意力机制,捕捉远距离的依赖(global interests)
2 Contribution
- 把 session 构造成 graph 结构,使用 GNN 去捕捉复杂的物品转移模式
- 不仅生成用户表示,还生成 session 表示用于推荐
- SR-GNN 达到了 SOTA
3 Solution
具体步骤
具体步骤:
- 对于每个 session,构造 session graph 和邻接矩阵
- 对于 session graph 上的每个 node,生成它们的 embedding
- 对于 node embedding,分别获取 global interests embedding 和 local interests embedding
- 将 global and local interests 结合起来生成 session embedding
- 最后通过 session embedding 进行预测
3.1 构造 session graph
一个构造例子:
很直观的构造方式,这里构造的是有向图,然后出入度矩阵的值经过归一化
注意出入度矩阵是拼在一起的,稍后会一起作为参数计算
3.2 生成 node embedding
这里用了 gate GNN 用来生成 node 的 embedding,本质上还是 GNN
5 个公式,最后公式 5 生成每个 node 的 embedding
生成 global interests embedding
回到论文提出的问题:
以往的工作往往忽略了远距离的依赖
论文提出的解决方法就是对 node embedding 使用 attention 机制,让 attention 机制去发现它们的依赖关系
具体而言,这里采用的是 soft-attention 机制,下面公式6的形式
得到的 S g S_g Sg 是 session 的 global embedding
生成 session embedding
在论文中,session embedding = global embedding + local embedding
local embedding 就直接简单的使用 session 中最后一个 item 的 embedding 作为表示
最终 S h S_h Sh 就是 session 的 embedding
预测以及目标函数
预测就把 session embedding 和候选物品相乘
目标函数选用交叉熵
4 Evaluation
直接看实验结果吧
消融实验:
Comparison with Different Session Embeddings
- local embedding only——SR-GNN-L
- global embedding with average pooling——SR-GNN-AVG
- global embedding with the attention mechanism——SR-GNN-ATT
SR-GNN采用的是上面三种方法的混合
5 Summarization
区别于之间使用 RNN 的工作,SR-GNN 考虑了 session 中的长期依赖,使用 GNN 去捕捉复杂的物品转移模式,使用注意力机制生成长期依赖,最终效果超过了以往的 baseline