1. 引言
个性化推荐模型通过分析用户的过往行为记录,对海量信息进行过滤来达到“千人千面”的推荐效果,可以有效缓解大数据时代下的信息过载问题 [1] 。为了提高推荐的精准度,目前的深度学习模型主要采取了两种策略,部分推荐模型侧重于将用户历史交互记录视为一个集合,通过用户特征与物品特征提取用户长期兴趣 [2] - [7] ,处理简单,但忽略了用户短期内的兴趣变化对推荐结果造成的影响,如用户近期可能面临搬家或旅游等特殊情况。此时,短期兴趣与长期兴趣产生较大差别,导致长期兴趣被短期兴趣掩盖,产生的推荐结果并不可靠。
基于序列的深度学习推荐模型将用户的历史交互记录视为序列,侧重于根据用户近期交互记录提取包含在其中的序列信息,以捕捉用户的短期兴趣 [8] [9] [10] [11] [12] 。此类方法容易陷入局部最优状态,跳出用户当前的兴趣点困难,易导致严重的有偏推荐。
除了不能准确描述用户兴趣,上述两种模型都将推荐过程视为静态过程,而推荐过程是一个用户与推荐系统不断交互的过程,推荐系统应该根据用户的兴趣变化改变自身策略,而基于深度学习的推荐模型根据训练好的模型进行推荐,无法对用户的兴趣变化做出调整。
本文构建一种对长短期兴趣分别建模、提取的深度强化学习推荐模型LSRWRL (Long-Short Recommendation with Reinforcement Learning)。该模型将拼接后的长短期兴趣作为深度Q网络 [13] 的输入,进而模拟用户与推荐系统的交互过程,使模型能关注到长远收益。
2. 模型梗概
2.1. 问题定义
定义在一个推荐系统中,记用户在t时刻访问过的物品集合为
,推荐系统根据
为用户给出一个推荐结果
,这个推荐结果
可以使推荐系统可以获得最大的累积长远收益
,定义为式(1)。
(1)
其中,
为t时刻用户对推荐结果
作出的反馈,即收益值,
为衰减因子,每经过一个时刻,收益值就衰减到原来的
倍。
2.2. 模型结构
本文将推荐系统视作智能体,将推荐过程视为马尔科夫决策过程,将用户视为强化学习中的环境,进而由深度因子分解机模块、自注意力模块以及深度Q网络构成一个整体模型。
首先,将用户的历史交互序列的最近n个物品从序列中分割出来作为短期序列,这里将n定义为20,长期序列为序列中用户所有喜欢的物品。对于不足长度n的序列,在前端使用padding操作进行填充。将长短期序列分别进行one-hot编码和embedding嵌入。其次,将长期序列输入到深度因子分解机模型提取长期兴趣特征,短期序列输入到自注意力模型中提取短期兴趣特征。最后,将两部分兴趣拼接送入深度Q网络,得到每个物品的Q值,以此进行推荐并得到反馈。如此往复直到智能体到达最终状态。图1说明了模型的整体结构。
Figure 1. Overall structure of the model
图1. 模型整体结构
3. 任务与模型
3.1. 短期兴趣提取
短期兴趣提取的自注意力模型以最近n个物品的特征嵌入及对应的位置编码作为输入,其输出向量考虑了整个输入序列的信息。
位置编码
以式(2)的方式嵌入到特征向量
中。
(2)
的计算方式如式(3)所示:
(3)
其中,d为输出向量的维度,i为输入序列中当前位置的下标。
位置编码嵌入后,为每个位置上的特征向量
乘上三个可训练的权重矩阵
,生成式(4)所示的查询向量
、键向量
和值向量
。
(4)
由式(5)得到自注意力模型的输出,其中
为查询向量的维度。
(5)
对自注意力模型输出结果进行平均池化操作,使之转换成能被全连接层接受的形式,作为用户的短期兴趣。
3.2. 长期兴趣提取
长期兴趣由两部分决定,用户本身的特征和长期序列中物品的特征。采用平均池化的方式对物品特征进行提取,与用户特征拼接后输入到DeepFM (深度因子分解机模型)中进行特征组合。长期兴趣提取模型如图2所示:
DeepFM的输出由FM [14] 和DNN两部分组成。FM部分的输出表示为式(6)。
(6)
其中,
为权重向量,
为特征向量,d为输入的维度,
是特征隐向量的内积,
和
为第i和第j个一阶特征,点乘后得到二阶特征组合。
DNN部分的输出
表示为式(7)。
(7)
其中,
为激活函数,l为隐藏层的层数,
为第l层的输出,
和
为模型的权重和偏置项。
两部分的相加结果为式(8),作为用户的长期兴趣。
(8)
3.3. 基于深度Q网络的最优推荐策略学习
基于深度强化学习的推荐系统将推荐系统看作智能体,将用户看作环境。Q网络以用户长期兴趣与短期兴趣的拼接结果作为输入,在得到每个物品的Q值并获得用户反馈后,不断改变推荐策略,直到到达最终状态。
深度Q网络分为当前Q网络和目标Q网络。当前Q网络负责在前向传播过程中计算Q值,而目标Q网络只参与计算反向传播过程中下一个状态的Q值。迭代遵循如下流程:
1) 初始化经验回放池,用于提供独立同分布的数据分批次训练Q网络。
2) 初始化当前Q网络和目标Q网络的参数。每一回合中,对每位用户重复多次推荐,根据当前的状态以ε-greedy策略选择物品进行推荐并获得奖励。如果用户喜欢推荐结果,奖励值根据相应的评分设置,并更新到下一个状态
。否则,奖励值为0且不更新状态。
将四元组
存储到经验回放池。
3) 每隔一定时间步从经验回放池中批量采样m组样本用来学习并更新参数,使用损失函数更新当前Q网络的参数。如果当前状态不是终止状态,由式(9)计算目标Q网络值。否则目标Q网络的值由当前奖励
决定。
(9)
损失函数采用式(10)所示的均方差损失函数。
(10)
其中y为目标Q网络计算得到的最优Q值,用于参数更新时的目标值。
为当前Q网络的Q值。由于每次都使用目标Q网络中下一个状态的最优Q值作为目标值,通过不断缩小当前Q值与目标Q值的差距,可确保当前Q网络参数朝着获取最大奖励值的方向改变,从而学习到最优的推荐策略。
4. 实验与分析
4.1. 实验准备
本文的实验环境为Windows11、Intel i5-11320H @3.20GHZ4核8线程16 G内存。采用Movielens-1m和Movielens-100k电影推荐数据集,按照80%~20%比例对训练集和测试集进行划分。
实验比较的模型包括:
UserCF:基于用户的协同过滤模型,根据用户历史行为记录找到相似用户并进行推荐。
ItemCF:基于物品的协同过滤模型,根据用户历史行为记录计算物品之间的相似度并进行推荐。
SASREC [9] :采用多层自注意力的长期兴趣的序列推荐。
STAMP [10] :采用注意力机制的短期兴趣优先的序列推荐。
GRU4REC [12] :采用GRU模型捕捉短期兴趣的序列推荐。
本模型设置1000回合训练,参数设置包括batch_size为128,e-greedy参数为0.9,奖励衰减因子为0.9,学习率为0.01,每隔50个时间步更新一次目标Q网络参数。
实验采用准确率precision和召回率recall [15] 作为实验指标。
4.2. 实验结果及分析
实验结果如表1所示。
实验结果显示,本文模型的precision和recall指标均有提升。其中,基于内容和基于用户的协同过滤模型不涉及用户和物品的特征,在两项指标上均表现较差,说明考虑特征信息对推荐有所帮助。SASREC模型precision@10和recall@10两项指标上表现较STAMP模型和GRU4REC模型更好,说明自注意力模型较注意力模型和GRU模型可以更有效地提取序列特征,但这些基于深度学习的推荐模型不能关注到用户的兴趣变化。相比之下,本文模型综合考虑了长短期兴趣,不仅准确捕捉了用户兴趣,还通过强化学习动态捕捉了用户的兴趣变化,因此取得了更好的效果。
5. 结论
为了消除基于深度学习的推荐模型不能捕捉用户兴趣变化的劣势,引入了强化学习方法,动态地对推荐过程进行建模。同时,为了能够充分体现用户短期兴趣的作用,分别对长短期序列进行处理并融合。实验表明,二者的分离可以有效利用长短期兴趣特征之间的数据分布的差异性,更好地体现用户的兴趣变化。同时,通过考虑用户的长远受益更有助于得到精准的推荐策略。