一种分层注意力机制与用户动态偏好融合的序列推荐算法

2024-03-05 01:41闫猛猛汪海涛贺建峰
小型微型计算机系统 2024年3期
关键词:注意力建模机制

闫猛猛,汪海涛,贺建峰,陈 星

(昆明理工大学 信息工程与自动化学院,昆明 650500)

0 引 言

随着移动设备和互联网技术的发展,推荐系统已经成为人工智能领域最流行和最重要的应用之一.其在帮助用户缓解信息过载方面发挥着重要作用.在传统推荐领域中,大多数推荐系统通过静态方式对用户项目关系进行建模.但在现实世界中,用户不仅存在较为稳定的长期偏好,还存在随时间发生动态变化的近期偏好.与传统推荐系统不同的是,序列推荐系统通过用户历史行为的时间戳对项目进行排序,并专注于序列模式挖掘,以预测用户可能感兴趣的下一项目.

在序列推荐系统中,个性化马尔可夫链分解(Factorizing Personalized Markov Chains,FPMC)首次尝试将用户长期偏好和近期偏好结合用于学习用户表示[1].近年来,越来越多的深度学习技术被引入到序列推荐任务中,并大幅度提高了推荐性能.例如,GRU4Rec[2]应用循环神经网络(Recurrent Neural Network,RNN)对序列信息进行建模,RNN可以通过循环结构更好的提取序列中项目之间的关系[3].为了建模更好地保持长期依赖性并缓解梯度消失与梯度爆炸的问题,RNN的变体,尤其是双向长短期记忆网络(Bidirectional Long Short-Term Memory Network,BiLSTM)[4]和门控循环单元(Gated Recurrent Unit,GRU)也应运而生.然而,RNN认为时间依赖性是单调变化的[5],这代表着当前时间步的输入比之前时间步的输入更为重要,这对用户近期偏好的建模有很大的负面影响.因此,当利用RNN学习用户表示时,考虑RNN中隐藏状态之间的局部依赖模式是十分必要的.此外,RNN和卷积神经网络(Convolutional Neural Network,CNN)的各种组合已被广泛用于自然语言处理和计算机视觉等领域[6-8],但现阶段对其在序列推荐领域的应用较少.最近,自然语言处理领域中的TextCNN[9]在短文本分类任务中表现出色.受此启发,本文使用TextCNN提取RNN隐藏状态之间的局部序列模式作为用户近期偏好.

在上述研究中,项目嵌入方法往往占有重要的地位.已有方法往往仅基于单一项目信息来学习项目表示.对于一个具体项目来说,单一项目信息含义十分有限,不足以全面表示一个完整的项目,这可能就会导致推荐系统的推荐准确率降低.项目的每种信息都包含其余项目信息不具备的某些特征.例如,一部电影包含电影标题、电影类别两种信息,一张图片包含图片标题、图片颜色和图片纹理3种信息.本文统一采用项目标题信息和项目类别信息来表示一个项目.此外在同一项目中,不同的项目信息具有不同的重要性.例如,一个项目的标题信息包含了丰富的语义,那么该项目的标题特征权重应该高于类别特征权重.在同一项目标题信息或项目类别信息中,不同单词对项目信息的最终表示也具有不同的重要性.因此本文设计了一种层次化的注意力机制用于学习项目准确的表示.

Transformer完全依赖于自注意力机制,在文本序列建模方面取得了较为先进的性能[10].在自然语言处理领域中,对传统自注意力机制与相对位置信息结合的探索已经比较常见,例如XLNET[11]、T5[12]和Transformer-XL[13]等先进方法.上述3种方法都是在Google[14]的研究基础上进行的某种改进,比如XLNET即是Google所提相对位置编码方法的完全展开式,并将其中的相对位置设置为两个可以训练的向量.一些现有的序列推荐算法将自注意力机制引入到序列推荐领域中,并取得了较好的实验结果[15,16].但现有的自注意力机制只关注输入序列中元素之间的相关性,忽略了序列中元素的相对位置信息,不能完整的捕获序列模式.目前一种常见的解决方法是将位置编码添加到其输入中,例如SASRec[17]中的自注意力机制,然而这并没有考虑相对位置信息对推荐性能的影响.基于此,本文在Google所提方法的基础上对传统自注意力机制进行改进,以使其适用于序列推荐领域.具体体现在改进相对位置距离的计算方式和嵌入方法.

综上所述,本文提出一种基于分层注意力机制与用户动态偏好融合的序列推荐算法,命名为HASRec.本文的主要贡献有以下几点:

1)通过分层注意力机制从不同项目信息中学习项目的统一表示.和以往引入辅助信息的推荐算法不同的是,分层注意力机制中的SAR、词级注意力机制和特征融合模块能够有效的选择重要的单词和项目信息.

2)在利用RNN对用户长期偏好建模的基础上,引入TextCNN对RNN隐藏状态之间的用户近期偏好进行建模.同时提出一种有效的融合策略对用户的长期和近期偏好进行动态融合,生成更为准确的用户整体偏好.

3)改进传统的自注意力机制,缓解其无法对序列中元素的相对位置信息进行建模的问题,命名为相对位置信息增强的自注意力机制(Self-Attention Mechanism Enhanced By Relative Position Information,SAR).

4)在两个真实公开的数据集上进行大量实验,实验结果表明提出的HASRec算法在评估指标HR@N与NDCG@N上较其他方法都有提升.

1 相关工作

序列推荐算法的早期工作主要依赖于马尔科夫链(Markov Chain,MC)和因式分解模型[1,18].例如,Shani等人[18]使用基于马尔可夫决策过程(Markov Decision Processes,MDPs)的方法对序列模式进行建模.Kabbur 等人[19]提出的FISM直接对项目矩阵进行矩阵分解(Matrix Factorization,MF)操作,因此无法学习得到明确的用户表示.由于深度神经网络的飞速发展,近年来研究人员提出了许多基于RNN的方法来对用户交互序列中的序列模式进行建模.例如,Hidasi等人[20]通过引入一种新的排名损失来改进GRU4Rec中的梯度消失问题,命名为GRU4Rec++.Quadrana等人[21]开发了一种基于RNN的分级推荐模型,捕获用户在当前会话中的近期偏好.Zhao等人[22]使用具有两层隐含层的BiLSTM网络学习用户的长期偏好.尽管基于RNN的方法很有效,但它们严重依赖于过去的隐藏状态.

除RNN外,CNN和注意力机制也被用来建模序列之间的序列模式.Yan等人[23]提出一种可扩展的2D卷积神经网络,通过捕获用户近期访问序列来学习用户的近期偏好.Tang等人[24]提出了一种卷积序列嵌入模型Caser,对用户项目交互序列分别使用垂直和水平卷积操作,以学习用户行为的局部特征.Yuan等人[25]提出了一种基于CNN的生成模型NextItRec,以改进Caser对序列长期依赖的学习.Gehring等人[26]使用一种完全基于CNN的架构,固定捕获每个卷积核大小内的位置信息,这种架构已经被证明可以结合相对位置信息再次提升性能.Li等人[27]提出了一种基于注意力机制的推荐模型NARM,通过引入注意力机制对GRU4Rec进行扩展,提高了GRU对长期依赖的建模能力.Kang等人[17]受到Transformer的启发,提出一种完全基于自注意力机制的序列推荐算法SASRec,其将可学习的位置嵌入与原始输入结合作为算法的输入.在SASRec的基础上,Li等人[28]提出一种基于时间间隔感知的自注意力机制TiSASRec,对序列中项目的绝对位置以及项目之间的时间间隔进行建模.Ma等人[29]提出一种层次化的门控网络HGN,该网络捕获项目过渡关系和用户长期偏好,并使用门控机制从用户历史行为中识别重要项目及其潜在特征.为了捕获用户偏好随时间的变化,Rossi等人[30]提出了TGN通用归纳框架,该框架能够在表示为事件序列的连续时间动态图上运行.Kumar等人[31]提出了JODIE模型,其使用一种投影算子来学习和预测用户和项目的未来嵌入.Zhang等人[32]发现JODIE等模型并不能生成充分的时间嵌入,因此提出了一种基于常微分方程来模拟信息传播的CoPE模型来解决上述问题.

