A-PGNN:Personalizing Graph Neural Networks with Attention Mechanism for Session-based Recommendation

基于注意机制的个性化图形神经网络会话推荐

发表于:IEEE(2019)

摘要

基于个性化会话的推荐问题旨在根据用户的连续行为预测用户的下一次点击。现有的基于会话的推荐方法只将用户的所有会话看作一个序列,忽略了会话之间的关系。除此之外,他们大多忽视了项目的复杂转换以及用户与项目之间的协作关系。为此,为了简洁起见,我们提出了一种新的方法,即带有注意机制的个性化图神经网络,A-PGNN。A-PGNN主要由两部分组成:一部分是个性化图神经网络(PGNN),用于捕捉用户会话序列中的复杂转换。与传统的图神经网络(GNN)模型相比,它还考虑了用户在序列中的作用。另一种是点乘注意机制来模拟历史会话对当前会话的影响。这两部分使我们能够以特定于用户的方式了解项目和会话之间的多级转换关系。

INTRODUCTION

当前存在的问题:现有的算法但很难明确区分不同历史会话对当前会话的影响。

作者提出:作者提出的模型对于每个用户,其用户行为图反映了用户的个性化行为。(1)为基于个性化会话的推荐场景设计了一种新的图形神经网络PGNN,它能够以特定于用户的方式捕获复杂的项目转换关系。(2)使用点乘注意机制来明确建模用户历史兴趣对当前会话的影响。

(a)是用户的历史会话和当前会话(b)是用户的行为图

Preliminaries

相关定义

模型

下图是我们提出的方法的概述。每个用户u的所有会话Su可以建模为用户行为图Gu(第3.3节)。然后,我们将用户行为图、项目嵌入和用户嵌入输入个性化图神经网络(PGNN)(第3.4节),以捕获项目相对于用户u的转换。然后,我们使用最大池层来获得会话嵌入,并可以获得历史会话嵌入矩阵。然后,我们通过Dot产品注意层计算历史会话对当前会话的显式影响。因此,我们可以得到用户的动态兴趣表示(第3.5节)。最后,我们将用户嵌入与动态兴趣表示连接起来,形成用户的统一表示(第3.6节)。使用这些表示,我们输出所有候选项的概率ˆy,其中元素yi∈ ˆy是对应项目vi的推荐得分∈ V(第3.7节)。具有top-k值的项目将成为推荐的候选项目。

构建用户行为图

对于每个用户,我们将其所有会话Su建模为一个有向图,在每个用户行为图中,假设vi对vj的影响和vj对vi的影响是不同的,这会产生两种类型的边,表示两种不同的过渡关系。一条称为输出边e_{ij}^{out},权重为w_{ij}^{out},另一条有向边称为输入边e_{ij}^{in},权重为w_{ij}^{in}。其权重可通过以下方式计算:

count(x,y)用来计算用户在与项目y之后交互项目x的次数,N_{in}(i) vj输入边的前向节点集,N_{out} (i)表示vj输出边的后继节点集

用户行为图Gu的拓扑结构可以用两个邻接矩阵表示,可以写成:

Personalizing Graph Neural Network

SR-GNN中的图神经网络不适合个性化推荐场景,也不能充分利用用户的个性化信息。为了解决这一局限性,作者提出了PGNN。

在t时刻节点i的输入输出的聚合信息,A_{out}^u A_{in}^u 分别表示用户行为图中的出边和入边的邻接矩阵

用GRU更新每个节点的隐藏状态

z_{i}^t,r_{i}^t分别表示更新门和重置门,\sigma 为sigmoid函数

在总共T个传播步骤之后,可以在图Gu中获得每个节点i的最终隐藏状态向量,我们使用hi代替h_{i}^{(T)} 。每个节点的最终隐藏状态不仅包含其节点特征,还聚合了其T阶邻居的信息。

通过注意网络生成用户动态兴趣表示

如果用户以前在购物网站上浏览或单击过数码相机,则其当前单击的项目是SD和Micro SD卡。在这种情况下,历史会话和当前会话项目之间存在很强的关系。如果他当前的互动是与汽车产品的互动,那么相机和汽车属于两个不相关的类别,这表明历史会话对当前会话的影响较小。总之,明确建模历史会话和当前会话项目之间的关系对于捕获用户行为模式具有重要意义。

计算历史会话对当前会话的影响:

Dot-Product Attention:

计算历史会话对当前会话影响。输入为维度为dk的queries和keys,以及维度为dv的values,用所有键计算查询的点积。

点积注意力

用隐向量h_{i} 对历史会话序列和当前会话序列建模,历史会话中的S_{i}^u =\left\{ v_{i,1}, v_{i,2}, ...,v_{i,m_{i} } \right\} 被表示为f_{i}^u\in R^d ,由最大池化计算得到

由此,历史会话序列S_{h}^u = \left\{ S_{1}^u, S_{2}^u,...,S_{n-1}^u \right\}  的嵌入可以被表示为F^u = [f_{1}^u, f_{2}^u,..., f_{n-1}^u  ] 。对于当前会话S_{c}^u ,我们简单的定义其嵌入矩阵为H^u = [h_{1}, h_{2},..., h_{m} ],用当前会话嵌入来查询历史会话嵌入,Q由H^u决定,键和值由F^u 决定。通过非线性变换将H^uF^u投影到相同的潜在空间。

W为投影矩阵
历史会话对当前会话的影响
当前会话的嵌入

此时,当前会话的嵌入为H^{u^,} = [h_{1}^,,h_{2}^,,...,h_{m}^,]

生成用户动态表示:

我们使用注意机制将当前嵌入矩阵分别编码为全局表示和局部表示,其中全局表示指用户的一般兴趣,局部指用户的当前兴趣。全局表示为:

当前会话的全局表示

局部表示为:

当前会话的最近一项的表示

用户的动态表示为:

生成统一的用户表示

预测

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容