APP下载

基于注意力机制和用户行为序列的推荐模型研究

2023-06-16武玲梅黄秀芳张立强董力量罗芳琼蒋林利

现代电子技术 2023年12期
关键词:会话注意力维度

武玲梅,黄秀芳,张立强,董力量,罗芳琼,蒋林利

(广西科技师范学院 数学与计算机科学学院,广西 来宾 546199)

0 引 言

在电子商务、音乐、社交媒体等许多应用领域,推荐系统在帮助用户缓解信息过载和选择感兴趣内容方面发挥着重要作用。传统的协同过滤的推荐模型主要依靠用户过往行为制定用户的兴趣或特征,虽然取得一定的成就,但主要以静态的方式拟合用户与项目之间的交互模式,而且在许多应用程序场景中,显式特征(例如用户评分等)可能是未知的。一般用户的兴趣是动态的,不断变化的,序列推荐基于动态变化的用户——项目交互模式以捕获用户的偏好,并根据用户交互序列中上下文信息获取用户的主要意图。其中基于会话的推荐是研究方向之一,旨在预测用户在当前会话中可以按照之前的行为进行的下一个操作。

传统的马尔科夫链会话推荐方法使用马尔可夫链来对用户的历史交互序列进行建模,预测用户的下一个可能交互的物品,该方法仅考虑少数最后的行为,可能会限制推荐的准确性[1]。最近的研究强调了使用基于循环神经网络(Recurrent Neural Network, RNN)的推荐系统的重要性[2-5],例如:Hidasi 等人提出基于会话的递归神经网络推荐(GRU4Rec)模型,主要使用门控循环单元(Gated Recurrent Unit, GRU)对用户的历史交互记录进行建模,该模型从历史交互项的学习会话表示向量,以记录会话中点击项之间的依赖关系,预测下一个感兴趣的项目的概率分布,推荐效果相比传统方法有显著提升[6]。Hidasi 等人提出的另外一个模型是将项目的属性信息,如文本和图像加入到RNN 框架中,探究几种融合项目属性的模型框架[7]。Tan 等人提出了一个改进版本,考虑用户行为的时间变化的方法,通过序列预处理和嵌入丢失来增强数据以进一步提高其推荐性能[8]。Quadrana 等人进一步改进GRU4Rec,提出一种分层循环神经网络模型,以捕获会话内和会话间的相关性,从而获得更可靠的下一项建议[9]。

最近,随着注意力机制的广泛应用,例如自然语言处理和计算机视觉。有研究者将注意力机制应用于推荐系统中[10-12],Li 等人提出的基于神经注意会话的推荐(NARM)模型通过使用全局和局部编码同时捕获用户的序列行为和主要目的[13]。Liu 等人提出的基于会话的推荐的短期注意力/记忆优先级模型(STAMP),通过利用多层感知机网络和注意力网络对用户的长期偏好和当前的偏好进行拟合,强调了当前用户偏好的重要性[14]。这种模式可以从对话过程的长期记忆中捕捉用户的一般兴趣,并从最近点击的记忆中考虑用户当前的短期兴趣,从而提高该模式的效果。

上述方法可加强会话点击项之间的依赖性,下次点击项目时将考虑整个会话的信息,会话推荐的准确度得到提高,但是难以准确捕获远距离物品间的依赖。最近,一种新的序列模型(Transformer)在各种翻译任务中取得了最先进的性能和效率,它所采用的是由多层自关注网络组成的编码器-译码器结构来绘制输入和输出之间的全局依赖关系,而不是使用递归或卷积[15]。该模型已被广泛应用于序列数据的建模,并在许多应用中取得了显著的结果,如:机器翻译[8]、情绪分析[16]和顺序推荐[17-19]。

本文提出将GRU 和自我注意力网络进行结合的SAN-GRU 模型,该模型同时考虑用户的总体兴趣和当前兴趣。一方面,采用GRU 隐藏层的最后一个隐藏状态来表示用户的当前兴趣,GRU 可以对任意长度的序列数据进行建模,并对过去的信息进行记录。另一方面,使用多层自我注意力网络(Self-Attention Networks,SAN)捕获当前会话中用户的主要意图。用户使用在该会话中的序列行为特征和主要意图的线性加权和来预测下一个项目被点击的概率。

1 SAN-GRU 推荐模型

1.1 问题描述

在会话推荐中,令[x1,x2,…,xn-1,xn]表示点击的会话,其中xi(1 ≤i≤n)指的是点击一次项目的索引,对于模型SAN-GRU。在给定点击序列x=[x1,x2,…,xt-1,xt],1 ≤t≤n后,模型的输出为y=[y1,y2,…,ym-1,ym],yi指的是第i个项目被点击的可能性,最后从y中推荐出top-k个项目给用户。

1.2 模型描述

如图1 所示,SAN-GRU 模型主要由嵌入层、全局编码器、局部编码器和预测层构成。嵌入层将用户-物品行为序列映射到低维密集空间。利用带有多头自注意力机制的Transformer 编码器来提取全局信息,利用GRU 的局部编码器来提取局部特征信息。将全局编码器和局部编码器进行线性组合的输出作为预测层的输入,在预测层进行推荐预测。为了获取用户在当前会话中的主要兴趣,首先将用户的点击序列x=[x1,x2,…,xt-1,xt]输入GRU,得到一个高维的隐藏层表示序列h=[h1,h2,…,ht-1,ht],然后使用多层自我注意网络来捕获会话中项目之间的长期依赖关系,用clt表示。

图1 SAN-GRU 模型框架和数据流动图

1.3 嵌入层

嵌入层将会话序列x=[x1,x2,…,xt-1,xt]输入嵌入层得到对应的嵌入序列e=[e1,e2,…,et-1,et],嵌入维度为d。

1.4 门控循环单元

门控循环单元(GRU)是LSTM 网络的一种效果很好的变体。其中重置门定义为:

更新门决定是否更新隐藏层状态,公式如下:

基于重置门计算的隐藏层状态的计算公式为:

基于更新门对隐藏层状态更新的公式为:

式中:rt和zt分别代表重置门和更新门;σ(⋅)代表sigmoid 函数;et指t时刻的输入;ht-1指的是GRU 的前一个隐层状态,通过这两部分探究et和前部分的关联程度;Wr、Wz、Wh、Ur、Uz、Uh是可学习的参数;“·”代表矩阵点积。

用GRU 隐藏层的最后一个隐藏状态ht来表示用户在当前会话中的序列行为特征。

1.5 自我注意力网络

自我注意机制可以在输入和输出之间绘制全局依赖关系,并在整个输入和输出序列中捕获项目之间的关系,而不考虑它们的距离。

一个会话序列输入GRU 后,输出是用户在当前会话中的顺序行为的特征H,然后将它们输入到Self-Attention Layers 以更好地捕获全局特征信息。

式中:Q代表查询;K代表键;V代表值。自我注意机制将项目的嵌入作为输入,通过线性转换为3 个矩阵,并使用多头注意力:

式中:WQ、WK、WV∈Rd×d代表投影矩阵;E是所有项目的嵌入矩阵;h是头的数量。

采用点式前馈网络(Point-wise Feed-Forward Networks,FFN)来进一步加强非线性模型,其定义如下:

为了避免过度拟合和分层学习有意义的特征,在自我注意和FFN 中都使用了Dropout 和LeakyReLU,自我注意层和FFN 层的整体输出如下:

式中:W1和W2是参数矩阵;b1和b2是多维偏差向量,均在训练时学习,在训练结束时确定。

不同的层捕获不同类型的特征,在第一个自我注意力网络模块之后,它汇总了所有之前的项目嵌入,为了进一步模拟项目序列背后的复杂关系,将自我注意力网络模块堆叠起来,第m(m>1)层定义为:

式中,Fm∈Rn×d是多层注意力的最后输出。

1.4 预测层

