本发明属于计算机技术领域,涉及一种基于循环生成对抗网络的个性化推荐方法,预测用户对项目物品的偏好程度问题。
背景技术:
个性化服务是目前最受关注的领域之一。在科技飞速发展的今天,越来越丰富的产品使市场呈现供大于求的现象,消费者需要从众多的同类产品中挑选心仪的产品。而现在人们消费多是注重产品的内在质量和价格,多注重物质产品形式的多样化,质量的内在化、大众化。随着人们收入的增加,消费流行期和产品生命周期的缩短,时髦的消费方式被模仿速度的加快,消费观念逐步向品质的外在化、个性化、自然化方向发展。个性化推荐的目的就是根据目标用户的历史行为信息,挖掘用户的兴趣偏好,给用户推荐其感兴趣的物品,帮助用户节约时间成本。
传统的推荐算法,无论是协同过滤,矩阵分解等,都采用浅层模型进行预测,对特征的提取都依赖于人工的查找,很难有效的学习到深层次的用户和项目隐性表示,同时人为挖掘隐性表示并量化,是一个耗时耗力的过程。然而深度学习作为端对端的方法,可以有效避免复杂的人工特征提取过程,并且能够学习到更加抽象、更加稠密的深层次用户和项目表示,拟合非线性的结构特征。
本发明运用了深度学习中循环神经网络(recurrentneuralnetwork)和生成式对抗网络(gan,generativeadversarialnetworks)的理论模型,前者可以展示动态时序行为,后者可以提取特征生成相似却又不同的矩阵,是近年来无监督学习最具前景的方法之一。生成对抗网络在图像生成领域已有了很多的运用,但是尚未应用到推荐领域,特别是电影推荐中。
技术实现要素:
本发明的目的在提供一种基于循环生成对抗网络的个性化推荐方法。通过对基于时间信息的用户历史行为的采样,构建融入时间信息的矩阵样本,用循环生成对抗网络实现自动提取特征及展示动态时序行为。
本发明方法具有包括如下步骤:
步骤(1).构建矩阵图像:
以等距离滑动窗口的方法对用户历史行为的时间序列采样并构建矩阵图像样本集r:
t为样本总个数,n为用户个数,m为项目个数;以d天为一个周期,每d天的数据生成一个二维的矩阵图像,每隔i天取次样,d∈(10,30,50);具体的如下:
其中
步骤(2).构建循环生成对抗网络:
传统的生成对抗网络信息流是单向的,过程为:
输入高斯噪音→生成器生成矩阵图像→输入生成器生成图像+真实图像到判别器→判别器判断图像→将误差传递回判别器和生成器并更新参数。整个过程是单向的,信息没有像循环神经网络一样循环。而循环生成对抗网络由两个生成对抗网络和一个编码器组成,前一个生成网络的生成器的输出作为后一个网络的输入,可以很好的让矩阵信息在两个对抗网络中循环流动,使学习到的矩阵信息具有时间上的连续性。两个生成对抗网络和一个编码器的内部结构和所用到的技术,具体是:
(2-1).构建生成对抗网络a和b:
①生成器:用以生成与用户历史行为构建的矩阵图像相似的矩阵,由全连接,卷积层,反卷积层和规范化层组成;
②判别器:判别器的过程与生成器相反,用来判断生成器生成图像的准确性,由卷积层和全连接层组成;
(2-2).构建编码器:用来压缩生成图像,由全连接层组成,包括:
a.全连接:由q个神经元构成,每个神经元内部都有激活函数,每个神经元都会接受上一层的所有信息,并将自己的输出传递给下一层;
b.卷积:用于特征提取,采用二维卷积来提取矩阵图像特征,数学表达式如下:
其中h(u,v)表示f(x,y)被w(x,y)卷积后得到的函数,u和v表示被卷积后的横坐标值和纵坐标值,w(x,y)表示卷积函数,f(x,y)表示被卷积函数,x,y表示w(x,y)和f(x,y)的定义域相交的元素的横纵坐标值;
矩阵卷积:
c.反卷积:卷积操作的逆过程,采用上采样+卷积来实现;
d.规范化:规范化处理把分布一致弱化为均值与方差一致,对学习过程起到了重要效果。另一方面,bn的更重要作用是防止梯度弥散,它通过将激活值规范为统一的均值和方差,将原本会减小的激活值得到放大。具体方法如下:
其中s表示一次训练的样本集,k表示一次训练里面包含的样本量,μs表示k样本的均值,
步骤(3).循环生成对抗网络内部过程,包括:
(3-1).构建矩阵图像:
输入一个100×1的高斯噪音矩阵给第一个生成对抗网络a中的生成器,先通过m层反卷积操作,将噪音矩阵逐渐构建成图像矩阵;每层反卷积之后再用一层卷积层操作提取特征,最后生成一个rn×m的矩阵图像;
(3-2).判别图像真伪:
从采样样本集r中选取一部分连续矩阵图像样本与生成器生成的l个矩阵图像组合成为训练样本
(3-3).计算auc和mse:
用生成器生成新的矩阵图像,与原矩阵图像对比,计算auc和mse;所述的auc为模型评价指标,越接近1,说明模型效果越好;所述的mse为误差评价指标,越接近0,说明模型效果越好;
其中pt表示矩阵图像正样本点的预测概率,pf表示矩阵图像负样本点的预测概率,因此pt应该接近1,pf应该接近0,i(pt,pf)表示预测正样本概率大于负样本概率的样本数量;
其中f(xj)为预测图像上j点的值,yj为真实图像上j点的值;
(3-4).特征提取压缩图像:
当生成器生成的矩阵图像的auc大于阈值k1且mse小于阈值k2时,认为生成器生成的图像是真的,将其放入编码器,压缩成为90×1的矩阵,再随机生成一个高斯噪音10×1的矩阵,然后将两者合并为一个100×1的矩阵,作为下一个生成对抗网络b的初始输入值,0.9<k1<1.0,0.7<k2<0.9;
(3-5).重复(3-1)~(3-4),区别只是将对抗网络的顺序互换;
步骤(4).训练循环生成对抗网络:
设置网络的层数,学习率,积核数量,卷积核大小,卷积核移动步长,激活函数和全连接层神经元数量,通过优化器adam,更新网络参数,使其逼近或到达最优值,从而使交叉熵损失函数(cross-entropycostfunction)到达最小值;利用keras完成并训练上述网络,直至代价损失减小到一定程度且训练到达迭代最大次数;
步骤(5).生成推荐列表:
网络中的生成器生成新的矩阵图像。对图中某一个用户的行像素点做排序,将数值大的前n个列出作为该用户的推荐列表。
本发明方法由于采取以上技术方案,与现有技术mf和cf及其变种算法相比具有以下优点:
可以有效避免复杂的人工特征提取过程。mf模型虽然不需要人工的提取特征,但是特征的提取数量较少(一般在5到10个特征)。cf及其变种算法,需要人工的提取特征并量化后融入模型中。本发明在特征提取上,就现在生成器的模型而言,所能提取出的特征数量就有1737(包括了用户性别,年龄和项目类别等众多信息),其数量还能根据模型网络层次的深度进行增减。
融入时间信息,反映了用户行为的时间序列模式,利用时间信息有助于提升推荐系统的性能,是预测更有阶段性。mf模型其本身无法融入时间序列,而cf及其变种算法在融入时间信息时,基本都是加入一个衰减因子或者使用logistic等函数模拟。但是用户的行为是非线性且无规律的,用函数表示的话,在不同时间段其函数的模型都应该有所不同。而本算法从生成信息的循环上传递了时间信息,对时间进行了切片,每个模型之间是通过信息传递相连的独立网络,所模拟的函数或者说权重参数都具有当前时间段的特征,因此在模型原理和实际效果上都更能体现时间上信息,反应时间序列模式。由于在生成矩阵图像时加入了10%的外界因素(高斯噪音),使得生成的矩阵在保留了用户行为时间模型的同时也有了变化,使生成器能更加合理的模拟用户行为。本发明所实现的推荐估计性能上能提高9%~39%。
附图说明
图1是本发明方法整体流程图。
具体实施方式
下面结合附图进一步说明本发明的一个具体实施案例,如图1所示:
本实例采用的数据是movielens,由美国minnesta大学计算机科学与工程学院的grouplens项目组创办。此数据集描述了5星之内的电影不受限制的标记,用于给出用户推荐。数据集包含了671个用户对9066个电影的100004个评分。用户为随机选取,每个选取的用户至少评分20个电影。
步骤(1).构建矩阵图像:
以等距离滑动窗口的方法对用户历史行为的时间序列采样并构建矩阵图像样本集r:
t为样本总个数,n为用户个数,m为项目个数;
以30天为一个周期,每30天的数据生成一个二维的矩阵图像,每隔1天取次样,具体的如下:
其中
在此实例中,根据movielens数据集,选取出256个具有代表性的用户,选取标准为:1.全年无评论,2.评论分布均匀(评论数量超过6个月且有连续)。3.某段时间内有大量评论(且月份不连续)。此时用户个数为256,项目(电影)个数为数据集中的所有电影9066。此时所构成的是用户对电影的评分矩阵
步骤(2).构建循环生成对抗网络:
循环生成对抗网络由两个生成对抗网络和一个编码器组成。具体包括:
(2-1).构建两个结构一样的生成对抗网络a和b:
(211)构建生成器:用以生成与用户历史行为构建的矩阵图像相似的矩阵,由全连接,卷积层,反卷积层和规范化层组成;其结构如下:
(2111).构建矩阵图像:由两层反卷积层和一层全连接层构成。对输入的矩阵图像进行恢复。
(2112)特征提取:由3层卷积层193个3×3的卷积核构成(每层的卷积核个数分别为128,64,1)。将反卷积后的图像进行保留图像大小的特征提取。
(2113)规范化处理:将卷积后的图像做规范化处理,即使得其输出数据的均值接近0,其标准差接近1,规范化处理把分布一致弱化为均值与方差一致,然而即使是这种弱化的版本也对学习过程起到了重要效果。另一方面,bn的更重要作用是防止梯度弥散,它通过将激活值规范为统一的均值和方差,将原本会减小的激活值得到放大。
(2114)每一个卷积网络层后面都会跟着一个激活函数层,这里选用参数修正线性单元relu(rectifiedlinearuint)。激活函数可以被定义为f(x)=max(0,x)。
(212)构建判别器:判别器的过程与生成器相反,用来判断生成器生成图像的准确性,由卷积层和全连接层组成。其结构如下:
(2121)特征提取:由4层卷积层480个3×3的卷积核构成(每层的卷积核个数分别为32,64,128,256),提取矩阵图像特征。
(2122)每一个卷积网络层后面都会跟着一个激活函数层,这里选用参数修正线性单元leakyrelu(rectifiedlinearuint)。激活函数可以被定义为f(x)=max(0,x)+leak×min(0,x)(leak是一个很小的常数,这样保留了一些负轴的值,使得负轴的信息不会全部丢失)。
(2-2).构建编码器:编码器用来压缩图像,由3层全连接层组成。全连接层的神经元个数分别是512,512,100。用leakyrelu作为激活函数。
步骤(3).循环生成对抗网络内部过程,包括:
(3-1).构建矩阵图像:
输入一个100×1的高斯噪音矩阵给第一个生成对抗网络a中的生成器,先通过m层反卷积操作,将噪音矩阵逐渐构建成图像矩阵;每层反卷积之后再用一层卷积层操作提取特征,最后生成一个rn×m的矩阵图像;
(3-2).判别图像真伪:
从采样样本集r中选取一部分连续矩阵图像样本与生成器生成的l个矩阵图像组合成为训练样本
(3-3).计算auc和mse:
用生成器生成新的矩阵图像,与原矩阵图像对比,计算auc和mse;所述的auc为模型评价指标,越接近1,说明模型效果越好;所述的mse为误差评价指标,越接近0,说明模型效果越好;
其中pt表示矩阵图像正样本点的预测概率,pf表示矩阵图像负样本点的预测概率,因此pt应该接近1,pf应该接近0,i(pt,pf)表示预测正样本概率大于负样本概率的样本数量;
其中f(xj)为预测图像上j点的值,yj为真实图像上j点的值;
(3-4).特征提取压缩图像:
当生成器生成的矩阵图像的auc大于阈值k1且mse小于阈值k2时,认为生成器生成的图像是真的,将其放入编码器,压缩成为90×1的矩阵,再随机生成一个高斯噪音10×1的矩阵,然后将两者合并为一个100×1的矩阵,作为下一个生成对抗网络b的初始输入值,0.9<k1<1.0,0.7<k2<0.9;
(3-5).重复(3-1)~(3-4),区别只是将对抗网络的顺序互换。
步骤(4).训练循环生成对抗网络:
本实施例设置优化器adam学习率为0.0002,卷积核大小为3×3,卷积核移动步长为2,激活函数leakyrelu在第三象限线段斜率为0.2,归一化动量为0.8。通过优化器adam,更新网络参数,使其逼近或到达最优值,从而使交叉熵损失函数(cross-entropycostfunction)到达最小值。利用keras完成并训练上述网络,直至代价损失减小到一定程度且训练到达迭代最大次数。
步骤(5).生成推荐列表:
网络中的生成器生成新的矩阵图像。对图中某一个用户的行像素点做排序,将数值大的前n个列出作为该用户的推荐列表。
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。