SR-GNN论文解读(AAAI2019)

Session-based Recommendation with Graph Neural Networks(SR-GNN)

1.引言
基于会话的推荐系统旨在通过匿名的会话来预测用户行为。但是传统基于序列的推荐算法并不能获取items间的复杂的转移关系,因此本文提出了基于GNN的方法。

2.相关工作
• 传统的推荐算法
• 基于深度学习的方法
• 图神经网络(GNN)

3.方法介绍
SR-GNN的整体框架如下图所示:
SR-GNN论文解读(AAAI2019)_第1张图片
3.1符号定义
在基于会话的推荐系统中,设V={ v 1 v_1 v1, v 2 v_2 v2,…, v m v_m vm}是所有session中的涉及的独立物品,那么匿名的会话序列根据时间排序可以表示为s=[ v s , 1 v_{s,1} vs,1, v s , 2 v_{s,2} vs,2,… v s , n v_{s,n} vs,n]。其中,Vs,i表示用户在会话s中点击的物品。因此基于会话的推荐系统的目标就是预测用户的下一次点击,比如Vs,n+1。当然在基于会话的推荐系统中,对于某一会话s,系统一般给出输出概率最高的几个预测点击目标,作为推荐的候选。

3.2构造会话图(Session Graphs)
每一个会话序列s都可以被建模为一个有向图Gs=(Vs,Es)。在该会话图中,每个节点都代表一个物品 v s , i v_{s,i} vs,i,每一条边( v s , i − 1 v_{s,i-1} vs,i1, v s , i v_{s,i} vs,i)代表在会话s中,用户在点击了物品 v s , i − 1 v_{s,i-1} vs,i1后点击了 v s , i v_{s,i} vs,i。因为许多item可能会在会话序列中多次出现,因此论文给每一条边赋予了标准化后的加权值,权重的计算方法为边的出现次数除以边起点的出度。论文将每个item通过GNN都映射到一个统一的词嵌入空间中,且节点对应的词嵌入向量v表示通过图神经网络学到的词嵌入向量。基于每个节点的词嵌入向量的表示形式,每个会话s就可以嵌入向量表示:各个节点的词嵌入向量按时间顺序拼接而成。

3.3在会话图上的学习物品嵌入向量(Learning Item Embeddings on Session Graphs)
GNN十分适合用于基于会话的推荐算法,因为它可以根据丰富的节点连接自动提取会话图的特征。门控图神经网络(Gated GNN)的更新可以由如下公式给出:
SR-GNN论文解读(AAAI2019)_第2张图片
上式中的H控制着权重, z s , i , r s , i z_{s,i}, r_{s,i} zs,i,rs,i分别代表重置(reset)和更新(update)门。[ v 1 t − 1 , . . . , v n t − 1 v_1^{t-1},...,v_n^{t-1} v1t1,...,vnt1]是会话s包含的节点向量。 A s ∈ R n × 2 n A_s \in R^{n \times 2n} AsRn×2n是关系矩阵,决定着图中的节点彼此间如何关联的。 A s , i : ∈ R 1 × 2 n A_{s,i:} \in R^{1 \times 2n} As,i:R1×2n A s A_s As中与节点 v s , i v_{s,i} vs,i相关的两列(因为会话图是有向图,因此这的两列分别对应的是当前节点到其他节点和其他节点到当前节点对应的关系系数)。

A s A_s As定义为两个邻接矩阵 A s ( o u t ) A_s ^{(out)} As(out) A s ( i n ) A_s ^{(in)} As(in)的拼接,分别表示传入边和传出边的连接权重。具体例子如下图所示:
SR-GNN论文解读(AAAI2019)_第3张图片
SR-GNN能够根据不同的会话数据构建相应的会话图,例如当节点存在描述和分类信息等内容特征时,该方法可以进一步推广,
具体来说,可以将数据特征与节点向量相对应起来处理这些信息。

对于每个会话图Gs,门控图神经网络(Gated GNN)同时对所有的节点进行处理。其中(1)式是用于在关系矩阵As的监督下进行不同节点间的信息传播,具体而言就是对于每个节点提取其相邻节点的关系生成隐向量输入后续的GNN中。然后重置门和更新门分别决定哪些信息需要丢弃和保留。之后,用(4)式中的目前状态,之前的状态和重置门计算候选状态。最后根据(5)式用候选状态,前一状态和更新门计算表出最后的状态。重复上述过程直至收敛,即可得到最后的各个节点的词嵌入向量。

4生成会话嵌入向量
之前基于会话的推荐方法一般假设对于每个会话的用户都有明确的潜在表示。而SR-GNN恰恰相反,其不对生成的词嵌入向量做任何假设。SR-GNN方法中的会话直接通过各个节点之间的联系直观表示。

通过将所有的会话图送入G-GNN中能够得到所有节点的嵌入向量。接下来,为了将每个会话表示为嵌入向量 s ∈ R d s \in R^d sRd,首先考虑局部嵌入向量s1,对于会话s=[ v s , 1 v_{s,1} vs,1, v s , 2 v_{s,2} vs,2,… v s , n v_{s,n} vs,n],局部嵌入向量可以简单定义为会话中最后点击的物品 v s , n v_{s,n} vs,n,对于具体的session也可以简单表示为 v n v_n vn,即 s 1 = v n s_1=v_n s1=vn

然后,论文结合所有节点嵌入向量来计算会话图的全局嵌入向量 s g s_g sg,鉴于不同节点信息可能存在不同的优先级,为了使全局嵌入向量有更好的表现,论文引入了soft-attention机制。
SR-GNN论文解读(AAAI2019)_第4张图片
其中参数 q ∈ R d q \in R^d qRd, W 1 , W 2 ∈ R d × d W_1,W_2 \in R^{d \times d} W1,W2Rd×d均是可训练的,随训练迭代,控制着每个节点嵌入向量的权重 α i \alpha_i αi,最后对于每个节点对应的词嵌入向量进行加权求和得到最后的全局词嵌入向量。

最后将会话的局部嵌入向量和全局嵌入向量相结合即可得到融合的嵌入向量 s h = W 3 [ s 1 ; s g ] s_h=W_3[s_1;s_g] sh=W3[s1;sg]

5推荐决策和模型训练
得到每个会话的嵌入向量后论文对每个候选物品 v i v_i vi计算得分 z i ^ \hat{z_i} zi^,具体计算公式如下:
在这里插入图片描述
将得分经过一个softmax激活函数后得到模型的预测输出:
在这里插入图片描述
对于每个会话图,损失函数选用常见的交叉熵函数:
在这里插入图片描述
模型的训练采用基于时间的方向传播方法(BPTT),由于在基于会话的推荐方案中,大多数会话长度较短,因此训练迭代次数不要太多,防止过拟合。

6实验和分析
6.1评价指标
P@20:表示前20个推荐项目中正确推荐的准确率。
MRR@20(Mean Reciprocal Rank):代表正确推荐的物品优先级排名倒数的平均值,只计算前20个推荐中正确推荐的排名均值。MRR度量考虑推荐排名的顺序,其中较大的MRR值表示正确的推荐位于排名列表的顶部。

6.2实验结果
SR-GNN论文解读(AAAI2019)_第5张图片

论文源码:
https://github.com/CRIPAC-DIG/SR-GNN

你可能感兴趣的:(论文阅读)