一种基于深度学习的个性化推荐方法与流程

文档序号:18601381发布日期:2019-09-03 22:41阅读:760来源:国知局
一种基于深度学习的个性化推荐方法与流程

本发明涉及推荐系统的技术领域,尤其是指一种基于深度学习的个性化推荐方法。



背景技术:

推荐系统是人与信息的连接器,用已有的用户特征以及用户过往的交互去预测用户与信息内容未来可能的交互行为。推荐系统根据不同的用户的历史行为、用户的兴趣偏好或者用户的人口统计学特征来选择推荐算法,或建立推荐模型,使用推荐算法或模型来产生用户可能感兴趣的项目列表,并最终推送给用户。

近些年,随着深度学习的研究不断发展,基于深度学习的推荐算法模型大量提出。基于深度学习的推荐模型具有许多优点:与线性模型不同,深度神经网络能够使用诸如relu、softmax、tanh等非线性激活函数对数据进行建模;深度神经网络能够从输入数据中有效地学习潜在的表示因子和高阶的特征交互,减轻了特征工程的工作;另外,深度神经网络在一些序列的模型任务中成果显著。

卷积神经网络中的一维卷积,常用于序列模型中。一维指的是卷积核的维度,其尺寸为k×1,k为卷积核在时间序列上滑动的时域窗口大小。一维卷积操作经常使用在信号处理中,用于计算信号的延迟累积。假设一个信号发生器每个时刻t产生一个信号xt,其信息的衰减率为wk,即在k个时间步长后,信息为开始时的wk倍。对于要处理序列的问题,还要考虑时间的因素,不能使用普通的cnn网络,引入一种称为因果卷积的技术。因为时间序列上的一维卷积,具有输入序列到输出序列的结构,输入与输出根据时间步一一对应。因果卷积,就是对于时间序列中第t时间步的输出只能依赖于前t步的输入,为防止信息泄露,不能使用未来的信息。具体的表现就是在填充补零的方式上,在序列起始处填充(k-1)个值全为0的输入信息,其中k为卷积核窗口长度。

注意力机制的基本思想是,从大量信息中有选择地提取出部分重要信息,并将焦点集中在到这些重要信息上,忽略掉其他不相关的的信息。而这种对于重要信息和不重要信息的区分,是通过不同的权重来表达的。权重越大则越重点关注对应的值。一般地,给定一个与任务相关的查询向量q,以及序列中的键值对[k,v],计算q与k的相关性或匹配程度,将这种相关性信息送入softmax函数,得到注意力分布,也就是权重系数。随后附加在各个值v上,加权求和,得到输出结果。

自注意力机制是对注意力机制的改进,其减少了对外部信息的依赖,更擅长捕捉自身数据或特征的内部相关性。传统的注意力机制,是利用源数据和隐藏层传递的隐藏状态来计算的,得到的是目标和数据之间的依赖关系,而自注意力是计算源数据或者输出数据本身之间的依赖关系。



技术实现要素:

本发明的目的在于克服现有技术的不足,提出了一种基于深度学习的个性化推荐方法,用于电影的推荐任务,任务目标为根据用户的观影时序行为序列,预测用户下一部会观看电影。基本过程为使用一维卷积来获取不同时刻的用户的兴趣特征,再通过自注意力机制根据不同时刻兴趣特征信息之间的相互关系,加权求和从全局角度来做出最终的推荐预测结果。

为实现上述目的,本发明所提供的技术方案为:一种基于深度学习的个性化推荐方法,包括以下步骤:

1)用户观看电影的历史行为特征数据预处理;

2)个性化推荐模型建模

2.1)嵌入层设计;

2.2)一维卷积网络层设计;

2.3)自注意力机制;

2.4)分类输出层与损失函数设计;

3)使用用户时序行为特征序列进行模型训练和测试。