通过几个自我注意力网络模块自适应地提取会话的信息,得到了长期的自注意表征Fm,将Fm的最后一个维度作为全部特征,表示用户的长期兴趣。局部特征为GRU 隐藏层的最后一个隐藏状态ht。为了更好地预测用户的下一次点击,将会话的全局特征和局部特征结合起来,然后使用这种组合嵌入作为会话表示。

得到会话嵌入后,可以通过项目集中候选项目的特征嵌入和会话特征嵌入得到候选项目下一次点击的预测分 数:

基于此可以得到每个候选项目的点击预测概率,ŷ也就是最终的输出:

在模型训练过程中使用交叉熵损失函数,可表示为:

2 实验结果分析

在这一部分中,首先描述数据集、实验中使用的方法和评估指标。随后,用本文提出的预测方法和其他人提出的预测方法做比较。最后,在不同实验条件设置下,对本文提出的SAN-GRU 模型进行详细分析。

2.1 数据集

实验主要使用两个代表性数据集Yoochoose[20]和Diginetica[21],为了进行公平比较,对于这两个数据集,过滤掉长度为1 的会话和点击次数小于5 次的商品之后,剩余的7 981 580 条会话和37 483 个商品构成Yoochoose 数据集[6-7],204 771 条会话和43 097 个商品构成Diginetica 数据集。

在实验开始之前,通过分割输入序列来生成序列和相应的标签,用Yoochoose 数据集中最后一天的会话数据作为测试集,其余会话数据作为训练集,并且从测试集中过滤掉那些没有出现在训练集中的商品。用Diginetica 数据集中最后一周的会话数据作为测试集。由于Yoochoose 训练集非常大,因此使用1/ 64 和1 /4 的训练序列。预处理后,数据集的统计如表1 所示。

表1 实验数据集统计表

2.2 Baseline 方法

为了评估所提出方法的性能,将其与以下代表性方法进行比较:

1)基于物品的协同过滤推荐算法(Item-KNN)[22]推荐与会话中先前单击的项目相似的项目。

2)利用隐反馈的贝叶斯个性化排序(BPR-MF)[23]主要通过随机梯度下降法来优化成对排序损失函数。

3)因子分解个性化马尔可夫链(FPMC)[24]是一种基于马尔可夫链的顺序预测方法,将矩阵分解和马尔可夫链进行结合。

4)GRU4REC[4]一种基于RNN 的会话推荐模型,它利用会话并行小批量训练过程来建模用户操作序列。

5)NARM[6]采用带有注意力机制的RNN 来捕捉用户的顺序行为和主要目的。

6)STAMP[7]侧重于在建模长期行为时加强用户近期行为的影响,它不仅考虑了长期历史行为的普遍兴趣,还考虑了用户最后一次点击以挖掘即时兴趣。

2.3 评价指标

Recall(召回率):该指标表示测试集中用户真实点击的物品占推荐物品个数的比例[25]。本文使用的是Recall@20,Recall@N不考虑推荐列表中物品的顺序,只要出现在推荐列表中即可。计算公式如下所示:

式中,TP 和FN 的具体含义如表2 所示。

表2 预测结果与真实情况的误差矩阵

MRR(Mean Reciprocal Rank):该指标是用户真实点击物品在推荐列表中排名倒数的平均值。MRR 是范围[0,1]的标准化分数,其值的增加反映了排名靠前推荐结果被用户点击,这表明相应推荐系统的性能更好。平均倒数排名的计算公式如下所示:

式中:N表示测试集中会话的数量;t是会话的标签;G为测试集的标签集;Rank(⋅)为排名函数,用于获取标签在推荐列表中的排名。

2.4 实验设置

在SAN-GRU 模型中,数据集的嵌入维度为100。

使用Adam 优化函数[26],初始学习率为0.001,每3 个训练周期后将衰减0.1,batch 设置为512。模型迭代次数为30,用10%的训练数据作为验证集,GRU 中隐藏层神经元个数为100。

2.5 与Baseline 方法的比较

