一种基于因子分解机的神经注意力机制手机应用推荐模型的制作方法

文档序号:23382972发布日期:2020-12-22 13:46阅读:133来源:国知局
一种基于因子分解机的神经注意力机制手机应用推荐模型的制作方法

本发明属于电子商务技术领域,涉及一种融合注意力机制的神经网络手机应用推荐模型。



背景技术:

互联网应用程序的许多预测性任务需要建模分类变量,比如为用户进行手机应用的推荐。为了应用标准的机器学习技术,这些预测模型总是通过独热编码方法转换成一组二进制特征,使得合成的特征向量高度稀疏。要从这些稀疏的数据中学习有效信息,对特征之间的相互作用进行提取是至关重要的。研究发现,人们通常在吃饭的时间段下载送餐的应用,这可以看出,应用的类别和时间戳的二阶交互可以看作手机应用推荐的信号。而因子分解机是一个较为流行的提取特征交互的方式,以线性的方式提取特征间的交互,但是由于其复杂度,通常只考虑到二阶的特征交互,无法捕获高阶的特征交互,此外,因子分解机对所有的特征交互都采用相同的权重,即对于不同的预测结果特征的重要程度都相同,这很有可能引入噪声,并对推荐性能造成不利影响。近几年,深度神经网络在工业领域应用十分广泛,用于非线性特征交互的学习,取得了不错的成果,但是模型结构复杂,优化较为困难。本发明对上述弊端进行改进,从而提高手机应用的推荐效果。



技术实现要素:

本发明的目的是提供一种新的手机应用推荐模型,该模型基于神经网络和注意力机制,提高和深化了因子分解机模型,解决了因子分解机模型只能捕获二阶特征交互以及对所有的特征交互采用相同权重的问题,本发明也适用于一般的推荐系统。

本发明所采用的技术方案是:

首先是数据的获取。我们采用frappe手机网站中用户使用手机应用的数据集,该数据集包括了96203个用户在不同上下文下的应用使用日志,每个日志包括用户id、应用id以及8个上下文特征(例如天气、地点等),我们将每个日志进行独热编码最终得到5382个特征向量,如果用户使用了系统推荐的应用,则标记为1。

其次是对于推荐模型的设计。所设计的推荐模型包括三部分:特征提取部分、注意力部分以及预测部分。特征提取部分包括一个输入层、嵌入层以及特征提取层;注意力部分包括注意力网络;预测部分包括池化操作、全连接层以及预测层。

特征提取部分的输入是稀疏向量。对于我们设计的手机应用推荐来讲,系统获得的数据是较为稀疏的,我们对每个日志进行独热编码,得到了5382个非零特征向量,然后,将每个非零特征传输到嵌入层中形成稠密向量,并在特征交互层执行特征交互操作。注意力部分包含一个注意力层,该层考虑了预测中不同特征交互的重要性。直到注意力层,该模型只能捕获一阶和二阶特征的交互。捕获的低阶特征交互将通过预测层的池化操作作为最终结果的一部分。现如今,人们已经被大量丰富的信息所淹没,数据形式多种多样,商家希望综合考虑多方面的信息从而为用户做出精准的手机应用推荐。因此,高阶特征的交互同样十分重要。为了能够学习复杂的高阶特征交互作用,我们在注意力层之上堆叠了一个全连接层,使用非线性激活函数以允许模型执行非线性建模。该模型可以同时捕获低阶和高阶特征交互。本专利设计的推荐模型可以表示为:

如果xi=0,代表第i个特征在实例中不存在,上式中w0表示整体的偏置,wi表示特征xi的权重,式子中的前两项类似于因子分解机的线性部分。第三项f(x)是模型的主要部分,其中x=[xfiled1,xfiled2,...,xfiledm],xfiledm则代表x的第m个字段。本发明的创新主要在于f(x),其包含了基于注意力机制的二阶特征交互部分以及全连接层网络提取的高阶特征交互部分。接下来对模型的每一部分进行阐述。

a.特征抽取部分

特征抽取部分主要包括输入层、嵌入层、特征交互层。

