CIKM 2019
Please click here for GitHub link.
Introduction
作者提出的观点:
- 如何从会话中的交互中提取具有代表性的信息来表示用户的偏好是基于会话的RS的本质。
- 用户在会话中的偏好变化表明,不应将项目简单地视为时间序列,项目转换模式更为复杂。
- 计算最后一个项目的相对重要性,会忽略会话中的特定项目转换模式。
- 确定会话中项目的内在顺序非常重要。这种内在顺序既不是RNN的直接时间顺序,也不是自我注意的完全随机性。
因此,本文提出了一个全图神经网络(FGNN)模型来学习项目转换模式的内在顺序,并计算会话级表示来生成推荐。
为了使用图神经网络,本文为每个会话建立一个会话图,并将推荐描述为一个图分类问题。为了捕捉项目转换模式的内在顺序(这对项目级特征表示至关重要),本文提出了一个多重加权图注意层(WGAT)网络来计算会话中项目之间的信息流。在获得项目表示之后,本文使用能自动学习确定适当的顺序的 Readout Function 来聚集这些特征。
Model
Graph Neural Networks
大多数GNN的工作方式是迭代地聚合来自相邻节点的信息。经过k次更新迭代后,节点的最终表示捕获了k跳邻居的结构信息和节点信息。其公式可表示为:-
是第
层中节点
的特征向量。
- 向第一层输入的
为特征向量
。
- Agg充当聚合器来聚合相邻节点的特征。
- Map是将自信息和邻域信息转化为新的特征向量的映射。
对于图分类,Readout Function 聚合图最后一层的所有节点特征,以生成图形级表示:
Weighted Graph Attentional Layer
大多数的GCN、GAT等只适用于无权重的无向图,本文提出了一种加权图注意力层,它在描述WGAT的前向传播的同时考虑了边的权重。其信息传播过程如下图所示:
第一层中输入的特征向量由一个 embedding layer 生成,其中 embedding layer 的输入为 one-hot 编码。
首先,需要计算一个自注意力系数:
接着,为了直接比较不同节点的重要性,使用了一个softmax函数将系数转换为跨越相邻节点和自身的概率形式:
ATT的选择十分多样化,本文中的选择为一个使用倾斜为的LeakyRelu作为激活函数的MLP层,因此
的计算公式为:
之后,应用对应邻域的线性组合来更新节点的特征:
因为多头注意有助于稳定自我注意层的训练,因此,本文的WGAT应用了多头设置。
Readout Function
Readout Function 的目的是在对GNN层进行正向计算后,根据节点特征给出整个图的表示。
Recommendation
一旦得到了图级嵌入,就可以用它以及各个item的初始嵌入向量为整个项目集
上的每个项目计算得分向量
:
最后,本文在上应用softmax函数将其转换为概率分布形式:
对于top-K推荐,基于选择所有项目中概率最高的K个是很简单的。
Loss Function
本文在和
的 one-hot encoding 之间使用了 multi- class cross entropy loss,其公式为: