序列生成对抗网络在推荐系统中的应用

2020-12-07 08:20方志军刘文竹
计算机工程与应用 2020年23期
关键词:鉴别器向量用户

伍 鑫,黄 勃 ,2,方志军,刘文竹

1.上海工程技术大学 电子电气工程学院,上海 201620

2.江西省经济犯罪侦查与防控技术协同创新中心,南昌 330000

1 引言

如今在信息爆炸的时代中,充斥着大量的冗余信息,从而导致了信息的过载问题,因此有效信息的获取变得十分困难。推荐系统作为一种信息过滤方法可有效缓解该问题。推荐系统对用户历史数据进行分析,挖掘用户兴趣偏好,在项目空间中确定用户喜欢的项目。传统的推荐系统通常以矩阵分解模型[1]、协同过滤模型[2]和基于上下文感知模型[3]为主。传统的推荐模型多为静态的,没有考虑用户的兴趣变化以及不同项目之间隐含的序列关系,只能从全局层面实现推荐。然而这种推荐方式在实际应用中效果较差,难以产生满足用户需求的推荐。

此外,传统推荐系统通常只能处理相对较小的数据集。但如今大规模数据集的出现以及运算和硬件存储的进步,促使开发具有高精度和可扩展性的更强大推荐系统成为可能[3-4]。

近些年,基于序列预测的推荐也得到了较好的发展,弥补了传统推荐模型中无法考虑不同项目间时序关系的问题。当前基于序列预测的模型多为递归神经网络(Recurrent Neural Networks,RNN)或基于RNN的变体等[5-7]。上述序列预测模型一定程度上解决了序列预测问题,但在模拟用户行为轨迹方面仍然存在欠缺。为了更明确地模拟用户行为轨迹,本文提出了一种融合序列生成对抗网络(Sequence Generative Adversarial Networks,SeqGAN)[8]的推荐算法,可以使用其生成模型来重现用户喜欢的项目序列,从而实现相应的推荐。同时在数据预处理方面引入Item2vec[9]对数据进行预处理,在降低数据维度的同时,还能保留数据之间良好的结构信息,此外使得相似项目的表示向量相似,解决了传统词嵌入方法中相似项目向量之间的关系不强的问题,同时也起到了降维、增加数据稠密度的作用。

2 相关工作

近年来,基于深度学习的推荐算法受到了很多关注。推荐系统可视为一种用户和项目之间的映射,深度学习作为一类常用的学习算法[10],能够学习这种映射关系。常用深度模型如自动编码器[11]、卷积神经网络(Convolutional Neural Networks,CNN)[12]和 RNN[6-7]等均在推荐系统中取得了不错的表现。但以上方法在拟合用户兴趣动态偏好时,仍然存在较大偏差。为了更准确地模拟用户的典型行为,可以利用生成模型来生成用户的兴趣项目序列。例如,利用训练好的隐马尔可夫模型,根据用户当前喜欢的项目序列预测下一个项目,并将其推荐给用户[13]。

Item2vec 由微软亚洲研究院提出[9],其主要思想是借鉴了 Word2vec[14],并采用 SGNS(Skip-Gram+Negative Sampling)[14]的方法来生成项目词向量。Item2vec 在项目向量表示方面有着较强的优势,使得项目词嵌入后的词向量表示带有结构信息,即相似项目之间的距离较近,差异较大的项目之间距离较远。因此Item2vec在一定程度上保留了原始数据的结构信息,同时降低了数据维度,便于后期的训练学习以及推荐。

Goodfellow 等人提出生成对抗网络(Generative Adversarial Networks,GAN)[15],在图像生成[16]到鲁棒控制[17]等许多任务中的表现优于现有算法。这是因为GAN 有效地利用深度学习的描述性和辨别力,训练具有高精度和可扩展性的生成模型。利用GAN在生成数据方面的良好特性,在推荐系统中利用GAN 模拟用户的行为轨迹,从而较精确地预测每个用户的偏好[18-19]。由于SeqGAN在文本生成方面取得了较好的成果,对序列特征有着较强的学习能力,因此本文将融合SeqGAN来挖掘推荐系统中项目之间的序列关系。

当前基于序列预测的模型中,在数据预处理以及降维阶段,常采用较为简单的one-hot向量表示项目,该表示方式存在向量稀疏且无法体现不同项目之间关系的问题。因此,本文提出Item2vec和SeqGAN相结合的推荐算法,选用Item2vec 对项目进行预处理,从而得到带有结构信息的项目向量,然后采用SeqGAN来建立基于GAN的模型,学习用户的偏好,并向用户生成下一个项目的推荐。SeqGAN能够学习序列关系,为推荐任务提供了一个有效的框架。因此本文对SeqGAN 做了适当的改进,使其适用于推荐任务。为了验证模型的有效性,在 Netflix Prize Contest 数据集和 Movielens 数据集上进行了实验。实验结果表明,本文提出的模型优于基线算法。

3 模型描述

模型首先需要将电影项目映射成相应的词向量,再根据用户历史记录的时间戳属性,构建不同的序列信息。如图1中的Embedding部分所示。

图1 模型总体框架

本文改进的SeqGAN,生成器通过噪声z产生虚假的用户观看电影的序列信息Y={y1,y2,…,yt},如图1中Generator部分所示。将生成器生成的项目序列信息Y和由Item2vec 根据真实信息产生的真实项目词向量序列信息X={x1,x2,…,xt} 分别传入鉴别器Discriminator中,输出传入项目序列X和Y为真实序列的概率值,其中p-表示生成器产生的序列Y鉴别为真实序列的概率值,p+表示真实序列X鉴别为真实序列的概率值。然后将p-作为生成器获得的奖励,指导生成器迭代更新,促使生成器尽可能地发掘用户序列信息的真实分布特征。具体的对抗训练过程如图1所示。

3.1 数据预处理

首先根据数据集的时间属性对无序的用户数据进行处理。传统的词嵌入方法如one-hot存在向量稀疏且难以表示电影和电影之间的关系等问题;有研究发现RNN 以及RNN 的变体在数据密度较高时能发挥较好的性能[10],本模型的生成器采用LSTM(Long Short-Term Memory)构成,鉴别器采用GRU(Gated Recurrent Unit)构成,均为RNN 的变体;采用Item2vec 方法,该方法可以学习电影项目在低维空间的词向量表示,增加数据的密度,同时可以学习不同电影项目之间的关系。

假设所有用户观看的电影的历史记录被定义为一个语料库,同时将某一个用户u观看的一系列电影记录视为一个小的电影集合,用Wu表示。所有的电影项目视为词汇集合,用S(Wu∈S)表示。通过学习所有用户历史记录中电影间的共现关系,获得该电影项目的词向量表示。具体的目标函数如下:

其中,σ(x)=1/(1+exp(-x)),u∈Wi,v∈Wj,N为对于每个正样本负采样的个数。

假定出现在用户历史记录中的电影项目均为有效项目,因此用户在选择某个电影项目时,该电影项目即代表该用户此时的兴趣趋向。即可将某一时刻用户所选的电影项目的词向量表示作为该用户此时的兴趣特征向量。

3.2 模型生成器

LSTM比较适用于序列预测问题,能够挖掘用户兴趣特性的分布特点。因此,采用LSTM 来构建SeqGAN中的生成器Gθ(θ为参数)。此外,为了同时处理用户的时间静态偏好和动态偏好,本文在LSTM单元的输入门(it)使用Leaky RELU激活函数,如式(3)所示。Leaky RELU可以很好地控制输入门信息的写入和丢弃,使模型对于时间静态偏好的用户关注其过去的行为,对于动态偏好的用户自动为其建模并完成预测。

为促使生成器挖掘用户兴趣的真实分布,在生成器中输入噪声z取代真实的序列数据。此方法可避免生成器过度依赖原始数据的问题,防止模型的过拟合。借助鉴别器的监督训练,实现对抗学习,从而挖掘用户的真实兴趣特征模型。

在LSTM 单元通过噪声z为其产生一个初始的隐状态,如式(4)所示。其中yt表示生成的兴趣特征,生成过程如式(6)所示。生成器Gθ={y1,y2,…,yT}。

3.3 模型鉴别器

在GAN中,为了更好地训练生成器,促使生成器生成更真实的数据,需要鉴别器辅助生成器的训练过程。GRU 在文本分类任务中显示出较好的效果,因此选择GRU 作为鉴别器Dφ(φ是参数)来辅助生成器Gθ的迭代更新过程。Dφ(Y1:T)表示序列Y1:T={y1,y2,…,yT}为真实序列数据可能性的概率。真实的用户电影序列数据为正例,生成模型Gθ生成的数据为负例,通过正例和负例对判别模型Dφ进行训练。

鉴别器中最终以sigmoid函数评估序列中各个节点为真实数据的可能性,如式(8),并累积该估计值,取其平均值作为该序列为真实序列的可能性,如式(9)。

3.4 策略梯度

为了更好地辅助生成对抗训练,本文采用强化学习算法学习动作价值函数,即从状态s开始采取动作a可获得的预期奖励。将鉴别器Dφ的实际估计概率视为实际得到的奖励,使用鉴别器Dφ作为奖励函数,并动态迭代更新奖励函数,以进一步优化生成器。

一旦获得一组更真实的生成预测序列,该模型将重新训练鉴别器,模型描述如下:

生成器模型Gθ的目标是根据起始状态s0生成序列,并最大化其预期的最终奖励,其目标函数J(θ)如方程(13)所示:

其中,RT是生成的完整序列的奖励。

在模型训练过程中,每次获得新的鉴别器模型时,都会对生成器进行更新。本文基于策略梯度的优化方式依赖于最大化长期奖励。对目标函数J(θ)求梯度:

其中,yt是从Gθ生成的预测。由于期望E 可以通过采样方法近似,然后将生成器的参数更新为:

采用Adam[16]和RMSprop[18]等自适应学习率的优化算法,αh∈R+表示第h步的学习率。此外,在真实的数据集上使用最大似然估计(Maximum Likelihood Estimation,MLE)来预训练Gθ。实验发现通过预训练的生成器Gθ可以更容易找到最优解。

3.5 推荐过程

完成用户兴趣建模,即可执行具体的推荐任务,如图2 所示。首先将用户观看的历史电影项目按照时序特征依次传入生成器中,如图2 中的x1,x2,…,xt-1所示,并为该用户生成下一时刻的兴趣特征向量yt;匹配该兴趣特征向量在电影集合S中的前N个最近邻项目,完成对该用户的top-n推荐。若下一时刻t实际的兴趣特征向量xt所对应的电影ID在推荐的前n个电影项目中,即在图2的movieId中,视本次推荐为一次成功的推荐。

图2 推荐流程图

4 实验

实验在一台 CPU 为 i7-9700k,GPU 为 1080Ti,内存为32 GB 的电脑上进行,操作系统为ubuntu16.04,实验环境为Pycharm。

实验根据用户历史行为,预测其未来的兴趣特征,最终以top-n方式完成推荐任务。

4.1 数据集介绍

本文提出的算法为一种序列预测,在包含时间戳属性的Movielens数据集和Netflix数据集上进行实验。

Movielens-20M:该数据集是电影推荐服务Movielens最大的一个数据集,包含138 493 个用户对27 278 部电影的20 000 263条评分记录和465 564个标签。数据集的时间跨度为1995年1月9日到2015年3月31日,每个用户至少有20部观影记录。

Netflix:该数据集比Movielens-20M 更大,拥有约48 万用户对17 770部电影的1.0×108条评分记录。

将数据集根据项目序列划分为训练集和测试集,训练集用于预训练生成器Gθ和对抗训练时优化Dφ,测试集用于观测训练过程中的实际损失值。在这些数据集中,项目序列的历史记录中任何项目至多出现一次,因此可通过强制它们推荐用户尚未看到的项目来模拟更真实的推荐过程。

4.2 实验设计

实验首先将用户的历史记录按照用户ID划分成不同的电影子集,然后根据时间戳属性对这些历史记录排序,构建对应的序列,然后将其传入Item2vec中训练,最后得到不同电影对应的向量,完成对训练数据的预处理工作。

