本文主要介绍推荐系统中会话推荐经典的文章Session-based Recommendation with Graph Neural Networks,发布在2019年的AAAI上。
前置知识
会话推荐:基于当前基于用户当前会话(如浏览历史或点击序列)进行个性化推荐的技术,旨在为用户实时提供相关建议,尤其在缺乏长期用户信息的情况下表现出色。场景:匿名用户逛网站,只有一些点击信息,此时选出一些对其进行推荐,就是会话推荐。本文一个会话建模如
v
1
→
v
2
→
v
4
→
v
3
v_1\rightarrow v_2\rightarrow v_4\rightarrow v_3
v1→v2→v4→v3,其中v为物品,就是根据点击不同物品的顺序建模多个序列。
图神经网络:传统神经网络(CNN和RNN)应用于规则数据结构(图像或序列),图神经网络(GNN)直接处理非欧几里得的图结构数据。GNN通过递归地更新节点状态捕获节点间的关系和依赖性,通过信息传递机制从节点的局部邻域收集信息。由于GNN的节点聚合策略是基于邻居节点的消息传递,这使得它可以处理大规模图数据。
GGNN:门控图神经网络,部分文章认为SRGNN可以理解成GGNN4rec,在文中第一部分embedding的时候使用该方法进行编码。具体可参考ICLR2016的文章《Gated Graph Sequence Neural Networks》。
概述(动机与现在存在的问题)
原文概述:基于会话的推荐问题旨在基于匿名会话预测用户行为。先前的方法将会话建模为一个序列,并估计除项目表示之外的用户表示以进行推荐。虽然取得了有希望的结果,但它们不足以在会话中获得准确的用户向量,并且忽略了项目的复杂转换。为了获得准确的项目嵌入并考虑项目的复杂转换,我们提出了一种新方法,即基于图神经网络的会话推荐,简称 SR-GNN。在所提出的方法中,会话序列被建模为图结构数据。基于会话图,GNN 可以捕获项目的复杂转换,而这些转换很难通过以前的传统顺序方法揭示。然后使用注意网络将每个会话表示为该会话的全局偏好和当前兴趣的组合。在两个真实数据集上进行的大量实验表明,SR-GNN 明显优于最先进的基于会话的推荐方法。
概述中得到信息:本文侧重了item的复杂转换;本文提出新方法相较其他方法可获得更准确的embedding。现在(2019年)很多论文都是将一个会话当做一个人,具有对应的序列进行推荐,但是本文以item为单元进行图学习。
简介部分
这部分主要引出在用户身份未知的情况下进行推荐的应用场景,即会话推荐,其主要特征为匿名、长度较短、数量众多。先前的方法主要是用的为马尔科夫链、循环神经网络(与GNN区别为处理的数据是结构化的)等。
这些方法都具有局限性,比如一直存在的因为长度短很难准确估计用户表征。且先前有论文提到 item transcation比较重要,但只是对连续项目之间的单向转换进行建模,而忽略了上下文(即会话中的其他项目)之间的转换。
因此本文提出一种Session-based Recommendation with Graph Neural Networks(SR-GNN),以探索项目之间的丰富转换并生成项目的准确潜在向量。具体流程图如下所示:
首先,将所有会话序列建模为有向会话图,其中每个会话序列可视为一个子图。然后,依次处理每个会话图,并通过门控图神经网络获得每个图中涉及的所有节点的潜在向量。之后,将每个会话表示为用户在该会话中的全局偏好和当前兴趣的组合,其中这些全局和局部会话嵌入向量均由节点的潜在向量组成。最后,对于每个会话,预测每个项目成为下一个点击的概率。
主要贡献:
- 将分离的会话序列建模为图结构数据,并使用图神经网络来捕获复杂的项目转换。
- 为了生成基于会话的推荐,本文不依赖于用户表示,而是使用会话嵌入,它可以仅基于每个单个会话中涉及的项目的潜在向量来获得。
- 实验证明优于当时其他方法。
提出方法
问题目标
基于会话的推荐旨在预测用户接下来会点击哪个项目,仅基于用户当前的顺序会话数据,而不访问长期偏好配置文件。公式化表述为具有 V = { v 1 , v 2 , . . . , v m } V=\{v_1,v_2,...,v_m\} V={v1,v2,...,vm}这么多个item,以及一个匿名的会话序列 s = [ v s , 1 , v s , 2 , . . . , v s , n ] s=[v_{s,1},v_{s,2},...,v_{s,n}] s=[vs,1,vs,2,...,vs,n]预测 s s s下一次点击,即 v s , n + 1 v_{s,n+1} vs,n+1。在该模型下,对于会话 s,我们输出所有可能项目的概率 y ^ \hat{\textbf{y}} y^,其中向量 y ^ \hat{\textbf{y}} y^的元素值是相应项目的推荐分数。 y ^ \hat{\textbf{y}} y^ 中具有前 K 个值的项目将成为推荐的候选项目。
构建会话图
每个会话序列 s 可以建模为有向图
G
s
=
(
V
s
,
E
s
)
\mathcal{G}_{s}=\left(\mathcal{V}_{s}, \mathcal{E}_{s}\right)
Gs=(Vs,Es)。在此会话图中,每个节点代表一个项目
v
s
,
i
∈
V
v_{s,i} \in V
vs,i∈V 。每条边
(
v
s
,
i
−
1
,
v
s
,
i
)
∈
E
s
(v_{s,i−1}, v_{s,i}) \in \mathcal{E}_{s}
(vs,i−1,vs,i)∈Es表示用户在会话 s 中在
v
s
,
i
−
1
v_{s,i−1}
vs,i−1之后点击项目
v
s
,
i
v_{s,i}
vs,i。由于多个项目可能会在序列中重复出现,我们为每条边分配一个归一化权重,该权重计算为边的出现次数除以该边的起始节点的出度。我们将每个项目
v
∈
V
v \in V
v∈V 嵌入到统一的嵌入空间中,节点向量
v
∈
R
d
v \in \mathbb{R} ^d
v∈Rd 表示通过图神经网络学习到的项目
v
v
v 的潜在向量,其中
d
d
d 是维数(超参数)。基于节点向量,每个会话
s
s
s 可以用一个嵌入向量
s
s
s 表示,该嵌入向量
s
\mathbf{s}
s 由该图中使用的节点向量组成。
注意:这里和图片不太一致,以这里为准,每个对话构建一个图,所以这里是针对一个会话,如果有多个会话需要预测就生成多个图。
在会话图中学习item嵌入
具体可参考2015年提出的门控GNN,与这篇文章。
公式1用于不同节点间信息传播;公式2和3分别是更新门和重置门的更新策略;公式4是通过 当前状态、前一个状态、重置门 这三者 来构建 候选状态;公式5是通过 候选状态、前一个状态、更新门 这三者 来得到 最终的节点向量。
重要的是如何从序列数据的一段会话
s
s
s变为结构化的数据
A
s
\mathbf{A_s}
As,其被定义为两个邻接矩阵
A
s
(
o
u
t
)
\mathbf{A}^{(out)}_ s
As(out) 和
A
s
(
i
n
)
\mathbf{A}^{(in)}_ s
As(in)的串联,分别表示会话图中传出边和传入边的加权连接。例如,考虑一个会话
s
=
[
v
1
,
v
2
,
v
3
;
,
v
2
,
v
4
]
s = [v_1, v_2, v_3;,v_2, v_4]
s=[v1,v2,v3;,v2,v4],相应的图
G
s
\mathcal{G}_{s}
Gs和矩阵
A
s
\mathbf{A_s}
As 如下图所示。请注意,SR-GNN 可以针对各种构建的会话图支持不同的连接矩阵
A
\mathbf{A}
A。如果使用不同的会话图构建策略,连接矩阵
A
s
\mathbf{A_s}
As将相应改变。此外,当节点存在内容特征,例如描述和分类信息时,该方法可以进一步泛化。具体来说,可以将特征与节点向量串联来处理这类信息。
这里进行平均,原因有一个是在一定程度去噪。
生成会话嵌入
以前的基于会话的推荐方法总是假设每个会话都存在一个独特的用户潜在表示。相反,所提出的 SR-GNN 方法不对该向量做任何假设。相反,会话直接由参与该会话的节点表示。为了更好地预测用户的下一次点击,我们计划制定一种策略来结合会话的长期偏好和当前兴趣,并将这种组合嵌入用作会话嵌入。
将所有会话图输入门控图神经网络后,我们得到所有节点的向量(每个图单独输入)。然后,为了将每个会话表示为嵌入向量
s
∈
R
d
\mathbf s \in \mathbb R ^ d
s∈Rd ,我们首先考虑会话 s 的局部嵌入
s
1
s_1
s1。对于会话
s
=
[
v
s
,
1
,
v
s
,
2
,
.
.
.
,
v
s
,
n
]
s=[v_{s,1},v_{s,2},...,v_{s,n}]
s=[vs,1,vs,2,...,vs,n],局部嵌入可以简单定义为最后点击的项目
v
s
,
n
v_{s,n}
vs,n的
v
n
\mathbf v_n
vn,即
s
1
=
v
n
s_1=\mathbf v_n
s1=vn。
然后,通过聚合所有节点向量来考虑会话图
G
s
\mathcal{G}_{s}
Gs 的全局嵌入
s
g
\mathbf s_\text g
sg。考虑到这些嵌入中的信息可能具有不同的优先级,本文进一步采用软注意力机制来更好地表示全局会话偏好:
最后再加一个线性变换层进行混合嵌入(通过实践这样效果较好所以增加了):
s
h
=
W
3
[
s
1
;
s
g
]
\mathbf{s}_{\mathrm{h}}=\mathbf{W}_{3}\left[\mathbf{s}_{1} ; \mathbf{s}_{\mathrm{g}}\right]
sh=W3[s1;sg]
进行推荐和模型训练
这块最后就是图1的最后那块通过 s h \mathbf s_\text h sh和 v i \mathbf v_i vi进行聚合在经过softmax获取输出向量 y ^ \hat {\mathbf y} y^.
每个会话图中损失函数定义为预测与基本事实的交叉熵:
L
(
y
^
)
=
−
∑
i
=
1
m
y
i
log
(
y
^
i
)
+
(
1
−
y
i
)
log
(
1
−
y
^
i
)
\mathcal{L}(\hat{\mathbf{y}})=-\sum_{i=1}^{m}\mathbf{y}_{i}\log{(\hat{\mathbf{y}}_{i})}+(1-\mathbf{y}_{i})\log{(1-\hat{\mathbf{y}}_{i})}
L(y^)=−i=1∑myilog(y^i)+(1−yi)log(1−y^i)
其中
y
\mathbf y
y 表示真实项目的独热编码向量。
最后,使用时间反向传播 (BPTT) 算法来训练提出的 SR-GNN 模型。 请注意,在基于会话的推荐场景中,大多数会话长度相对较短。因此,建议选择相对较少的训练步骤以防止过度拟合。(一般为1,因为会话较短)
实验与分析
仅挑选部分。
数据集
数据集在两个现实世界的代表性数据集上评估了所提出的方法,即 Yoochoose 和 Diginetica。Yoochoose 数据集来自 RecSys Challenge 2015,其中包含 6 个月内用户在电子商务网站上的点击流。Diginetica 数据集来自 CIKM Cup 2016,仅使用其交易数据。这里对数据进行一定的处理,可以看出会话平均长度分别为6.16、5.71与5.12。
评估标准
P@20(精度)被广泛用作预测准确性的度量。它表示前 20 个项目中正确推荐的项目的比例。
MRR@20(平均倒数排名)是正确推荐项目的倒数排名的平均值。当排名超过 20 时,倒数排名设置为 0。MRR 度量考虑推荐排名的顺序,其中较大的 MRR 值表示排名列表顶部的推荐正确。
与链接方案变体的比较
文中进行了两种变体比较。
1、具有规范化全局连接的 SR-GNN(SR-GNN-NGC)在 SR-GNN 的基础上用从全局图中提取的边权重替换连接矩阵。
与 SR-GNN 相比,对于每个会话,SR-GNN-NGC 除了考虑当前会话中的项目外,还考虑了其他会话的影响,从而降低了连接到当前会话图中具有高度节点的边的影响。 这种融合方法显著影响当前会话的完整性,尤其是当图中边的权重发生变化时,导致性能下降。
2、具有完全连接的 SR-GNN(SR-GNN-FC)使用布尔权重表示所有高阶关系,并将其对应的连接矩阵附加到 SR-GNN 的矩阵中。
对于SR-GNN和SR-GNN-FC,前者只对连续项目之间的精确关系进行建模,而后者进一步明确地将所有高阶关系视为直接连接。据报道,SR-GNN-FC的表现不如SR-GNN,尽管两种方法的实验结果差别不大。如此小的结果差异意味着在大多数推荐场景中,并不是所有的高阶转换都可以直接转化为直接连接,高阶项目之间的中间阶段仍然是必需的。例如,假设用户在浏览网站时查看了以下页面:A→B→C,如果不经过中间页面B,在A之后直接推荐页面C是不合适的,因为A和C之间缺乏直接联系。
所有变体比较都优于其他方案。
不同会话嵌入的比较
将会话嵌入策略与以下三种方法进行比较:(1)仅局部嵌入(SR-GNNL),(2)带平均池化的全局嵌入(SR-GNNAVG),以及(3)带注意机制的全局嵌入(SR-GNN-ATT)。三种不同嵌入策略的方法的结果如图 4 所示。 从图中可以看出,混合嵌入方法 SR-GNN 在所有三个数据集上都取得了最佳效果,这验证了明确结合当前会话兴趣与长期偏好的重要性。此外,图中显示 SR-GNN-ATT 在三个数据集上的表现优于带平均池化的 SR-GNN-AVG。这表明会话可能包含一些噪声行为,无法独立处理。此外,结果表明注意力机制有助于从会话数据中提取重要行为以构建长期偏好。 请注意,SRGNN 的降级版本 SR-GNN-L 仍然优于 SR-GNN-AVG,并且几乎达到了与 SR-GNN-ATT 相同的性能,这证明了当前兴趣和长期偏好对于基于会话的推荐都至关重要。
总结
在难以获得用户偏好和历史记录的情况下,基于会话的推荐必不可少。 本文提出了一种基于会话的推荐的新架构,该架构将图形模型结合到会话序列的表示中。所提出的方法不仅考虑了会话序列的复杂结构和项目之间的转换,还制定了一项策略,将会话的长期偏好和当前兴趣结合起来,以更好地预测用户的下一步行动。综合实验证实,所提出的算法可以始终优于其他最先进的方法。
综上,SRGNN首先将GNN用于会话推荐的embedding,并考虑长期偏好与当前的兴趣,更重要的是去掉了人的概念,此外一个人可能对应多个会话,这件事会对后续有积极影响。
标签:嵌入,mathbf,SR,推荐,会话,神经网络,GNN,向量,SRGNN From: https://blog.csdn.net/qq_41982015/article/details/142728850