论文《Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks》阅读
论文概况
本文是2019年CIKM上的一篇论文,聚焦于序列化推荐问题(提出在会话推荐中使用RNN的缺点,并挖掘用户编好与会话的复杂关系),提出了全图神经网络(Full Graph Neural Network ,FGNN)模型。
Introduction
作者提出了几个问题
- 在会话推荐中使用RNN存在缺陷,用户的偏好并不完全取决于序列的时间顺序。因此,会话中的物品不应该被简单的视为时间序列,会话中用户偏好的变化、项目转换模式是更为复杂的东西。
- 选择会话的最后一个项目代表短期偏好,其余项目代表长期偏好的方法不够准确,忽略了会话中的特定项目转换模式。
对于上述问题,作者提出了一种全图神经网络模型,用于学习项目转换模式的固有顺序,并计算会话级表示以生成推荐。FGNN:(1)在注意力计算中加入权重属性,构建加权图注意层。通过学习为不同的邻居分配不同的权重,作为项目特征编码器。它有助于在项目之间有效地传递信息。(2)应用readout函数,为项目建议生成适当的图形级表示。readout函数可以学习图形中项目转换模式的最佳顺序。(借鉴了set2set,不断更新查询向量)
Method
A.Session Graph
会话图的构建并没有什么创新之处,一个会话构建一个会话图,会画图中边的权重直接取决于该边连接的两个物品在会话中连续出现的频率。此外,如果图中一个点没有自循环边,则会给它加上一个权重为1的自循环边。
B.Weighted Graph Attentional Layer
权重图注意力机制是FGNN模型第一个创新点,而传统的 GCN 和 GAT 直接处理会丢失掉权重的信息,这是多加权图注意层的优势。WGAT(Weighted Graph Attention,WGAT)的输入是一组节点初始特征:
x
i
0
=
Embed
(
v
i
)
(1)
x_{i}^{0}=\operatorname{Embed}\left(v_{i}\right) \tag{1}
xi0=Embed(vi)(1)
注意力计算如下:
α
l
j
=
softmax
j
(
e
i
j
)
=
exp
(
e
i
j
)
∑
k
∈
N
(
i
)
exp
(
e
i
k
)
(2)
\alpha_{l j}=\operatorname{softmax}_{j}\left(e_{i j}\right)=\frac{\exp \left(e_{i j}\right)}{\sum_{k \in \mathcal{N}(i)} \exp \left(e_{i k}\right)}\tag{2}
αlj=softmaxj(eij)=∑k∈N(i)exp(eik)exp(eij)(2)
其中,eij的计算与两个物品的相似度以及物品之间的权重相关:
α
i
j
=
exp
(
LeakyRelu
(
W
a
t
t
[
W
x
i
∥
W
x
j
∥
w
i
j
]
)
)
∑
k
∈
N
(
t
)
exp
(
LeakyRelu
(
W
a
t
t
[
W
x
i
∥
W
x
k
∥
w
i
k
]
)
)
(3)
\alpha_{i j}=\frac{\exp \left(\text { LeakyRelu }\left(\boldsymbol{W}_{a t t}\left[\boldsymbol{W} \boldsymbol{x}_{i}\left\|\boldsymbol{W} \boldsymbol{x}_{j}\right\| w_{i j}\right]\right)\right)}{\sum_{k \in \mathcal{N}(t)} \exp \left(\text { LeakyRelu }\left(\boldsymbol{W}_{a t t}\left[\boldsymbol{W} \boldsymbol{x}_{i}\left\|\boldsymbol{W} \boldsymbol{x}_{k}\right\| w_{i k}\right]\right)\right)}\tag{3}
αij=∑k∈N(t)exp( LeakyRelu (Watt[Wxi∥Wxk∥wik]))exp( LeakyRelu (Watt[Wxi∥Wxj∥wij]))(3)
由(3)可知,一次聚合更新的计算公式为:
x
i
′
=
σ
(
∑
j
∈
N
(
i
)
α
i
j
W
x
j
)
(4)
\boldsymbol{x}_{i}^{\prime}=\sigma\left(\sum_{j \in \mathcal{N}(i)} \alpha_{i j} \boldsymbol{W} \boldsymbol{x}_{j}\right)\tag{4}
xi′=σ⎝⎛j∈N(i)∑αijWxj⎠⎞(4)
在这个模型中,作者使用多头注意力机制来实现聚合更新,最终结果是多头注意力的平均:
x
i
′
=
σ
(
1
K
∑
k
=
1
K
∑
j
∈
N
(
t
)
α
i
j
k
W
k
x
j
)
(5)
\boldsymbol{x}_{i}^{\prime}=\sigma\left(\frac{1}{K} \sum_{k=1}^{K} \sum_{j \in \mathcal{N}(t)} \alpha_{i j}^{k} \boldsymbol{W}^{k} \boldsymbol{x}_{j}\right)\tag{5}
xi′=σ⎝⎛K1k=1∑Kj∈N(t)∑αijkWkxj⎠⎞(5)
C.Readout Function
此处是FGNN第二个创新点,readout函数的目的是根据节点特征给出整个会话图的表示,作者借鉴set2set方法,实现查询向量的学习过程,该向量表明无向图中物品读取顺序(4.4readout funcutin第一段)
将上一轮查询向量输入GRU网络中得到
q
t
q_{t}
qt:
q
t
=
GRU
(
q
l
−
1
∗
)
(6)
q_{t}=\operatorname{GRU}\left(q_{l-1}^{*}\right)\tag{6}
qt=GRU(ql−1∗)(6)
以
q
t
q_{t}
qt为查询向量进行聚合更新
e
i
,
t
=
f
(
x
i
,
q
t
)
(7)
e_{i, t}=f\left(\boldsymbol{x}_{i}, \boldsymbol{q}_{t}\right)\tag{7}
ei,t=f(xi,qt)(7)
a
i
,
t
=
exp
(
e
i
,
t
)
∑
j
exp
(
e
j
,
t
)
(8)
a_{i, t}=\frac{\exp \left(e_{i, t}\right)}{\sum_{j} \exp \left(e_{j, t}\right)}\tag{8}
ai,t=∑jexp(ej,t)exp(ei,t)(8)
r
t
=
∑
i
a
i
,
t
x
l
(9)
r_{t}=\sum_{i} a_{i, t} x_{l}\tag{9}
rt=i∑ai,txl(9)
将最终结果与
q
t
q_{t}
qt级联,得到
q
t
∗
q_{t}^{*}
qt∗
q
t
∗
=
q
t
∥
r
l
(10)
q_{t}^{*}=q_{t} \| r_{l}\tag{10}
qt∗=qt∥rl(10)
总结
FGNN存在两处创新点,一个是WGAT,它在计算注意力时将会话图权重也考虑在内。其次是readout function,不同于一般方法(将最后一个物品作为查询向量,或将均值作为查询向量),使用set2set方法实现查询向量自学习。整个方法没有使用时序模型,两处创新点都值得借鉴,GCE-GNN中也借鉴了WGAT。(可以考虑将set2set用于GCE-GNN中)
不解之处
1、为什么要使用多头注意力机制,作者在文中没有解释
2、如何证明readout function是更优秀的方法,有一处没太明白。