2 HASRec算法

HASRec由项目嵌入层、偏好学习层和点击预测层3部分组成.模型的整体框架如图1所示.

图1 模型整体框架图Fig.1 Overall framework of the model

2.1 预备知识

2.1.1 传统自注意力机制

提取用户交互序列中最近的n个交互作为传统自注意力机制的输入.类似于之前的方法[17],对输入序列s={i1,i2,…,in}使用一个可学习的项目嵌入矩阵G∈|su|×d,将项目序列嵌入为E={e1,e2,…,en},其中ei∈d,输出为O={o1,o2,…,on},其计算过程如下:

Q=EWq,K=EWk,V=EWv

(1)

(2)

O=softmax(A)V

(3)

2.1.2 SAR

(4)

(5)

图2 SAR的计算过程Fig.2 Calculation process of SAR

(6)

(7)

2.2 项目嵌入

在项目嵌入层中,本文使用了两种不同的项目信息,分别是项目标题和项目类别.

2.2.1 标题特征提取

标题特征提取模块旨在从项目标题信息中学习项目的表示.标题特征提取模块由3部分组成,分别是标题嵌入、多头SAR和词级注意力机制.设标题的单词序列为{w1,w2,…,wL}.

标题嵌入:使用查询操作和一个可学习的单词嵌入表MI∈V×d,将标题单词序列嵌入为L×d,其中L为标题中单词的个数.

多头SAR:能够很好的提取输入本身的内容信息和相对位置信息.由于标题中的一个词可能与多个词都有内在联系,所以使用多头SAR来学习标题的上下文表示,计算过程如下:

(8)

(9)

(10)

(11)

(12)

(13)

(14)

2.2.2 类别特征提取

2.2.3 特征融合

(15)

(16)

(17)

2.3 用户偏好学习

2.3.1 长期偏好学习

长期偏好学习用于从用户的历史交互序列中学习用户的长期稳定偏好.如图1所示,其由2部分组成:BiLSTM和加性注意力机制.取用户u交互序列中最近的n个交互作为用户长期序列,表示为su={i1,i2,…,in},将其输入到项目嵌入层中,最终输出{v1,v2,…,vn}.

BiLSTM:可以顺序提取序列上下文信息来学习用户的长期偏好.其每个时刻输出的隐藏状态都由当前时刻的输入vt、前一时刻的隐藏状态ht-1和前一时刻的记忆单元ct-1所决定.在第t个时间步,单向LSTM的计算过程如下:

ft=sigmoid(Wfht-1+Ufvt+bf)

(18)

it=sigmoid(Wiht-1+Uivt+bi)

(19)

(20)

(21)

ηt=sigmoid(Woht-1+Uovt+bo)

(22)

ht=ηttanh(ct)

(23)

(24)

(25)

(26)

其中,ht为t时刻输入的项目it的表示,Wl和bl为加性注意力机制中可训练的参数.用户u的最终长期偏好lu是注意力权重加权的项目上下文表示的总和,计算公式为:

(27)

2.3.2 近期偏好学习

将BiLSTM最后k个时刻的输出作为用户近期交互序列,表示为{hn-k+1,hn-k,…,hn}.对于BiLSTM来说,当前的项目或者隐藏状态总会比前一个更重要,这极大的损害了用户近期偏好的建模.近期偏好学习旨在通过融合加性注意力机制的TextCNN对BiLSTM隐藏状态之间的近期序列进行建模.

TextCNN:将用户近期交互序列拼接为一个k×d的向量矩阵H,其中hi∈d为矩阵H的第i行.将矩阵H作为TextCNN的输入,h×d是池化层用来提取用户局部特征的滤波器,其中h为滤波器的高度,卷积操作可表示为:

(28)

其中,f是ReLU激活函数,b为偏置项,yi表示使用高度为h、宽度为d的滤波器对矩阵H中指定区域hi:i+h-1进行卷积操作后生成的特征.使用该过滤器对矩阵H中所有区域进行卷积操作,最终表示为y=[y1,y2,…,yk-h+1],其中y∈k-h+1.然后进行最大池化操作得到滤波器高度为h时的卷积结果

