先前介绍了SRGNN,其中给出了一种基于会话的推荐方法,注重项目之间的复杂转换,并且将会话序列建模为图结构数据。发布在KDD20上。
前置知识
图神经网络:Graph neural networks (GNNs)是直接对图数据进行操作的神经网络。 它们用于学习任务,例如图分类、节点分类和链接预测问题。本文只关注图分类问题,因为基于会话的推荐可以表述为这样的问题。
图神经网络处理图分类问题的建模:
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)是给定的图,
V
V
V和
E
E
E是点和边的集合。每个节点
i
∈
V
i\in V
i∈V与一个节点特征向量
x
i
x_i
xi关联,该向量作为初始节点表示传递到 GNN 的第一层。
大多数 GNN 可以从消息传递的角度来理解。在 GNN 的每一层中,节点表示通过沿边传递消息来更新。该过程可以表述如下:
x
i
(
l
+
1
)
=
f
u
p
d
(
l
)
(
x
i
(
l
)
,
arg
i
(
l
)
)
arg
i
(
l
)
=
f
a
g
g
(
l
)
(
{
f
m
s
g
(
l
)
(
x
i
(
l
)
,
x
j
(
l
)
)
:
(
j
,
i
)
∈
E
i
n
(
i
)
}
)
\begin{aligned}&x_{i}^{(l+1)}=f_{upd}^{(l)}\left(x_{i}^{(l)},\arg_{i}^{(l)}\right)\\&\arg_{i}^{(l)}=f_{agg}^{(l)}\left(\left\{f_{msg}^{(l)}\left(x_{i}^{(l)},x_{j}^{(l)}\right):(j,i)\in E_{in}(i)\right\}\right)\end{aligned}
xi(l+1)=fupd(l)(xi(l),argi(l))argi(l)=fagg(l)({fmsg(l)(xi(l),xj(l)):(j,i)∈Ein(i)})
其中
x
i
(
l
)
x_{i}^{(l)}
xi(l)是节点
i
i
i在
l
l
l层的表示,
E
i
n
(
i
)
E_{in}(i)
Ein(i)是节点
i
i
i的传入边集,
f
m
s
g
(
l
)
f_{msg}^{(l)}
fmsg(l)计算从邻近节点传播到目标节点的消息,
f
a
g
g
(
l
)
f_{agg}^{(l)}
fagg(l)聚合传递到目标节点的信息。
f
u
p
d
(
l
)
f_{upd}^{(l)}
fupd(l)根据原始节点表示和聚合信息计算新节点表示。
L
L
L是GNN的层数,在
L
L
L层中传递
L
L
L步消息后,最终节点表示将捕获有关图结构和
L
L
L跳社区内节点特征的信息。
对于图分类任务,通过读出函数
f
o
u
t
f_{out}
fout聚合最后一层中所有节点的表征来生成图级表示
h
G
\boldsymbol{h}_G
hG:
h
G
=
f
o
u
t
(
{
x
i
(
L
)
:
i
∈
V
}
)
\boldsymbol{h}_G=f_{out}(\{\boldsymbol{x}_i^{(L)}:i\in V\})
hG=fout({xi(L):i∈V})
概述(动机与存在的问题)
原文概述:最近,图神经网络 (GNN) 因其在各种应用中令人信服的性能而越来越受欢迎。许多先前的研究也尝试将 GNN 应用于基于会话的推荐并获得了有希望的结果。然而,我们发现这些基于 GNN 的会话推荐方法存在两个信息丢失问题,即有损会话编码问题和无效的长距离依赖捕获问题。第一个问题是有损会话编码问题。由于从会话到图的有损编码以及消息传递过程中的排列不变聚合,一些关于项目转换的顺序信息被忽略。第二个问题是无效的长距离依赖捕获问题。由于层数有限,无法捕获会话内的一些长距离依赖关系。为了解决第一个问题,我们提出了一种无损编码方案和一种基于 GRU 的边序保留聚合层,专门用于处理无损编码的图。为了解决第二个问题,我们提出了一个快捷图注意层,通过沿快捷连接传播信息来有效地捕获长距离依赖关系。通过结合这两种层,我们能够构建一个不存在信息丢失问题的模型,并且在三个公共数据集上的表现优于最先进的模型。
从中得到的消息:当时(2022年)会话推荐的编码是有损的(会损失item顺序消息),第二个是长距离的依赖没有被算法捕获到,本文主要创造一种无损编码方案解决第一个问题,用图注意层引发解决第二个问题。
简介部分
首先介绍了会话推荐是什么(阅读SRGNN中总结为匿名、长度较短、数量众多),多数下一项推荐通过用户的历史行为挖掘序列模式学习用户偏好,会话推荐属于特殊的下一项推荐,因其会当前会话的信息具有强相关性。
但是当前的GNN-based方法引有两个信息丢失问题,分别是有损会话编码问题和无效的长距离依赖捕获问题。
有损会话编码问题(lossy session encoding problem):下图可对应两个序列
[
v
1
,
v
2
,
v
3
,
v
3
,
v
2
,
v
2
,
v
4
]
[v_1,v_2,v_3,v_3,v_2,v_2,v_4]
[v1,v2,v3,v3,v2,v2,v4]和
[
v
1
,
v
2
,
v
2
,
v
3
,
v
3
,
v
2
,
v
4
]
[v_1,v_2,v_2,v_3,v_3,v_2,v_4]
[v1,v2,v2,v3,v3,v2,v4],无法根据图重建原始会话。虽然在特定数据集中,两个会话可能会产生相同的下一个项目,但也有可能存在两个会话产生不同下一个项目的数据集。此时现有的 GNN 模型不可能对两个会话都做出正确的推荐。因此,这些模型在建模能力上存在局限性。
无效的长距离依赖捕获问题(ineffective long-range dependency capturing problem):GNN模型每一层节点携带的信息只沿着边传播1步,即每层只捕获1跳关系,h层最多h跳关系。但是由于过度拟合和过度平滑问题,堆叠更多层并不一定会提高性能,GNN模型的最佳层数通常不大于3。可实际使用中很可能存在一些长度超过 3 的重要序列模式。然而,由于网络结构的限制,这些基于 GNN 的模型无法捕获此类信息。
本文提出了一种LESSR(Lossless Edge-order preserving aggregation and Shortcut graph attention for Session-based Recommendation)的方法,如下图所示:
基于会话的推荐的无损边缘保序聚合和快捷图注意力方法首先将给定的输入会话转换为无损编码图(称为边序保留 (edge-order preserving, EOP) 多重图)和快捷图,其中 EOP 多重图可以解决有损会话编码问题,快捷图可以解决无效的长距离依赖捕获问题。然后,将图连同项目嵌入一起传递到多个边序保留聚合 (edge-order preserving aggregation, EOPA) 和快捷图注意 (shortcut graph attention, SGAT) 层,以生成所有节点的潜在特征。EOPA 层使用 EOP 多重图捕获本地上下文信息,SGAT 层使用快捷图有效捕获长距离依赖关系。然后,应用具有注意的读出函数从所有节点嵌入生成图级嵌入。最后,将图级嵌入与用户最近的兴趣相结合以提出建议。
主要贡献如下:
- 首次发现了基于 GNN 的会话推荐方法的两个信息丢失问题,包括有损会话编码问题和无效的长距离依赖捕获问题。
- 提出了一种将会话转换为有向多图的无损编码方案,以及一个使用 GRU 聚合传播信息的 EOPA 层。用于解决有损会话编码问题。
- 提出了一个 SGAT 层,它使用注意力机制有效地沿快捷连接传播信息。用于解决无效的长距离依赖捕获问题。
- 结合这两种解决方案,构建了一个没有信息丢失问题的 GNN 模型,并且在三个公共数据集中优于现有方法。
方法
本节中,首先给出基于会话的推荐的正式定义(此处就不重复了),然后描述涉及两个主要组件的所提出方法。第一个组件是将每个输入会话转换为边序保持 (edge-order preserving, EOP) 多图和快捷图的模块,我们的GNN模型需要两种类型的图作为输入。第二个组件是所提出的 GNN 模型 LESSR。
问题描述
会话推荐目的为预测用户接下来会点击哪个项目,公式化表述为具有
I
=
{
v
1
,
v
2
,
.
.
.
,
v
∣
I
∣
}
I=\{v_1,v_2,...,v_{|I|}\}
I={v1,v2,...,v∣I∣}个item,一个匿名的会话序列
s
i
=
[
s
i
,
1
,
s
i
,
2
,
.
.
.
,
s
i
,
l
i
]
s_i=[s_{i,1},s_{i,2},...,s_{i,l_i}]
si=[si,1,si,2,...,si,li]预测
s
i
s_i
si下一次点击,即
s
i
,
l
i
+
1
s_{i,l_{i+1}}
si,li+1。典型的基于会话的推荐系统会生成下一个项目的概率分布,即
p
(
s
i
,
l
i
+
1
∣
s
i
)
p(s_{i,l_{i+1}}|s_i)
p(si,li+1∣si),具有前 K 个值的项目将成为推荐的候选项目。
本文不考虑用户 ID 和项目属性等其他上下文信息。项目 ID 嵌入在三维空间中,并作为模型中的初始项目特征。这是基于会话的推荐文献中的常见做法。但是,本文的方法很容易调整以考虑其他上下文信息。例如,用户 ID 嵌入可以作为图级属性,并且可以附加到每个层中的项目 ID 嵌入中 。项目特征可以与项目 ID 嵌入组合或替换项目 ID 嵌入。
将会话转换为图
这部分处理有损会话编码问题,将会话使用S2MG转换为EOP多图,与一种S2SG方法将会话转换为快捷图。示意图如下:
实际上就是讲embedding。
S2MG: Session to EOP Multigraph
其中为什么SRGNN中提出是有损的上文已经提到了,这里主要突出如何从上图(3a)到(3b):具体为在(3a)的基础上,给边针对入度
E
i
n
(
v
)
E_{in}(v)
Ein(v)赋值,第一次进入节点
v
i
v_i
vi的边为1,第二次进入
v
i
v_i
vi的边为2,以此类推。最后将最后一项额外标记,使用虚线圆圈进行表示。最终得到图(3b)。
将S2MG的图结构转换为原序列过程可以从尾节点出发,由于知晓传入边得顺序,直接取最后一个传入边,改边的传入节点为倒数第二项,按照此过程可推出原始会话。
S2SG: Session to Shortcut Graph
文中提出shortcut graph attention (SGAT)层,在下一节会说明这个层是干嘛的,他需要的输入是S2SG图(session to shortcut graph)。
具体而言针对两个序列中的
(
s
i
,
t
1
,
s
i
,
t
1
)
(s_{i,t_1},s_{i,t_1})
(si,t1,si,t1)形成一条边
(
u
,
v
)
(u,v)
(u,v),其中
t
1
<
t
2
t_1<t_2
t1<t2,这种图被称为shortcut图,因为它连接项目而不经过中间项目。
该图中还被加了自循环,当 SGAT 层执行消息传递时,可以将更新函数和聚合函数组合在一起,这是 GAT 模型中的常见做法。
具体转换方法可见图(3c)。
本文的GNN模型:LESSR
这里重新放下具体流程图以便查阅:
边序聚合层EOPA
Edge-Order Preserving Aggregation (EOPA) ,针对上文给出的EOP图如何被GNN处理。原先的GNN会话推荐方法无法正确处理相对顺序信息。本文提出EOPA层,使用GRU聚合。具体做法为使用
O
E
i
n
(
i
)
=
[
(
j
1
,
i
)
,
(
j
2
,
i
)
,
…
,
(
j
d
i
,
i
)
]
OE_{in}(i)=[(j_1,i),(j_2,i),\ldots,(j_{d_i},i)]
OEin(i)=[(j1,i),(j2,i),…,(jdi,i)]作为
E
i
n
(
i
)
E_{in}(i)
Ein(i)中的有序列表,其中
d
i
d_i
di是节点的入度,通过边的整合属性可得
O
E
i
n
(
i
)
OE_{in}(i)
OEin(i)。
这个层就是使用GRU处理具有顺序的图。
来自邻居的聚合信息定义如下:
a
g
g
i
(
l
)
=
h
d
i
(
l
)
h
k
(
l
)
=
G
R
U
(
l
)
(
f
m
s
g
(
l
)
(
x
i
(
l
)
,
x
j
k
(
l
)
)
,
h
k
−
1
(
l
)
)
\begin{aligned} \mathrm{agg}_{i}^{(l)}& =h_{d_{i}}^{(l)} \\ \boldsymbol{h}_{k}^{(l)}& =\mathrm{GRU}^{(l)}\left(f_{msg}^{(l)}\left(x_{i}^{(l)},x_{j_{k}}^{(l)}\right),\boldsymbol{h}_{k-1}^{(l)}\right) \end{aligned}
aggi(l)hk(l)=hdi(l)=GRU(l)(fmsg(l)(xi(l),xjk(l)),hk−1(l))
其中
{
h
k
(
l
)
:
0
≤
k
≤
d
i
}
\{\boldsymbol{h}_k^{(l)}:0\leq k\leq d_i\}
{hk(l):0≤k≤di}为GRU的隐藏状态,
f
m
s
g
(
l
)
f_{msg}^{(l)}
fmsg(l)是任一
j
k
j_k
jk到
i
i
i有效的信息函数,初始状态的
h
0
(
l
)
\boldsymbol{h}_0^{(l)}
h0(l)被设置为零向量。
GRU聚合器是一种RNN聚合器,这里不采用LSTM是因为部分研究表明会话推荐中GRU更有效,使用它处理信息丢失问题很有效,考虑到 GRU 强大的表达能力,只需对消息和更新函数使用线性变换。因此模型的 EOPA 层定义如下:
x
i
(
l
+
1
)
=
W
u
p
d
(
l
)
(
x
i
(
l
)
∥
h
d
i
(
l
)
)
h
k
(
l
)
=
G
R
U
(
l
)
(
W
m
s
g
(
l
)
x
j
k
(
l
)
,
h
k
−
1
(
l
)
)
\begin{aligned}x_{i}^{(l+1)}&=W_{upd}^{(l)}\left(x_{i}^{(l)}\|h_{d_{i}}^{(l)}\right)\\\boldsymbol{h}_{k}^{(l)}&=\mathrm{GRU}^{(l)}\left(\boldsymbol{W}_{msg}^{(l)}\boldsymbol{x}_{j_{k}}^{(l)},\boldsymbol{h}_{k-1}^{(l)}\right)\end{aligned}
xi(l+1)hk(l)=Wupd(l)(xi(l)∥hdi(l))=GRU(l)(Wmsg(l)xjk(l),hk−1(l))
其中
W
u
p
d
(
l
)
∈
R
d
×
2
d
,
W
m
s
g
(
l
)
∈
R
d
×
d
\boldsymbol{W}_{upd}^{(l)}\in\mathbb{R}^{d\times2d},\boldsymbol{W}_{msg}^{(l)}\in\mathbb{R}^{d\times d}
Wupd(l)∈Rd×2d,Wmsg(l)∈Rd×d是可学习参数,
∣
∣
||
∣∣表示链接。
最后一个节点的信息将用于读出函数,是的不同回话映射到不同的表示。
快捷注意力层SGAT
Shortcut Graph Attention (SGAT),每一层传播一步的信息,因此一层只能捕获节点之间的 1 跳关系。为了捕获多跳关系,可以堆叠多个 GNN 层。但会引入过度平滑问题,即节点表示会收敛到相同的值。由于过度平滑问题通常发生在层数大于 3 时,因此堆叠多个层并不是捕获多跳关系的好方法。
具体的说就是现有的基于会话的推荐的 GNN 模型无法有效捕获非常长距离的依赖关系。为了解决这个问题,我们提出了快捷图注意 (SGAT) 层,它本质上使用 S2SG 获得的快捷图中的边进行快速信息传播。 具体来说,SGAT 层使用以下注意机制沿快捷图中的边缘传播信息。
x
i
(
l
+
1
)
=
∑
(
j
,
i
)
∈
E
i
n
(
i
)
α
i
j
(
l
)
W
v
a
l
(
l
)
x
j
(
l
)
α
i
(
l
)
=
s
o
f
t
m
a
x
(
e
i
(
l
)
)
e
i
j
(
l
)
=
(
p
(
l
)
)
T
σ
(
W
k
e
y
(
l
)
x
i
(
l
)
+
W
q
r
y
(
l
)
x
j
(
l
)
+
b
(
l
)
)
\begin{aligned} x_{i}^{(l+1)}& =\sum_{(j,i)\in E_{in}(i)}\alpha_{ij}^{(l)}W_{val}^{(l)}x_{j}^{(l)} \\ \alpha_{i}^{(l)}& =\mathrm{softmax}(e_{i}^{(l)}) \\ e_{ij}^{(l)}& =\left(\boldsymbol{p}^{(l)}\right)^T\sigma\left(\boldsymbol{W}_{key}^{(l)}\boldsymbol{x}_i^{(l)}+\boldsymbol{W}_{qry}^{(l)}\boldsymbol{x}_j^{(l)}+\boldsymbol{b}^{(l)}\right) \end{aligned}
xi(l+1)αi(l)eij(l)=(j,i)∈Ein(i)∑αij(l)Wval(l)xj(l)=softmax(ei(l))=(p(l))Tσ(Wkey(l)xi(l)+Wqry(l)xj(l)+b(l))
其中
p
(
l
)
,
b
(
l
)
∈
R
d
p^{(l)},b^{(l)}\in\mathbb{R}^{d}
p(l),b(l)∈Rd和
W
k
e
y
(
l
)
,
W
q
r
y
(
l
)
,
W
v
a
l
(
l
)
∈
R
d
×
d
\mathrm W_{key}^{(l)},W_{qry}^{(l)},W_{val}^{(l)}\in\mathbb{R}^{d\times d}
Wkey(l),Wqry(l),Wval(l)∈Rd×d是可学习参数。
快捷图中的边直接将每个项目与其所有后续项目连接起来,而无需经过中间项目。 因此,快捷图中的边可以看作项目之间的“快捷连接”。SGAT 层可以有效地捕获任意长度的长期依赖关系,因为它只需一步就可以沿着项目之间的快捷连接传播信息,而无需经过中间项目。它可以与现有基于 GNN 的方法中的原始层相结合,以增加其捕获长程依赖关系的能力。
将上述层组合起来
Stacking Multiple Layers。EOPA 层和 SGAT 层是为了解决之前基于 GNN 的会话推荐方法的两个信息丢失问题而提出的。为了构建一个没有信息丢失问题的 GNN 模型,本文堆叠了多个 EOPA 层和 SGAT 层。不是将所有 EOPA 层放在所有 SGAT 层之后或反过来,而是将 EOPA 层与 SGAT 层交错放置,原因如下:
- 快捷图是对原始会话的有损转换,因此连续堆叠多个 SGAT 层将引入有损会话编码问题。SGAT 层越多,问题就越严重,因为信息丢失量会累积。通过交错 EOPA 层和 SGAT 层,丢失的信息可以保留在后续的 EOPA 层中,而 SGAT 层只需专注于捕获长距离依赖关系。
- 交错两种层的另一个优点是,每种层都可以有效地利用另一种层捕获的特征。由于 EOPA 层更能捕获局部上下文信息,而 SGAT 层更能捕获全局依赖关系,因此交错两种层可以有效地结合两者的优势,提高模型学习更复杂依赖关系的能力。
为了进一步促进特征重用,引入了密集连接。每一层的输入都由所有先前层的输出特征组成。具体而言,最初第 l l l层的输入为 { x i ( l − 1 ) : i ∈ V } \{x_i^{(l-1)}:i\in V\} {xi(l−1):i∈V}。密集连接,第 l l l层的输入变为 { x i ( 0 ) ∥ x i ( 1 ) ∥ ⋯ ∥ x i ( l − 1 ) : i ∈ V } \{x_{i}^{(0)}\|x_{i}^{(1)}\|\cdots\|x_{i}^{(l-1)}:i\in V\} {xi(0)∥xi(1)∥⋯∥xi(l−1):i∈V},它是所有先前层输出的串联。结果表明,具有密集连接的深度学习模型参数效率更高,即用更少的参数实现相同的性能,因为每个较高层不仅可以使用其前一层的抽象特征,还可以使用较低层的低级特征。
生成会话嵌入
在所有层的消息传递完成后,获得所有节点的最终表示。为了将当前会话表示为嵌入向量,应用通过使用注意机制聚合节点表示来计算图级表示的读出函数。让
x
l
a
s
t
(
L
)
{x}_{last}^{(L)}
xlast(L)最后表示会话中最后一项的最终节点表示。图级表示
h
G
\boldsymbol h_{G}
hG定义如下
h
G
=
∑
i
∈
V
β
i
x
i
(
L
)
β
=
s
o
f
t
m
a
x
(
ϵ
)
ϵ
i
=
q
T
σ
(
W
1
x
i
(
L
)
+
W
2
x
l
a
s
t
(
L
)
+
r
)
\begin{aligned} \boldsymbol h_{G}& =\sum_{i\in V}\beta_{i}x_{i}^{(L)} \\ \boldsymbol {β}& =\mathrm{softmax}(\boldsymbol{\epsilon}) \\ \epsilon_{i}& =\boldsymbol{q}^{T}\sigma(\boldsymbol{W}_{1}\boldsymbol{x}_{i}^{(L)}+\boldsymbol{W}_{2}\boldsymbol{x}_{last}^{(L)}+\boldsymbol{r}) \end{aligned}
hGβϵi=i∈V∑βixi(L)=softmax(ϵ)=qTσ(W1xi(L)+W2xlast(L)+r)
其中
q
,
r
∈
R
d
\boldsymbol{q},\boldsymbol{r}\in\mathbb{R}^d
q,r∈Rd和
W
1
,
W
2
∈
R
d
×
d
\boldsymbol{W}_1,\boldsymbol{W}_2\in\mathbb{R}^{d\times d}
W1,W2∈Rd×d是可学习参数。
图级表示捕获当前会话的全局偏好,用
s
g
=
h
G
\boldsymbol{s_{g}}=\boldsymbol{h_{G}}
sg=hG表示。先前的研究表明明确考虑用户最近的兴趣也很重要,因此用
s
l
=
x
l
a
s
t
(
L
)
s_{l}=x_{last}^{(L)}
sl=xlast(L)定义一个局部偏好向量。 然后,将会话嵌入计算为全局和局部会话偏好的线性变换:
s
h
=
W
h
(
s
g
∥
s
l
)
s_h=W_h(s_g\|s_l)
sh=Wh(sg∥sl)
其中
W
h
∈
R
d
×
2
d
\boldsymbol{W}_h\in\mathbb{R}^{d\times 2d}
Wh∈Rd×2d是可学习矩阵参数。
预测和训练
获得会话嵌入后,可以使用它通过计算下一个项目的概率分布来做出推荐。对于每个项目
i
∈
I
i\in I
i∈I,我们首先使用它的嵌入
v
i
v_i
vi和会话嵌入计算分数,如下所示:
z
i
=
s
h
T
v
i
z_i=s_h^Tv_i
zi=shTvi
然后下一个项目是项目
i
i
i的预测概率
y
i
^
\hat{y_i}
yi^通过以下方式计算:
y
i
^
=
exp
(
z
i
)
∑
j
∈
I
exp
(
z
j
)
\hat{y_i}=\frac{\exp(z_i)}{\sum_{j\in I}\exp(z_j)}
yi^=∑j∈Iexp(zj)exp(zi)
对于Top-K推荐,只需选择概率最高的K个项目即可。
令
y
\boldsymbol y
y表示下一个项目的真实概率分布,它是一个独热向量。损失函数定义为预测和真实值的交叉熵:
L
(
y
,
y
^
)
=
−
y
T
log
y
^
\mathcal{L}(\boldsymbol{y},\hat{\boldsymbol{y}})=-\boldsymbol{y}^{T}\log\hat{\boldsymbol{y}}
L(y,y^)=−yTlogy^
然后,所有参数以及项目嵌入都被随机初始化,并在端到端反向传播训练范式中进行联合学习。
实验
仅挑选部分。评价指标为HR@20(命中率) 和 MRR@20(平均倒数排名)。
挑选的数据集与处理
- Diginetica 是来自 CIKM Cup 2016 的数据集。其交易数据适用于基于会话的推荐。按照,我们使用上周的会话作为测试集。
- Gowalla 是一个签到数据集,广泛用于兴趣点推荐。保留了前 30,000 个最受欢迎的位置,并通过在超过 1 天的相邻记录之间以间隔分割将用户的签到记录分组为不相交的会话。最后 20% 的会话被用作测试集。
- Last.fm 是一个广泛用于许多推荐任务的数据集。使用此数据集进行音乐艺术家推荐。保留了最受欢迎的 40,000 名艺术家,并将拆分间隔设置为 8 小时。与 Gowalla 类似,最近 20% 的会话被用作测试集。
- 首先过滤掉短会话和不频繁项目,然后应用数据增强技术。预处理后的数据集的一些统计数据如表 1 所示。
对比实验结果
在三个数据集中,LESSR 在 Last.fm 中获得的性能提升最大,因为该数据集的平均长度最大,因此 LESSR 从保留边顺序和捕获长期依赖关系中获益最多。
消融实验
主要针对EOPA层和SGAT层,其中将EOPA与message passing, MP进行比较,结果如下:
“EOPA”的表现优于“EOPA (rand)”,因为“EOPA (rand)”在执行聚合时随机排列传入的边。因此,仅使用保留边顺序的转换方法是不够的。聚合方案也需要保留边顺序。
SGAT层的有效性将现有的基于GNN方法的最后一层从MP换为SGAT层,结果如下:
EOPA和SGAT顺序的比较使用四种顺序,结果如下:
超参数研究
增加嵌入大小或层数并不总是会带来更好的性能。 对于较小的数据集 Diginetica,最佳嵌入大小为 32。当嵌入大小超过此最佳值时,性能会迅速下降,因为模型会过拟合。对于另外两个较大的数据集,增加嵌入大小通常会提高性能,因为较大的嵌入大小会增加模型的学习能力。 如果嵌入大小小于最优值,随着层数的增加,性能首先提高,然后在层数为 3 或 4 时下降。这是因为模型的学习能力随着层数的增加而增加,但层数太多也无济于事,因为会出现过度平滑问题,即使模型没有过拟合。因此,堆叠更多层并不是捕获长程依赖关系的有效方法,应用替代方法(例如使用 SGAT 层)来提高模型捕获长程依赖关系的能力是有意义的。
结论与思考
本文主要提出一种不损失顺序信息的图表示方法,也使用GRU解决了长距离依赖问题。其中将使用shortcut图进行注意力操作以处理长距离依赖问题使笔者眼前一亮。
原文地址:Handling Information Loss of Graph Neural Networks for Session-based Recommendation