在步骤1)中,将数据集中的评分信息数据按照每个用户分组,再按照时间戳进行排序,只关注用户与电影交互的隐性反馈,即只关心用户是否观看了某部电影,而不关心其评分。对于每个用户都有其相应的电影观看序列。随后对电影数据进行编码表示,电影id使用独热编码表示,使用与电影数量相同维度的向量进行表示。对于每部电影,只激活电影id相应位置的数据,即该位标1,其余位置为0。电影信息编码向量,作为每个用户观看序列中一个条目的数据。

在步骤2.1)中,全连接的嵌入层使用一个权重矩阵来对电影信息编码向量进行降维,用于将高维稀疏向量映射到低维密集向量,并使用非线性激活函数,学习特征之间的非线性关系,提取到特征表示信息。权重矩阵的形式为m×n,其中m为稀疏向量的维度,n为密集向量的维度,一般来说,m要远大于n。嵌入层可以看做是重新对原始数据进行降维编码,而编码的规则是通过在网络中训练权重而自动生成的。

在步骤2.2)中,使用多组卷积核为长度分别为1、2、3、4的一维卷积核进行卷积运算,同时运用因果卷积技术。经过卷积并使用激活函数后,将对应时间步的不同卷积核的输出结果进行拼接,生成拼接结果的时间序列,输出序列长度等于输入的序列长度,序列中每个时间步的输出向量维度等于4种长度卷积核数量之和。

在步骤2.3)中,对于卷积层的输出的向量序列,计算每个向量的自注意力,得到每个向量不同权重值,最后加权求和得到输出状态信息。在实际的实现中,以矩阵形式完成的,以便能更快进行处理。对于给定的输入序列x,将输入值通过不同的线性变换分别得到查询矩阵q,键矩阵k,值矩阵v:

q=wqx

k=wkx

v=wvx

式中,wq,wk,wv分别为对应于查询矩阵q,键矩阵k,值矩阵v的变换矩阵。然后用q、k计算评分,利用softmax函数将其结果归一化为权重分布,再乘以值矩阵v得到加权求和表示:

式中,z为最终的输出矩阵,d为变换矩阵的维度,上标t为矩阵转置操作。在此,只选择输出矩阵中最后一个向量作为输出值。

在本方法中使用的是多头自注意力,多头自注意力是使用多组不同的权重矩阵对输入数据变换,生成不同的多组查询、键和值,相当于是并行的多个自注意层,这样通过计算多次来捕获不同子空间的相关信息。最后多组自注意力再进行拼接,由于拼接操作会造成维度扩展,再进行一次降维的线性变换,恢复为之前的维度。使用多头注意力机制,每个自注意力层重点关注的部分是不一样的。

在步骤2.4)中,对于自注意力层的输出的状态信息,送入全连接的输出层,全连接层的激活函数使用softmax。softmax一般用于进行多分类的任务中,它可以将多个神经元分别输出,各自映射至(0,1)的区间内,所有的输出的累加和为1,满足概率的性质,因此可以将每个输出看成相对应分类的概率来理解,从而进行分类。总分类的数量即为总电影的数量,最终选择概率最高的多部生成推荐列表。损失函数使用分类交叉熵(categoricalcross-entropy),其公式如下:

式中,用loss表示损失,n为样本数,m为分类数;i表示样本中索引位置,j表示分类即向量中元素的索引位置,yij为实际元素值,y'ij为预测元素值;当yij为1时,计算损失,y'ij越接近于1,则损失越小,当yij为0时,则不考虑y'ij造成的损失。

在步骤3)中,将数据集划分训练集、验证集与测试集,使用预处理的训练集和验证集中用户观看序列进行模型训练。然后使用测试集进行测试,预测下一部用户可能观看的电影,评价标准使用召回率。

本发明与现有技术相比,具有如下优点与有益效果:

1、减少了类似深度学习的lstm模型中的串行操作,使用了卷积的并行操作,训练效率更高;

2、减少了深层结构,增加并行的层次结构,卷积层内权重共享,参数相对较少;