加性注意力机制:为了将TextCNN中不同高度滤波器提取的不同特征融合成一个具有统一表示的组合特征,引入加性注意力机制来对其进行处理:

(29)

(30)

(31)

2.3.3 偏好动态融合

对于用户u来说,用户的长期偏好和近期偏好在不同的上下文中具有不同的重要程度.偏好动态融合模块旨在通过动态融合用户长期偏好和近期偏好生成用户的整体偏好,具体融合过程可表述如下:

λu=sigmoid(Wuqu+Wllu+Wggu+bu)

(32)

Fu=(1-λu)lu+λugu

(33)

其中,Wu、Wl和Wg为可训练参数,lu为用户的长期偏好,gu为用户的近期偏好,bu为偏置项,λu负责控制用户近期偏好所占权重.最终输出的用户整体偏好为Fu.

2.4 点击预测

点击预测层用于预测用户点击每个候选项目的概率.首先,将候选项目输入到项目嵌入层生成候选项目的表示rcd.其次,将用户u的交互序列输入到HASRec中,生成该用户的整体偏好Fu.候选项目被点击的概率由Fu和rcd的内积计算得到,即:

(34)

2.5 算法训练与优化

对算法进行训练时,损失函数使用负对数似然函数,计算过程如下:

(35)

其中,z为项目集合中项目的个数,pi=1表示正样本,即用户已经与该项目进行了交互,pi=0表示负样本,即用户与该项目尚没有发生交互.

3 实 验

3.1 实验设置

3.1.1 数据集

本文在两个公开数据集MovieLens-1M和Amazon-Book上进行实验,其评分区间均为1~5,评分被视为隐式反馈.MovieLens-1M数据集包含6040个用户对3952部电影的1000209条评分记录.Amazon-Book数据集是亚马逊数据集中最大的子数据集,其包含8026324个用户对2935525个商品的22507155条评分记录.

为保证实验可靠性,对两个数据集进行预处理操作.首先筛选出项目元数据中缺少标题或类别信息的项目,过滤掉与这些项目产生交互的历史序列.其次,丢弃其中交互少于5次的用户和项目.

3.1.2 对比方法

·BPR[34]:一种基于贝叶斯个性化排序的推荐方法,它通过优化不同用户交互序列之间的成对偏好来学习用户和项目的潜在表示.

·FPMC[1]:是序列推荐中最经典的方法之一,它通过整合MF与MC对用户序列进行建模并捕获用户的一般兴趣.

·GRU4Rec[2]:一种基于RNN实现会话推荐的方法,本文将每个用户的交互序列视为一个会话.

·Caser[24]:通过CNN捕获多级别的用户行为序列模式,同时使用水平与垂直卷积核来捕获多级别的用户行为序列模式.

·BERT4Rec[35]:采用深度双向自注意力机制,通过完形填空任务依次模拟两个方向的用户行为.

·FDSA[36]:利用自注意力机制分别对项目粒度和特征粒度的用户偏好进行建模,特征主要分为类别特征和文本特征,在本文中将文本设置为项目的标题.

·JODIE[31]:使用一种耦合RNN模型从一系列时间交互中学习和预测用户和项目的嵌入.

·LSSA[37]:通过分层注意力机制捕获用户的长期偏好和近期偏好,以此预测用户的下一步行为.

3.1.3 实验细节

本文使用作者原始论文中提供的Caser和BERT4Rec代码,并基于公开资源实现FPMC和GRU4Rec.对于HASRec等其他算法,在PyTorch中统一实现.HASRec使用Adam优化器优化,标题特征提取模块和用户偏好学习模块中的注意力头数设置为2,学习率设置为10-4.

3.1.4 评价指标

采用leave-one-out评估方法评价推荐性能.具体来说,将用户交互序列的最后一个项目作为测试集,将倒数第2个项目作为验证集,其余的项目作为训练集.与之前的工作类似[34],根据项目的流行度抽取100个没有与用户发生过交互的项目,并与测试集中的基本事实项目配对,任务是对这101个项目进行排序,最后选取前10个项目作为该用户的推荐列表.为了验证推荐算法的准确率与性能,使用以下2个评价指标:

HR@10:命中率,是常用的衡量召回率的指标,用来表示Top-10推荐列表中是否包含正样本,强调算法的准确性.计算公式如下:

(36)

其中,|u|表示用户集合中的用户数量,hits(i)表示推荐列表中是否存在第i个用户访问的值,满足条件时为1,否则为0.

NDCG@10:归一化折损累计增益,在命中率的基础上考虑位置因素,在Top-10推荐列表中位置越靠近末端值越小,不包含正样本的情况下,其值为零.rank表示命中项目在推荐列表中的位置,计算公式如下:

(37)

3.2 实验结果及分析

3.2.1 整体性能分析

在本节中,为证明HASRec算法的推荐效果,将其和各个对比方法之间的整体性能作比较.根据表1的实验结果可以得出以下结论:

1)BPR是目前较为优秀的非序列推荐算法,然而在两个数据集上的任意序列推荐算法的性能都较BPR好,证明了捕获用户交互序列模式的重要性.

2)序列推荐算法中,GRU4Rec、Caser和BERT4Rec等算法的推荐性能较FPMC好,充分证明了深度神经网络可以学习比MF等方法更好的项目和用户表示,同时证明了神经网络能够更好的对用户交互序列建模.

3)FDSA在两个不同数据集上表现出较GRU4Rec等算法更为优秀的推荐性能,这得益于FDSA使用了类别和标题特征来丰富项目和用户的表示.同时FDSA的推荐性能较HASRec差,这意味着对序列中元素相对位置信息进行建模的SAR优于FDSA中使用的自注意力机制.

4)LSSA较JODIE具有更好的性能,主要原因是LSSA同时考虑用户的长期和近期偏好,并加入自注意力机制来捕获用户交互序列中的有效信息,这使得其推荐性能优于JODIE和其余对比方法,充分显示了融合用户长期和近期偏好的有效性.

5)HASRec在两个数据集上的推荐性能优于LSSA和其它对比方法,这得益于分层注意力机制可以捕获更高层次的复杂非线性特征,并利用TextCNN更为充分的对用户交互序列进行建模,以及SAR对序列中元素相对位置信息的捕获.

3.2.2 项目嵌入层的有效性分析

本节在MovieLens-1M数据集上对项目嵌入层中的各组件的有效性进行分析.首先根据不同的组合生成几种HASRec的变体:HASRec-1对算法中整个项目嵌入层进行遮掩操作,仅运用与LSSA类似的嵌入方法;HASRec-2仅包含项目嵌入层中的类别特征提取模块;HASRec-3仅包含项目嵌入层中的标题特征提取模块.其次,为验证本文所提算法中项目标题信息和类别信息的有效性,在项目嵌入层新增评分信息用于学习新的项目嵌入,命名为HASRec-4.在HASRec-4中,首先将评分信息嵌入为低维稠密向量,又由于评分信息一般为1~5之间的具体数字,因此不需要使用太过复杂的神经网络对其进行学习,本文使用多层感知机(Multilayer Perceptron,MLP)学习项目中评分信息的表示,最后在特征融合模块中使用注意力机制对3种不同特征进行融合.实验结果如表2所示.

表2 各组件有效性分析Table 2 Analysis of the effectiveness of each component

根据表2可以看出:HASRec-1的推荐性能较LSSA有所提高,证明了偏好学习层中长期偏好学习、近期偏好学习和偏好动态融合模块的有效性.根据HASRec-2和HASRec-3的实验结果可以看出,只带有标题信息的算法较只带有类别信息的算法推荐性能更好,这表明项目的标题信息对用户接下来的行为具有重要影响.此外,仅使用单一项目信息的HASRec-2和HASRec-3较使用普通嵌入方法的HASRec-1性能更低,表明单一信息不足以学习项目的准确表示,这也与本文算法的原始假设相符.HASRec获得了最佳的推荐性能,证明了项目嵌入层的有效性.当嵌入层新增评分信息后,HASRec-4的推荐性能较其余变体都有所提高,但较HASRec有所下降,这说明评分信息的加入在一定程度上能够提高算法的性能,但由于评分信息只含有1~5之间的整数,大量的输入评分信息特征对已经使用了标题信息和类别信息的嵌入层产生了微小的扰动,这就会导致算法的整体性能略微降低.