嵌入层“嵌入”一词最初起源和应用于自然语言处理领域,经典的word2vec是对于词向量的嵌入。嵌入层是一个以one-hot(独热编码)为输入、中间层节点为字向量维数的全连接层,而这个全连接层的参数,就是一个“字向量表”。该推荐模型的嵌入层是一个全连接层,该层的输入是frappe数据中获得的特征的独热编码,将高维稀疏特征转换为低维稠密的特征向量以降低计算维度。特征间的交互关系使用嵌入层学到的参数来表示,例如第i个手机应用特征的嵌入向量为vi,输入特征向量x的嵌入向量即vx={x1v1,...,xnvn},在此只考虑非零特征的嵌入向量vx={xivi},xi≠0。该层输入数据的维度可能不同,但是经过嵌入层输出后维度相同,且为稠密向量。该层得到的低维稠密的嵌入向量作为下一层特征交互层的输入。

特征交互层该层进行特征间的交互,它将frappe数据集经过嵌入层得到的向量两两交互形成相互作用的向量,并用向量的元素乘积来编码其相互作用。嵌入层的输出vx={xivi},(xi≠0)为该层的输入,特征交互层的输出表示为一组向量:

⊙表示两个向量的元素相乘。公式(2)由于需要计算所有成对的交互作用,其直接计算复杂度是o(kn2),因此我们通过简化公式(2)将复杂性降低为线性复杂度,简化过程如下:

此外,在对特征交互建模时,特征交互层不会引入额外的参数或成本。

b.注意力部分

为了区分不同特征对于预测目标的重要程度,我们提出使用注意力机制进行特征交互重要性的判断。在其他的应用推荐的过程中,系统可能只考虑到了单个特征对预测的影响,并对全部特征进行线性的加权,但是我们提出并不是所有的特征对用户的应用推荐有用,我们调查发现,青少年喜欢玩射击类的游戏,因此,在进行游戏应用推荐时,年龄和游戏的类别对于预测结果应分配较大的比重,而天气等因素应占据较小的比重。因此本发明通过一个注意力网络来计算不同特征对预测目标的注意力权重,然后对特征进行加权求和,权值越大,表明该特征对预测目标贡献越大。该方式不仅能够降低计算成本,而且削弱了噪声和冗余特征交互的影响。aij表示特征xi和xj交互的注意力分数,即特征交互对预测的重要程度。aij的计算可以分为两部分,如公式(4)所示:

其中wa、ba以及h为模型参数,wa∈rt×k,ba∈rt,h∈rt,t为注意力网络隐藏层的大小,k为嵌入层大小。为了使得我们的发明有更强的表达能力和泛化水平,我们决定引入非线性函数作为激励函数,通过大量的实验证明,本发明使用relu的效果最佳,模型的性能更好。

c.预测部分

预测部分主要由池化操作、全连接层网络以及预测层组成。

池化操作将注意力部分得出的frappe应用数据的注意力权重与数据的特征交互向量相乘进行求和池化操作,表示为公式(5):

池化操作的输出是一个k维的向量。该部分捕获了低阶的特征交互,并作为最终预测结果的一部分。

全连接层网络模型在经过特征交互层以及注意力层部分之后,已经提取到frappe数据中一阶特征和二阶特征的交互,可以根据用户的相关信息进行基础的应用推荐。但是当输入数据内容多样时,只考虑低阶特征交互会影响预测结果,为了提高预测精度,需要提取高阶的特征交互。因此在注意力组件之上堆叠一个全连接层,将注意力网络求和池化后的结果作为输入传递到该层,全连接层表示如下:

其中,l代表隐藏层的数量wi、bi以及σi,分别代表第i层的权重矩阵、偏置向量、激活函数。本文采用relu激活函数,让模型用非线性方式来学习高阶特征交互。

预测层该层将池化部分结果与全连接层网络的输出结果进行连接,转化为最终的预测分数,从而为用户进行手机应用的推荐:

向量g表示预测层神经元权重,b为本发明的加入的偏置项,为了更好的拟合数据,提高应用推荐的精度。

综上所述,整体模型可以表示为:

最后,为了提高神经网络模型的表达能力,我们使用relu作为激活函数。

本发明是一个通用的推荐系统,可以应用在多个推荐领域,为了证明本发明的有效性,我们在具体的数据上进行实验,都取得了不错的成果,相较于已有的一些推荐系统,推荐精度有所提高。

本发明的有益效果

1.本专利设计了一个针对多样性数据以及稀疏数据的手机应用推荐系统,同时采用神经网络和注意力机制,提高和改善了因子分解机,提取手机应用数据中的低阶和高阶特征交互,提高了手机应用推荐的多样新和精度。

2.本发明加入注意力机制能够区分手机应用数据中不同特征交互对不同用户的重要性,解决了传统推荐系统中提取全部特征进行预测的弊端,以及对所有特征交互赋予相同权重的问题。并且对于手机应用数据中特征交互的重要性是从数据中直接获得的,不需要任何领域知识或人工特征工程,节省了大量的时间。

3.本发明设计全连接网络,以非线性方式捕捉手机应用数据的高阶特征,使推荐系统对复杂结构数据具有更好的表达和泛化能力。与现有模型相比,只有一个隐含层的全连通层可以显著提高模型的性能,且模型结构简单,易于训练和优化,更有利于应用到实际中。

附图说明

图1是整体模型结构图;

图2是发明模型在movielens数据集的均方根误差图。

图3是发明模型在frappe数据集的均方根误差图。

图4是在movielens数据集上全连接层对模型的影响图。

图5是在frappe数据集上全连接层对模型的影响图。

图6是在movielens数据集上dropout和batchnormalization对模型的影响图。

图7是在frappe数据集上dropout和batchnormalization对模型的影响图。

具体实施方式

本发明提供一种新的融合注意力机制的深度推荐模型,可以应用到一般的推荐系统中,我们着重以手机应用推荐进行实际的操作。因为推荐数据形式的多样性以及稀疏性,如果只考虑推荐物品的低阶特征信息推荐效果不佳,还应学习更加稠密的高层语义,挖掘潜在信息。此外,用户对于物品的关注点不同,如果在对物品特征交互建模时采用相同的权重,预测偏差较大。因此本发明设计的推荐模型能够很好地提取物品的低阶和高阶的特征,还能够从原始数据中学习到不同特征交互的重要程度,提高推荐的精度。

下面结合附图和实施例对本发明进行进一步详细说明:

参考图1,是本发明的整体结构图,步骤包含如下:

a.为了验证发明的有效性和通用性,我们在实际的数据上进行部署,不仅包括手机应用数据,还采用电影推荐数据进行说明和验证。实验采用数据集frappe和movielens。frappe数据集包括了96203个用户在不同上下文下的应用使用日志,每个日志包括用户id、应用id以及8个上下文特征(例如天气、地点),我们将每个日志进行独热编码最终得到5382个特征向量,如果用户使用了系统推荐的应用,则标记为1。movielens数据集是用户对所观看不同类型电影的评分。我们将每一个实例转换为一个特征向量,最终得到90445个特征,如果用户为电影打标签则标记为1。

b.我们将数据按7:2:1的比例将数据划分为数据集、验证集和测试集。图2和图3分别展示了本发明在movielens数据集以及frappe数据集上的实验效果。实验首先进行特征的处理,使用独热编码方式对数据集进行处理,本发明采用隐式反馈的方式,通过浏览和点击项目来间接反映用户的偏好。与评分、评论等显式反馈相比,隐式反馈更容易获得,且隐式反馈的数量远高于显式反馈。此外,隐式反馈方式表达出的用户行为比显式反馈更能准确、全面地反映用户的偏好。为了保证模型的泛化能力,我们对每个数据集的数据采用正实例与负实例1:2的比例来进行配对。也即,对于每个正实例,我们随机选择两个负实例来与之匹配,并给负实例分配目标值-1。

b.将两个数据中处理好的稀疏特征向量传入嵌入层,输出为稠密的向量,再经过特征交互层来捕获低阶的特征交互。

c.为了区分不同特征对于预测结果的重要性,设计注意力层,使用注意力机制来确定其影响,注意力权重通过公式(4)来获得,权重值越大,说明该特征对于预测结果的贡献越大。

d.为了捕获高阶特征的交互,本发明设计一个全连接层,使用非线性的方式提取高阶的特征交互,使模型有更好的表达能力和泛化能力。图4和图5分别验证了在movielens以及frappe数据集上全连接层对模型的有效性。

e.本发明重点关注回归任务,使用平方和损失作为目标函数,如公式(9)所示。

通过优化目标函数对本发明进行训练,从而使模型达到最佳的效果。此外,为了防止过拟合现象的发生,本发明还提出同时采用dropout和batchnormalization的方式。dropout简单来讲就是神经网络在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。batchnornalization在实践中也有很好地效果。图6和图7分别展示了在两个数据集上使用这两种方法防止过拟合的有效性(图例中“1”代表添加此机制,“0”代表不加入此方法)。为了评估模型性能,评价指标采用均方根误差(rmse),均方根误差取值越低,表示模型预测性能越好。表1给出了不同嵌入层维度下本发明的rmse结果。

表1不同嵌入层维度下发明模型的结果

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