Rethinking the Item Order in Session-based Recommendation with Graph Neural Networks

CIKM 2019
Please click here for GitHub link.

Introduction

作者提出的观点:

  • 如何从会话中的交互中提取具有代表性的信息来表示用户的偏好是基于会话的RS的本质。
  • 用户在会话中的偏好变化表明,不应将项目简单地视为时间序列,项目转换模式更为复杂。
  • 计算最后一个项目的相对重要性,会忽略会话中的特定项目转换模式。
  • 确定会话中项目的内在顺序非常重要。这种内在顺序既不是RNN的直接时间顺序,也不是自我注意的完全随机性。

因此,本文提出了一个全图神经网络(FGNN)模型来学习项目转换模式的内在顺序,并计算会话级表示来生成推荐。
为了使用图神经网络,本文为每个会话建立一个会话图,并将推荐描述为一个图分类问题。为了捕捉项目转换模式的内在顺序(这对项目级特征表示至关重要),本文提出了一个多重加权图注意层(WGAT)网络来计算会话中项目之间的信息流。在获得项目表示之后,本文使用能自动学习确定适当的顺序的 Readout Function 来聚集这些特征。

Model

Graph Neural Networks

大多数GNN的工作方式是迭代地聚合来自相邻节点的信息。经过k次更新迭代后,节点的最终表示捕获了k跳邻居的结构信息和节点信息。其公式可表示为:
  • h_v^{(k)}是第k层中节点v的特征向量。
  • 向第一层输入的h_v^{(0)}为特征向量X_v
  • Agg充当聚合器来聚合相邻节点的特征。
  • Map是将自信息和邻域信息转化为新的特征向量的映射。

对于图分类,Readout Function 聚合图最后一层的所有节点特征,以生成图形级表示h_G

Weighted Graph Attentional Layer

大多数的GCN、GAT等只适用于无权重的无向图,本文提出了一种加权图注意力层,它在描述WGAT的前向传播的同时考虑了边的权重。其信息传播过程如下图所示:


第一层中输入的特征向量由一个 embedding layer 生成,其中 embedding layer 的输入为 one-hot 编码。

首先,需要计算一个自注意力系数e_{ij}

其中,为到的边的权重。

接着,为了直接比较不同节点的重要性,使用了一个softmax函数将系数转换为跨越相邻节点和自身的概率形式:


ATT的选择十分多样化,本文中的选择为一个使用倾斜为\alpha=0.2的LeakyRelu作为激活函数的MLP层,因此\alpha_{ij} 的计算公式为:

其中,|| 代表两个向量的连接。

之后,应用对应邻域的线性组合来更新节点的特征:

其中, 为ReLU函数。

因为多头注意有助于稳定自我注意层的训练,因此,本文的WGAT应用了多头设置。

其中,为the number of heads,而 || 代表连接所有的头。

最后,计算所有注意力结果的平均值:

Readout Function

Readout Function 的目的是在对GNN层进行正向计算后,根据节点特征给出整个图的表示。

Set2Set是一个图级特征抽取器,它学习一个 query vector,该 query vector 指示了从内存中读取无向图的顺序。本文修改了这个方法以适应会话图的设置,其公式为:

Recommendation

一旦得到了图级嵌入q_t^*,就可以用它以及各个item的初始嵌入向量为整个项目集V上的每个项目计算得分向量\hat{z}


最后,本文在上应用softmax函数将其转换为概率分布形式:

对于top-K推荐,基于选择所有项目中概率最高的K个是很简单的。

Loss Function

本文在\hat{y}v_{label}的 one-hot encoding 之间使用了 multi- class cross entropy loss,其公式为:

Datasets

本文使用了 Yoochoose 和 Diginetica 两个电商数据集。

Experiment

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