1.本公开涉及智能化推荐相关技术领域,具体的说,是涉及一种基于知识图谱和强化学习的电影推荐方法及系统。
背景技术:2.本部分的陈述仅仅是提供了与本公开相关的背景技术信息,并不必然构成在先技术。
3.随着互联网快速发展和信息的爆炸式增长,逐渐的从过去的信息匮乏时代跨入了信息过载时代。对于电影网站,电影的数量、电影的类别以及网站其他维度信息都比之前出现了快速的增长,导致用户不能快速准确地从一个网站中寻找到自己感兴趣的电影。
4.发明人发现,当下已有的电影网站或者缺乏针对电影和用户的属性特征的个性化推荐,或者都是基于传统的协同过滤算法来落地其个性化推荐系统。协同过滤算法通过基于用户的历史观看记录以及用户对电影的历史评分等信息来计算相似度,进而发现用户对于某一类电影的偏好,实现网站对用户的电影推荐。然而,在实际场景中,用户和网站的交互信息往往是非常稀疏的,比如一个电影网站可能包含几十万部电影,但是用户打过分的电影可能平均只有几十部,用如此少量的电影评分数据来预测大量的未知电影的评分数据会极大的增加算法过拟合的风险;此外基于协同过滤算法的推荐系统存在明显的冷启动问题,即对于新加入的用户和电影,由于网站没有其历史行为交互信息,因此无法准确的进行建模和推荐;最后传统推荐系统的推荐方法将推荐视为一步预测任务,其推荐过程是静态的,这忽略了用户偏好的动态变化性,影响了通过推荐算法获得的推荐结果的满意度。因此,在传统的电影网站中,其推荐算法因数据的稀疏性导致推荐性能较差;此外,传统的推荐方法将推荐视为一步预测任务,考虑的因素不够全面,其推荐过程一个静态的过程,导致推荐结果不准确,影响用户的满意度。
技术实现要素:5.本公开为了解决上述问题,提出了一种基于知识图谱和强化学习的电影推荐方法,通过将知识图谱作为辅助的信息,改善了因数据缺失而导致的数据稀疏性问题,通过使用强化学习将用户的活跃度等反馈信息作为奖励机制进一步优化推荐算法,使得推荐结果更加精准,最大化提高用户满意度。
6.为了实现上述目的,本公开采用如下技术方案:
7.一个或多个实施例提供了一种基于知识图谱和强化学习的电影推荐方法,包括如下步骤:
8.获取电影网站的日志数据,提取特征参数数据以及基于知识图谱提取知识特征;
9.将提取的参数数据以及知识特征传输至训练好的wide&deep模型进行个性化召回,获得候选集;
10.对候选集的数据进行个性化排序,对候选集中的数据进行评分,输出电影点击率,
将点击率高于设定阈值的电影作为推荐结果;
11.采用强化学习优化deep模型的输入向量,优化推荐结果。
12.一个或多个实施例提供了一种基于知识图谱和强化学习的电影推荐系统,包括:
13.获取模块:被配置为用于获取电影网站的日志数据,提取特征参数数据以及基于知识图谱提取知识特征;
14.候选集构建模块:将提取的参数数据以及知识特征传输至训练好的wide&deep模型进行个性化召回,获得候选集;
15.排序模块:被配置为用于对候选集的数据进行个性化排序,对候选集中的数据进行评分,输出电影点击率,将点击率高于设定阈值的电影作为推荐结果;
16.优化模块:被配置为用于采用强化学习优化deep模型的输入向量,优化推荐结果。
17.一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成上述电影推荐方法所述的步骤。
18.与现有技术相比,本公开的有益效果为:
19.(1)本公开通过将知识图谱作为辅助的信息,改善了因数据缺失而导致的数据稀疏性问题,通过使用强化学习将用户的活跃度等反馈信息作为奖励机制进一步优化推荐算法,使得推荐结果更加精准,最大化提高用户满意度。
20.(2)本公开增加了一个强化学习的优化模块,增加了推荐效果的实时性。
21.本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
22.构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的限定。
23.图1是本公开实施例1的推荐方法流程图;
24.图2是本公开实施例1的wide模型的模型图;
25.图3是本公开实施例1的deep模型的模型图;
26.图4是本公开实施例1的wide&deep的模型图。
具体实施方式:
27.下面结合附图与实施例对本公开作进一步说明。
28.应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
29.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。需要说明的是,在不冲突的情况下,本公开中的各个实施例及实施例中的特征可以相互组合。下面将结合附图对实施例进行详细描述。
30.实施例1
31.在一个或多个实施方式中公开的技术方案中,如图1所示,一种基于知识图谱和强化学习的电影推荐方法,包括如下步骤:
32.步骤1、获取电影网站的日志数据,提取特征参数数据以及基于知识图谱提取知识特征;
33.步骤2、将提取的参数数据以及知识特征传输至训练好的wide&deep模型进行个性化召回,获得候选集;所述候选集的数据包括wide模型的预测电影类别的概率以及deep模型得到的候选集向量;
34.步骤3、对候选集的数据进行个性化排序,对候选集中的数据进行评分,输出电影点击率,将点击率高于设定阈值的电影作为推荐结果。
35.进一步的,还包括采用强化学习对推荐结果进行优化的步骤:根据用户的活跃度反馈信息采用强化学习优化deep模型的输入向量,执行步骤2,优化推荐结果。
36.本实施例通过将知识图谱作为辅助的信息,改善了因数据缺失而导致的数据稀疏性问题,通过使用强化学习将用户的活跃度等反馈信息作为奖励机制进一步优化推荐算法,使得推荐结果更加精准,最大化提高用户满意度。本实施例通过将强化学习的思想应用于推荐算法中,将推荐问题视为序列决策问题,与传统推荐算法将推荐过程视为点击率预估过程不同的是,不仅仅进行一次推荐,可以根据推荐结果以及用户的针对推荐结果的反馈继续进行推荐,即不仅追求即时收益的最大化更追求长期收益的最大化。
37.当推荐系统上线之后,用户会看到推荐列表,如果用户相较于之前产生了更多的日志,看了更多的电影,或者进行了更多的评分,则说明的推荐算法是的作用是正向的;相反如果用户看到了推荐列表,却产生了较少的行为日志,或者说用户翻页的行为更多,说明用户对推荐效果不满意,上一步的推荐是负向的。
38.即时收益即为根据用户的行为给出一次性推荐结果就停止了;长期收益即为根据用户的历史行为进行推荐,但是推荐给用户之后这次的推荐环节并未停止,会继续根据推荐系统上线之后的用户反馈继续优化上一步的推荐算法,这是一个长期的过程。
39.步骤1中,电影网站的日志数据可以从用户历史行为中提取,可以包括用户点击了哪些电影,查看了哪些电影的简介,观看了哪些电影,观看之后又对哪些电影进行了评分,用户在系统上线进行推荐之后对其推荐列表是否有进一步的翻页等等信息。
40.每一条电影网站的日志数据可以包括:地址(id)、日期、电影名称、电影类别、演员、是否评分、评分值、是否查看简介等。
41.步骤1中,通过电影特征参数数据构建电影语料库,具体的构建电影语料库的方法,可以包括如下步骤:
42.步骤11:获取特征参数数据:包括对应网站的电影属性特征以及用户特征;
43.可选的,电影属性特征包括收集的网站中电影的名称、导演、类别、地域、演员等属性特征;用户特征包括已注册用户的性别、年龄、国籍等特征,电影属性特征和用户特征这些特征信息大都属于类别型数据。
44.步骤12:将获取的特征通过embedding处理,用密集向量表示,获得语料库;
45.本实施例中,采用应用item2vec的思想将其作embedding处理,避免用one
‑
hot编码产生空间度的浪费和复杂度的加大,具体的,embedding处理的转换公式如下:
46.x
embed,i
=w
embed,i
x
i
47.其中,x
embed,i
为第i类特征所转换后的embedding向量,x
i
表示第i类特征的原始向量输入,w
embed,i
表示embedding操作过程中的参数矩阵。
48.在经过embedding操作之后,原始的稀疏特征向量就转换成了稠密的embedding特征向量,基于这个embedding特征向量我们后续会完成在线训练过程中deep泛化部分的过程。
49.此外,为了提升deep部分的泛化能力,本实施例不仅使用传统模型的特征交叉,更增加了知识图谱作为辅助信息的输入参数。所以也要进行知识特征的提取。
50.基于知识图谱提取知识特征的方法,通过获取网站日志中的用户历史行为并进行知识特征的提取。
51.知识图谱是一种语义网络,如百度和google都有自己的知识库,可以根据获取的电影网站的日志数据结合百度和google的知识库信息进行知识特征的提取。采用知识图谱引入了外部的信息,从而使推荐效果更佳。
52.知识图谱是根据已有的知识图谱库进行的计算,本实施例的知识特征,首先需要将用户的历史行为日志进行分析,得到其中的一些关键要素,然后根据这些要素到已有的知识图谱库中查出新的要素,这些要素称为知识特征。
53.知识特征的提取:包括提取输入数据中关键词的特征向量以及关键词对应的实体的特征向量。由于在上面已经得到了电影名称、电影简介等属性的特征向量,下面再寻找这些属性特征的实体所对应的向量,包括如下步骤:
54.步骤1
‑
1、识别电影名称和简介中的实体并用实体链接方法消除歧义;
55.步骤1
‑
2、根据设置的知识图谱结构,将识别后的实体链接在一步之内形成子图;
56.步骤1
‑
3、利用基于距离的翻译模型得到子图中每个实体的embedding向量e
i
。
57.本实施例的召回算法采用wide&deep模型架构,其中wide部分记忆和deep部分泛化都是个性化召回算法,采用构建深度排序模型进行特征参数数据的排序及筛选。
58.具体的,深度排序模型为改进后的wide&deep模型,包括依次连接的wide模型和deep模型;其中wide模型可以采用因子分解机模型。
59.wide模型部分是记忆,按照观影记录推荐相同类型的电影。deep模型部分是泛化,按照观影记录推荐相同类型或者不同类型的电影,可以丰富推荐效果。
60.本实施例的wide模型采用使用因子分解机模型,相比于传统采用逻辑回归模型,大大提升了特征交叉的能力。具体的,因子分解机模型采用2阶fm的因子分解机,具体可以如下:
[0061][0062]
其中,w0,w
i
为特征参数,x
i
,x
j
为i,j类特征。<v
i
,v
j
>为fm中为解决one
‑
hot编码稀疏而引入的组合参数。
[0063]
传统的逻辑回归模型对特征交叉的力度是不够的,举个例子,男性用户可能更加喜爱体育、军事类电影,而女性用户可能对情感类电影更有好感,但是男性特征和体育特征、女性特征和情感特征在逻辑回归模型中并没有将其作为关联性特征加以联合考虑,所以在设计的推荐模型时,使用因子分解机模型来替代逻辑回归模型,大大提升了特征交叉
的能力。
[0064]
wide模型可以如图2所示,包括特征输入层(sparse features)、调制层(fm layer)以及输出单元(output units),其中调制层(fm layer)采用2阶fm的因子分解机进行调制。
[0065]
将特征参数输入fm方程即可得到的输出结果,将输出结果经过sigmod激活函数即可得到预测电影类别的概率。
[0066]
本实施例的deep模型采用前馈神经网络,具体的可以为深层神经网络(dnn网络),将步骤1中获得的知识特征即为两类embedding向量作为输入,在经过多个隐层操作后得到输出结果,具体如下:
[0067]
步骤21、将参数特征本身的embedding向量和参数特征的实体embedding向量进行拼接;拼接后的向量可以表示为w=[w1w2...w
n
e1e2...e
n
]。
[0068]
步骤22、将网站中的电影按照用户的历史操作进行分类;
[0069]
可选的,将网站中的电影分为三类,分别是用户已经评过分的电影w
h
、用户未评分但是点击看过简介的电影w
t
和用户未查看的电影w
s
,然后将这三类电影所对应的向量表示共同作为dnn网络的输入。
[0070]
dnn是指深度神经网络,dnn包括依次连接的输入层,一个或多个隐层以及输出层。深度神经网络(deep neural networks,dnn)是一种判别模型,可以使用反向传播算法进行训练。权重更新可以采用随机梯度下降法求解。
[0071]
步骤23、在dnn网络的输入层之后的隐层采用注意力机制,将网站中的电影进行不同的权重计算后传输至下一层;
[0072]
具体的,可以采用softmax激活函数进行注意力评分的计算,如下:
[0073][0074]
步骤24、将注意力机制评分计算后带有不同权重的电影向量(可以为)进行一次relu操作,得到deep模型部分的候选集向量;
[0075]
线性整流函数(rectified linear unit,relu),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。
[0076]
步骤3中,对候选集的数据进行个性化排序的方法为:融合wide模型的预测电影类别的概率以及deep模型得到的候选集向量,输出电影点击率,将点击率高于设定阈值的电影作为推荐结果的方法。
[0077]
个性化排序的方法,具体的,可以包括如下步骤:
[0078]
步骤31、将wide模型的输出概率值进行排序,得到排序靠前的前k部电影;可以得到排序靠前的前k部电影的embedding向量;
[0079]
步骤32、将wide模型得到前k部电影的embedding向量x
w
与deep模型得到的候选集向量x
d
以加权的方式合并到一起;
[0080]
步骤33、将所得结果经过sigmod函数进行激活,得到用wide模型和deep模型之后所计算出的电影点击率;
[0081]
具体的,sigmod函数具体为:
[0082]
p=sigmod(v1x
w
+v2x
d
+b)
[0083]
通过上述步骤1至步骤3的推荐方法,由于采用了知识图谱的融合,模型的泛化能力进一步加强,经典的冷启动问题也很好的得以解决。
[0084]
上述过程,其中wide&deep模型训练过程,可以采用线上训练,如下:
[0085]
s1:获取包括已知用户历史行为的电影网站日志数据,提取特征参数数据以及基于知识图谱提取知识特征;本步骤与上述步骤1的方法相同,此处不再赘述。
[0086]
s2:构建wide&deep模型,将特征参数数据以及知识特征数据传输至wide&deep模型进行识别,分别获得wide模型的预测电影类别的概率以及deep模型得到的候选集向量;本步骤与上述步骤2的方法相同,此处不再赘述。
[0087]
s3、融合wide模型的预测电影类别的概率以及deep模型得到的候选集向量,输出电影点击率,将点击率高于设定阈值的电影作为推荐结果,计算推荐结果与用户实际行为的推荐偏差,修正模型参数,获得训练好的模型。本步骤与上述步骤3的方法相同,此处不再赘述。
[0088]
为提升电影推荐的实时性,本实施例根据用户的活跃度反馈信息优化的推荐模型,具体的,将步骤2中的根据用户的活跃度反馈信息优化deep模型的输入向量。
[0089]
为实现更好的推荐效果,用户的活跃度反馈信息设置离线训练模块,通过离线训练模块的输出进行强化学习优化推荐系统。
[0090]
获取用户的活跃度反馈信息;用户的活跃度反馈信息,可以具体为提取用户与电影推荐系统的交互数据;
[0091]
在用户浏览电影网站时,用户可以通过翻页来实现与推荐系统的多轮交互,在此过程中推荐系统能够感知用户的实时行为,更加理解用户,从而在接下来的交互中提供更好的体验。
[0092]
其中将推荐系统作为智能体(agent),将用户作为环境(environment),那么推荐系统与用户的多轮交互过程可以建模为mdp,采用强化学习优化deep模型的输入向量与离线训练模块的训练过程方法相同,可以具体如下:
[0093]
步骤41、获取用户的活跃度反馈信息,包括用户的意图和所处场景;
[0094]
智能体(agent)对用户(environment)进行观测,观测的内容包括用户的意图和所处场景;
[0095]
步骤42、考虑长期收益对当前决策的影响,以list
‑
wise粒度对推荐列表进行调整;
[0096]
长期收益指用户观看电影的数量越来越多,每一次上线之后用户会产生更多的行为日志,特别是日志中翻页的次数也会下降,说明推荐效果是正向的,继续沿着这个方向进行下一次的推荐结果的计算。
[0097]
步骤43、获取用户根据调整后的推荐列表的反馈,通过个性化召回算法获得用户对电影的点击率和观看率,来调整deep模型不同类电影的注意力权重。此处个性化召回算法可以前述的wide&deep模型架构。
[0098]
用户根据调整后的推荐列表的反馈可以为:点击观看电影的次数观看率、点击查看电影简介的次数即为点击率;这点击率和观看率任何一部增多都说明推荐效果是更佳的,下一个轮次进行推荐时,根据上次的推荐列表进行候选集电影权值的改变。
[0099]
根据用户反馈给予agent相应的奖励,为业务目标直接负责,奖励塑形的函数为:
[0100]
r=k
w
∑i
w
+k
c
∑i
c
[0101]
其中,k
w
为状态转移概率计算时的参数,下标i
w
表示观看的概率,下标i
c
表示点击的概率。
[0102]
在得到了奖励结果之后就可以将其作用于deep模型的输入向量,使其不断地根据用户实时行为进行调整,从而不断优化我们的推荐结果。
[0103]
实施例2
[0104]
基于实施例1,本实施例提供一种基于知识图谱和强化学习的电影推荐系统,包括:
[0105]
获取模块:被配置为用于获取电影网站的日志数据,提取特征参数数据以及基于知识图谱提取知识特征;
[0106]
候选集构建模块:将提取的参数数据以及知识特征传输至训练好的wide&deep模型进行个性化召回,获得候选集;
[0107]
排序模块:被配置为用于对候选集的数据进行个性化排序,对候选集中的数据进行评分,输出电影点击率,将点击率高于设定阈值的电影作为推荐结果;
[0108]
优化模块:被配置为用于采用强化学习优化deep模型的输入向量,优化推荐结果。
[0109]
实施例3
[0110]
本实施例提供一种计算机可读存储介质,用于存储计算机指令,所述计算机指令被处理器执行时,完成实施例1方法所述的步骤。
[0111]
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
[0112]
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。