基于混合神经网络的序列推荐算法

2021-06-27 05:12刘纵横汪海涛
关键词:卷积长度神经网络

刘纵横,汪海涛,姜 瑛,陈 星

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

0 引 言

推荐系统在互联网中有着广泛的应用,一个优秀的推荐系统可以帮助用户快速、准确地在海量的信息中寻找感兴趣的内容。它改变了人们获取信息的方式,给用户带来了极大的便利。推荐系统目前主要可以分为2类:常规推荐系统与序列推荐系统。常规推荐系统的目的是学习用户的静态偏好,静态偏好主要通过统计获得而且更新缓慢。基于因子分解的协同过滤系统[1]就是这个领域中较有影响力的算法。但是常规推荐系统无法捕获到用户的兴趣变化,现阶段用户行为偏好具有内在的可变性,在一定时间段内会受到多种因素变化的影响,例如需求的变化、兴趣的变化等。相比于常规推荐系统,序列推荐系统可以建模用户的交互序列,捕获到用户兴趣的动态变化,已经成为推荐系统研究领域的热点方向。

在序列推荐系统的建模阶段,循环神经网络(recurrent neural network, RNN)及其变种网络占有主流地位[2],但是RNN在对用户序列建模过程中依赖于过去的隐藏状态,无法对网络进行并行运算,所以建模速度是RNN网络的劣势。与RNN相比,时间卷积网络[3](temporal convolutional network, TCN)不依赖于整个过去的隐藏状态,可以充分利用序列进行并行计算。因此,它在训练效率和预测性能上相较于RNN有一定的优势。受时间卷积网络在序列建模中有不错表现的启发,本文将时间卷积网络引入用户近期序列建模,用于提高基于RNN的推荐系统的训练效率与预测准确度。

用户的长期偏好反映的是用户较为固定的兴趣,如一直喜欢某种类型的电影,用户的近期偏好则反映的是最近的消费需求。尽管用户的喜好随时间动态变化[4-5],但是仍会存在一些长期稳定的偏好影响用户的行为。现有方法倾向于将用户的长期偏好与近期偏好相结合[6],但是2个方面简单的结合是不够的,因为过往的物品序列会隐含用户的下一项选择的倾向性,所以本文提出了一种基于注意力的融合方法来融合特定情境下用户的长期偏好和近期偏好。例如,下一个交互项目在上一个交互项目之后较短时间发生,则近期的用户交互可能在预测中起主要作用,否则,应该将更多的权重分配到用户的长期偏好。

基于以上表述,本文提出了一种基于混合神经网络模型的序列推荐算法,命名为HNNRec。本文的贡献主要有以下2点。

1)与先前大部分基于RNN的模型不同,本文在用户的近期偏好建模过程中,将自然语言处理中的时间卷积网络引入到推荐系统,对用户的近期偏好进行建模以提高推荐的效率与准确度。

2)本文模型在考虑用户近期偏好与长期偏好的基础上进一步动态融合了用户2个阶段的偏好,提高了推荐的性能。

最后,本文在公共数据集MovieLens10M与LastFM上进行了实验,结果也证明了模型的有效性。

1 相关工作

在序列推荐的早期阶段,主要依靠马尔科夫链[7]和基于特征的矩阵分解[8-9]方法。与深度学习方法相比,马尔可夫链存在无法对复杂数据建模等缺陷。文献Caser[10]认为,马尔可夫链方法无法对联合级序列模式进行建模,而且也无法捕获到用户项目序列跳跃行为对于推荐结果的影响。而基于因数分解的方法虽然通过序列项矢量的总和对序列建模,但是没有考虑到用户交互序列顺序对于推荐结果的影响。

与传统的推荐模型相比,深度学习模型在捕捉用户序列演变方面显示出了自己的优势,例如RNN这类网络模型在学习兴趣演变,构建基于会话的推荐系统,下一项推荐等领域显示出自己强大的功能。与基于RNN的推荐算法相比,基于卷积神经网络的推荐算法更具挑战性。Tuan等[11]设计了一种3D CNN模型用于高维建模,证明了用户序列与元素复杂特征相关联时具有有效性;An等[12]将交互序列编码为三维向量,并使用2D卷积滤波器学习局部的特征;Tang和Wang等[10]将水平与垂直2种CNN应用于推荐系统,并且取得了不错的效果,但是它分开学习了用户与项目的嵌入,没有捕获到其中的交互信息,也没有加入上下文信息。

在神经网络中,注意力机制[13]允许各部分在压缩成单个表达式时以不同方式对最终的预测做出贡献。在推荐算法中,注意力机制在算法模型中学习用户交互序列中项目的不同权重,并且根据用户的交互序列动态调整用户的偏好预测[14]。Xiao等[15]介绍了基于深度学习的注意力机制,并提出了注意力因子分解机(attentional factorization machines,AFM)模型。AFM的重要思想是建立一个注意力网络,并依据此网络推导用户评分列表中每个交互的相对重要程度。最近的一些研究也调查了其在推荐任务中的能力,比如将注意力机制与神经网络结合,弥补了传统ItemCF预测准确度低的问题[16]。Wu等[17]提出了一种基于情景的注意力机制,提高了推荐的性能与可解释性,但是并没有对用户进行显式建模;Li等[18]基于注意力机制建模了会话中的连续偏好信息,弥补了传统建模方式的不足。

2 模型算法

本节对模型算法进行详细介绍。第1部分是用户交互项目嵌入;第2部分是对用户交互序列建模,预测用户偏好。HNNRec模型如图1。

图1 算法整体流程图Fig.1 Overall flow chart of the algorithm

2.1 项目嵌入

项目嵌入的目标是在项目序列中学习交互序列的相似度,生成项目的统一表示。推荐系统之前的项目嵌入是通过one-hot编码,然而当面对大量的高维数据时,使用one-hot进行编码会导致无法进行较好的优化,在模型的基础上再添加嵌入层又会对推荐模型的性能产生不小的损耗。针对上述问题,本文引入item2vec来进行项目的嵌入。本文使用E={e1,e2,e3,…,en-1,en}来表示用户交互序列G={I1,I2,I3,…,In}的嵌入向量。

Item2vec的目标是最大化以下函数

(1)

(1)式中:L表示用户交互序列的长度;xn表示序列中的项目;p(xm|xn)为softmax函数,此函数定义为

(2)

(2)式中,wn与vn对应xn的目标和前后信息的潜在表示向量。(2)式训练过程中存在复杂度较高的问题。为了降低梯度下降的复杂度,本文决定使用负采样来代替,(2)式可转化为

(3)

(4)

之后,本文通过训练item2vec得到了目标项目的向量表示。在基于用户的交互序列上,item2vec可以产生成K维统一向量,并且为计算项目相似度提供了条件。

2.2 用户交互序列建模

本文将用户的交互序列分为2个阶段:①用户的近期交互序列;②用户的长期交互序列。

2.2.1 近期交互序列建模

受到时间卷积网络的启发,针对用户近期交互序列相较于长期交互序列变化频繁,更需要推荐准确度与时间优势的情况,本文将时间卷积网络引入到序列推荐系统之中进行用户近期偏好建模。卷积建模如图2。

图2 卷积图Fig.2 Convolution graph

面对序列问题,如果使用普通的CNN卷积模型会引起信息泄露,此过程借鉴因果卷积[19]的思想,当预测项目yt时,不允许卷积滤波器使用yt的信息。在模型中,主要抽象为根据x1…xt和y1…yt-1去预测yt,使得yt接近于实际值,通过以上方式解决普通卷积模型引起的信息泄露的问题。

为了获得用户序列项目之间更高级别的特征表示,常见的方法是增加模型中网络的深度,但是会引起梯度消失等问题,这样会使得模型的学习遇到困难。所以本文针对更深层的网络引入了残差学习[20],将多个模型中卷积层堆叠在一起作为一个块,然后采用跳过连接方案,将前一层的特征信息传递到后一层。跳过连接方案允许显式拟合残差映射,从而维护了输入信息。

