CN110874439B - 一种基于评论信息的推荐方法 - Google Patents
一种基于评论信息的推荐方法 Download PDFInfo
- Publication number
- CN110874439B CN110874439B CN201911139840.5A CN201911139840A CN110874439B CN 110874439 B CN110874439 B CN 110874439B CN 201911139840 A CN201911139840 A CN 201911139840A CN 110874439 B CN110874439 B CN 110874439B
- Authority
- CN
- China
- Prior art keywords
- user
- attention
- item
- attn
- enc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于评论信息的推荐方法,为了模拟真实场景,本发明的验证集和测试集数据不包括待预测用户对物品的评价,而训练集包括了待预测用户对物品的评价,本发明利用训练集中待预测用户对物品的评价指导深度学习模型学习用户已经做出的所有评论信息在物品被做出的所有评论信息上的注意力分布以及物品被做出的所有评论信息在用户已经做出的所有评论信息上的注意力分布,从而帮助模型更好地从用户评论和物品评论中提取出最有价值的信息,帮助使模型在验证集和测试集上更好地预测用户对物品的评分,提高了用户对物品评分的预测准确度,修正了现有方法存在的未考虑真实应用场景的缺点,并且其性能超越了现有的诸多方法。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种评论信息的推荐方法。
背景技术
随着电子信息产业的发展,人们的生活已经越来越离不开电子设备和互联网,在浏览各种网站的同时,人们的信息也在被各个网站所收集。每当你打开一个app或者网页时,在其后台,便有一个巨大的算法专门为你而运行,它会根据之前收集的所有关于你的信息为你推荐你最可能感兴趣的商品,音乐,电影,书籍等等(为了方便,后文统一称之为物品)。这种为用户推荐可能该兴趣物品的算法统称为推荐算法。
传统推荐系统领域常使用的信息包括用户对物品的评分信息,用户自身的身份信息,用户访问该网站或app时使用的设备信息等。这些数据中除了评分信息可以直接反应用户喜好外,其他信息对于用户喜好的贡献太小,而评分信息又太单一,只能反应用户对物品的整体喜好,不能反应用户具体喜欢哪些方面,不喜欢哪些方面。比如说,用户A1,A2对电影《唐人街探案》的评分都是5(满分5),但他们的偏好不同,A1给5分可能因为他喜欢看喜剧,A2给5分可能因为他喜欢王宝强,二人的评分虽然一样,但侧重点完全不同,单单依靠评分信息无法细致地判断用户的偏好,也就不利于为用户推荐物品。各个服务厂商认识到这个问题后,纷纷建立了评论机制,但这些评论多数依靠人工阅读然后指导商家改进,效率很低。为了能让推荐系统获得用户的评论信息,自然语言处理技术的使用成为了必然。
自然语言处理技术按照应用的算法类型可以分为两大类,一类是统计自然语言处理,另一类就是上文提及的基于深度学习的自然语言处理。相比而言,统计自然语言处理方法相对传统,现在的自然语言处理算法多是依靠深度学习,也有些算法依靠深度学习和一些统计方法(如条件随机场)的结合。造成自然语言处理领域由统计方法向深度学习方法过度的重要因素是词嵌入技术的发明,可以认为词嵌入技术是将深度学习引入自然语言处理领域的最重要环节。当我们希望计算机理解人类语言时,第一步要解决的问题就是如何把人类的语言表示成计算机认识的符号,这个问题的解决办法就是词嵌入。具体做法是,我们先将句子拆分成一系列的token(token可以是词,字,甚至是词缀,符号等),然后利用word2vec,Glove等算法根据所有语料计算出每个token的向量表示,这个向量表示就是这个token的词嵌入,词嵌入可以反应各个token之间的相对意义。
利用自然语言处理技术结合深度学习,我们可以从用户评论中提取特征从而获得更加丰富的用户偏好信息以及物品的特性信息,这些信息可以帮助推荐系统更细致地理解用户的爱好,从而为用户更精确地推荐其可能感兴趣的物品。本发明提出的基于用户评论的推荐算法就是为了利用评论信息提高推荐系统的精准度。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于评论信息的推荐方法解决了如何提高评论信息的推荐精度的问题。
为了达到以上目的,本发明采用的技术方案为:
本方案提供一种基于评论信息的推荐方法,包括如下步骤:
S1、获取用户已经做出的所有评论信息user_rev以及物品被做出的所有评论信息item_rev;
S2、将步骤S1获取的评论信息划分包括U2I的训练集,其中,U2I为该用户对该物品做出的评论信息;
S3、利用特征提取模块FEM对所述user_rev、item_rev以及U2I进行编码,并利用concat拼接模块对编码后的信息进行拼接,分别得到user_rev_enc、item_rev_enc和U2I_enc,其中,user_rev_enc为用户曾经做出的所有评论被编码后的张量信息,item_rev_enc为物品被做出所有评论被编码后的张量信息,U2I_enc为用户对物品做出的评论被编码后形成的张量信息;
S4、根据所述U2I_enc、user_rev_enc以及item_rev_enc训练深度学习模型,并计算得到深度学习模型的损失函数;
S5、根据所述损失函数,利用梯度下降法更新深度学习模型参数,并利用更新后的深度学习模型输出评论信息,从而完成信息的推荐。
本发明的有益效果是:本发明提出的基于用户评论信息的推荐方法修正了现有方法存在的未考虑真实应用场景的缺点。真实的应用场景中,我们希望提前预测用户对未消费过的物品的评分,既然没有消费过,故该用户也没有对该物品做出过评价,因此,为了模拟真实场景,本方法的验证集和测试集数据不包括待预测用户对物品的评价,而训练集包括了待预测用户对物品的评价。本发明利用训练集中待预测用户对物品的评价U2I指导模型学习user_rev在item_rev上的注意力分布以及item_rev在user_rev上的注意力分布,帮助深度学习模型在验证集和测试集上更好地预测用户对物品的评分。
再进一步地,所述特征提取模块FEM包括依次连接的词嵌入层EmbeddIng、卷积神经网络层CNN以及最大池化层MaxPooling,其中:
所述卷积神经网络层CNN中每个卷积核的卷积操作z的表达式如下:
z=V*W+b (1)
其中,*为卷积,V为输入的评论信息,W为卷积核中窗口状的参数块,b为卷积核中的偏差;
所述卷积神经网络层CNN中输出数据的维度表达式如下:
其中,q为输出的维度,p为评论长度,t为卷积的窗口大小,且t=1,3,5,padding为向评论信息两端填补的0的个数,S为卷积核在输入的评论信息上平移的步长。
上述进一步方案的有益效果是:本发明中不同窗口尺寸的卷积神经网络可以提取不同跨度的tokens之间的交互特征,而最大池化层可以从上述特征中筛选出最重要的特征。
再进一步地,所述步骤S4包括如下步骤:
S401、将所述U2I_enc和user_rev_enc输入至第一注意力机制模型attention,分别得到加权的用户编码Weighted user以及U2I_enc对user_rev_enc的注意力分布attn_user;
将所述user_rev_enc和item_rev_enc输入至协同注意力机制模型co_attention,分别得到加权的用户编码Weighted user、加权的物品编码Weighted item、user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
将所述U2I_enc和item_rev_enc输入至第二注意力机制模型attention,分别得到加权的物品编码Weighted item以及和U2I_enc对item_rev_enc的注意力分布attn_item;
S402、利用FM算法对所述第一注意力机制模型attention输出的加权的用户编码Weighted user进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第一MSE损失函数;
S403、利用FM算法对所述第二注意力机制模型attention输出的Weighted item进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第二MSE损失函数;
S404、利用concat拼接模块拼接所述协同注意力机制模型co_attention输出的加权的用户编码Weighted user和加权的物品编码Weighted item,并利用FM算法对拼接的数据进行特征组合得到预测结果;
S405、根据步骤S404中所述的预测结果以及训练集中包含的真实标签计算得到第三MSE损失函数;
S406、根据所述协同注意力机制模型co_attention输出的注意力分布attn_user以及第一注意力机制模型attention输出的注意力分布attn_user计算得到第一KL损失函数;
S407、根据所述协同注意力机制模型co_attention输出的注意力分布attn_item以及第二注意力机制模型attention输出的注意力分布attn_item计算得到第二KL损失函数;
S408、根据所述第一MSE损失函数、第二MSE损失函数、第三MSE损失函数、第一KL损失函数以及第二KL损失函数计算得到训练深度学习模型的损失函数。
上述进一步方案的有益效果是:本发明能够从用户对物品做出的评论信息U2I中提取的有用信息学习第一注意力机制模型attention和第二注意力机制模型attention的注意力分布attn_user和attn_item,然后利用它们指导协同注意力机制模型co_attention的注意力分布attn_user和attn_item的学习,从而帮助协同注意力机制模型co_attention更好地对编码后的用户评论和物品评论进行加权。
再进一步地,所述步骤S401包括如下步骤:
S4011、将所述U2I_enc和user_rev_enc分别输入至第一注意力机制模型attention,将所述user_rev_enc和item_rev_enc分别输入至协同注意力机制模型co_attention,以及将所述U2I_enc和item_rev_enc分别输入至第二注意力机制模型attention,其中,U2I_enc为用户对物品做出的评论被编码后形成的张量信息,user_rev_enc为用户曾经做出的所有评论被编码后的张量信息,item_rev_enc为物品被做出所有评论被编码后的张量信息;
S4012、根据步骤S4011中输入的数据利用矩阵乘法分别计算得到第一注意力机制模型attention的相似度矩阵attn_u、第二注意力机制模型attention的相似度矩阵attn_i以及协同注意力机制模型co_attention的的相似度矩阵attn;
S4013、根据所述第一注意力机制模型attention的相似度矩阵attn_u得到第一注意力机制模型attention的用户评论的注意力分布attn_u;
根据第二注意力机制模型attention的相似度矩阵attn_i得到第二注意力机制模型attention的物品评论的注意力分布attn_i;
S4014、从所述协同注意力机制模型co_attention的相似度矩阵中的每一行以及每一列中各取一最大值,并根据每一行的最大值组成用户评论的注意力分布attn_u,以及根据每一列的最大值组成物品评论的注意力分布attn_i;
S4015、利用softmax归一化算法计算得到所述第一注意力机制模型attention的用户评论的注意力分布attn_u中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对user_rev_enc的注意力分布attn_user;
利用softmax归一化算法计算得到所述第二注意力机制模型attention的用户评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对item_rev_enc的注意力分布attn_item;
利用softmax归一化算法分别计算得到所述协同注意力机制模型co_attention的用户评论的注意力分布attn_u以及物品评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
S4016、根据协同注意力机制模型co_attention以及第一注意力机制模型attention中的用户评论的注意力分布attn_user,计算得到加权的用户评论编码Weighteduser;
根据协同注意力机制模型co_attention以及第二注意力机制模型attention中的物品评论的注意力分布attn_item,计算得到加权的物品评论编码Weighted item。
再进一步地,所述步骤S4015中利用softmax归一化算法计算得到用户评论的注意力分布attn_u中每个评论位置的归一化概率attn_u[a]的表达式如下:
其中,eattn_u[a]为以用户的第a篇评论的注意力分布为指数运算,eattn_u[j]为以用户的第j篇评论的注意力分布为指数的指数运算;
利用softmax归一化算法计算得到物品评论的注意力分布attn_i中每个评论位置的归一化概率attn_item[a]的表达式如下:
其中,eattn_i[a]为以物品的第a篇评论的注意力为指数的指数运算,eattn_i[j]为以物品的第j篇评论的注意力为指数的指数运算。
上述进一步方案的有益效果是:本发明中对协同注意力机制模型co_attention通过编码后的用户评论和物品评论的交互,根据双方不同评论的相关性,计算双方相互的注意力分布,用次注意力分布对双方进行加权,可以帮助模型对更重要的编码后的评论信息给予更高的权重。
再进一步地,所述步骤S4016中加权的用户评论编码Weighted user的表达式如下:
Weighted user=attn_user×u (5)
其中,attn_u为用户评论的注意力分布attn_u,u为用户评论的张量信息;
所述加权的物品评论编码Weighted item的表达式如下:
Weighted item=attn_item×i (6)
其中,attn_i为物品评论的注意力分布,i为物品评论的张量信息。
再进一步地,所述利用FM算法进行特征组合y的表达式如下:
其中,w0为偏置参数,wi为一阶参数,xi为输入的第i维数据,wij为二阶参数,xj为输入的第j维数据,n为输入的维度。
上述进一步方案的有益效果是:本发明中利用FM算法可以对输入特征进行有效的组合,提取更高阶特征,提高深度学习模型的性能。
再进一步地,所述第一MSE损失函数、第二MSE损失函数以及第三MSE损失函数的表达式均如下:
MSE=∑(pred-label)2 (8)
其中,pred为FM模块输出的预测评分,label为真实标签。
上述进一步方案的有益效果是:本发明中MSE损失函数衡量了两个输入标量之间的差异,用MSE作为损失函数可以使深度学习模型的评分预测值更加准确。
再进一步地,所述第一KL损失函数以及所述第二KL损失函数的表达式均如下:
其中,DKL(·)为KL损失函数,p,q均为概率分布。
上述进一步方案的有益效果是:本发明中KL散度损失函数可以衡量两个分布之间的差异,可以帮助协同注意力机制模型co_attention的用户评论注意力分布attn_user学习第一注意力机制模型attention的attn_user,帮助协同注意力机制模型co_attention的物品评论注意力分布attn_item学习和第二注意力机制模型attention的物品评论的注意力分布attn_item,进而把从U2I中学到的有用信息传递给协同注意力机制模型co_attention。
再进一步地,所述步骤S408中深度学习模型的损失函数的表达式如下:
Loss=MSEleft+MSEmiddle+MSEright+KLLossleft+KLLossright (10)
其中,Loss为深度学习模型的损失函数,MSEleft为第一MSE损失函数,MSEmiddle为第二MSE损失函数,MSEright为第三MSE损失函数,KLLossleft为第一KL损失函数,KLLossright为为第二KL损失函数。
上述进一步方案的有益效果是:本发明通过以上设计能够同时学习多个任务,第一MSE损失函数和第三MSE损失函数对应的辅助任务可以帮助第一attention模型和第二attention模型利用U2I评论分别学习其在用户评论和物品评论上的注意力分布。第一KL损失函数和第二KL损失函数相对应的辅助任务可以帮助第一attention模型和第二attention模型将学到的注意力分布传递给协同注意力机制模型co_attention,这样就可以把从U2I中学习到的有用信息传送给协同注意力机制模型co_attention。第二MSE损失函数对应主任务,其目的是帮助主模型更好地预测用户对物品的评分。
附图说明
图1为本发明的方法流程图。
图2为本实施例中特征提取模块FEM的结构图。
图3为本实施例中真实应用场景下的深度学习模型结构图。
图4为本实施例中的矩阵示例图。
图5为本实施例中训练深度学习模型时的结构图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
实施例
本发明所要解决的基本问题是:在电商应用场景中,根据系统收集的用户曾经做出的所有评分和评论信息user_rev以及物品被做出的所有评分和评论信息item_rev,预测用户对其未消费物品的评分,进而帮助商家为用户推荐其未消费过但可能感兴趣的商品。也就是说,本发明输入的是user_rev和item_rev,输出是预测的用户对物品的评分。当我们希望预测用户U对他未消费过的物品I的得分时,我们可以将预测用户U曾经做出的所有评论信息user_rev以及未消费过的物品I被做出的所有评论信息item_rev输入深度学习模型,深度学习模型的输出即是预测出的用户U对他未消费过的物品I的评分,如果预测的评分高,说明用户U对物品I感兴趣的可能性高,我们便可以把物品I推荐给用户U。
现有技术中共同缺点在于其没有模拟真实应用场景,即在验证集和测试集中没有剔除待预测用户对待预测物品的评论信息U2I。举例来说:比如我们希望预测用户U对物品I的评分,模型的输入是用户U的所有评论信息user_rev以及物品I的所有被评论信息item_rev,由于训练集,验证集和测试集都是根据原始数据集构建的,所以不论上述过程发生在训练,验证或者测试阶段,预测用户U对物品I做出的评论U2I都是已知的,所以,不论在训练集,验证集或是测试集中,输入深度学习模型的评论信息user_rev和item_rev都已经包含了待预测用户对待预测物品的评论信息U2I,并且,由于待预测用户U对物品I的评分就是待预测用户对待预测物品的评论信息U2I所对应的评分,因此,待预测用户对待预测物品的评论信息U2I对于该次预测的贡献是巨大的。而在真实的应用场景中,我们预测用户对一些物品的评分时,该用户肯定是没有使用过这些物品的(不然也就没必要预测了)自然也就不存在该用户对该物品的评论U2I。所以现有技术的问题构建造成了数据泄露,与真实应用场景不符,测试集理应模拟真实应用场景,而验证集应该和测试集尽量相似,所以验证集和测试集都应该模拟真实场景,即不包含U2I信息。由于U2I对于预测任务的巨大贡献,试想一下,如果深度学习模型能够发现U2I并给予重点关注,即根据U2I预测A对B的评分,这就和本方向的真实应用场景大相径庭了。有些论文曾指出,使用现有技术,在其验证和测试阶段,从输入数据中删除待预测用户对待预测物品的评论后,模型的预测效果下降很多,说明现有技术一二在真实应用场景下还有很多不足。
因此,本发明在构建深度学习模型和算法时,明确了以下方针:训练时,深度学习模型的输入可以包含待预测用户对待预测物品的评论信息U2I,因为这些数据是提前收集的。而验证集和测试集不能包含待预测用户对待预测物品的评论信息U2I,因为它们要模拟真实应用场景的预测和推荐过程。所以,本发明所要解决的主要问题在于:如何构建一个方法使其可以根据某用户曾经做出的所有评论user_rev(剔除U2I)和某物品被做出的所有评论item_rev(剔除U2I)预测该用户对该物品的评分。进一步的,由上述分析可知,U2I对本任务的构建贡献是巨大的,虽然在验证和测试的过程中不能使用U2I,但是训练过程中可以使用它,因此,本发明要解决的另一个问题,同时也是本发明的核心创新点就是在训练的过程中如何利用U2I指导深度学习模型从用户评论和物品评论中选择出对预测任务贡献较大的信息,进而帮助模型在验证和测试的过程中,在没有U2I的指导下,自己独立地选择有价值的信息。其实现方法如图1所示,包括如下步骤:
S1、获取用户已经做出的所有评论信息user_rev以及物品被做出的所有评论信息item_rev;
S2、将步骤S1获取的评论信息划分包括U2I的训练集,其中,U2I为该用户对该物品做出的评论信息;
S3、利用特征提取模块FEM对所述user_rev、item_rev以及U2I进行编码,并利用concat拼接模块对编码后的信息进行拼接,分别得到user_rev_enc、item_rev_enc和U2I_enc,其中,user_rev_enc为用户曾经做出的所有评论被编码后的张量信息,item_rev_enc为物品被做出所有评论被编码后的张量信息,U2I_enc为用户对物品做出的评论被编码后形成的张量信息;
所述特征提取模块FEM包括依次连接的词嵌入层EmbeddIng、卷积神经网络层CNN以及最大池化层MaxPooling,其中:
所述卷积神经网络层CNN中每个卷积核的卷积操作z的表达式如下:
z=V*W+b (1)
其中,*为卷积,V为输入的评论信息,W为卷积核中窗口状的参数块,b为卷积核中的偏差;
所述卷积神经网络层CNN中输出数据的维度表达式如下:
其中,q为输出的维度,p为评论长度,t为卷积的窗口大小,且t=1,3,5,padding为向评论信息两端填补的0的个数,S为卷积核在输入的评论信息上平移的步长;
S4、根据所述U2I_enc、user_rev_enc以及item_rev_enc计算深度学习模型,并计算得到深度学习模型的损失函数,其实现方法如下:
S401、将所述U2I_enc和user_rev_enc输入至第一注意力机制模型attention,分别得到加权的用户编码Weighted user以及U2I_enc对user_rev_enc的注意力分布attn_user;
将所述user_rev_enc和item_rev_enc输入至协同注意力机制模型co_attention,分别得到加权的用户编码Weighted user、加权的物品编码Weighted item、user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
将所述U2I_enc和item_rev_enc输入至第二注意力机制模型attention,分别得到加权的物品编码Weighted item以及和U2I_enc对item_rev_enc的注意力分布attn_item;
所述步骤S401的实现方法如下:
S4011、将所述U2I_enc和user_rev_enc分别输入至第一注意力机制模型attention,将所述user_rev_enc和item_rev_enc分别输入至协同注意力机制模型co_attention,以及将所述U2I_enc和item_rev_enc分别输入至第二注意力机制模型attention;
S4012、根据步骤S4011中输入的数据利用矩阵乘法分别计算得到第一注意力机制模型attention的相似度矩阵attn_u、第二注意力机制模型attention的相似度矩阵attn_i以及协同注意力机制模型co_attention的的相似度矩阵attn;
S4013、将所述第一注意力机制模型attention的相似度矩阵attn_u作为第一注意力机制模型attention的用户评论的注意力分布attn_u;
将第二注意力机制模型attention的相似度矩阵attn_i作为第二注意力机制模型attention的物品评论的注意力分布attn_i;
S4014、从所述协同注意力机制模型co_attention的相似度矩阵中的每一行以及每一列中各取一最大值,并根据每一行的最大值组成用户评论的注意力分布attn_u,以及根据每一列的最大值组成物品评论的注意力分布attn_i;
S4015、利用softmax归一化算法计算得到所述第一注意力机制模型attention的用户评论的注意力分布attn_u中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对user_rev_enc的注意力分布attn_user;
本实施例中,所述归一化概率即为U2I_enc对user_rev_enc的注意力分布attn_user;
利用softmax归一化算法计算得到所述第二注意力机制模型attention的用户评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对item_rev_enc的注意力分布attn_item;
本实施例中,所述归一化概率即为U2I_enc对item_rev_enc的注意力分布attn_item;
利用softmax归一化算法分别计算得到所述协同注意力机制模型co_attention的用户评论的注意力分布attn_u以及物品评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
利用softmax归一化算法计算得到用户评论的注意力分布attn_u中每个评论位置的归一化概率attn_user[a]的表达式如下:
其中,eattn_u[a]为以用户的第a篇评论的注意力分布为指数运算,eattn_u[j]为用户的第j篇评论的注意力分布为指数的指数运算;
利用softmax归一化算法计算得到物品评论的注意力分布attn_i中每个评论位置的归一化概率attn_item[a]的表达式如下:
其中,eattn_i[a]为以物品的第a篇评论的注意力为指数的指数运算,eattn_i[j]为物品的第j篇评论的注意力为指数的指数运算;
S4016、根据协同注意力机制模型co_attention以及第一注意力机制模型attention中的用户评论的注意力分布attn_user,计算得到加权的用户评论编码Weighteduser;
根据协同注意力机制模型co_attention以及第二注意力机制模型attention中的物品评论的注意力分布attn_item,计算得到加权的物品评论编码Weighted item
将所述user_rev_enc和item_rev_enc输入至协同注意力机制模型co_attention,分别得到加权的用户编码Weighted user、加权的物品编码Weighted item、user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
将所述U2I_enc和item_rev_enc输入至第二注意力机制模型attention,分别得到加权的物品编码Weighted item以及和U2I_enc对item_rev_enc的注意力分布attn_item,其中,U2I_enc为用户对物品做出的评论被编码后形成的张量信息,user_rev_enc为用户曾经做出的所有评论被编码后的张量信息,item_rev_enc为物品被做出所有评论被编码后的张量信息;
所述加权的用户评论编码Weighted user的表达式如下:
Weighted user=attn_user×u (5)
其中,attn_user为用户评论的注意力分布,u为用户评论的张量信息;
所述加权的物品评论编码Weighted item的表达式如下:
Weighted item=attn_item×i (6)
其中,attn_item为物品评论的注意力分布,i为物品评论的张量信息
S402、利用FM算法对所述第一注意力机制模型attention输出的加权的用户编码Weighted user进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第一MSE损失函数;
S403、利用FM算法对所述第二注意力机制模型attention输出的Weighted item进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第二MSE损失函数;
S404、利用concat拼接模块拼接所述协同注意力机制模型co_attention输出的加权的用户编码Weighted user和加权的物品编码Weighted item,并利用FM算法对拼接的数据进行特征组合得到预测结果;
所述利用FM算法进行特征组合y的表达式如下:
其中,w0为偏置参数,wi为一阶参数,xi为输入的第i维数据,wij为二阶参数,xj为输入的第j维数据,n为输入的维度;
S405、根据步骤S404中所述的预测结果以及训练集中包含的真实标签计算得到第三MSE损失函数;
S406、根据所述协同注意力机制模型co_attention输出的注意力分布attn_user以及第一注意力机制模型attention输出的注意力分布attn_user计算得到第一KL损失函数;
S407、根据所述协同注意力机制模型co_attention输出的注意力分布attn_item以及第二注意力机制模型attention输出的矩阵attn_item计算得到第二KL损失函数;
S408、根据所述第一MSE损失函数、第二MSE损失函数、第三MSE损失函数、第一KL损失函数以及第二KL损失函数计算得到训练深度学习模型的损失函数;
所述第一MSE损失函数、第二MSE损失函数以及第三MSE损失函数的表达式均如下:
MSE=∑(pred-label)2 (8)
其中,pred为FM模块输出的预测评分,label为真实标签;
所述第一KL损失函数以及所述第二KL损失函数的表达式均如下:
其中,DKL(·)为KL损失函数,p,q均为概率分布;
所述深度学习模型的损失函数的表达式如下:
Loss=MSEleft+MSEmiddle+MSEright+KLLossleft+KLLossright (10)
其中,Loss为深度学习模型的损失函数,MSEleft为第一MSE损失函数,MSEmiddle为第二MSE损失函数,MSEright为第三MSE损失函数,KLLossleft为第一KL损失函数,KLLossright为为第二KL损失函数。
S5、根据所述损失函数利用梯度下降法更新深度学习模型参数,并利用更新后的深度学习模型输出评论信息,从而完成信息的推荐。
下面对本发明作进一步说明。
1、预处理和构建训练集、验证集和测试集。
本发明主要使用的数据集是Yelp19数据集。首先对数据集进行预处理,并构建训练集,验证集,测试集。为了保证每位用户有足够的评论信息,每个物品有足够的被评论信息,我们首先对数据进行了筛选,剔除了评论数量较少的用户和商品,得到用户集合和商品集合,然后剔除用户集合中用户对非商品集合内商品的评分和评论信息,最终得到30898个用户。对每个用户,取一条评分信息作为验证集,一条评分信息作为测试集,其余作为训练集。最终的训练集包含了1455338条评分信息,验证集和测试集包含30898条评分信息。本实施例中使用某用户的评论集合user_rev代表该用户,以反应该用户的偏好,使用某物品被做出的评论集合item_rev代表该物品,以反应该物品的属性特质。但要注意,训练集中可以包含用户对物品的评论U2I,但验证集和测试集为了模拟真实应用环境,不可以包含用户对物品的评论U2I。因此,在训练集中保留用户对物品的评价U2I,验证集和测试集中剔除用户对物品的评价U2I。举例说明,比如我们要预测用户U对物品I的评分,如果上述过程发生在训练中,即利用训练集对深度学习模型进行训练时,深度学习模型的输入数据为用户U的user_rev、物品I的item_rev以及用户U对物品I的评论信息U2I。如果上述过程发生在验证和测试中,即利用验证集和测试集对深度学习模型进行验证和测试时,或是在真实应用场景下,深度学习模型的输入只有U的user_rev和I的item_rev。
2、FEM特征提取模块
本发明使用深度学习模型。评论信息输入深度学习模型后首先就会进入特征提取模块FEM,特征提取模块FEM由词嵌入层,卷积神经网络层,最大池化层组成,这三层都是基础的深度学习模块,评论信息依次通过特征提取模块FEM完成编码过程。用户已经做出的所有评论信息user_rev通过特征提取模块FEM后被编码为用户曾经做出的所有评论的张量信息user_rev_enc,物品被做出的所有评论信息item_rev通过特征提取模块FEM后被编码为物品被做出所有评论的张量信息item_rev_enc,用户对物品做出的评论信息U2I通过特征提取模块FEM后被编码为用户对物品做出的评论被编码后形成的向量信息U2I_enc。其结构如图2所示,EmbeddIng层、CNN层以及MaxPooling层代表特征提取模块FEM,下面是输入,上面是输出。下面分别介绍特征提取模块FEM中的三个子模块。
(1)EmbeddIng层即词嵌入层,是深度学习模型的基础模块。词嵌入的目的是将人类的文字表示成具有相对意义的密集向量(成为词向量),从而方便计算机读取和识别。具体做法是,我们先将句子拆分成一系列的token(token可以是词,字,甚至是词缀,符号等),然后利用word2vec,Glove等算法根据所有语料计算出每个token的向量表示,即该token的词向量,词向量可以反应各个token之间的相对意义,意义相似的token具有相似的词向量。我们将token的向量降维到2维后画到二维坐标系中,可以看到相似意义的词语离得比较近,说明向量化的词嵌入可以表达token的相对意义。有了密集向量化的词嵌入后,我们可以用词嵌入代替token输入深度学习模型,从而让计算机理解人类语言。替换过程的具体操作类似于查表,每个token的词向量是事先训练好的,我们使用网上开源的Glove词向量。我们先将所有token进行编号,然后将token的编号作为key,其对应的词向量作为value构成键值对,EmbeddIng层即由该键值对组成。所有的评论信息在数据预处理阶段被切分成一个个的token组成的序列,然后用其对应的编号替换,输入EmbeddIng层,接着每个token依据编号被替换成为其对应的词向量。举例说明,评论信息为“I love this movie,......”,这篇评论首先被切分为token序列“I”,“love”,“this”,“movie”,......,假设它们对应的编号分别为1,4,2,10,...,则该句子被替换为[1,4,2,10,......]。然后对数据统一长度,所有评论长度设置为30个tokens,长的切断,短的用0补齐。每一条评论的维度为1×30,1是评论的数量,30是评论的长度。假设EmbeddIng层维度是50,该句子经过EmbeddIng后,每个编号都被替换为对应的词向量,整体的维度变成1×30×50。
(2)CNN层即卷积神经网络层,CNN包含了数个卷积核,每个卷积核包含一个窗口状的参数块W以及一个维度为1的偏差b,对于2D卷积,W的维度是二维的t×t,对于一维卷积,W维度是1维的t,t也成为卷积操作的窗口大小。每个卷积核分别在输入数据上进行卷积操作,如下式所示。
z=V*W+b (1)
其中,*为卷积,V为输入的评论信息,W为卷积核中窗口状的参数块,b为卷积核中的偏差,其具体操作为将卷积核在输入数据V上平移,每次平移的步长为S,在每个位置,计算卷积核中每个参数和其在V上对应位置数据的乘积,然后将所有乘积求和。
本实施例中,输入卷积神经网络层CNN的数据V维度为1×30×50,为了在评论长度所在维度(即值为30的维度)进行卷积,我们先将数据V的后两维交换位置成为1×50×30,即把评论长度所在维度置后,这样的话评论中相邻位置的词在卷积操作中可以产生交互,提取更深层次的信息。我们选择一维卷积,卷积核个数和平移步长分别为25和1。考虑到评论中表达完整信息可能需要不同长度的token序列,我们需要让不同长度的token序列产生交互,因此,设计3种t值不同的卷积窗口,t的取值分别为1,3,5,数据分别通过3种不同窗口大小的卷积核。输出数据的最后一维在卷积操作后的维度如下式所示。
其中,p是输入数据最后一维维度,即评论长度,q是输出的维度,padding是向数据两端填补的0的个数。为了保证3种卷积核的输出维度和输入维度相同,我们对它们的padding值分别设置为0,1,2。如此,例子中的输入数据经过每种卷积核后的维度均为1×25×30,然后拼接3种卷积核的输出,维度变成1×75×30。
(3)MaxPooling层即最大池化层,其目的在于提取输入数据中,每个窗口内最有价值的数据。窗口大小为超参数,我们设置为5,和卷积操作类似,最大池化的窗口也需要在输入数据上做平移,在每个平移位置提取窗口中的最大值。
此时数据维度变成1×75×6,将后两维融合,维度变成1×450。
综上所述,特征提取模型FEM的工作到此完成。
3、真实应用场景下的模型结构图
本实施例中,上述提到过在真实应用环境中,当我们为用户U推荐其可能感兴趣的物品时,我们往往更希望寻找U未消费过的物品,因此我们需要预测用户U对其未消费过物品I的评分。既然U没有消费过物品I,自然也就不存在用户U对物品I的评论U2I。测试集和验证集需要模拟真实应用场景,因此在验证和测试过程中,不能输入待预测用户对待预测物品的评论U2I。
图3中,数据的流动方向为从下向上,user_rev和item_rev代表输入数据,FEM、concat、Co_attention以及FM代表模型主体,user_rev_enc、item_rev_enc、u、i、weighteduser以及weighted item是辅助的注释指代数据在模型中传递时的名称,最上方是模型的输出值即模型预测的用户对物品的评分。FEM模块即特征提取模块,concat模块指的是简单的拼接。为了统一数据,我们规定每个user_rev和item_rev的用户评论数为20,concat拼接模块把user_rev或者item_rev中的所有20篇评论经过FEM模块后的输出分别拼接到一起,维度为20×450,分别记为user_rev_enc,item_rev_enc。
本实施例中,Co_attention模型中有两个输入,分别为user_rev_enc和item_rev_enc,为了简便,用u和i代替。u和i的地位是等价的,对他们进行的操作完全对称。u和i首先通过一层全连接层,然后经过tanh激活函数,为增加模型可学习参数,提高模型的学习能力,即公式(11)如下,该操作不会改变数据维度。
然后就是计算注意力分布的操作,该操作有很多变种,可以采用加法操作,矩阵乘法操作等,本实施例中使用矩阵乘法操作,因为矩阵乘法操作可以帮助模型在u和i中较相似的特征上给予较大的注意力分布。矩阵乘法操作如公式(12)所示:
attn=u*i (12)
其中,针对协同注意力机制模型co_attention,u为user_rev_enc,i为item_rev_enc,对第一注意力机制模型attention或第二注意力机制模型attention,u为是U2I_enc,i为为user_rev_enc或者item_rev_enc。生成的attn矩阵的维度为20×20,其反应的就是user_rev中的20篇评论与item_rev中的20篇评论之间的注意力分布。由于之前选择了矩阵乘法操作,因此这个注意力的本质是相似度。如果user_rev中的某一篇评论a与item_rev中的某一篇评论b的相似度很高,评论a和评论b在attn矩阵中对应位置的元素值也会很大。
本实施例中,接下来从矩阵attn的每一行取出一个最大值,组成维度为20的attn_u,相似的,从attn的每一列取出一个最大值,组成维度为20的attn_i。这一步的操作可以理解为,为每一篇用户评论选取其与最相似物品评论的相似度,这个相似度可以用来衡量用户这一评论的重要性,相对的,为每一篇物品评论选取其与最相似的用户评论的相似度,这个相似度可以用来衡量物品这一篇评论的重要性。接下来做softmax归一化处理,对attn_u,attn_i的第a个元素的操作如公式(3)和(4)所示:
本实施例中,得到的attn_u和attn_i即分别为用户评论在物品评论上的注意力分布以及物品评论在用户评论上的注意力分布。用图4为例子再来解释一遍注意力分布的计算过程。
本实施例中,如图4所示,其中,u和i分别含有3篇评论,方块颜色越深说明其对应的两篇评论的相似度越高。本实施例中,用《唐人街探案》的例子,比如用户U喜欢演员王宝强,同时也喜欢看喜剧,当我们预测其对《唐人街探案》(称为I)这部电影的评分时(假设U还没看过I),我们希望模型可以从U之前做出的评论中发现他喜欢王宝强和喜剧,并从电影I被做出的评论中发现电影I是喜剧,且主演是王宝强。比如说U的评论u1中提到了类似“喜欢王宝强”的文字,物品I被做出的评论i1中提到了王宝强参演了这部电影,那么模型便可以发现u1和i1有较强的相似度,因此其对应方块颜色深。类似的,假设u3表达了用户喜欢喜剧的偏好,评论i3反映了电影I是喜剧,我们的模型很容易发现u3和i3的相似度,因此其对应的方块颜色很深。而对于u2,其评论的电影可能和电影I在演员阵容或者电影类型方面都没有交集,因此,其与i1,i2,i3的相似度都不高,颜色也就较浅。接下来对每一行取最大值,分别取出(u1,i1),(u2,i2),(u3,i3)组成矩阵attn_u,所述attn_u中的每个用户评论所在位置的值为该评论与item_rev中最相似评论的相似度。本实施例中,这步的操作其实是一种互相选择,因为user_rev中包含了与待预测电影有关的和无关的评论,item_rev中包含了与待预测用户有关的和无关的评论。以上的操作就是用user_rev和item_rev分别从对方中选择出最相关的评论信息。然后按照公式softmax归一化处理计算每个评论位置的归一化概率分布,或者称为注意力分布。按上例图中的颜色,假设三者对应的归一化概率分布(注意力分布)为0.4,0.1,0.5。根据上述可知,评论u2的电影可能和电影I在演员阵容或者电影类型方面都没有交集,因此与从评论u2所在行选出的相似度最高的评论对(u2,i1)的相似度相对于(u1,i1)和(u3,i3)来说也很低,因此,深度学习模型在评论u2上的注意力很低。
接下来用注意力分布乘以评论u,得到加权的用户评论weighted_u。其表达式如公式(5)和(6)所示:
Weighted user=attn_u×u (5)
Weighted item=attn_i×i (6)
本实施例中,根据上述可知,attn矩阵的维度是20×20,矩阵attn_u和矩阵attn_i的维度是20,评论u维度是20×450,因此公式attn=u·i输出的维度仍然是20×450。
本实施例中,Co-attention的输出一共有四个信息:用户评论的注意力分布attn_u,物品评论的注意力分布attn_i,加权的用户评论weighted_u以及加权的物品评论weighted_i。但是在真实应用或者验证,测试时,只使用后面两个输出,如图5所示。然后,拼接加权的用户评论weighted_u和weighted_i,维度变成40×450,并将拼接结果输入FM模块。
本实施例中,FM算法:全称Factor Machine,即因子分解机。在很多机器学习建模过程中,如果对特征直接建模,可能会忽略特征之间的交互信息,因此FM算法通过交叉特征进行特征组合从而提升模型的效果。其基本公式如下所示:
其中,x是输入数据,w是可训练参数。
4、训练时的深度学习模型结构
真实应用场景下以及验证和测试过程中的模型输入不包含U2I信息,但是在训练时,我们可以使用U2I,由于U2I与U对I的评分直接相关,因此在预测用户U对物品I的评分时,U2I可以做出巨大贡献,因此我们在训练时使用U2I评论,以指导深度学习模型学习如何从user_rev和item_rev中选择最重要的信息。训练时的模型结构如图5所示。
本实施例中,对比图3与图5,可见,图5的输入多了U2I,即待预测用户U对待预测物品I的评论信息。图4的模型部分相较图3多了两个attention模型,U2I对应的FEM模块以及左右两个FM模块。特征提取模型FEM和FM算法上面与上述相同,此处不再赘述。attention模型和上述的Co_attention模型(请补充分别对应的中文名)类似,其输入有两个,输出也有两个。attention模型的输入仍然用u和i来表示,其输出为Co_attention的一半。由上述可知,Co_attention模型的输出数据包括attn_u,attn_i,weighted_u,weighted_i,而attention的输出数据包括attn_u和weighted_u,或者attn_i和weighted_i,具体输出哪一个组合取决于具体需要。如图4所示,左边的第一attention模型中的i是U2I经过特征提取模块后形成的U2I_enc,而U2I_enc在右边的第二attention模型中扮演的是u的角色。对于左边的第一attention模型,希望获得U2I_enc在user_rev_enc上的注意力分布attn_u,以及由该注意力分布加权后的weighted_u。对于右边的第二attention模型,我们希望获得U2I_enc在item_rev_enc上的注意力分布attn_i,以及由该注意力分布加权后的weighted_i。
本实施例中,以左边的第一attention模型为例沿用上一节的数据描述具体说明。该模型中的u为user_rev_enc,i为特征编码后的U2I即U2I_enc。u的维度为20×450,i的维度为1×450。第一attention模型和第二attention模型的操作也包括了公式(11)、(12)、(3)、(4)(5)、(6),第一attention模型和第二attention模型中对于公式(3),(4),(5),(6)只包含了单边操作,即只包括公式(3),(5)或者只包括公式(4)和(6),且删去了(8)之前的对行列取最大值的操作。从维度看,公式(12)输出的attn相似度矩阵的维度变成了1×20,反应了U2I这一篇评论和user_rev这20篇评论的相似度。接下来直接i对u的注意力分布,即U2I_enc对user_rev_enc的注意力分布attn_u,最后再用该注意力分布加权user_rev_enc得到weighted_u。右边的attention中,U2I_enc扮演u的角色,求得U2I_enc在item_rev_enc上的注意力分布attn_i以及该注意力加权item_rev_enc后得到的weighted_i。
本实施例中,根据上述可知,真实应用场景下以及验证,测试时,Co-attention模型的4个输出中只使用weighted_u,weighted_i,但在训练时,另外两个输出attn_u和attn_i也被使用。如图5所示,Co_attention模型的attn_u和attn_i分别和attention输出的attn_u和attn_i输入KL损失函数。KL损失函数是基于KL散度定义的损失函数,其公式(9)所示。
其中,p,q是KL散度的两个输入,且p,q都是概率分布,KL散度值越大,说明p,q两个概率分布的差距越大。损失函数是深度神经网络优化的目标函数,使损失函数下降可以使p,q的分布逐步逼近。
本实施例中,输入KL损失函数的四个值:
(a)Co_attention模型输出的item_rev在user_rev上的注意力分布attn_user;
(b)Co_attention模型输出的user_rev在item_rev上的注意力分布attn_item;
(c)第一attention模型输出的U2I在user_rev上的注意力分布attn_user;
(d)第二attention模型输出的U2I在item_rev上的注意力分布attn_item。
本实施例中,如图5所示,将(a)和(c)输入一个KL损失函数,将(b)和(d)输入另一个KL损失函数。该操作的目的在于利用注意力分布(c)和(d)指导模型学习注意力分布(a)和(b)。而(c)和(d)都是在U2I的指导下计算得到的,因此该操作的本质是利用U2I的信息指导深度学习模型更好地学习(a)和(b)即Co_attention的相似度矩阵attn_u和attn_i。
本实施例中,U2I就是待预测用户对待预测物品的评论,U2I自然是最能反应该用户对该物品偏好的数据。但U2I只可以存在于训练集,而验证集和测试集为了模拟真实应用场景的需要不能包含U2I,因此本发明的核心思路就是利用训练集中的U2I指导深度学习模型学习item_rev在user_rev上的注意力分布attn_u以及user_rev在item_rev上的注意力分布attn_i,从而使深度学习模型在验证和测试的过程中,在没有U2I指导的情况下,依靠训练时学到的提取注意力分布的方法帮助模型更好地从user_rev和item_rev中提取重要特征,进而更准确地学习用户偏好和物品属性,预测出更准确的评分。
本实施例中,如图5所示,两个attention模型的另一个输出,对左边来说是weighted_u,对右边来说是weighted_i。它们的后续操作和图5中间拼接后的Co_attention的输出一样,都是输入FM模块,然后和真实标签一起计算MSE损失函数。MSE损失函数的公式如(8)所示。
MSE=∑(pred-label)2 (8)
其中,pred就是FM模块输出的模型的预测值,label是真实标签。
本实施例中,深度学习模型训练时的总体损失函数由上面介绍的3个MSE损失函数和2个KL损失函数组成,如公式(10)所示。
Loss=MSEleft+MSEmiddle+MSEright+KLLossleft+KLLossright (10)
本实施例中,验证,测试及实际使用时的步骤如下:
步骤1、训练:训练深度学习模型,训练数据包含30898个用户对曾经消费过的商品的评价以及评分,总共有1455338条数据。每一条数据包括用户U对曾消费过物品I的评价U2I,用户U的20条预处理后的评论user_rev(不包括U2I),物品I的20条预处理后的评论item_rev(不包括U2I),以及用户U对物品I的真实评分label;
输入:将所述user_rev、U2I以及item_rev输入至深度学习模型;
输出:3个FM模块输出预测值pred;attention模型输出的相似度矩阵attn_u和attn_i;Co_attention模型输出相似度矩阵attn_u和attn_i,如图5所示;
将所述用户U对物品I的真实评分pred真实标签label输入MSE损失函数,两个相似度矩阵attn_u输入至KL损失函数,两个相似度矩阵attn_i输入KL损失函数。然后反向传播,应用梯度下降法更新深度学习模型的所有参数。至此,一次迭代过程完成。在所有训练数据上完成一次迭代记作一个epoch;
步骤2、验证:每训练完一个epoch,就用验证集数据在深度学习模型上进行验证,验证集数据包含30898个用户对曾经消费过的商品的评价以及评分,每个用户一条数据,总共有30898条数据,每一条数据包括用户U的20条预处理后的评论user_rev(不包括U2I),物品I的20条预处理后的评论item_rev(不包括U2I)以及用户U对物品I的真实评分label;
输入:将所述user_rev和item_rev输入至深度学习模型;
输出:1个FM模块输出预测值pred,如图2所示;
FM模块输出值pred即为深度学习模型预测的用户U对物品I的评分。接下来计算FM模块输出值pred与label计算MSE损失函数并与当前最好(低)的MSE损失值对比,如果该次的MSE值更好,则替换最佳MSE损失函数的值,并保存该次的模型;
步骤3、测试:测试集的数据模式和验证集一样,但具体数据不同,深度学习模型的输入输出也和验证集一样,当验证集最佳MSE损失函数的值改变时,将该次的模型在测试集上运行,并记录测试集上的MSE损失函数的值;
当验证集上的最佳MSE损失函数的值连续10个epoch没有更换时,说明深长学习模型已经收敛,结束训练,验证集MSE损失函数的值为最佳值时对应的模型即为最终深度学习模型,测试集在该模型上的MSE损失函数的值即为最终衡量算法性能的评价指标。
本实施例中,验证集和测试集模拟了真实应用场景,即不包含待预测用户对物品的评论U2I。本发明提出的基于用户评论信息的推荐算法修正了现有方法存在的未考虑真实应用场景的缺点。真实的应用场景中,本发明提前预测用户对未消费过的物品的评分,既然没有消费过,故该用户也没有对该物品做出过评价,因此,为了模拟真实场景,本发明的验证集和测试集数据不包括待预测用户对物品的评价,而训练集包括了待预测用户对物品的评价。本发明提出的算法利用训练集中待预测用户对物品的评价指导深度学习模型学习user_rev在item_rev上的注意力分布以及item_rev在user_rev上的注意力分布,帮助深度学习模型在验证集和测试集上更好地预测用户对物品的评分。
本发明通过以上设计,提高了用户对物品评分的预测准确度。预测用户对物品的评分任务中通常使用测试集上的MSE(均方误差)或者RMSE(均方根误差)作为评价指标,其值越小说明算法预测的评分越准确。本发明在实验中使用MSE(均方误差)作为评价指标。表1列出了本发明和当前最优的MPCN算法在四个数据集上的效果对比,可见,本发明取得了2-13%不等的性能提升。
表1
<u>数据集名称</u> | <u>MPCN</u> | <u>本发明算法</u> | <u>提升(%)</u> |
<u>Yelp19</u> | <u>1.453</u> | <u>1.394</u> | <u>4.061</u> |
<u>Apps for Android</u> | <u>1.787</u> | <u>1.54</u> | <u>13.822</u> |
<u>Baby</u> | <u>1.397</u> | <u>1.358</u> | <u>2.792</u> |
<u>Video_Games</u> | <u>1.492</u> | <u>1.323</u> | <u>11.327</u> |
Claims (9)
1.一种基于评论信息的推荐方法,其特征在于,包括如下步骤:
S1、获取用户已经做出的所有评论信息user_rev以及物品被做出的所有评论信息item_rev;
S2、将步骤S1获取的评论信息划分包括U2I的训练集,其中,U2I为该用户对该物品做出的评论信息;
S3、利用特征提取模块FEM对所述user_rev、item_rev以及U2I进行编码,并利用concat拼接模块对编码后的信息进行拼接,分别得到user_rev_enc、item_rev_enc和U2I_enc,其中,user_rev_enc为用户曾经做出的所有评论被编码后的张量信息,item_rev_enc为物品被做出所有评论被编码后的张量信息,U2I_enc为用户对物品做出的评论被编码后形成的张量信息;
S4、根据所述U2I_enc、user_rev_enc以及item_rev_enc训练深度学习模型,并计算得到深度学习模型的损失函数;
所述步骤S4包括如下步骤:
S401、将所述U2I_enc和user_rev_enc输入至第一注意力机制模型attention,分别得到加权的用户编码Weighted user以及U2I_enc对user_rev_enc的注意力分布attn_user;
将所述user_rev_enc和item_rev_enc输入至协同注意力机制模型co_attention,分别得到加权的用户编码Weighted user、加权的物品编码Weighted item、user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
将所述U2I_enc和item_rev_enc输入至第二注意力机制模型attention,分别得到加权的物品编码Weighted item以及和U2I_enc对item_rev_enc的注意力分布attn_item;
S402、利用FM算法对所述第一注意力机制模型attention输出的加权的用户编码Weighted user进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第一MSE损失函数;
S403、利用FM算法对所述第二注意力机制模型attention输出的Weighted item进行特征组合得到预测结果,并根据所述预测结果以及训练集中包含的真实标签计算得到第二MSE损失函数;
S404、利用concat拼接模块拼接所述协同注意力机制模型co_attention输出的加权的用户编码Weighted user和加权的物品编码Weighted item,并利用FM算法对拼接的数据进行特征组合得到预测结果;
S405、根据步骤S404中所述的预测结果以及训练集中包含的真实标签计算得到第三MSE损失函数;
S406、根据所述协同注意力机制模型co_attention输出的注意力分布attn_user以及第一注意力机制模型attention输出的注意力分布attn_user计算得到第一KL损失函数;
S407、根据所述协同注意力机制模型co_attention输出的注意力分布attn_item以及第二注意力机制模型attention输出的注意力分布attn_item计算得到第二KL损失函数;
S408、根据所述第一MSE损失函数、第二MSE损失函数、第三MSE损失函数、第一KL损失函数以及第二KL损失函数计算得到训练深度学习模型的损失函数;
S5、根据所述损失函数,利用梯度下降法更新深度学习模型参数,并利用更新后的深度学习模型输出评论信息,从而完成信息的推荐。
3.根据权利要求2所述的基于评论信息的推荐方法,其特征在于,所述步骤S401包括如下步骤:
S4011、将所述U2I_enc和user_rev_enc分别输入至第一注意力机制模型attention,将所述user_rev_enc和item_rev_enc分别输入至协同注意力机制模型co_attention,以及将所述U2I_enc和item_rev_enc分别输入至第二注意力机制模型attention;
S4012、根据步骤S4011中输入的数据利用矩阵乘法分别计算得到第一注意力机制模型attention的相似度矩阵attn_u、第二注意力机制模型attention的相似度矩阵attn_i以及协同注意力机制模型co_attention的相似度矩阵attn;
S4013、将所述第一注意力机制模型attention的相似度矩阵attn_u作为第一注意力机制模型attention的用户评论的注意力分布attn_u;
将第二注意力机制模型attention的相似度矩阵attn_i作为第二注意力机制模型attention的物品评论的注意力分布attn_i;
S4014、从所述协同注意力机制模型co_attention的相似度矩阵中的每一行以及每一列中各取一最大值,并根据每一行的最大值组成用户评论的注意力分布attn_u,以及根据每一列的最大值组成物品评论的注意力分布attn_i;
S4015、利用softmax归一化算法计算得到所述第一注意力机制模型attention的用户评论的注意力分布attn_u中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对user_rev_enc的注意力分布attn_user;
利用softmax归一化算法计算得到所述第二注意力机制模型attention的用户评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到U2I_enc对item_rev_enc的注意力分布attn_item;
利用softmax归一化算法分别计算得到所述协同注意力机制模型co_attention的用户评论的注意力分布attn_u以及物品评论的注意力分布attn_i中每个评论位置的归一化概率,并根据所述归一化概率得到user_rev_enc对item_rev_enc的注意力分布attn_item以及item_rev_enc对user_rev_enc的注意力分布attn_user;
S4016、根据协同注意力机制模型co_attention以及第一注意力机制模型attention中的U2I_enc对user_rev_enc的注意力分布attn_user,计算得到加权的用户评论编码Weighted user;
根据协同注意力机制模型co_attention以及第二注意力机制模型attention中的U2I_enc对item_rev_enc的注意力分布attn_item,计算得到加权的物品评论编码Weighteditem。
4.根据权利要求3所述的基于评论信息的推荐方法,其特征在于,所述步骤S4015中利用softmax归一化算法计算得到用户评论的注意力分布attn_u中每个评论位置的归一化概率attn_user[a]的表达式如下:
其中,eattn_u[a]为以用户的第a篇评论的注意力分布为指数运算,eattn_u[j]为以用户的第j篇评论的注意力分布为指数的指数运算;
利用softmax归一化算法计算得到物品评论的注意力分布attn_i中每个评论位置的归一化概率attn_item[a]的表达式如下:
其中,eattn_i[a]为以物品的第a篇评论的注意力为指数的指数运算,eattn_i[j]为以物品的第j篇评论的注意力为指数的指数运算。
5.根据权利要求4所述的基于评论信息的推荐方法,其特征在于,所述步骤S4016中加权的用户评论编码Weighted user的表达式如下:
Weighted user=attn_user×u (5)
其中,attn_user为用户评论的注意力分布,u为用户评论的张量信息;
所述加权的物品评论编码Weighted item的表达式如下:
Weighted item=attn_item×i (6)
其中,attn_item为物品评论的注意力分布,i为物品评论的张量信息。
7.根据权利要求6所述的基于评论信息的推荐方法,其特征在于,所述第一MSE损失函数、第二MSE损失函数以及第三MSE损失函数的表达式均如下:
MSE=∑(pred-label)2 (8)
其中,pred为FM模块输出的预测评分,label为真实标签。
9.根据权利要求8所述的基于评论信息的推荐方法,其特征在于,所述步骤S408中深度学习模型的损失函数的表达式如下:
Loss=MSEleft+MSEmiddle+MSEright+KLLossleft+KLLossright (10)
其中,Loss为深度学习模型的损失函数,MSEleft为第一MSE损失函数,MSEmiddle为第二MSE损失函数,MSEright为第三MSE损失函数,KLLossleft为第一KL损失函数,KLLossright为第二KL损失函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139840.5A CN110874439B (zh) | 2019-11-20 | 2019-11-20 | 一种基于评论信息的推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911139840.5A CN110874439B (zh) | 2019-11-20 | 2019-11-20 | 一种基于评论信息的推荐方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110874439A CN110874439A (zh) | 2020-03-10 |
CN110874439B true CN110874439B (zh) | 2022-08-02 |
Family
ID=69718055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911139840.5A Active CN110874439B (zh) | 2019-11-20 | 2019-11-20 | 一种基于评论信息的推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110874439B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111680151B (zh) * | 2020-05-06 | 2022-02-11 | 华东师范大学 | 一种基于层次化transformer的个性化商品评论摘要生成方法 |
CN111683294B (zh) * | 2020-05-08 | 2021-05-07 | 华东师范大学 | 一种信息抽取的弹幕评论推荐方法 |
CN111666496B (zh) * | 2020-06-09 | 2022-12-16 | 中森云链(成都)科技有限责任公司 | 一种基于评论文本的组推荐方法 |
CN112200601B (zh) * | 2020-09-11 | 2024-05-14 | 深圳市法本信息技术股份有限公司 | 物品推荐方法、装置及可读存储介质 |
CN112347362B (zh) * | 2020-11-16 | 2022-05-03 | 安徽农业大学 | 一种基于图自编码器的个性化推荐方法 |
CN113763018B (zh) * | 2021-01-22 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 用户评价管理的方法和装置 |
CN113268657B (zh) * | 2021-04-16 | 2022-10-28 | 中国人民解放军战略支援部队信息工程大学 | 基于评论和物品描述的深度学习推荐方法及系统 |
CN114154071B (zh) * | 2021-12-09 | 2023-05-09 | 电子科技大学 | 一种基于注意力机制的情感时序推荐方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299396A (zh) * | 2018-11-28 | 2019-02-01 | 东北师范大学 | 融合注意力模型的卷积神经网络协同过滤推荐方法及系统 |
CN109903099A (zh) * | 2019-03-12 | 2019-06-18 | 合肥工业大学 | 用于评分预测的模型构建方法和系统 |
CN110196946A (zh) * | 2019-05-29 | 2019-09-03 | 华南理工大学 | 一种基于深度学习的个性化推荐方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963941B2 (en) * | 2017-09-08 | 2021-03-30 | Nec Corporation | Method and system for combining user, item and review representations for recommender systems |
-
2019
- 2019-11-20 CN CN201911139840.5A patent/CN110874439B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299396A (zh) * | 2018-11-28 | 2019-02-01 | 东北师范大学 | 融合注意力模型的卷积神经网络协同过滤推荐方法及系统 |
CN109903099A (zh) * | 2019-03-12 | 2019-06-18 | 合肥工业大学 | 用于评分预测的模型构建方法和系统 |
CN110196946A (zh) * | 2019-05-29 | 2019-09-03 | 华南理工大学 | 一种基于深度学习的个性化推荐方法 |
Non-Patent Citations (1)
Title |
---|
Multi-Pointer Co-Attention Networks for Recommendation;Yi Tay等;《Association for Computing Machinery》;20180823;第3-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110874439A (zh) | 2020-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110874439B (zh) | 一种基于评论信息的推荐方法 | |
Pruthi et al. | Evaluating Explanations: How much do explanations from the teacher aid students? | |
CN111241311B (zh) | 媒体信息推荐方法、装置、电子设备及存储介质 | |
Bhardwaj et al. | Sentiment analysis for Indian stock market prediction using Sensex and nifty | |
Abdollahi et al. | Explainable restricted boltzmann machines for collaborative filtering | |
CN109376222B (zh) | 问答匹配度计算方法、问答自动匹配方法及装置 | |
CN111881262B (zh) | 基于多通道神经网络的文本情感分析方法 | |
CN110309283A (zh) | 一种智能问答的答案确定方法及装置 | |
CN108363695B (zh) | 一种基于双向依赖语法树表征的用户评论属性抽取方法 | |
CN109408823A (zh) | 一种基于多通道模型的特定目标情感分析方法 | |
CN109766557A (zh) | 一种情感分析方法、装置、存储介质及终端设备 | |
CN116010684A (zh) | 物品推荐方法、装置及存储介质 | |
CN115392259B (zh) | 一种基于对抗训练融合bert的微博文本情感分析方法及系统 | |
CN107918778A (zh) | 一种信息匹配方法及相关装置 | |
Demchuk et al. | Commercial Content Distribution System Based on Neural Network and Machine Learning. | |
CN116796045B (zh) | 一种多维度图书分级方法、系统及可读介质 | |
CN111931054A (zh) | 一种基于改进残差结构的序列推荐方法和系统 | |
CN112507209A (zh) | 一种基于陆地移动距离进行知识蒸馏的序列推荐方法 | |
CN115374845A (zh) | 商品信息推理方法和装置 | |
CN114492669B (zh) | 关键词推荐模型训练方法、推荐方法和装置、设备、介质 | |
CN109086463A (zh) | 一种基于区域卷积神经网络的问答社区标签推荐方法 | |
Narayanaswamy | Exploiting BERT and RoBERTa to improve performance for aspect based sentiment analysis | |
CN114201516A (zh) | 一种用户画像构建的方法、信息推荐的方法以及相关装置 | |
CN110874392A (zh) | 基于深度双向注意力机制的文本网络信息融合嵌入方法 | |
CN114330704A (zh) | 语句生成模型更新方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |