这是一个信息爆炸的时代, 大数据这把双刃剑在为我们带来丰富的知识讯息的同时, 也产生了不少“数据泡沫”, 用户常常被这些无效信息包围, 无从下手, 而用户真正感兴趣的信息被阻绝在外. 为了解决这一问题, 推荐系统应运而生, 旨在为每个特定用户从海量数据中筛选出其各自感兴趣的内容并推荐给用户. 推荐系统的关键之一在于对用户兴趣以及物品特征的建模表示, 从而能够进一步通过评分模型对用户、物品预测相关程度, 并以此为依据进行推荐. 另一方面, 社交网络中好友、大V等社交关系也可能会影响用户的潜在兴趣, 社交网络也越来越多地被结合到推荐系统中来[1-3], 在推荐时利用通过社交网络的传播的信息, 提高了推荐的针对性与有效性.
基于图神经网络(GNNs)的推荐算法[4,5]是推荐系统应用的热门算法之一. GNN在图结构拓扑上应用深度神经网络的技术对局部图的邻域信息进行迭代, 使得信息能够在非结构化的节点关系中进行交互计算, 最终得到各个节点在图拓扑结构下的特征域表示. 社交推荐本质上是在非规则的用户-物品关系、用户-用户关系中聚合并表示各个节点的本征信息与交互关系, 因此GNN在社交推荐中得到了广泛的应用[6,7].
图神经网络通常描述的是静态拓扑关系, 一方面, 节点之间的连接关系不会随时间发生改变. 对于推荐系统而言, 时时刻刻都有海量新数据产生, 新用户、新物品以及新交互事件都会改变已有图网络的拓扑结构. 另一方面, 对于特定节点, 其邻居节点的时序性通常被GNN所忽略. 例如, 对于推荐系统中的用户-物品图结构而言, 以用户为中心, 则其邻居节点即为该用户交互过的物品, 而用户与不同物品的交互自然存在时间上的先后, 而交互时间的时序性则可能暗含了用户兴趣随时间的变化情况.
本文主要针对第二点提出改进GNN算法, 利用门控循环单元(GRU)对时间序列信息进行选择性遗忘与选择性记忆, 以此对用户-物品交互历史以及物品-用户交互历史进行建模, 增强了GNN算法在局部图邻域迭代过程中对时序信息的抽象能力, 使得推荐系统对用户节点以及物品节点的表示结合了其特点随时间的变化, 提升了推荐的效果. 具体而言, 我们分别建立了以用户节点为中心的用户-物品图, 每个用户节点的相邻节点为其交互过的物品, 这些相邻节点通过交互时间戳属性排序, 在GNN进行局部图邻域迭代时通过GRU学习物品交互历史潜在关联, 并通过注意力机制与用户表征进行聚合; 类似的, 同时建立以物品节点为中心的物品-用户图, 每个物品节点的相邻节点为与其交互过的用户, 同样按照交互事件的时间戳排序, 并通过注意力GRU模型进行聚合, 以此来表征对该物品感兴趣的群体特征变化; 另外, 还根据用户间的社交关系建立了用户-用户图网络, 通过注意力机制来传递社交网络中相邻用户之间的相互作用.
1 相关工作 1.1 基于非时序特征的GNN推荐算法深度学习主要关注例如文字的序列结构、例如图片的平面结构, 现在处理这些数据的做法也比较成熟, 关注序列任务的NLP领域多用RNN、Transformer、CNN对数据进行Encoder, 而关注平面结构的CV领域更多使用CNN及其各种变体对数据进行Encoder. 在现实世界中更多的数据表示并不是序列或者平面这种简单的排列, 而是表现为更为复杂的图结构.
Kipf和Welling[8]提出了用于半监督图分类的图卷积网络(GCNs). 模型通过利用节点属性和图结构来学习节点表示, 它由多个图卷积层组成, 每个图卷积层使用当前节点的表示及其相邻节点的表示的组合来更新节点表示. 通过这个过程, 可以捕获节点之间的依赖关系, 然而在原来的公式中, 当更新节点表示时, 所有的邻居被赋予静态权值. Fan等[9]通过构建用户−物品关系二元图 (用户购买的所有物品)、用户−朋友关系单元图 (用户的社交关系)、物品−用户关系二元图 (物品被用户购买的记录) 这3个无向图用于对物品进行评分预测. Ying等[10]构建了用户−标签无向二元图, 通过 PinSage 算法 (随机游走和图卷积结合) 成功应用于超大规模的网页内容推荐. Wang等[11]构建用户—物品图, 不同之处在于 GNN 算法中使用目标节点及其邻居节点的点积进行更新, 并且通过协同过滤的方法进行推荐. 上述文献证明了图网络在推荐上的有效性, 但都没有考虑时序性对用户兴趣以及物品的影响.
1.2 基于时序特征的推荐算法对于随时间变化的用户兴趣进行建模在推荐系统领域也引起了大量关注, 这些模型大多基于(高斯)矩阵分解[12]. 例如, Xiong等[13]通过分解(用户、物品、时间)张量来学习时间表示. Koren[14]开发了一个类似的模型叫做timeSVD++. Gopalan等进行了类似的建模, 但是使用了泊松分解[15]. 但是, 这些方法假定用户的兴趣在长期范围内缓慢而平稳地变化, 通常以月或年为序.
为了有效地捕捉用户的短期兴趣, 最近的研究将RNN引入到用户最近的(有序的)行为模型中. 例如, Hidasi等[16]首先提出了SessionRNN来模拟用户在会话中的兴趣. Wu等[17]使用两个独立的RNNs根据新的观察结果更新用户和项的表示. Beutel等[18]构建了一个基于rnnde的推荐器, 可以包含辅助上下文信息. 本文基于这种思路将GRU引入图网络, 并且辅之以注意力机制, 来捕捉用户的时变兴趣和物品的时变特征, 进而提升了推荐系统在时序评分数据集上的有效性.
2 基于AGRU的图网络社交推荐算法本文以图网络为骨架建立推荐系统, 定义用户集合
因此, 本文推荐系统可描述为: 给定用户集合
GNN中常用局部图邻域聚合技术[8,19]来传递邻近节点之间的信息, 并迭代训练各节点的抽象表示. 对于给定图
算法1. GNN局部图邻域聚合算法的第n次迭代
1) 遍历图
2) 计算
3) 利用聚合函数
4) 将聚合结果
上述算法中聚合函数
本文推荐系统图模型中(如图1所示), 顶点集合由用户集合
考虑图模型中的用户节点
算法2. 用户-物品图AGRU聚合算法, 第n次迭代
1) 遍历用户集合
2) 计算
3) 将
4) 对序列
5) 将序列
6) 以GRU末层最后时刻的隐藏状态
7) 拼接
8) 将聚合结果
上述算法中, 第4)步采用双层感知机降维:
$\begin{array}{*{20}{c}} {x_j^{\mathcal{V}\mathcal{R}} = CONCAT\left( {e_j^\mathcal{V},e_{i,j}^\mathcal{R}} \right)} \end{array}$ | (1) |
$\begin{array}{*{20}{c}} {{y_j} = ReLU\left( {{W_1}x_j^{\mathcal{V}\mathcal{R}} + {b_1}} \right)} \end{array}$ | (2) |
$\begin{array}{*{20}{c}} {{e_j}^\prime = ReLU\left( {{W_2}{y_j} + {b_2}} \right)} \end{array}$ | (3) |
第5)步中第
$\begin{array}{l} {{x_t} = \left\{ {\begin{array}{l} {{e_t}^\prime ,\;\;m = 1} \\ {\delta _t^{\left( {m - 1} \right)} * h_t^{\left( {m - 1} \right)},\;\;m > 1} \end{array}} \right.} \end{array}$ | (4) |
$ r_{t}=\sigma\left(W_{i r} x_{t}+b_{\dot{r}^{r}}+W_{h r} h_{(t-1)}+b_{h r}\right) $ | (5) |
$ {\textit{z}}_{t}=\sigma\left(W_{i {\textit{z}}} x_{t}+b_{i {\textit{z}}}+W_{h {\textit{z}}} h_{(t-1)}+b_{h {\textit{z}}}\right) $ | (6) |
$\begin{array}{*{20}{c}} {{n_t} = \tanh \left( {{W_{in}}{x_t} + {b_{in}} + {r_t} * \left( {{W_{hn}}{h_{\left( {t - 1} \right)}} + {b_{hn}}} \right)} \right)} \end{array}$ | (7) |
$\begin{array}{*{20}{c}} {{h_t} = \left( {1 - {{\textit{z}}_t}} \right) * {n_t} + {{\textit{z}}_t} * {h_{\left( {t - 1} \right)}}} \end{array}$ | (8) |
其中,
$\begin{array}{*{20}{c}} {\sigma \left( x \right) = \dfrac{1}{{1 + {e^{ - x}}}}} \end{array}$ | (9) |
每个GRU单元的内部结构如图2所示,
取GRU第k层的隐藏状态
$\begin{array}{*{20}{c}} {{x_i} = CONCAT\left( {h_i^{\left( k \right)},h_L^{\left( k \right)}} \right)} \end{array}$ | (10) |
$\begin{array}{*{20}{c}} {{y_i} = ReLU\left( {{W_{a1}}{x_i} + {b_{a1}}} \right)} \end{array}$ | (11) |
$\begin{array}{*{20}{c}} {{{\textit{z}}_i} = ReLU\left( {{W_{a2}}{y_i} + {b_{a2}}} \right)} \end{array}$ | (12) |
$\begin{array}{*{20}{c}} {{a_i} = ReLU\left( {{W_{a3}}{{\textit{z}}_i} + {b_{a3}}} \right)} \end{array}$ | (13) |
$\begin{array}{*{20}{c}} {{p_i} = \dfrac{{\exp \left( {{a_i}} \right)}}{{\displaystyle\mathop \sum \nolimits_{i = 1}^L \exp \left( {{a_i}} \right)}}} \end{array}$ | (14) |
则邻域
$ \begin{array}{c} Agg\left({\mathcal{N}}^{\mathcal{V}}\left({u}_{i}\right)\right)={u}_{i}^{agg}={\displaystyle \sum }_{i=1}^{L}{p}_{i}{h}_{i}^{\left(k\right)}\end{array}$ | (15) |
最终将邻域聚合特征与节点自身特征融合得到
$\begin{array}{*{20}{c}} {{x_i} = CONCAT\left( {u_i^{agg},e_i^\mathcal{U}} \right)} \end{array}$ | (16) |
$\begin{array}{*{20}{c}} {{y_i} = ReLU\left( {{W_1}{x_i} + {b_1}} \right)} \end{array}$ | (17) |
$\begin{array}{*{20}{c}} {u_i^{\left( n \right)} = ReLU\left( {{W_2}{y_i} + {b_2}} \right)} \end{array}$ | (18) |
另一方面, 考虑用户节点
$\begin{array}{*{20}{c}} {w_{i,j}^\mathcal{S} = \left| {\left\{ {{u_k}|{u_k} \in \mathcal{U},{s_{k,j}} \in \mathcal{S}} \right\}} \right|} \end{array}$ | (19) |
在用户-用户局部图的邻域聚合的第n次迭代中, 使用用户-物品局部图第n次迭代聚合的结果
首先, 查询用户-物品图在用户集合
$\begin{array}{*{20}{c}} {\left\{ {u_j^{\left( n \right)}|{u_j} \in {\mathcal{N}^\mathcal{U}}\left( {{u_i}} \right)} \right\}} \end{array}$ | (20) |
随后通过如式(10)–(14)所示的注意力网络得到
$ \begin{array}{c} Agg\left({\mathcal{N}}^{\mathcal{U}}\left({u}_{i}\right)\right)={u}_{i}^{agg,\mathcal{S}}={{\displaystyle \sum }}_{j}{p}_{j}{w}_{i,j}^{\mathcal{S}}{u}_{j}^{\left(n\right)}\end{array}$ | (21) |
最终经过式(16)–式(18), 将
类似地, 考虑以物品节点为中心情形下的局部图邻域聚合算法. 由于评分边集
根据第2.2、2.3节对用户
在训练过程中, 以一个批次(batch)数据的均方误差MSE作为目标函数对模型中的参数进行优化:
$ MSE(\text { batch })=\frac{\displaystyle\sum_{k=1}^{b s i {\textit{z}} e}\left(\hat{w}_{i_{k}, j_{k}}^{\mathcal{R}}-w_{i_{k}, j_{k}}^{\mathcal{R}}\right)^{2}}{b { si{\textit{z}}e }} $ | (22) |
其中,
在推理过程中, 则
实验采用Ciao数据集和Epinions数据集对算法进行验证, 两者均为包含社交关系信息的在线购物数据[21]. 数据集包含两部分数据: (1)评分信息, 每条评分数据包括用户索引、物品索引、评分分值(0–5)以及时间戳4个维度; (2)社交信息, 每条社交数据包括关注者用户索引以及被关注者用户索引, 表示用户单向关注关系. Ciao数据集与Epinions数据集的特点如表1所示.
对数据集的预处理包括数据清洗、索引重映射、数据集切分、图建模、时间戳排序5个步骤. 数据清洗主要完成数据去重, 评分数据中包含少量重复评分边
3.2 评价指标
本文采用衡量推荐系统推荐效果的两个常用指标作为评判标准: 均方根误差RMSE和平均绝对误差MAE:
$ {RMSE}({y}, \hat{{y}})=\sqrt{\frac{1}{m} \sum_{i=1}^{m}\left(y_{i}-\hat{y}_{i}\right)^{2}} $ | (23) |
$ {MAE}({y}, \hat{{y}})=\frac{1}{m} \sum_{i=1}^{m}\left|y_{i}-\hat{y}_{i}\right| $ | (24) |
其中,
我们选取下列模型作为本算法对比的基准模型:
(1)概率矩阵分解(PMF)[12]: 对用户潜在因子、物品潜在因子建模, 利用用户-物品评分概率矩阵进行推荐;
(2)社交推荐(SoRec)[22]: 基于用户-物品评分矩阵提取联合潜在因子特征, 并结合社交矩阵进行推荐;
(3)社交矩阵分解(SocialMF)[3]: 考虑了社交信任度在用户-物品评分矩阵分解空间中的传播;
(4)神经网络矩阵分解(NCF)[23]: 将神经网络与矩阵分解结合进行推荐;
(5)深度社交网络推荐(Deep-SoR)[24]: 利用深度神经网络对用户在社交关系中的特征进行训练, 并通过概率矩阵分解实现推荐;
(6)图网络推荐(GraphRec)[9]: 根据社交关系和评分关系建立图网络, 利用注意力机制迭代图节点, 训练用户、物品的嵌入表示来实现推荐.
3.4 实验环境与超参数设置本文采用Python 3.8, PyTorch 1.6, Cuda 10.2作为搭建算法的环境, 工作站CPU为4核Intel(R) Core(TM) i5-7500@3.40 GHz, GPU型号为NVIDIA GP102 [TITAN Xp].
本算法以batch为单位进行训练, 为了避免过拟合, 在各非线性激活函数输出端增加dropout层, 丢弃概率全局统一设置; 同时在图网络的每一批次迭代中, 对同一batch的用户、物品向量表示进行批次归一化. 算法中的超参数经过验证集(从训练集中抽取20%得到)反复调整得到: 嵌入维度(用户、物品、评分采用统一嵌入维度)为64, GRU纵向堆叠层数
本文在Ciao、Epionions数据集分别选取60%、80%作为训练集, 其余作为测试集对提出的算法进行了验证, 并与第3.3节列出的几种基准模型进行了对比,RMSE和MAE比较结果如表2.
从表2的结果可以看出, 本文所提出的基于AGRU-GNN算法在Ciao数据集和Epinions数据集上比表中所列的基准模型误差更小. 其中PMF和NCF只利用了用户与物品的评分数据, 而SoRec、SocialMF、Deep-SoR和GraphRec均使用了数据集中的社交关系数据, 因此平均比同类模型具有更小的误差. 本文所采用的AGRU聚合算法, 通过GRU对评分事件的时序信息提取, 并加以注意力机制对不同时刻的输出进行了有选择的加权平均, 结合社交局部图使得用户对物品的时变兴趣信息能够基于社交影响关系在用户之间传播, 从而达到了更好的推荐效果. 这证明了本文提出的算法在时序推荐数据集上具有一定的优越性.
我们还探究了不同超参数设置下, 对本文推荐算法效果的影响. 以Ciao(80%)数据集为例, 基准超参数的设置为GRU纵向堆叠层数
GRU的层数一定程度上决定了模型的复杂程度, 为了避免严重的过拟合, 我们研究了不同GRU层数设置对模型误差的影响, 如图5. 可以看出, 双层GRU在此数据集上具有较好的推荐效果, 而层数过大则存在较严重的过拟合, 层数过小则削弱了模型对时序信息的学习能力.
为了更好地抑制过拟合, 模型中在大部分非线性激活单元的输出端以及GRU层间加入了dropout层, 并通过全局统一的dropout概率加以调节. 图6展示了模型最佳预测误差随dropout概率的变化, 以50%概率进行丢弃时, 模型在预测误差和过拟合之间达到了较好的平衡. 即使以较大的概率75%进行丢弃, 模型的功能依然没有受损, 但预测误差开始陡增.
另外, 我们还对比了本文模型的若干变种模型, 分别为:
(1) AGRU-GNN: 采用GRU作为图网络时序聚合模型, 并在物品-用户图、社交图的邻域聚合均采用了注意力机制, 即本文提出的最终模型;
(2) GRU-GNN: 禁用了模型中的注意力机制, 其余参数与(1)相同;
(3) ARNN-GNN: 采用Vanilla RNN作为图网络时序聚合模型, 也同时采用了注意力机制;
(4) GNN(即GraphRec[9]): 基准图网络模型, 主要采用注意力聚合.
四种变种模型分别在Ciao(80%)和Epinions(80%)数据集上进行了对比, 结果如图7所示. GRU对时序信息的提取筛选能力明显优于普通RNN, 普通RNN对时序信息的选择记忆、遗忘能力不足, 导致ARNN-GNN的推荐有效性甚至弱于基准模型GraphRec; 另外, 注意力机制的存在也对模型整体性能有一定提升, 这说明注意力机制有助于在用户的物品交互时间序列关注重点事件, 同样地, 在社交图中也对不同的好友存在不同的关注权重.
综上所述, 本文提出的基于AGRU的图网络聚合算法, 在带有时间戳及社交信息的推荐数据集Ciao、Epinions上取得了良好的性能, 证明了本算法中采用的AGRU聚合从用户时序评价历史中提取了有效信息, 提升了推荐系统的准确度.
4 结论与展望本文在图神经网络GNN架构的基础上, 基于推荐系统中评价事件的时序性以及用户特征、物品特征的时变特点, 提出了一种基于门控循环单元的注意力聚合算法. 通过Ciao、Epinions数据集, 证明了本算法在时序评价数据集上具有更低的预测误差, 说明用户的时变兴趣、物品的时变特征对于推荐系统也至关重要. GRU对于时间序列有较强的学习能力, 后续工作可考虑基于此算法实现推荐系统的在线训练, 即输入数据是随时间流动的流式数据, 图结构也随数据的增长动态变化, 使GRU从流式数据中捕获动态的时序特征, 以此实现推荐系统的在线演变和动态推荐. 在线的动态推荐更加接近实际生活中的推荐系统产品, 当然, 还需要解决冷启动、计算开销大甚至是分布式架构设计等问题.
[1] |
Ma H, Zhou DY, Liu C, et al. Recommender systems with social regularization. Proceedings of the fourth ACM International Conference on Web Search and Data Mining. Hong Kong, China. 2011. 287–296.
|
[2] |
Tang JL, Hu X, Gao HJ, et al. Exploiting local and global social context for recommendation. Proceedings of the Twenty-Third international joint conference on Artificial Intelligence. Beijing, China. 2013. 2712–2718.
|
[3] |
Jamali M, Ester M. A matrix factorization technique with trust propagation for recommendation in social networks. Proceedings of the Fourth ACM Conference on Recommender Systems. Barcelona, Spain. 2010. 135–142.
|
[4] |
Defferrard M, Bresson X, Vandergheynst P. Convolutional neural networks on graphs with fast localized spectral filtering. Proceedings of the 30th Conference on Neural Information Processing Systems. Barcelona, Spain. 2016. 3844–3852.
|
[5] |
Derr T, Ma Y, Tang JL. Signed graph convolutional networks. Proceedings of 2018 IEEE International Conference on Data Mining (ICDM). Singapore. 2018. 929–934.
|
[6] |
Wu L, Sun PJ, Hong RC, et al. SocialGCN: An efficient graph convolutional network based model for social recommendation. arXiv preprint arXiv: 1811.02815, 2019.
|
[7] |
van der Berg R, Kipf T N, Welling M. Graph convolutional matrix completion. arXiv preprint arXiv: 1706.02263, 2017
|
[8] |
Kipf TN, Welling M. Semi-supervised classification with graph convolutional networks. arXiv preprint arXiv: 1609.02907, 2017.
|
[9] |
Fan WQ, Ma Y, Li Q, et al. Graph neural networks for social recommendation. The World Wide Web Conference. San Francisco, CA, USA. 2019. 417–426.
|
[10] |
Ying R, He RN, Chen KF, et al. Graph convolutional neural networks for web-scale recommender systems. Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. London, UK. 2018. 974−983.
|
[11] |
Wang X, He X, Wang M, et al. Neural graph collaborative filtering. arXiv: 1905.08108, 2019.
|
[12] |
Salakhutdinov R, Mnih A. Probabilistic matrix factorization. Proceedings of the 20th International Conference on Neural Information Processing Systems. Vancouver, BC, Canada. 2007. 1257–1264.
|
[13] |
Xiong L, Chen X, Huang TK, et al. Temporal collaborative filtering with bayesian probabilistic tensor factorization. Proceedings of the 2010 SIAM International Conference on Data Mining. Columbus, OH, USA. 2010. 211–222.
|
[14] |
Koren Y. Collaborative filtering with temporal dynamics. Proceedings of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. Paris, France. 2009. 447–456.
|
[15] |
Gopalan P, Hofman JM, Blei DM. Scalable recommendation with hierarchical poisson factorization. Proceedings of the Thirty-First Conference on Uncertainty in Artificial Intelligence. Amsterdam, the Netherlands. 2015. 326–335.
|
[16] |
Hidasi B, Karatzoglou A, Baltrunas L, et al. Session-based recommendations with recurrent neural networks. arXiv preprint arXiv: 1511.06939, 2016.
|
[17] |
Wu CY, Ahmed A, Beutel A, et al. Recurrent recommender networks. Proceedings of the Tenth ACM International Conference on Web Search and Data Mining. Cambridge, UK. 2017. 495–503.
|
[18] |
Beutel A, Covington P, Jain S, et al. Latent cross: Making use of context in recurrent recommender systems. Proceedings of the Eleventh ACM International Conference on Web Search and Data Mining. Marina Del Rey, CA, USA. 2018. 46–54.
|
[19] |
Hamilton WL, Ying R, Leskovec J. Inductive representation learning on large graphs. Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach, CA, USA. 2017. 1024–1034.
|
[20] |
Cho K, van Merrienboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation. arXiv preprint arXiv: 1406.1078, 2014.
|
[21] |
Tang JL, Gao HJ, Liu H, et al. eTrust: Understanding trust evolution in an online world. Proceedings of the 18th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. Beijing, China. 2012. 253–261.
|
[22] |
Ma H, Yang HX, Lyu MR, et al. SoRec: Social recommendation using probabilistic matrix factorization. Proceedings of the 17th ACM Conference on Information and Knowledge Management. Napa Valley, CA, USA. 2008. 931–940.
|
[23] |
He XN, Liao LZ, Zhang HW, et al. Neural collaborative filtering. Proceedings of the 26th International Conference on World Wide Web. Perth, Australia. 2017. 173–182.
|
[24] |
Fan WQ, Li Q, Cheng M. Deep modeling of social relations for recommendation. Proceedings of the Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18). New Orleans, LA, USA. 2018. 8075–8076.
|