文章目录
Info
title: Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks
github: https://github.com/RuihongQiu/FGNN
关键词:
WGAT、Readout function
1 Motivation
当前工作的几个缺陷:
对于 session based 的推荐系统,当前的 model 只是简单的将 session 看作 time series 处理,建模物品的时间顺序并且计算它们的表示
然而如果只是这样处理,会忽略物品之间复杂的转移模式信息,导致推荐效果并不是最优
为了更好的捕捉物品的转移模式,论文提出了 FGNN 模型
2 Contribution
- 第一次在session-base RC中研究了序列中物品转移模式,提出了FGNN model
- WGAT model提出来作为 item feature encoder,用于学习分配权重给neighbors
- Readout function 用来生成恰当的 graph level 表示,用来生成推荐
3 Solution
论文在公式这一块做了很多讲解,下面简单总结一下步骤
- session graph 的构造
- 计算得到 item level 的表示
- 把 item level 的表示整合成 graph level 的表示
- 进行预测
3.1 session graph
论文构造的是带有权重的有向图
这个 session graph 的构造方法和常规的相比就是多了一个指向自己的边,
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj) 的权重是 session 中
(
v
i
,
v
j
)
(v_i,v_j)
(vi,vj) 的出现次数
3.2 计算 item level 的表示
这里是论文的第一个创新点,论文提出了一个叫 WGAT 的机制,它能够处理论文中构造的带有权重的 graph
简单来说就是把结点边的权重作为新的参数传递到注意力机制中
这里堆叠了 L 层 WGAT,最后得到 session 中每个 item 的表示,如上图右所示
以上面的 graph 为例,
x
6
x_6
x6 的两层聚合过程如右图所示
简单介绍一下 WGAT
全名是 Weighted Graph Attentional Layer,带有 Weighted 是因为论文构造的是带权重的有向图,传统的 GCN 和 GAT 直接处理会丢失掉权重的信息
WGAT 的 input 和 output 如上图所示,input 就是经过 embedding 的 item 组成的 session 序列,output 也是一个 session 序列,序列中每个 item 都经过了 L 层 WGAT 转换表示
更具体的,给定 node i 和 node j,它们的注意力系数计算公式:
Att 是一个映射函数,
e
i
j
e_{ij}
eij 是一个实数,W 是一个共享参数(?),
w
i
j
wij
wij 是 i 到 j 的权重
neighbour 的权重计算公式:
注意我们这里采样的 neighbour 是直接相邻的结点
更进一步的,定义
e
i
j
e_{ij}
eij 的计算方法:
Att 直接使用 MLP 作为实现
然后我们得到结点的表示:
为了稳定 self-attention layers 的训练,具体实现机制我们采用 GAT 中的多头注意力机制
其中 K 是 head 的数量,最后由于统一维度,我们采用公式 9 作为最终的结点表示
3.3 计算 graph level 的表示
这里是论文的第二个创新点,定义 Readout function
论文强调了要消除系统中的 bias 以及要充分地捕捉到 session embedding 的信息量
这里借鉴了 Set2Set 的方法
i 是图中结点的索引,q 代表目前所有结点级联表示的查询向量,e 是注意力系数,a 是归一化后的注意力系数
最终公式14得到的是 graph 的表示
3.4 预测
这里就是把前面的结果乘起来
损失函数用的是多分类交叉熵
4 Evaluation
数据集
结果
还有一些消融实验的图就不贴了
5 Summarization
回顾一下论文提到的问题
不能简单地把 session 当作时间序列处理,否则会漏掉物品之间的转移信息
为此提出了两个模块
WGAT,用于更好的提取 session 的表示,生成 item 的表示
Readout function,用于消除传统工作引入的 bias,生成 graph 的表示
问题是很关键的问题,但是两个处理方法感觉并不是很好,论文的公式有点混乱,读起来挺费劲的,最后实验效果显示和 SR-GNN 差距也不大