3.2.3 偏好动态融合分析

为分析用户偏好学习层中偏好动态融合模块的有效性,表3展示了在MovieLens-1M与Amazon-Book数据集中参数λ对算法推荐性能的影响.λ为动态偏好融合模块中决定近期偏好所占权重的参数.当参数λ为0时,表示仅考虑用户的长期偏好,当参数λ为1时,表示仅考虑用户的近期偏好,当参数λ为固定值0.5时,表示默认用户长期和近期偏好重要程度相同.

表3 参数λ对推荐性能的影响Table 3 Influence of parameter λ on recommendation performance

根据表3可以观察到:只考虑用户的近期偏好总是比只考虑用户长期偏好的算法性能更好.除此之外,只考虑用户的近期偏好甚至比将用户两个方面的偏好进行简单的融合更有优势.从实验结果可以看出,分别考虑用户的长期和近期偏好并使用动态融合模块对其进行动态融合是必要且有效的.

3.2.4 注意力机制与特征融合模块的有效性分析

在MovieLens-1M数据集上分别针对项目嵌入层中的SAR、词级注意力机制和特征融合模块进行消融实验.

由图3的实验结果可以看出:HASRec-Ex1移除SAR后算法的推荐性能下降,证明了SAR能够充分对项目标题和类别信息进行特征提取.HASRec-Ex2仅保留词级注意力机制,它可以有效提高推荐性能,这得益于不同的单词通常具有独特的含义,证明了词级注意力机制对学习准确的项目表示是有帮助的.其次,HASRec-Ex3仅保留特征融合模块,由实验结果可以看出由于不同的项目信息具有不同的特性,所以对项目不同信息的重要性进行分析是有必要的.最后,HASRec具有最优的推荐性能,可以看出项目嵌入层中的多层注意力机制作用各不相同,缺一不可.

图3 注意力机制与特征融合的有效性分析Fig.3 Effectiveness analysis of attention mechanism and feature fusion

3.2.5 算法效率分析

本节在MovieLens-1M数据集上对不同算法的效率进行分析,统计算法单个Epoch的平均训练时间,实验的显卡为GTX-1650Ti,实验结果如表4所示.

表4 不同算法的效率分析Table 4 Efficiency analysis of different algorithms(s)

根据表4可以观察到,与注重用户长期和近期偏好的LSSA和以效率著称的Caser相比,HASRec的平均训练时间明显更长,这是因为HASRec采用多种神经网络对用户交互序列中更复杂的项目关系进行了提取,从而影响了算法的运行效率.

3.2.6 超参数分析

在本节中,主要分析近期偏好学习网络中的参数k对算法推荐性能的影响.为动态调整参数k,设定k的最小值为1,最大值为7,步长为1.在MovieLens-1M数据集上进行实验,实验结果如图4所示.

图4 参数k对推荐性能的影响Fig.4 Influence of parameter k on recommendation performance

从图4中可以看出,HASRec的推荐性能随着参数k的变化而变化,具体表现为先上升后下降.当k值为5时,HASRec的推荐效果最佳,当k值逐渐偏离5时,其推荐性能总体上表现为逐级递减.k值过小时,HASRec无法获得最优推荐性能,不能充分捕获历史交互中的有效信息.k值过大时,则会由于引入噪声造成推荐性能的下降.

4 结束语

本文提出一种基于分层注意力与用户动态偏好的序列推荐算法.首先对传统的自注意力机制进行改进,将相对位置信息融入到自注意力机制中,并将其应用到本文提出算法的项目嵌入层中.项目嵌入层通过标题和类别信息学习项目嵌入,同时为了学习准确的用户整体偏好,在分别学习用户长期和近期偏好的基础上对其进行动态融合.本文在两个真实数据集上进行了大量实验,证明了本文所提算法的有效性.在未来,将考虑在保证在同等推荐性能的条件下,尝试优化模型的运行效率.

猜你喜欢
注意力建模机制
让注意力“飞”回来
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
自制力是一种很好的筛选机制
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
破除旧机制要分步推进
注重机制的相互配合
打基础 抓机制 显成效