残差网络结构如图3,将所需的映射表示为H(E),本文让残差块适合F(E)=H(E)-E的另一个映射。按元素方式将所需的映射转换为F(E)+E。优化残差映射F(E)比原始的未引用映射H(E)容易得多。

图3 残差结构Fig.3 Residual structure

残差块包含的分支通过F的转换,其输出作为(5)式的输入

o=σ(X+F(x))

(5)

通过以上对于用户近期交互序列的分析,解决了近期偏好获取的问题。

2.2.2 长期交互序列建模

与近期交互序列相比,用户的长期交互序列都较为固定且更新缓慢,所以对时效性的要求较低。在所有基于RNN的模型中,推荐系统常使用长短期记忆网络(long short-term memory,LSTM)[19]或门控制单元(gate recurrent unit, GRU)来进行用户建模。在本文的数据集中,观察到LSTM的表现略好于GRU,所以引入LSTM进行用户长期偏好建模。建模过程中序列更新过程为

hk=g(xkW+hk-1U+b)

(6)

(6)式中:g是激活函数;xk是最新的用户操作;hk-1是最后一个隐藏状态。(7)式—(11)式为用户序列建模所涉及的结构以及结构的运算过程。

it=σ(Wixt+Uiht-1+bi)

(7)

ft=σ(Wfht-1+Ufht-1+bf)

(8)

Ct=ftct-1+ittanh(Wcht-1+Wcxt+bc)

(9)

Ot=σ(Woxt+Uoht-1+bo)

(10)

ht=ottanh(ct)

(11)

2.2.3 自适应融合阶段

单纯的设计用户的偏好为近期偏好与长期偏好相加并不是一个好的思路,因为用户的下一项推荐对于2种阶段偏好存在一定程度的倾向。本节设计了一种方法来融合用户的近期偏好与长期偏好。此方法中用户偏好是否获得更大的权重取决于当时的上下文。举这样一个例子,如果行为B在行为A不久之后发生,那么近期的偏好有大概率会提供更多的信息。基于注意力引出以下公式

(12)

(13)

(14)

(15)

2.3 模型的训练和优化

本文将用户的交互序列的嵌入作为网络的输入,通过网络运算输出K维的向量。在模型的整体学习阶段使用均方误差作为损失函数,将此定义为

(16)

(16)式中:L代表用户交互序列的大小;l代表分界长度;vt表示用户的下一次交互的项目表示。在实验中使用AdaGrad对于损失函数进行优化。至此,本文已经讨论了HNNRec的完整阶段。

2.4 算法描述

在算法模型中,首先依据时间因素将数据集划分为2个子数据集,再将处理之后的数据分别输入到不同阶段的网络中学习各自阶段的偏好,之后基于注意力机制对于各阶段生成的预测进行动态融合,最后输出推荐列表。

算法基于混合神经网络的序列推荐算法

输入:数据集D。

输出:Top-N推荐列表。

步骤1将数据集D依据时间分为2部分子数据集D1与D2,D1代表长期用户序列数据集,D2代表近期用户序列数据集;

步骤2数据集D通过item2vec训练获得用户的全部项目向量E={e1,e2,e3,…,en-1,en};

步骤3将用户的近期项目向量输入到时间卷积神经网络之中,学习用户的近期偏好,生成近期偏好预测;

步骤4将用户的长期序列向量输入到长短期记忆网络当中,学习用户的长期偏好,生成长期偏好预测;

步骤5引入注意力机制对于用户的长期偏好和近期偏好进行动态融合,输出用户的最终偏好预测;

3 实 验

本节将会通过3项实验来展示混合神经网络模型在下一项推荐中的优势:①在下一项推荐中将混合神经网络模型的推荐效果与现有的先进算法进行比较,以证明其在推荐领域有不错的推荐效果;②对本文动态融合的参数进行分析,证明了设置动态参数的有效性;③对用户的交互序列长度进行了分析,评估本模型与LSTM,Caser,TransRec算法在不同序列长度下的表现,展现出混合神经网络推荐模型相较于其他深度模型在不同用户交互序列上都有着一定的优势。最后,本文对算法的优点与缺点进行了分析。

3.1 数据集

