本文主要是介绍GC-SAN,GLRS常见baseline,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- Info
- 1 Motivation
- 2 Contribution
- 3 Solution
- 具体步骤
- 3.1 构造 session graph
- 3.2 生成 node embedding
- 3.3 获取 global interests embedding
- 3.4 获取 local interests embedding
- 3.5 生成 session embedding
- 3.6 预测
- 4 Evaluation
- 5 Summarization
本文首发于公众号:code路漫漫,欢迎关注
第三方code:https://github.com/johnny12150/GC-SAN
思维导图地址:https://github.com/hhmy27/MyNotes
Info
IJCAI 19 的文章,对 SR-GNN 做了一点改进,但是 margin 提升很大,和 SR-GNN 一样是图推荐里面常见的 baseline
简单来说,就是把当时很火的 self-attention 拿过来生成 global interests embedding, current interests embedding 的生成仍然是选取 session 最后一个 item 的 embedding,最后把两个 interests 结合起来,做推荐
模型图
实验结果
加了一个 self-attention 居然有这么大的提升。。
1 Motivation
对于当前的 session based recsys,没有很好的捕捉上下文信息,达不到最优的效果
为此我们提出 GC-SAN(graph contextual self-attention network)框架,用来捕捉上下文信息
2 Contribution
- 提出GC-SAN框架,提高了推荐效果
- GNN用来建模 local dependencies,SAN用来建模 non-local representations
- GC-SAN达到了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
这里是通过一个GNN,生成 graph 中每个 node 的embedding
我们先拼接一下出入度矩阵
t 是矩阵中的每一行下标
然后传给 GNN 获取最终的 node 表示 h
3.3 获取 global interests embedding
这里的 self-attention layers 是一个用于生成 global interests embedding 的模块,它由三个部分组成
- single attention
- point-wise feed forward
- residual connection
下面是具体做法
这里把 session 中物品的表示拼接起来 H = [ h 1 , h 2 , . . . , h n ] H = [h_1,h_2,...,h_n] H=[h1,h2,...,hn]
传给公式3计算
然后再按照公式 4 计算,这里采用了残差链接提高效果
最后为了简便写成公式5的形式
由于我们堆叠了 k 层,所以最终结果是 E ( k ) E^{(k)} E(k)
3.4 获取 local interests embedding
local interests embedding 就是 h n h_n hn,即 session 中最后一个 item 的 embedding,这是常用的做法
3.5 生成 session embedding
通过公式 7 得到最终的 session 表示
3.6 预测
通过公式 8 计算候选物品的得分
以及目标函数
4 Evaluation
消融实验,带不带 GNN
超参的影响
5 Summarization
和 SR-GNN 思路基本一样,不过 global interests embedding 这里使用 self-attention 生成。SR-GNN 使用软注意力机制去生成。
这篇关于GC-SAN,GLRS常见baseline的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!