具体训练过程如算法1所示。在对抗训练开始前,首先将训练集中具有时间序列关系的电影向量列表传入SeqGAN的生成器中完成对生成器的预训练;然后进行对抗训练,将生成器的输入参数改变为随机噪声,生成器通过随机噪声产生相应的向量序列;将生成器生成的向量序列和真实数据集中的序列混合传入鉴别器,以优化鉴别器的鉴别能力;当鉴别器能够较好地分辨生成器生成的数据和真实数据集中的数据时,再利用鉴别器输出的值通过策略梯度的方式进一步优化生成器。

算法1Item2vec+SeqGAN

输入:用户基于时间顺序的电影序列信息

1.采用Item2vec算法,得到电影项目的词向量表示

2.初始化SeqGAN,并对生成器Gθ进行预训练

3.得到预训练的参数θ

4.repeat:

5.updateDφ

6.通过式(11)实现迭代更新

7.updateGθ

8.将噪声z传入Gθ中生成序列信息

9.通过式(9)完成奖励值的计算,并采用策略梯度优化生成器Gθ

10.until:当鉴别器无法很好地区分生成器生成的数据时结束循环,并保存模型

具体的推荐算法描述如算法2 所示。将推荐用户的历史序列依次传入到训练好的SeqGAN的生成器中,即可生成下一时刻该用户可能感兴趣的特征向量。匹配该向量前n个不重复的最近邻项目,完成对该用户的top-n推荐。

算法2Sequence Recommendation

输入:用户u基于时间顺序的电影序列信息

1.通过式(5)和(6)为其生成相应的兴趣特征向量

2.根据该特征向量匹配前n个不重复的最近邻电影向量

3.将这n个向量转换为所对应的电影ID

输出:将这n个电影推荐给用户u

5 结果分析

为了对该推荐模型进行评估,采用MAP(Mean Average Precision)和MRR(Mean Reciprocal Ranking)指标来衡量模型基于top-n推荐的性能。本实验中将该模型与基于最近邻(KNN)和基于矩阵分解(BPR-MF)的两种静态top-n推荐算法进行比较。同时也与基于序列预测的基线方法:马尔可夫链(MC)、RNN 进行比较。实验结果如表1和表2所示。

通过以上结果对比发现,本文所提出的模型,在经过Item2vec处理之后的数据上,取得了优于基线方法的结果。例如,在Movielens 数据集上,对于基线方法MC和RNN 上推荐精度均提高了4%。这是因为KNN 和BPR-MF这类基线模型不具备序列预测的特性;而本文模型能够发掘用户潜在的兴趣偏好变化轨迹,根据当前兴趣偏好进行预测。同时Item2vec 方法在降低稀疏性的同时,让同类型的电影在向量表示上也具备了一定的相似性,对后期的序列预测,以及挖掘用户潜在的兴趣模型提供了有力条件。此外,相较于直接利用RNN 训练的网络模型,采用对抗训练的方式,可以有效降低模型的过拟合,更利于对用户的兴趣模型进行精确建模。

表1 基于Movielens-20M数据集对比分析(n=10)

表2 基于Netflix数据集对比分析(n=10)

6 结束语

本文讨论了Item2vec 和SeqGAN 在推荐系统中的具体实现。将两者相结合,改进传入SeqGAN网络的项目向量表示,在降低向量表示维度的同时,让项目的结构信息融入其向量表示中。同时改进SeqGAN 网络结构,使其更适合推荐系统的应用场景。本文模型旨在对基于时序关系的用户和项目潜在特征精确建模,从而提高推荐系统的准确性。

实验结果表明,SeqGAN在两个不同的数据集中表现均优于基线模型。未来工作集中于进一步研究和改进SeqGAN的性能,以及对LSTM进行改进的可行性和影响进行深入研究,以便更精准地对用户兴趣建模。

猜你喜欢
鉴别器向量用户
基于多鉴别器生成对抗网络的时间序列生成模型
基于双鉴别器生成对抗网络的单目深度估计方法
向量的分解
聚焦“向量与三角”创新题
关注用户
阵列天线DOA跟踪环路鉴别器性能分析
关注用户
向量垂直在解析几何中的应用
关注用户
向量五种“变身” 玩转圆锥曲线