本文采用MovieLens10M与LastFM公开数据集作为这次实验的数据集。MovieLens10M包含了72 000个用户对10 000部电影的1 000万个评级和100 000个标签交互。平均交互长度在一百左右。LastFM是在线音乐系统last.fm收集的用户信息,包含了951名用户的83 382个交互,平均交互序列在90左右。

为了确保实验的可靠性,在实验之前,对数据集进行了下列预处理:①将交互数量小于5 的项目过滤掉;②对数据集采取随机划分的方法,将数据集的70%作训练使用,30%作测试使用。本文将评分信息变为隐式反馈信息,重点讨论隐式反馈。

本文的实验硬件为CPU Intel Core i7,16 GB 内存,Nvidia 1060显卡,软件环境为 Windows10系统,实验编程语言为Python3,使用Keras框架构建神经网络,训练模型。

3.2 基线方法

本文将传统的推荐方法和基于深度学习模型的方法与本文提出的算法作对比,下面是基线方法的描述。

1)Item-based k-NN:此模型基于项目的相似度,为用户推荐与历史项目相似的Top-N个项目;

2)Exp.Dec. Item-based k-NN[21]:此模型通过将指数衰减分量加入item-KNN模型,来降低长时间间隔交互项目的权重;

3)Matrix Factorization (MF):矩阵分解模型,将大矩阵分解成小矩阵的乘积,解决了近邻模型解决不了的问题;

4)Seq.Matrix Factorization[22]:在矩阵分解模型的基础上加入用户交互序列信息;

5)LSTM[23]:常规的LSTM模型,通过对交互序列的嵌入捕捉用户偏好,获得对于用户推荐的预测;

6)Caser[10]:通过卷积神经网络模拟用户的历史交互,构建灵活的序列模式来提高用户个性化序列推荐的准确率;

7)TransRec[24]:该模型将嵌入思想应用于序列推荐之中,输出的下一项推荐由用户向量与用户的最近交互向量决定。

3.3 参数设置

在模型嵌入阶段,item2vec的训练过程中,将上下窗口大小设置为10,嵌入维度设置为300。在用户序列建模过程将中Dropout率设置为0.1。

3.4 评估指标

本推荐模型推荐项目数量不大,预测项目应处于候选列表的前列。所以选择以下3个指标设为评估指标。

1)Precision:本次实验选择Precision作为评价本文算法的指标,Precision指标衡量了推荐系统的准确率;

2)Recall:在本次实验中将召回率作为衡量推荐系统性能的指标之一,在本文中设定为是测试案例中前20个推荐项目中具有所需项目的比例;

3)MRR:本次实验中将平均倒数排名作为实验的指标之一,MRR指期望项目倒数排名的平均值。在本次实验中将20设置为贡献值。

3.5 实验结果及分析

3.5.1 推荐效果分析

对各算法的推荐性能做了对比。表1列出了所有方法的整体性能结果,这些结果清楚地表明HNNRec在序列推荐任务中获得了不错的准确性。

表1 本文算法与基线算法性能对比Tab.1 Performance comparison between this algorithm and the baseline algorithm

表1中将HNNRec算法与传统推荐算法、推荐领域领先的推荐算法进行了比较。从表1中可见,加入时间卷积网络对用户的近期序列进行建模以及动态融合用户的偏好后,算法的有效性较基线算法存在一定的提升,由此可见,本文算法在通过用户交互序列捕捉兴趣变化方面存在一定的优势。与基于向量嵌入翻译空间的TransRec模型、基于CNN的Caser模型和基于RNN的LSTM模型相比,在Precision,MRR与Recall评价指标中都有着一定的提高。这归功于在用户的近期序列阶段引入时间卷积网络进行用户建模,以及对用户不同交互序列阶段的动态融合。

3.5.2 动态融合的有效性

表2与表3分别展示了在不同数据集中参数φ的取值对推荐效果的影响。当φ=0时,表示仅考虑用户的长期交互序列;当φ=1时,表示仅考虑用户的近期交互序列;φ为固定值时,表示本文依据以往经验为每个阶段搜索的较为合适的值;φ为动态融合代表本文的实验思路。