从表3 可以看出,本文模型在Yoochoose 1 /4 数据的两个评价指标上均优于其他对比模型。Item-KNN 比BPR-MF 和基于马尔可夫链的FPMC 取得更好的结果。Item-KNN 方法仅利用项目之间的相似性,而不考虑顺序信息。

表3 SAN-GRU 模型与对比模型的性能比较

基于神经网络的方法,如NARM 和STAMP 利用注意力机制来分别捕获局部偏好和全局偏好,性能都显著优于GRU4REC,表明注意力机制对于提高推荐性能有一定的作用。GRU4REC 利用GRU 作为RNN 的特殊形式的循环结构来捕获用户的一般偏好,STAMP 的表现优于GRU4REC,这表明短期行为对预测下一个项目的有效性。GRU4REC 和NARM 使用循环单元来捕捉用户的一般兴趣,表明循环单元应用于推荐有一定的作用。

2.6 权重因子的影响

图2 和图3 显 示了权重参 数ω在Yoochoose 1 /64 数据集和Diginetica 数据集分别对Recall 和MRR 的影响。从图2 和图3 可以看出,将ω设置为0.6~1.0 之间的值更可取。这表明,虽然短期兴趣对于提高推荐性能是必不可少的,但自我注意力网络可以关注长期依赖关系或最近的动作,对提高推荐性能有着关键性的作用。对于Yoochoose 1 /64 数据集和Diginetica 数据集在Recall 和MRR 指标上的最佳权重因子均在0.8 附近。

图2 权重因子ω 在Yoochoose 1/64 数据集的影响

图3 权重因子ω 在Diginetica 数据集的影响

2.7 自注意力头数量的影响

图4 和图5 显示了注意力头的影响,多头注意力使模型能够关注序列的不同位置,然而,过大的注意力头使单个注意力维度太小,从而限制了注意力的表达能力。Yoochoose 1/ 64 数据集和Diginetica 数据集的最优注意头均为2,当注意头大于或小于最优值时,性能略有下降。

图4 自注意力头数量在Yoochoose 1 /64 数据集的影响

图5 自注意力头数量在Diginetica 数据集的影响

2.8 自注意力层的影响

在图6 和图7 中,研究了SAN 层的数量。从图中可以看出,模型性能随着SAN 层的增加而下降。SAN 层的最佳数量为1。

图6 自注意力层在Yoochoose 1/ 64 数据集的影响

图7 自注意力层在Diginetica 数据集的影响

2.9 嵌入维度的影响

从图8 和图9 可以看出,增加嵌入大小并不总是改善所提出模型的性能。对于Yoochoose 1 /64 数据集,最佳嵌入维度为80,对于Diginetica 数据集,嵌入维度为60在Recall 上的值最佳,嵌入维度为80 在MRR 上的值最佳。当嵌入维度大于最佳值后,模型的性能开始下降,当嵌入维度低于最佳值时,由于学习能力有限,性能也会比较低。

图8 嵌入维度在Yoochoose 1 /64 数据集的影响

图9 嵌入维度在Diginetica 数据集的影响

3 结 论

本文提出一种基于自我注意力网络和循环神经网络中的门控循环单元进行结合的SAN-GRU 模型,用于基于会话的推荐。利用自我注意网络来学习全局项目依赖性,使用门控循环单元获取用户的当前兴趣,最后,将局部短期动态(即当前兴趣)和全局依赖性结合起来,以线性方式表示会话序列。所提出的SAN-GRU 不仅能够学习相邻项目之间的依赖关系,而且能够学习远程项目之间的依存关系,而不管它们之间的距离如何。实验结果表明,通过比较,所提出的方法性能优于一些现有技术。

猜你喜欢

会话注意力维度
让注意力“飞”回来
浅论诗中“史”识的四个维度
“扬眼”APP:让注意力“变现”
有意冒犯性言语的会话含义分析
汉语教材中的会话结构特征及其语用功能呈现——基于85个会话片段的个案研究
A Beautiful Way Of Looking At Things
光的维度
“五个维度”解有机化学推断题
人生三维度
冲突语的会话分析研究