1. 引言
当前,越来越多的互联网场景开始使用推荐算法为用户定制个性化推荐界面,而推荐算法的准确率与用户对该应用的依赖度明显成正比关系,因此只有充分提高应用的推荐算法性能才能有效提高该应用的使用率,这样一方面利于用户检索匹配自身需求的信息,另一方面利于“商品”的有效推广。传统的推荐算法往往只单独关注了用户的长期或是短期兴趣,即根据用户的属性以及长期以来关注的更多的信息进行推荐,或是仅根据用户近几次会话进行即时推荐。而在实际应用中,用户的兴趣并不是固定不变的,而是会随着时间的推移动态变化,因此基于时间的序列推荐被提出,该类推荐致力于挖掘用户的动态兴趣,以实现对用户兴趣的更精准捕捉。早期解决序列推荐问题的方法是使用马尔可夫链 [1] [2] (Markov Chain, MC)等。后来,循环神经网络(Recurrent Neural Network, RNN)、卷积神经网络(Convolutional Neural Network, CNN)等被成功地应用于序列推荐 [3] [4] 。再到后面注意力机制(Attention Mechanism, AM)在深度学习模型上的应用取得了巨大成果 [5] [6] [7] ,也大大改善了序列推荐的预测能力。
注意力机制是源自人类视觉研究的一种信号处理机制。人类在关注某件事物时,其注意习惯往往具有选择性,并不会对该事物的各部分平均分配注意力,而是会选择性地将主要注意力投放至指定区域,而对其他区域分配较少或是不分配注意力。基于该现象提出的注意力机制能够有效优化模型的建模效果,提高模型的建模效益,其本质是让模型自己学习如何分配注意力,为输入信号加权,在强调感兴趣的区域同时,抑制不相关的背景区域,以突出重要特征对结果的影响。目前,注意力机制已被广泛地应用于深度学习的各个领域,并从2017年开始应用于推荐领域,AFM [8] 、DIN [5] 等模型中都引入了注意力机制。
本文提出一种利用注意力机制融合用户长短期兴趣的推荐算法——基于长短期的注意力机制推荐算法(Attention Mechanical Recommendation Algorithm Based on Long Short-Term, AM_LST),使用注意力机制对用户的长短期兴趣特征按照学习到的权重相融合,以实现用户长短期兴趣的自动捕获与长短期权重的自动分配,有效提高推荐效果。
2. 用户动态兴趣捕捉
本文在融合潜在因子模型与门控循环单元的长短期推荐算法(Recommendation Algorithm Based on Long Short-Term, RA_LST)的基础上引入注意力机制,以提高模型的推荐性能。RA_LST模型分别通过潜在因子模型(Latent Factor Model, LFM)与门控循环单元(Gated Recurrent Unit, GRU)来捕捉用户的长期兴趣与短期兴趣,然后采用随机梯度优化(Stochastic Gradient Descent, SGD)的方式来将两部分学习结果融合,以达到融合用户长短期兴趣的效果。
2.1. 潜在因子模型LFM
潜在因子模型是一种潜在的语义分析技术,其目的是发现潜在的主题或类别。它源于文本挖掘领域的研究,近年来已被应用于推荐系统等领域 [9] 。例如,在电影推荐系统中,它可以根据用户的行为自动对推荐项目进行聚类,即根据用户兴趣将推荐项目划分为不同的类别或主题,然后给用户一个合理的电影推荐列表。
潜在因子模型是一种通过矩阵分解对评级矩阵进行处理,然后输出特定用户的电影推荐列表的模型 [10] 。具体过程如下:首先,给定用户对电影的稀疏评级矩阵R (如表1所示)。然后,对该评级矩阵进行矩阵分解,得到用户–潜在因子矩阵P (如表2所示)和潜在因子–电影矩阵Q (如表3所示)。接着,将矩阵P和矩阵Q相乘,可以得到一个用户对电影的预测评分矩阵
(如表4所示)。它填补了原始稀疏评级矩阵中的空白元素,填补的元素(黑体)即代表用户的预测电影评分,最后我们可以由此得到对指定用户的推荐列表。
![](Images/Table_Tmp.jpg)
Table 1. User-movie sparse rating matrix R
表1. 用户–电影稀疏评分矩阵R
![](Images/Table_Tmp.jpg)
Table 2. User-latent factor matrix P
表2. 用户–潜在因子矩阵P
![](Images/Table_Tmp.jpg)
Table 3. Latent factor-movie matrix Q
表3. 潜在因子–电影矩阵Q
![](Images/Table_Tmp.jpg)
Table 4. User-movie prediction score matrix R ^
表4. 用户–电影预测评分矩阵
以上的矩阵分解过程可以由式(1)表示:
(1)
其中k代表分粒度,即潜在因子数,在本文中,我们将LFM的分粒度设置为10。
假设用户预测评分矩阵
中的第i行j列元素为
,代表用户i对电影j的评分,则其值为矩阵P第i行元素与矩阵Q第j列元素的乘积和。
(2)
在得到预测评分矩阵
后,通过损失函数来衡量矩阵分解结果,并在损失函数中加入正则L2范数,以防止过拟合。
(3)
接着使用梯度下降法,求解损失函数的负梯度,以获得分解矩阵P和Q。
(4)
(5)
最后根据负梯度方向不断地更新变量,通过迭代计算直至收敛,算法结束。
(6)
(7)
2.2. 门控循环单元GRU
门控循环单元是用于分析序列数据的标准循环神经网络(Recurrent Neural Network, RNN)最有效的改进版本之一 [11] 。它既解决了RNN的梯度爆炸与梯度消失问题,又相比于长短期记忆(Long Short-Term Memory, LSTM)构造更精简,训练速度更快。
如图1所示,门控循环单元使用两个门:重置门rt与更新门ut来决定信息是否被传递至输出。其中,重置门rt用来去除与当前时间节点t的输入数据预测无关的上一时间节点t − 1信息,而更新门ut则用来保留与当前时间节点t的输入数据预测有关的上一时间节点t − 1信息。除了重置门与更新门以外,门控循环单元还由三个节点组成:输入节点x,隐藏状态h和输出节点y。
重置门rt与更新门ut均由当前时间节点输入xt与上一时间节点传递下来的隐藏状态ht−1定义,公式如式(8) (9)所示。
(8)
(9)
重置门控制上一节点隐藏状态ht−1对当前隐藏状态
的贡献。
(10)
![](//html.hanspub.org/file/1-1542405x24_hanspub.png?20220308084047097)
Figure 1. GRU architecture schematic diagram
图1. GRU架构原理图
更新门控制上一节点隐藏状态ht−1与当前隐藏状态
的混合比重,对原本的隐藏状态ht−1选择性遗忘,对包含当前节点信息的隐藏状态
选择性记忆,最终组成传递给下一节点的隐藏状态ht。
(11)
在使用GRU进行批量训练时需要统一输入数据的长度,但由于每个用户的交互项数目有所不同,导致每个用户的输入数据长度不一,从个位数到上千不等。该问题通常的解决方法是将其裁剪成相对较短的等长片段,但在序列问题中,该方法会削减时间特征,因此我们使用基于会话序列推荐的循环神经网络(Gated Recurrent Unit for Recurrent, GRU4Rec)中的并行小批量方法来进行训练 [12] 。如图2所示,GRU4Rec输入三个并行的t时刻交互项目,模型预测序列t + 1时刻的交互项目,并在一个用户的序列结束后自动补充未训练的用户序列,该方法既可以保证输入序列的连续性,又可以保证模型输入长度的一致性,最大限度地提高了并行训练效率。
3. 基于注意力机制的推荐算法
通过GRU与LFM两个模型的学习,我们分别提取到了用户的长期兴趣与短期兴趣这两项特征评分,维度为参评电影个数。其中,用户的长期兴趣源自用户的属性或是长期以来保持不变的兴趣状态,例如在用户甲的全部交互项中,悬疑类型的电影占有很大比重,那么可以表明用户甲对悬疑类电影表现出浓厚的兴趣,代表着其长期兴趣;而用户的短期兴趣往往出现在用户的短期会话当中,而我们要提取的是时间最近的一段短期会话,来代表用户的短期兴趣,该类特征通常持续时间较为短暂,具有阶段性,例如用户乙在不同的时间阶段会集中观看不同演员主演的电影,表现出对不同电影演员的喜爱,代表着该用户的短期兴趣。
接下来,我们使用注意力机制,通过长短期两类兴趣特征之间的内在关系,自动学习它们各自对推荐结果的重要性,来获得长短期兴趣特征评分的相应权重,即注意力值(Attention值),以刻画长期兴趣与短期兴趣之间的权重关系,判断两种特征的参考重要性,然后对其进行加权平均,获得最终预测评分。
3.1. 注意力机制
注意力机制模型的训练过程即为注意力分配过程,它相当于一个加权过程,包括注意力权重学习与加权平均两个部分。
在进行训练前,首先要将特征评分输入到嵌入层,得到嵌入向量,再将其作为注意力机制模型的输入,此时模型输入的形状为(电影数量 × 特征评分项 × 嵌入维度)。
本文的注意力部分是注意力机制中的乘性注意力机制 [13] ,公式定义如下。
(12)
(13)
ai为经过注意力模型训练后得到的长短期偏好注意力权重,即注意力得分,使用各项权重参数表示,其中包括特征交叉层到注意力网络全连接层的权重矩阵W,偏置向量b,全连接层到softmax输出层的权重向量h。xi为用户长期与短期偏好特征评分。
最后将注意力权重ai与特征评分xi相乘,再经过一个输出大小为1的全连接层即可得到最终的输出——预测评分
。
(14)
在以上的注意力模型中,我们使用单层全连接网络进行参数学习,以防止特征交叉数据稀疏导致权重参数难以收敛的问题。
3.2. 注意力对长短期兴趣的融合
本文提出的模型是在“长短期特征评分预测层”与“输出层”之间引入注意力网络,通过学习,对长期与短期两项兴趣特征评分结果赋予一个权重,来表示对不同特征的关注度。注意力网络层通过学习输入特征向量各维度之间的内在关系来给予各维度适当的权重 [14] ,以实现用户的长期兴趣特征与短期兴趣特征的融合,更精准地表征用户动态兴趣,更精确地为用户推荐项目。根据以上,在本文提出的算法中,输入特征向量分为长期兴趣与短期兴趣这两个维度,算法流程如图3所示。
在输入层将用户稀疏评分矩阵输入到模型中,在模型的神经网络层分别通过LFM与GRU的长短期兴趣预测,得到用户长期兴趣预测评分矩阵与用户短期兴趣预测评分矩阵。
在长期兴趣预测LFM部分,首先通过高斯分布随机生成初始化用户与电影两个矩阵,然后采用随机梯度下降迭代优化,直至生成最优的用户与电影潜在因子矩阵,进行内积以获得LFM部分的预测评分矩阵。
在短期兴趣预测GRU部分,首先对输入进行one-hot编码(用户交互项置为1,未交互项置为0),然后在嵌入层使用tanh激活函数对其做嵌入处理,优化其编码程度,最后通过GRU层获得GRU部分的预测评分矩阵
在注意力网络层,将以上两部分的预测评分矩阵输入到注意力网络中,分别学习长短期兴趣的权重α与β。然后使用学习到的α与β权重进行加权求和,将长短期兴趣预测评分矩阵合并为最终的预测评分矩阵,即用户动态兴趣预测评分矩阵,将其在输出层输出。
![](//html.hanspub.org/file/1-1542405x33_hanspub.png?20220308084047097)
Figure 3. Flow chart of AM_LST algorithm
图3. AM_LST算法流程图
以上的注意力网络部分由可视化工具输出如图4所示,该结构图即为3.1注意力机制理论部分的模型实现。在通过嵌入层得到嵌入向量后,再依次通过注意力连接层与预测连接层获得注意力权重,最后通过全连接层,按照注意力权重对长短期特征评分进行加权求和,得到最终的预测评分输出。
4. 实验分析
4.1. 实验数据集
本文提出的模型仿真基于MovieLens与Netflix两个开源数据集。MovieLens原始数据集是推荐系统的经典测试数据集,本文所使用的是1 M版本,包含6000多用户对3000多电影的评级数据。Netflix原始数据集作为推荐系统的另一个常用数据集,包含48万用户对1.7万电影的评分数据,数据信息包括用户ID、电影ID、用户评分、评价时间等相关信息。由于两个数据集的评分信息均带有时间戳,因此适用于本模型等基于时间序列的算法评估。
在数据集的划分上,本文选择使用留一法(Leave-One-Out),对每个用户的交互项按时间顺序升序排列,将前90%交互项作为训练数据,后10%交互项作为测试数据 [15] 。最终获得分别以用户ID与电影ID作为行索引与列索引的评分表格。根据以上模型需求,对MovieLens与Netflix两个数据集进行预处理,得到如表5所示的实验数据集。
![](//html.hanspub.org/file/1-1542405x34_hanspub.png?20220308084047097)
Figure 4. Structure diagram of attention network model
图4. 注意力网络模型结构图
4.2. 实验评估指标
为了评估模型的推荐性能,本文采用归一化折损累计增益(Normalized Discounted Cumulative Gain, NDCG)与均方根误差(Root Mean Square Error, RMSE)作为实验评估指标。其中,NDCG评价推荐列表与真实交互列表之间的误差,而RMSE衡量用户预测评分与用户真实评分之间的误差。
归一化折损累计增益,顾名思义是在累计增益之后对其进行折损,再进行归一化处理所得到的评估结果,分数越高表示性能越好。其中,增益Gain等于相关性分数,定义为式(15)。
(15)
当预测结果在测试集时,ri的值取1;当预测结果不在测试集,ri的值取0。
累计增益CGk即对增益求和。
(16)
接着考虑排序因素,对累计增益进行折损得到折损累计增益DCGk,以增加排名靠前项目的影响,减小排名靠后项目的影响。
(17)
最后进行归一化后得到的归一化折损累计增益NDCG。
(18)
其中IDCG为根据rel(i)降序排列得到最好的DCG,即理想折损累计增益(ideal DCG)。
均方根误差是均方误差(Mean Square Error, MSE)的平方根,分数越低代表性能越好。均方误差MSE是预测值与真实值之间差值的平方和平均值,公式定义为式(19)。
(19)
将均方误差MSE开方即可得均方根误差RMSE:
(20)
4.3. 实验结果
本文提出的模型仿真在PyTorch深度学习框架下实现,模型训练的嵌入维度设置为64。我们将AM_LST的仿真结果与LFM、GRU4Rec、RA_LST三种用于稀疏数据预测的同类竞争方法进行对比实验。并且为了验证模型性能的普遍性,实验分别在MovieLens(ML)与Netflix(NF)两个数据集上进行,结果如表6所示。
![](Images/Table_Tmp.jpg)
Table 6. Comparison of simulation results of each model
表6. 各模型仿真结果对比
表6总结了每种方法在不同次的迭代(epoch)训练下获得的平均性能,可以看到,本文提出的基于注意力机制的用户动态兴趣推荐算法AM_LST在NDCG、RMSE两个指标上均表现出一定优势。在MovieLens数据集中,AM_LST的平均NDCG比RA_LST提高了0.02,平均RMSE降低了0.08;在Netflix数据集中,AM_LST的NDCG比RA_LST提高了0.02,RMSE降低了0.11。
该实验结果充分证明了本文提出的AM_LST模型相较于单一考虑用户长期或短期兴趣的模型LFM与GRU在推荐性能上的提高,一定程度上解决了一般推荐算法对用户兴趣的单一考虑、缺乏对兴趣的动态捕捉以及出现兴趣漂移等问题。
另外,相比于引入注意力机制前的模型RA_LST,本文提出的AM_LST模型在提高预测排名的准确性与降低预测分数的误差方面均表现出色,表明该模型中的注意力机制起到了一定的作用,能够有效地将用户的长短期兴趣融合,以达到对用户兴趣精准捕捉的目的。
图5对比了AM_LST与LFM、GRU4Rec、RA_LST四种模型在MovieLens数据集中随epoch变化的排名评估与测试误差曲线图(NDCG\RMSE)。可以看到,AM_LST在不同epoch下的NDCG均高于其他三种模型,可以更好地拟合推荐排名,并且RMSE也均低于其他三种模型,预测结果更加准确。
![](//html.hanspub.org/file/1-1542405x41_hanspub.png?20220308084047097)
Figure 5. Comparison diagram of test errors index of each model
图5. 各模型测试误差指标对比图
5. 结束语
本文提出一种基于时间序列的推荐算法,使用注意力机制将通过潜在因子模型与门控循环单元模型提取到的用户长短期兴趣进行融合,以更精准地分析用户的动态兴趣,提高推荐模型的推荐性能。通过与同类模型的对比实验表明,该RA_LST模型在MovieLens与Netflix两个数据集上都能够有效地提高预测排名的准确性,降低预测分数的误差。
参考文献