从表2和表3中可以观察到,在2个公共数据集上仅考虑近期交互序列总是比考虑长期偏好序列表现有优势,某些时候用户2个阶段的简单组合甚至比只考虑近期交互序列表现还要逊色。因此,证明了动态融合机制的有效性与必要性。

表2 在MovieLens10M数据集上验证融合 参数φ对推荐算法的影响Tab.2 Verify the effect of fusion parameters φ on the recommendation algorithm on the MovieLens10M dataset

表3 在LastFM数据集上验证融合 参数φ对推荐算法的影响Tab.3 Verify the effect of fusion parameters φ on the recommendation algorithm on the LastFM dataset

为了进一步分析与证明参数φ的有效性,且对φ有直观的效果展示,本文将用户距离上一次的行为时间间隔作为自变量,并根据时间间隔的不同划分自变量范围,将φ作为因变量。如图4,时间间隔划分为4个级别,由短至长分别为一个小时、一天、一周、一个月。例如横坐标为一小时意味着模型做出的预测结果是在目标用户的最后交互行为最后一个小时内产生的。图4展示了此项实验的结果,可以看到有一个明显的趋势,即长期交互序列产生的偏好随时间间隔的增加而显得愈加重要,这与本文模型的假设相符。

图4 时间间隔对权重参数φ的影响Fig.4 Effect of time interval on parameter φ

3.5.3 用户历史交互序列长度分析

本文将HNNRec模型与LSTM,Caser与TransRec作对比,进一步分析推荐效果。用到的数据集平均交互长度为90—100,因此,将用到的数据划分为3类:交互序列长度小于30,30—60,60以上的整数。此目的是衡量复杂的用户历史交互序列长度对HNNRec和其他深度模型的影响。

基于表1的数据,可以观察到在数据集MovieLens10M与LastFM中,随着历史记录长度的增加,本文提出的HNNRec在Recall上有着不错的改进,不仅如此,还可以发现HNNRec与另外3种序列建模模型都随着交互序列长度的增加而有所改进。在其余的3种模型中,LSTM随着交互序列的加长,性能的增幅逐渐减弱,Caser与TransRec在30—60和60以上的性能提高较HNNRec有所减弱,显示出了HNNRec在不同交互长度下性能的鲁棒性。由此可得,用户交互的时间长度确实会对推荐系统的性能产生影响,也清楚地证明了在面对不同长度的交互序列时,通过动态融合用户的不同阶段偏好,可以提高算法的鲁棒性和推荐准确度,从而使得本模型在不同序列下都有着较好的表现。

图5—图7直观展示了4种推荐算法在MovieLens10M上的推荐效果。

图5 不同长度的用户交互序列在MRR的表现Fig.5 Performance of user interaction sequences of different lengths in MRR

图6 不同长度的用户交互序列在Recall的表现Fig.6 Performance of user interaction sequences of different lengths in Recall

图7 不同长度的用户交互序列在Precision的表现Fig.7 Performance of user interaction sequences of different lengths in Precision

3.6 算法优缺点分析

本文提出一种基于混合神经网络的序列推荐算法。由上文的多项实验对比可知,本文算法具有较高的推荐准确性,面对不同长度的用户交互序列也有着较强的鲁棒性。较高的推荐准确性得益于时间卷积网络思想的合理引入,但是这也会导致在训练时需要更强的硬件条件。

4 结 论

本文提出了一种新颖的HNNRec模型。该模型基于用户的近期偏好与长期偏好建模,引入了时间卷积网络对用户项目序列进行建模,提高了推荐准确度,同时观察到用户的行为序列比其他领域序列遇到问题的复杂度更高,因此,进一步提出基于注意力的用户偏好动态融合方法,根据不同条件自适应地融合用户的长期偏好和近期偏好。本文在公共数据集上进行的实验证明了提出的模型具有有效性。在将来,模型的冷启动与模型效率的改进将是下一步探索的方向。

猜你喜欢
卷积长度神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
绳子的长度怎么算
1米的长度
卷积神经网络的分析与设计
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
爱的长度
怎样比较简单的长度
基于神经网络的拉矫机控制模型建立