3、使用自注意力机制,这样不只是使用最后一条状态信息进行序列的预测,而是能够以权重的形式叠加各时刻的状态信息,生成最后的结果。

附图说明

图1为本发明方法的一维卷积层和自注意力层的结构。

具体实施方式

下面结合具体实施例对本发明作进一步说明。

本实施例所提供的基于深度学习的个性化推荐方法,分为三个阶段:用户观看电影的历史行为特征数据预处理,个性化推荐模型建模,使用用户时序行为特征序列进行模型训练和测试。

首先对用户观看电影的历史行为特征数据进行预处理,使用movielens1m电影推荐数据集进行电影推荐。movielens1m数据集是一个常用的推荐数据集,其中拥有6040个用户以及这些用户观看并进行了评分的3706部电影,共有超过1,000,000个评分。数据集中包含用户信息(用户id、性别、年龄、职业),电影信息(电影id、电影名称、类型),评分信息(用户id、电影id、评分、时间戳)。评分信息是每个用户分别对其所观看的相应的电影的评分,并用时间戳标出其观看的时间顺序,时间戳指的是从一个格林尼治的标准时刻起到用户观影时刻的总秒数。在这里只关注用户与电影交互的隐性反馈,即只关心用户是否观看了某部电影,而不关心其具体评分。

首先,将movielens数据集中的评分信息数据按照每个用户分组,再按照时间戳进行排序,对于每个用户都有其相应的电影观看序列。随后对电影数据进行编码表示,电影id使用独热编码表示,共有3706部电影,使用3706维向量进行表示。对于每部电影,只激活电影id相应位置的数据,即该位标1,其余位置为0。数据集中还提供电影相应的类型数据,包含“action”、“comedy”、“horror”等共有18种电影类型,在这里使用多热编码,使用18维向量表示,一部电影可能属于一种或多种类型,激活相应类型位置数据。电影信息编码组合成3724维的向量,作为每个用户观看序列中一个条目的数据。最后各取其中的10%的序列分别作为验证集和测试集,剩余训练集中的序列数为4832。

如图1所示,推荐模型建模步骤如下:

1)嵌入层

在全连接的嵌入层,将电影的3724维编码映射到80维的特征表示向量,激活函数选用tanh,每个时间步是80维的电影特征表示向量。

2)一维卷积网络层

使用各20组卷积核为长度分别为1、2、3、4的一维卷积核进行卷积运算,经过卷积,并使用激活函数tanh,分别生成20维的输出序列,将对应时间步的不同卷积核的输出结果进行拼接,生成拼接的80维的时间序列,输出序列长度等于输入的序列长度。将拼接序列送入下一层。

3)自注意力层

拼接后的80维用户兴趣序列送入多头自注意层,头数为4,即四个并行的自注意力层,输出拼接后降维为80维的输出向量。

4)分类输出层

最后的全连接层用于将自注意层的输出恢复成稀疏的电影编码,即3706维的电影id的编码,激活函数为softmax,得到的每个维度的值是用户与这个维度所表示的电影交互的概率,在预测时选择概率最高的多部电影生成推荐列表。

最后使用用户时序行为特征序列进行模型训练和测试。在实验中并没有固定每次选取的用户序列的长度,只确定了最大和最小的序列长度,分别为30和5。在训练时,可将步长统一设置为30,步长不足30的序列可在前面补充全为0的数据。这样,每次选取的序列长度随机,起始位置随机,相当于即便是对于同一个用户每次截取的序列也不尽相同,增大了随机性,减轻了过拟合的程度,更有利于泛化。训练过程中使用小批量梯度下降,批次大小为15。为进一步减少过拟合程度,在训练阶段,加入了加性高斯噪声,噪声层起到了正则化的作用,增强了随机性,有利于泛化。在实验中对输入数据加入了均值为0,标准差为0.01的加性高斯噪声。

具体参数设置见下表

本实施例最终测试召回率为33.77%,即能够为测试集中33.77%的用户正确推荐其下一部所观看的电影。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1