基于生成对抗网络模型及深度强化学习的物品推荐方法、电子设备及介质

文档序号:29308568发布日期:2022-03-19 19:22阅读:1083来源:国知局
基于生成对抗网络模型及深度强化学习的物品推荐方法、电子设备及介质

1.本发明涉及大数据领域,具体而言,本技术涉及一种基于生成对抗网络模型及深度强化学习的物品推荐方法、电子设备及方法。


背景技术:

2.随着互联网及数据科学的发展,数据的收集及存储能力进行指数增长,对每个互联网用户来说海量信息中高效筛选信息的能力需要与时俱进,对公司机构来说,信息与用户的精准匹配也是公司面临的巨大挑战。在目前的互联网公司中,购物平台、新闻媒体平台、第三方服务平台等都在着力解决信息过载下匹配的问题,在此背景下,推荐系统着力解决信息匹配和过滤的问题,在洞察用户历史数据的背景下进行发现用户需求并进行合理推荐。
3.当信息严重过载时,存在大量同质化的内容,用户自身的选择偏好也处于一种被动接受和被引导的状态,再此背景下,推荐系统的作用显示的非常重要,不仅仅可以提高用户的满意度,提升商家的点击量,还可以引导用户兴趣向优质内容转移。推荐系统在目前的社会发展中已经占据了中流砥柱的作用,合理高效的将信息主动的展现到用户面前,在用户没有明确的检索内容时将信息呈现到用户面面前,来减少用户决策时间、增加用户满意度。推荐系统的主要原理是找到用户和物品的某一些维度的相似性,相似用户具有相同的浏览偏好,相似物品具有相同的浏览用户,随着深度学习的普及,推荐系统可以利用的数据形式也大幅增加,用户个人资料、商品信息、用户浏览、购买、点赞、收藏记录等也是关键信息。推荐模型的诞生使得“千人千面”成为了现实,国内外主流媒体、社交、购物网站都纷纷入局并对推荐系统进行实践和探索,并取得了巨大的成功,抖音、快手为主的短视频流平台更是如此,大幅降低了用户检索的主动搜索行为,信息呈现主要依靠被动形式,这更加要求推荐模型的准确性及推荐模型的效率。
4.近年来,在游戏领域对深度强化学习的大量应用使得越来越多的研究人员将目光转向强化学习。作为一种弱监督的学习模型,强化学习可以在不具有明确目标及监督指标时对策略进行学习和探究,强化学习也有较为完备的理论基础,以马尔科夫决策为理论,推演出基于模型的强化学习模型和免模型的强化学习模型。而推荐系统与强化学习在一定程度上又很匹配,都是通过用户反馈作为标签,来增强客户满意度,提高信息检索效率的办法,近年来也有很多学者将强化学习应用于推荐系统,实现了对用户的个性化推荐,在学术领域也引起了较大的反馈,强化学习与推荐系统的结合相比于其他深度学习的方法来说有两个显著的优点:1)基于强化学习的推荐系统可以迅速感知用户兴趣的变化,且推荐策略可以快速发生更新,2)基于强化学习的推荐系统目标更加多元和灵活,使得推荐系统目标不仅仅局限于当前物品的推荐,还可以加入用户长期的效用及用户对系统的粘性等多种指标。
5.推荐系统在目前信息社会中的重要程度不言而喻,合理的推荐模型有利于快速筛
选无效消息,提高用户与数据的交流效率。在传统的推荐模型中,用户及信息的表征能力较弱,模型的记忆性及泛化性也较弱,推荐效果不是很理想,随着深度学习的出现,模型表达能力有了很大的增强,深度网络与激活函数的结合使得模型预测能力有了很大提升,而且面对数据微小的波动,深度学习为主的推荐算法可以表现更加鲁邦,深度学习为主的推荐模型已经成为了业内主流,强化学习与推荐系统的结合任然处于探索阶段。
6.根据目前已有的强化学习与推荐系统的结合研究来看,强化学习的训练需要依靠大量的互动轨迹,但是在推荐问题中,通过用户的实际互动来更新策略意味着较差的用户体验和较高的成本,在实际应用中是很难实现的。


技术实现要素:

7.为了解决现有的基于强化学习的推荐系统存在的上述技术问题,本发明第一方面提供了一种基于生成对抗网络模型及深度强化学习的物品推荐方法,其详细技术方法如下:
8.一种基于生成对抗网络模型及深度强化学习的物品推荐方法,其包括:
9.建立生成对抗网络模型,所述生成对抗网络模型包括一个生成网络和一个判别网络,其中,所述生成网络采用深度强化学习算法;
10.将所述待推荐物品信息和所述用户历史状态信息输入至所述生成网络,所述生成网络基于所述待推荐物品信息和所述用户历史状态信息生成推荐物品信息;
11.将所述推荐物品信息和采集到的用户当前状态信息输入至所述判别网络,所述判别网络基于所述推荐物品信息和所述用户当前状态信息模拟出用户评价;
12.根据所述用户评价优化所述生成网络。
13.本发明第二方面提供了一种电子设备,包括存储器、处理器及存储在存储器内并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明第一方面提供的所述的物品推荐方法。
14.本发明第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本发明第一方面提供的所述物品推荐方法。
15.本发明提供的基于生成对抗网络模型及深度强化学习的物品推荐方法具有如下优势:
16.深度强化学习符合推荐系统,但是需要及时对推荐结果进行反馈。本发明引入生成对抗网络模型,其中的生成网络采用深度强化学习网络实施物品推荐,其中的判别网络模拟出对推荐结果的反馈,从而使得深度强化学习网络加速收敛,并保证较好的推荐效果。
附图说明
17.图1为本发明的强化学习的推荐框架;
18.图2为本发明第一实施例提供的推荐方法的模型网络结构图;
19.图3为本发明第二实施例提供的推荐方法的模型网络结构图;
20.图4为本发明第二实施例中的注意力机制结构示意图;
21.图5为本发明第二实施例提供的推荐方法中的sdm编码-解码策略的网络结构图;
22.图6为本发明提供的电子设备的结构框图。
具体实施方式
23.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
24.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.在对本方发明的具体实施例进行描述之前,首先对本发明实施例所涉及的相关理论背景进行介绍,当然,本领域技术人员在实施本发明时也可以从人工智能、机器学习领域的现有技术文件中获取到这些知识。
26.1、推荐系统
27.推荐系统的起源是基于相似物品的推荐,若两个物品的内容相似,则可以进行推荐,或者若两个用户的历史记录相似,也可将其中一人的浏览历史推荐给另一用户,这个过程主要利用数据的标签、用户的浏览记录进行,因此这类算法严重受限于物品标签,物品标记又受限于工作量及准确性。在20世纪90年代亚马逊又提出了基于协同过滤的推荐算法,协同过滤算法首次定量的将相似度与推荐联系到一起,协同过滤的算法分为基于记忆的协同过滤与基于模型的协同过滤。其中基于记忆协同过滤的办法也就是物品协同与用户协同,显然这种方法严重依赖于历史数据,当数据稀疏时,推荐精度会大幅下降,同时用户数量和物品数量激增也会引起推荐性能的下降。
28.基于内容的推荐是根据物品的内容来进行一定的分类,然后基于物品分类和用户的历史操作记录计算出每个用户对不同属性内容的偏好程度,再根据这些爱好去推荐相同属性的物品。因此整体来看,基于内容的推荐算法整体分为特征提取,用户偏好计算,内容召回和物品排序四个步骤。基于内容的推及算法一般具有物品没有冷启动问题,推荐物品不存在过于热门的问题,可以为兴趣偏好较为特殊的用户进行“长尾”推荐等优点。但基于物品的推荐算法缺点也较为明显,它要求内容必须抽象出具有意义的特征及标签,这需要大量的标注工作且具有一定不确定性,其次推荐精度较低,只能推荐用户感兴趣的一类物品。
29.协同过滤算法中来说,其中基于记忆协同过滤的办法也就是物品协同与用户协同,基于模型的协同过滤方法主要包括聚类模型,贝叶斯网络及奇异值分解等。协同过滤算法起源于1992年,xerox公司用其进行个性化定制邮件系统,通过不同主题过滤邮件来达到个性化推荐的目的。在1994年协同过滤引入了集体智慧的概念,利用大基数人群和数据来获取知识,其中grouplens利用该想法用于新闻筛选的过程,在该系统中,每个用户阅读完新闻会给一个评分,根据这些评分来确定将新闻推荐给谁,整体来看,基于协同的推荐算法具有准确度高及反应迅速等特点,是目前推荐系统的主流方法。
30.基于物品的协同过滤主要分为两步,首先计算物品之间的相似度,根据同时购买或者阅读两物品的数量及分别购买两物品的数量等方法来确定相似度,在根据用户历史的
打分数据及物品的相似度进行用户对物品的打分预测,进而选择预测打分最高的物品进行推荐。基于用户的协同过滤采取了类似的方式,分别为计算用户之间的相似度,接着选取用户相似度最高的用户,将其购买的物品进行推荐。这两类方法分别用于不同的场景,有各自的优劣势,当物品的数量远小于用户数量时,计算物品之间的相似度变得相对容易,且物品相似度也不需要频繁更新,适用于购物网站等。
31.当物品更新变化迅速时,则需要考虑基于用户的协同过滤方法,例如新闻推荐网站,其内容更新频率非常高,及时的更新物品相似度变得不可能,但是用户相似度则是根据长期的阅读习惯养成的,不需要及时更新,因此可以考虑基于用户的协同过滤算法。在多样性方面,基于物品系统的推荐主要考虑了相似度,推荐结果在多样性方面表现较差,但会给予用户某一领域内“长尾”信息的推荐,基于用户的协同过滤则经常会推荐较为热门的信息,在推荐长尾信息方面表现不足。对用户来说,基于用户的协同过滤主要是寻找兴趣相同的用户来进行推荐,推荐结果受限于是否找到相似用户,而基于物品的推荐前提是用户喜欢相似的物品,引导用户探索发现新颖物品方面表现不足。
32.基于模型的系统过滤主要利用了矩阵分解的思想,当矩阵进行分解时,可以根据奇异值来选择特征根的数目,进而对用户-物品评分矩阵进行映射降维,在尽可能保持原始信息的基础上进行映射,在此基础上,在计算物品之间的相似度进行推荐。一般来说,系统中用户数量较大,维度很高,这类方法极大的降低了基于记忆协同过滤的计算时间和空间复杂度。但是奇异值分解本身也需要大量的计算,在此基础上产生了隐语义模型,隐语义模型将原始矩阵分为两个矩阵相乘,分别为用户因子矩阵和物品因子矩阵,矩阵的求解则可以使用交替最小二乘法求解。
33.协同过滤主要依靠矩阵分解实现,矩阵分解最初通过奇异值分解展开,但是当矩阵过大时,奇异值分解面临计算量过大等问题,基于此,salakhut-dinov和hinton提出用神经网络来实现协同过滤模型,该模型可以通过损失函数的形式来进行矩阵分解,面对大数据集也可以表现较好,在利用损失函数进行矩阵分解时,进一步的改进是可以利用自动编码机(auto encoder)进行矩阵分解,站在神经网络的角度来说,都是利用较为浅层的神经网络来进行矩阵分解,那么更加深层次的网络来提取更加复杂的特征交叉便很自然的被提出了。
34.在2013年,sander dieleman提出了一个基于内容和协同过滤的混合推荐系统,此模型主要对音乐的内容进行了内容的提取,融合协同过滤的思想进行开来,具体是利用卷积神经网络来提取音乐特征,利用因子分解进行隐向量的提取,这样来构建一个混合模型,将传统中两类不同的方法进行综合。谷歌使用深度学习对youtube视频预测搭建了深度学习框架,利用用户个人信息及历史记录等多维数据进行了推荐,搭建了筛选-排序的双层推荐框架,使得推荐算法在准确度和及时性方面达到了良好的平衡,成为了深度学习在推荐系统中的工业界标杆。
35.推荐系统解决的场景是在大量信息中快速筛选出用户可能的感兴趣的物品,因此模型的准确性与及时性都是至关重要的。推荐物品的类别会对推荐系统有不同的要求,例如购物网站的种类较多,有很多长尾的需求,用户的需求和偏好的转移可能随着时间已经上架商品的更新而缓慢转移,新闻、流媒体的推荐则完全不同,种类多样,实时性强等特征则要求更多的基于内容的推荐模型。整体来看,推荐系统的框架可以分为召回、粗排、精排、
打散等四个步骤,下面逐一分析设计的目的及相应的模型基础。
36.首先是召回,召回的目的是快速的从海量备选集中选取出几千用户可能感兴趣的物品,召回模型更加侧重于运算速度及召回率,当然为了保证召回的效果,可以采用不同类型的模型进行召回,比如基于协同过滤的召回模型,基于embedding相似度的召回模型,基于双塔的召回模型,总体上来讲这一步称之为多路召回。多路召回的出发点是每一种模型可能只侧重于某一类别的偏好,而用不用的模型召回的物品可以尽可能的还原用户可能的喜好。如协同过滤召回来说,协同过滤对应的矩阵就不需要时时更新,因为时时更新协同过滤的矩阵会面临大量的读写操作,增加模型的负担,降低模型的召回速率。总结上述召回的特点就是模型可快速出结果、模型召回表现较为全面、模型参数更新频率较低。
37.针对几千召回的物品来说,直接经过精排模型还是计算量过大,时效性不能满足需求,且不同模型召回的结果无法衡量,因此需要经过一层粗排模型来将几千个候选物品进行过滤。粗排模型相比于召回模型会更加复杂,引入更多用户信息及商品信息,在对所有召回的物品进行排序,最后选取出前几百排名靠前的物品进入精排环节。
38.接下来进入精排环节的物品数量为几百,需要在精排模型中进行评价排序得到对应的得分,精排模型的特点是模型准确度较高、模型复杂且运算量较大。精排模型一般需用引入用户的全部信息、比较长的历史偏好记录及各个候选物品的详细特征及用户与物品可能产生的交互信息。结构方面精排模型也已经引入循环网络,注意力机制,残差链接等复杂的结构模型来进行排序。同时损失函数也根据不同的业务场景变得丰富起来,针对多目标优化函数进行训练模型。最后根据精排模型的多种类型输出,进行多目标加权等操作,得出最终的精排推荐物品序列。
39.经过精排模型的选择,基本可以较好的体现用户偏好了,但是精排的物品集合可能种类多样性较弱,很可能出现同一类型的大量物品出现在相同的位置,引入用户体验的下降,因此需要引入打散这一操作,打散操作可以保证一次推荐的推荐列表中相似物品的个数减少,尽可能提高用户满意度。打散操作目前更多的是制定规则和人因工程的相关研究,在推荐模型中研究较少,主要的模型研究还是在召回和精排的环节。
40.2、强化学习
41.强化学习是一种自监督的学习方法,智能体每一步没有明确的监督指标,而是依靠行为获得的奖励及未来奖励最大化的目标进行探究,除此智能体与环境的交互是独立的,两者不互相依赖,强化学习的策略依赖于智能体与环境的状态转移函数,强化学习的求解过程为自适应动态规划。为了直观地了解策略的优缺点,学者们引入价值函数作为策略评价的标准,并提出了一系列经典q-学习等经典策略强化学习模型。
42.马尔科夫决策过程(mdp)由四元组《s,a,t,r》组成,s为状态集合,s∈s,a为动作集合,a∈a。状态转移函数t(s,a,s’)表示在状态s下执行行为a,导致状态转移到s’的概率,在四元组中用t表示,奖励函数r(s,a,s’)表示在状态s下,执行动作a转移到状态s’收到的立即回报,在四元组中用r表示。状态转移函数及奖励函数只与当前状态s与动作a有关,与其他历史状态及行为无关。
43.强化学习以markov决策过程为理论基础,推荐者g与用户u进行推荐-评价的交互,推荐者将在学习过程中获得的奖励作为目标,通过最大化其积累奖励来选取最优推荐策略。推荐策略定义为π,具体为:
44.针对状态集合s中每一个状态s,推荐者应该完成动作集合a中的其中一个动作a,策略是这个状态到动作的映射,即:s

a。
45.奖励是用户对推荐者推荐结果的及时评价,而值函数用来代表长期角度看一个状态或者一个状态下具体一个动作的好坏,代表了长期的累积奖励,对状态的值函数我们用v(s
t
)表示,代表在状态s下可能获得的长期累积奖励的现值,对于状态-动作的值函数我们用q(s,a)表示,代表在状态s下采取动作a可能获得的长期累积奖励的现值,状态-动作的折扣累计奖励期望值q
π
(s,a)定义如下:
46.q
π
(s,a)=e{r
t
+γr
t+1
+γ2r
t+2
+

∣s
t
=s,a
t
=a};
47.q
π
(s,a)代表在状态s下执行行为a的q函数,通过寻找当前状态下最优的动作a来进而求的其最优q值为:
48.q
*
(s,a)=∑s′
t(s,a,s

)[r(s,a,s

)+γmaxq
*
(s

,a

)];
[0049]
t(s,a,s

)为状态s下选择动作a状态转变为s’的状态转移概率,即:
[0050]
t(s,a,s

)=p(s

|s,a);
[0051]
因此选取q值最大的动作a进行推荐,这也是最优决策,在现实数据当中,转移概率的函数形式往往不可拟合,需要通过其他算法去近似求解。
[0052]
基于转移概率是否可知,可以将强化学习分为基于模型的强化学习和免模型的强化学习,当转移概率可知时,强化学习可以分为基于模型的强化学习,在这种情况下策略的评估及策略改进可以通过公式的迭代直接进行,不需要与环境互动,也不需要模拟产生动作依赖,当转移概率不可知时,无法通过公式迭代来评估和改进策略,因此需要通过与环境互动,产生《状态、动作、奖励、下一步状态

奖励》的轨迹去评估策略和改进策略。在比较复杂的环境中,状态的转移概率往往是不可预估的,因此就需要策略与环境的及时互动来产生轨迹在去评估和改进。针对免模型的强化学习算法来说,策略评估也可以分为基于价值的策略评估和基于策略的价值评估。基于价值的策略评估是去计算每个状态下指定动作的q值,那选择动作的策略就是以一定的概率选取q值最大的动作,剩下的概率取随机选取,来避避免陷入局部极小值。基于策略的强化学习模型是直接对策略本身建模,建模的输入是状态,输出是选择的动作,此类方法可以很好的对动作空间多的模型进行建模。
[0053]
3、生成对抗网络gan
[0054]
近年来,随着强化学习(rl)的迅猛发展,人们越来越感兴趣地将强化学习应用于推荐。基于rl的推荐系统将推荐过程视为用户与推荐代理(ra)之间的顺序交互。他们的目标是自动学习一个最佳的推荐策略(策略),最大化用户的累积回报。基于强化恶习的推荐系统具有两个主要优点:其一、推荐主体在于用户交互的过程中可以学习自己的推荐策略。其二、最优策略的目标是最大化用户的长期回报。因此,人们在开发基于强化学习的推荐系统方面做了大量的工作。但是,基于强化学习的推荐算法需要基于用户的实时反馈(奖励函数)进行训练和评价。最实用的方法是在线a/b测试,根据实际用户的反馈训练一种新的推荐算法,并通过随机测试与原算法进行性能比较。然而,在线a/b测试效率低下且成本高昂:在线a/b测试通常需要数周时间才能收集到足够的数据,以达到统计上的充分性;在实际系统中部署新算法需要大量的工程设计工作。
[0055]
为了解决生成模型中存在的问题,goodfellow提出了生成对抗网络(generative adversarial networks,gans),gan主要利用生成模型整体无法判别的问题,其在图像生成
领域表现远超vae、高斯生成等模型。gan的核心思路是利用生成器去模拟目标分布,为了引入随机性,生成器可以输入较少的随机变量来控制分布的类型,利用判别器去判别生成分布与目标分布的差异。
[0056]
首先可以初步训练判别器,使其尽可能区分真实样本更生成样本,接下来训练生成器,使其生成的样本尽可能“扰乱”判别器的效果,训练的损失函数就是判别器的相反数,最后两个网络相互监督,相互学习。最后训练完成的生成器就可以当做生成模型来生成符合目标分布的新样本。在利用监督学习进行学习时,任何可以微分的函数都可以表示生成器与判别器,可微分保证了误差的梯度可以反向传播,假设用d、g来分别表示判别器和生成器,g的输入为随机变量z,输出为g(z),判别器d的输入为真实数据x与生成数据g(z),判别器的标签为若是真实数据则标签为1,若是生成数据标签为0,因此判别器的训练可以是一个二分类模型,其的目标是尽可能区分真实数据与生成数据,损失函数可以使用交叉熵损失。当判别器无法正确判定真实数据与生成数据之后,生成器也意味着可以生成目标分布的数据了。
[0057]
对于损失函数来说,判别器更多的利用二分类模型,其交叉熵损失函数为:
[0058][0059]
上式为判别器与生成器的优化目标,其中x是真实分布p
data
(x)的采样结果,z是生成器的输入,作为先验信息为某一分布的采样结果,e(¢)表示计算期望值。针对真实数据与生成数据,gan的求解为一个极小极大化问题,首先通过求解极大化来更新判别器参数,使得判别器可以判断真实数据与生成数据的差别,接下来根据极小化目标函数来更新生成器,使得生成数据的分布与真实数据分布尽可能近似,因此gan的优化过程可以定义如下:
[0060][0061]
如公式描述,训练过程首先对判别器d进行参数更新,来求解极大值,等价于输入真实数据的判别器值尽可能大,输入生成数据的判别器值尽可能小,也即log(1-d(g(z)))尽可能大,除此之外,还可以将log(1-d(g(z)))转变为log(-d(g(z))),但会降低模型的训练速度。在多轮次训练判别器之后,在开始生成器的训练过程,且其参数一般只更新一轮,然后继续开始训练判别器。当p
data
=pg时,判别器已经无法区分真实数据与生成数据了,此时训练达到全局最优解。当然该结论是一种理想的数据最优解,在一般训练的过程中判别器无法区分真实数据与生成数据其实不利于生成器生成,也没有明确的指标来决定何时暂定,一般认为生成器、判别器损失函数比较平稳,且不在更新时暂停模型的训练过程。
[0062]
gan的提出引起了图像生成领域的巨大成功,但同时也有各类gan的出现,其中较为出名的是wgan,wgan主要解决了原始gan的一大问题,当真实数据的分布与生成数据的分布完全不一致时,判别器可以轻松的将两者分开,此时无论生成器如何更新,都做不到可以扰乱判别器的程度,这也就是说在模型训练过程中,性能过于强悍的判别器并不利于生成器的训练。
[0063]
针对这个问题,wgan通过数据推导证明了解决此问题的办法,让判别器足够平滑,如何保证判别器足够平滑,主要有三类方法,第一类是直接进行梯度裁剪,第二类是梯度惩罚,第三类是进行谱正则。判别器足够平滑说的是其梯度要小于一定的值,因此最直接的办
法是当判别器梯度大于阈值时,直接强行将其转变为阈值,也是最原始的办法。后来又有文章进一步改良了这种暴力的办法,利用损失函数中增加梯度惩罚项来保证判别器足够光滑,具体步骤是在真实数据和生成数据两个分布中取点,然后在判别器中计算该点的梯度,目标是让该点的梯度接近1,最后利用拉格朗日乘数法的规则将此约束加到损失函数中去,之后很多的研究都是采用了此方法。第三种方法是进行谱正则,输入向量在神经网络中的操作主要是矩阵乘法和非线性变换,一个矩阵可以通过奇异值分解为三个矩阵的相乘,其中第一个和第三个矩阵是正交矩阵,第二个矩阵是特征值矩阵,是对角阵。一个输入向量乘以一个正交矩阵等于在空间中做了一次旋转变换,乘以一个对角阵等价于各个坐标的长度进行了放缩,因此谱正则做的事是将最大的特征值缩放为1,这样来保证判别器足够光滑。
[0064]
除了wgan的解决思路,另一主流的解决思路为lsgan,将判别器的分类模型转变为回归模型,回归模型可以很好的度量真实分布采样的样本和生成样本的距离,利用均方误差等mse可以很好的反应两类分布的差异,在测试中,lsgan也很好的解决了上述的问题。
[0065]
4、深度强化学习dqn
[0066]
传统强化学习无法解决无限状态、连续动作等问题,但是深度学习的表征能力及拟合能力可以解决此问题,面对新的状态也可以采取相对合理的动作,因此深度学习与强化学习的结合势在必行,以此来可以解决高维空间及多维动作选择的问题。深度学习与强化学习的首次结合是mnih在《nature》上发表的深度q网络(deep q network,dqn)模型,利用q网络来代替q-learning中q表格,以此来解决状态及动作维度过多的问题,以此来扩充q-learning的使用场景。在模型训练中,提出了目标网络与训练网络的两个网络,利用回归损失函数来更新q网络,经过训练后可以在部分游戏中的表现超过人类水平。引起学术界较为震惊的是alphago在围棋上的表现,合理的利用监督学习,强化学习进行在更大空间上的探索,初期利用简单学习进行简单规则的学习,后期利用两个智能体进行互相博弈,进而使得模型共同收敛,其模型在2016年击败李世石。围棋等游戏的环境是较容易建模表示的,面对复杂环境的机器人物理环境,模拟与交互的成本更加高昂,又逐渐提出了各类强化学习模型,基于模型的强化学习,无模型的强化学习等。
[0067]
dqn的算法在学术及产业界存在不少的应用,随后也出现了不同类型和版本的改进,如dueling network,将q网络分为价值网络与优势网络,两部分网络结果的结合作为q值,这样可以提高网络的稳定性,除此之外,目标网络与训练网络为同一网络时会存在高估q值及训练不稳定的现象,double dqn模型将目标网络与训练网络分开,使用不同的参数形式,并且异步保持更新,以此来解决了dqn网络不容易收敛的问题。
[0068]
具体来看,dqn是在q-learning的基础上引入了神经网络的思想,利用神经网络对价值函数进行近似求解,这样来解决q-learning中状态、动作维数有限的问题,在q-learning算法中,q值的更新采用如下公式:
[0069][0070]
其中被认为是q的目标值,q(s
t
,a
t
)被认为是q的当前值,当目标值与当期值趋于相等时认为q值达到平稳状态。当使用深度学习来拟合q值时,q值用公式表示为:
[0071][0072]
在此部分使用了双层dqn网络来进行,使用目标网络q和估计网络q’来解决dqn收敛不稳定的现象,在优化过程中需要对两个q网络的参数w和w

进行更新,因此需要写出其损失函数,损失函数如下:
[0073][0074]
根据已有损失函数可以使用梯度下降对参数进行更新,在双层dqn网络中,初始化时目标网络q和估计网络的q的参数相同,每次训练过程中对估计网络q的参数w’进行更新,当更新一定次数之后在对目标网络q的参数进行w进行更新,当两个网络拟合的q值趋于相同时迭代结束。
[0075]
2018年,gzheng利用dqn模型对新闻推荐进行了多目标的研究,在传统的新闻阅览基础上增加了用户活跃度及用户粘性的相关指标,进一步放大了强化学习的优势,同时提出了基于dueling bandit gradient descent的搜索方法,在推荐系统探索方面有了大的改进,相比已有算法,改文章在推荐准确性及多样性上均有较大的改善。同年,京东利用dqn进行了二维推荐页面的相关研究,京东认为,在推荐页面中物品呈现为2d,物品之间的相互联系及位置都可能影响用户的推荐评价,因此引入cnn来解决物品位置及相互影响之间的关系,在京东的真实购物数据中模型取得了较好的成果。
[0076]
同时,深度强化学习也可以丰富对推荐结果的评价,使得推荐系统的评价指标更加多元,贴合用户的使用场景,在这方面,拥有大量实际数据的互联网企业拥有先天优势,京东通过用户停留时间、下次返回app时间及收藏、转发、购买等多维度的指标来研究基于dqn的推荐系统,同时引入回复式神经网络来解决每个用户产生交互产品数量不等的问题。
[0077]
当深度学习与强化学习开始结合之后,dqn为主的模型是基于价值的强化学习模型,同时也可以将深度学习网络当作策略网络,输入是状态,输出的动作,然后利用该动作与环境交互得到这一步状态的奖励,此类模型的训练目标还是长期累积的奖励最大化,而不是每一步奖励最大化,因此在模型训练过程中主要利用策略梯度的方式去更新策略网络。策略梯度是解决网络结构中遇到梯度不可导时提出的一种方法,在强化学习中广泛使用,直观的逻辑理解是在分类损失函数的基础上加入一个系数,这个系数反映了该动作在当前状态下未来获得的奖励综合,而不是这个动作带来的奖励。这也直观的反应了强化学习策略的目标:长期奖励最大化。
[0078]
基于价值的模型和基于策略的模型在不同角度上各有优劣,具体来看,基于价值的模型策略每次需要计算当前状态和动作的价值,然后与目标价值进行回归,其中目标价值也是一个网络计算的,并不是真实的价值,因此利用此方法会有较大的偏差,模型训练过程也不稳定。基于策略的模型需要通过与环境交互得到游戏结束时的奖励,在将此奖励函数作为分类损失函数的权重,与环境交互得到的较为准备的奖励总和,因此此类方法有较小的偏差较大的方差。为了结合两类方法的优点,让模型更容易训练,actor-critic方法被提出,整体流程是用基于价值的函数的拟合去代替交互来获得轨迹的奖励总和,将其作为策略网络训练的目标,具体来说还有很多优化细节,主要有评价网络利用差分(td)、蒙特拉
罗模拟(mc)的方法去更新评价网络;评价网络会高估动作的q值,且为了较小抽样带来的分布误差,对评价网络减去一定的基准,将“累计奖励”从全正数转换为有正数有负数,这会加速策略网络的学习速度。
[0079]
上述的讨论和分析都是奖励在有明确的奖励函数的基础上,或者奖励可以与环境进行互动而得到,而且奖励不是非常稀疏的情况,但在现实生活中的一些应用场景中,奖励函数非常稀疏,或者只有最后一步才有一个明确的奖励,甚至没有明确的奖励规则。面对这类方法,需要人为的制定奖励的规则来引导策略学到想要学的内容,例如,在枪战类游戏中,添加存活时间得到负奖励的惩罚,来避免游戏主体躲在角落里不去攻击敌人,在训练机械臂操作的时候给与每靠近目标主体就一定的正向奖励,来避免奖励过于稀疏,机械臂永远达不到完成指定操作获取奖励的问题。因此本发明认为,通过制定一些奖励的规则来丰富奖励函数,可以保证策略网络学习速度和学习成果。
[0080]
当然也存在完全没有奖励的情况出现,只有一些“专家”的示范轨迹,没有明确的奖励函数,此时也可以对策略进行训练,这就是逆强化学习的研究范围,主要是通过“专家”的轨迹来学习奖励函数,在通过该奖励函数进行策略网络的更新,这一类模型又称作是模仿学习。逆强化学习和下文提到的生成对抗网络又“殊途同归”,在不同的视角和研究背景下提出了极度相似的方式来解决不同的问题,但是整体的框架及模型思维是相同的,在下文中具体展开来讲。
[0081]
本发明的技术构思过程:
[0082]
如背景技术部分提及的,根据目前已有的强化学习与推荐系统的结合研究来看,强化学习的训练需要依靠大量的互动轨迹,但是在推荐问题中,通过用户的实际互动来更新策略意味着较差的用户体验和较高的成本,在实际应用中也是很难实现的。
[0083]
因此,当推荐算法产生推荐结果后,可以通过模拟器模拟出针对推荐结果的反馈(或者称之为评价、奖励),从而使得推荐算法能够加速收敛,并保证较好的推荐效果。
[0084]
基于此,本发明首先构建了如图1所述的强化学习的推荐框架,如图1所示:
[0085]
在推荐过程中,两个主体进行交互,分别为用户u与推荐者g。当一个用户u给推荐者g发送自身状态s,推荐者g会执行推荐动作a,a具体为推荐物品的列表l,用户u对推荐物品依次进行评价推荐结果,推荐结果反应为奖励r,进而产生推荐列表的反馈列表b给推荐者g,推荐者g根据奖励反馈更新用户u的状态s,并进行下一轮推荐。
[0086]
推荐者g采取deep q-network(dqn)作为其主要算法,网络参数用w来表示,在线下训练中,为了解决奖励稀疏的问题,引入推荐评价网络,用来模拟用户对推荐物品的评价,以此来加速训练过程。
[0087]
表1.模型参数列表
[0088]
符号含义g推荐者u用户集合a推荐动作s状态r奖励l推荐物品集合
q深度q网络w深度q网络的参数γ折扣因子
[0089]
g:推荐者,推荐者需要依据当前状态s进行推荐动作a,并根据推荐动作所获奖励对推荐策略进行更新,在本发明中推荐者所采取的策略方法为深度q网络,即dqn。
[0090]
u={uz|z=1,2,3...n}:u为用户集合,用户集合中共有n个用户,uz代表第z个用户。
[0091]
i={i
l
|l=1,2,3...j}:i为物品集合,物品集合中共有j件物品,i
l
代表第l件物品。
[0092]at
={i1,i2,...,i
p
]:a
t
代表在t时刻的推荐动作,即产生推荐物品列表,共推荐p件物品。
[0093]si,t
表示第i个用户在t时刻的状态,具体包括用户i自身的特征用户i在t时刻浏览记录的特征用户i在t时刻与浏览记录的交互特征其中:
[0094]
分别为用户id,年龄,性别及职业。
[0095]
代表用户i在t时刻浏览记录的集合,为用户浏览过的第j个物品,具体为,分别为物品id,物品类型,物品简介,浏览时长。
[0096][0096]
为用户i与物品j的交互特征,用户i在t时刻共与j个物品产生交互特征,其中具体包括用户id,物品id及评分。
[0097]
r:奖励,用户对推荐者所推荐物品做出的反馈评价,奖励反映了用户对推荐物品的偏好,通常用正数表示奖赏,负数表示惩罚。如,奖励的范围为[-5,5]。
[0098]
γ:γ∈[0,1],未来奖励的折扣因子,当γ=0时,推荐者g只考虑当前动作所带来的奖励;当γ=1时,所有的未来奖励都会被相同权重,在一般模型中,取值为0到1之间。
[0099]
本发明的核心技术构思为:引入生成对抗网络模型,其中:
[0100]
生成网络采用深度强化学习网络dqn实施物品推荐,即生成网络为推荐者g采用的推荐网络。
[0101]
判别网络模拟出对推荐结果的反馈,加速深度强化学习网络加速收敛,即判别网络相当于评价网络或奖励网络。
[0102]
下文将通过三个实施例,对本发明提供的基于生成对抗网络模型及深度强化学习的物品推荐模型进行示例性描述。
[0103]
为了使得本领域技术人员更加清楚地了解本发明的执行过程,我们以电影推荐为例进行描述,即推荐的物品为电影。
[0104]
第一实施例:采用gru-dqn-gan模型的电影推荐方法
[0105]
在电影的推荐场景中,主要用来解决各个用户浏览历史记录数量不等,及电影数据中存在结构化特征及文本非结构化数据,需要对其分别进行向量化编码,并引入编码-解
码的方式来处理。
[0106]
本实施例中的gru-dqn-gan推荐模型的网络结构如图2所示,其包括一个生成网络generator和一个判别网络discrminate,其中生成网络采用深度强化学习算法,即:q网络作为整个推荐模型中的生成器。
[0107]
生成网络generator的结构见图2的左侧部分,生成网络用于:
[0108]
基于待推荐电影信息、用户历史状态信息,通过深度强化学习算法生成推荐电影信息,即通过执行推荐动作a,给出一个推荐电影集合l。
[0109]
判别网络discrminate的结构见图1的右侧部分,判别网络用于:
[0110]
基于生成网络给出的推荐电影信息,以及采集到的用户当前状态信息模拟出用户的评价,或者说是给出一个奖励。并将评价反馈给生成网络,以实施对生成网络的优化,直至收敛。
[0111]
1、生成网络的推荐过程:
[0112]
如图1所示,生成网络包括第一编码网络和第一深度神经网络dnn,其中:
[0113]
第一编码网络,一方面将待推荐电影信息编码成待推荐电影特征向量ie。
[0114]
由于待推荐电影信息中,即包括有结构化信息,如电影id、电影类型及电影时长,也包括非结构化的文本信息,如电影介绍,以及电影的图片信息,如电影海报。因此,本实施例中,第一编码网络按下述步骤获取电影特征向量ie:
[0115]
s101、从推荐电影信息中抽取出推荐电影信息的结构化特征、文本特征及图片特征。
[0116]
如本领域技术人员所熟悉的,embedding、bert及imagebert分别适合实施对结构化特征、文本特征及图片特征的抽取,因此,可选的,可按下述算法过程实施特征抽取:
[0117]
f1=contact(embedding(f
id
),embedding(f
kind
),embedding(f
time
));
[0118]
f2=contact(bert(f
intro
));
[0119]
f3=imagebert(f
poster
);
[0120]
其中:
[0121]
f1代表电影的结构化特征编码之后的特征向量,f2为电影的文本特征编码之后的特征向量,f3为物品图片信息编码之后的特征向量。
[0122]
s102、将抽取出待推荐电影的结构化特征、文本特征及图片特征拼接成待推荐电影特征向量ie。具体算法过程如下:
[0123]
xi=contact(f1,f2,f3);
[0124]
ie=xi,i=1,2,...,i;
[0125]
其中:ie表示待推荐电影集合的特征相邻,待推荐电影集合共包括i部电影,第i部电影的特征向量为xi。
[0126]
至此,获取到待推荐电影特征向量ie。
[0127]
第一编码网络,另一方面将用户历史状态信息编码成用户历史状态特征向量pe。
[0128]
用户历史状态信息也就是用户所产生的电影浏览记录,也就是用于与电影之间的交互状态信息。
[0129]
第一编码网络引入了seq2seq中编码-解码的思想,将数量不等的数据通过循环神经网络转变为数量确定的输出,编码阶段的输出向量pe代表用户与电影交互的历史记录所
构成的状态特征,在编码过程中通过gru编码-解码来实现,编码阶段的输出用pe来表示。
[0130]
gru网络的传播过程如下:
[0131]rt
=σ(wr·
[h
t-1
,x
t
]);
[0132]zt
=σ(wz·
[h
t-1
,x
t
]);
[0133][0134][0135]
pe=σ(wo·ht
);
[0136]
其中:z
t
和r
t
分别表示更新门和重置门,h
t
为gru循环神经网络用于连接相邻输入的中间变量,更新门z
t
用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门z
t
的值越大说明前一时刻的状态信息带入越多。重置门r
t
控制前一状态有多少信息被写入到当前的候选集上,重置门越小,前一状态的信息被写入的越少。[]表示向量的连接,
·
表示向量内积,*表示向量乘积,wrwzwhwo为矩阵,即为gru网络的参数。
[0137]
经过gru循环神经网络得到编码的用户历史状态特征向量pe,向量pe即代表着用户在历史观看记录中的个人偏好。
[0138]
至此,我们获得了编码好的待推荐电影特征向量ie及的用户历史状态特征向量pe。
[0139]
如图2所示,这两个特征向量均被输入至第一深度神经网络dnn中,第一深度神经网络dnn输出当前状态下所有动作的q值。
[0140]
第一深度神经网络由多层全连接神经元节点构成,全连接中的节点表示输入或者中间状态,节点之间边代表节点之间的函数关系,一般为线性函数运算之后利用激活函数进行归一化映射,q值的计算公式如下:
[0141]
y1=σ(w1·
[pe,ie]+b1);
[0142]
y2=σ(w2·
y1+b2);
[0143]
……
[0144]
q(s
t
,ai)=σ(wi·yi-1
+bi);
[0145]
其中:y1,y2...y
i-1
代表第一深度神经网络的中间层节点,i为第一深度神经网络的深度,w1,w2...wi,b1,b2...bi均为第一深度神经网络的参数。
[0146]
最终,选取n个q较大的动作来进行电影推荐,即,产生推荐电影信息:
[0147]
a=maxn(q(s
t
,ai));
[0148]
即在训练过程中,选取n个q值排列靠前的电影去推荐。
[0149]
2、判别网络的评价过程:
[0150]
生成网络将推荐电影信息,即一个包含有若干电影的集合,集合中的每个成员即代表一部电影的特征向量。判别网络即要根据推荐电影信息模拟用户的评价,保证每次推荐都可以得到数量不为零的奖励。
[0151]
深度强化学习已经得了巨大的成功,但是将深度强化学习进行推荐时依旧存在一定的挑战,主要是在推荐领域,推荐物品的信息数量很大,然而具体某个用户的历史记录却很少,在模拟推荐过程中,产生的推荐结果往往不是用户需要的,此时对该推荐动作奖励不应该简单为0,若推荐奖励为0,在大量的模拟推荐环节中产生的数据都是相似且对算法参
数更新是无效的。因此应该构建环境奖励网络,若推荐结果已经和用户点击历史记录有一定的相似性时,推荐奖励应该不为零。按照此思路,应该构建一个深度强化学习的模拟环境来及时反馈推荐动作的奖励。
[0152]
本实施例中,如图2的右侧,判别网络也采用编码-解码的方式,编码阶段与生成网络结构相同,但是拥有不同的参数。解码阶段将反应用户当前状态的向量pe与推荐动作所对应的推荐电影特征向量联合,在一同输入至深度神经网络,深度神经网络输出的内容为将该动作判别为假和真及对应评分的概率,最后一层为softmax层,来保证最后输出的结构和为1。
[0153]
具体的,本实施例中,如图2的右侧所示,判别网络包括第二编码网络及带有softmax层的第二深度神经网络,其中:
[0154]
第二编码网络首先将用户当前状态信息编码成用户当前状态特征向量pe,具体过程与生成网络中基本一致,此处不再赘述。
[0155]
第二编码网络接着将用户当前状态特征向量pe和推荐电影的特征向量拼接成联合特征向量,并将联合特征向量输出至第二深度神经网络dnn,拼接算法如下:
[0156][0157]
其中,为推荐动作a中所对应的第i部电影的特征向量,pe为用户当前状态特征向量。
[0158]
第二深度神经网络由多层全连接神经元节点构成,第二深度神经网络按如下公式生成推荐物电影是否符合用户当前状态的概率:
[0159]
y1=σ(w1·
mlpinputi+b1);
[0160]
y2=σ(w2·
y1+b2);
[0161]
……

[0162]
yi=σ(wi·yi-1
+bi);
[0163]
(t1,t2,t3)i=softmax(yi);
[0164]
其中:y1,y2...y
i-1
代表第二神经网络中间层的节点,i为第二深度神经网络的深度,w1,w2...wi,b1,b2...bi均为第二深度神经网络的参数,t1,t2,t3为推荐物品是否符合用户当前状态的概率,mlpinputi为动作相对应的推荐电影特征与用户当前状态特征的集合。
[0165]
即,第二深度神经网络输出了推荐动作产生的推荐电影是否符合用户当期状态及用户预期相关评价的概率,在此次电影推荐环节中评价分为1到5分,且有符合该状态与不符合该状态两种类型,为了模型训练更加容易,将其整体分为三类,未观看,低评分及高评分,因此解码层输出的长度为3,和为1。t1,t2,t3分别为-1,0,1的概率,此是判别网络为分类器。
[0166]
通过构建奖励网络,我们可以将奖励网络的输出与对应的模拟奖励对应起来,当输出为正的概率大于为假的概率时奖励为正,且为输出为正的评价的期望,反之成立,具体公式为:
[0167]
r=-5
×
e[p];
[0168]
因此,判别网络最终给出的评价分值范围为[-5,5]。
[0169]
评价结果作为奖励值反馈至生成网络,生成网络继续对q网络的参数进行训优化。
[0170]
第二实施例:采用attention-dqn-gan模型的电影推荐方法
[0171]
本实施例提供的attention-dqn-gan推荐模型的网络结构如图3所示,其与本发明的第一实施例的gru-dqn-gan推荐模型的区别点在于:第一编码网络在编码过程中通过transformer编码-解码策略获取用户历史状态特征向量pe,相应的,第二编码网络在编码过程中也通过transformer神经网络获取用户当前状态特征向量pe。
[0172]
transformer是一种基于多头注意力机制的编码-解码结构,有很多个block组成,其中一个block包含了多头注意力层、残差链接层、正则化网络层、基于位置的全连接层及全连接层,其中注意力机制是核心。注意力机制是一种可以并行计算的网络结构,用于自动学习关键的权重及位置信息,相比循环神经网络可以考虑更加远距离的信息且权重没有衰减,且可以进行并行计算,在gpu上的训练速度更快,多头的注意力机制可以保证计算更多的网络权重信息,具体来看attention(q,k,v)可以被描述为一个查询(query)到一系列键值(key-value)的映射,通过query与key去计算一个相关的权重,对权重进行归一化,然后利用权重和对应的value做一个加权更新。
[0173]
自注意力机制则为query、key、value来自同一输入,分别乘以不同的矩阵作为对应的q、k、v,多头自注意力机制就是多个产生多个q、k、v,最后将不同的v进行加权或者池化操作。注意力机制在seq-seq的模型框架中广泛使用,自注意力机制则在序列建模中广泛使用,已经有代替传统rnn网络架构的趋势。同时若需要考虑位置信息,则一般有两种操作方式,其一为加入固定的位置编码,其二为加入需要参数更新的位置编码,这样可以保证注意力机制可以高效的处理有明显前后关系的序列数据。以下公式给出了注意力的计算公式:
[0174][0175]
q=aq×
x;
[0176]
k=ak×
x;
[0177]
v=av×
x;
[0178]
其中:q、k、v为向量,且dk表示q、k的纬度信息,用来平滑softmax的归一化结果。x为输入序列的向量表示,矩阵a为attention网络的参数,在此,电影推荐环节中,
[0179]
x=contact(f1,f2,f3);
[0180]
图4展示了上文中公式的流程,q和k经过内积或者全连接网络将其转变为一个权重,权重归一化之后在与v进行外积操作。
[0181]
第三实施例:采用sdm-dqn-gan模型的电影推荐方法
[0182]
如图5所示,本实施例提供的sdm-dqn-gan推荐模型,其与本发明的第一实施例的gru-dqn-gan推荐模型的区别点在于:第一编码网络在编码过程中通过sdm编码-解码策略获取用户历史状态特征向量pe,相应的,第二编码网络在编码过程中也通过sdm编码-解码策略获取用户当前状态特征向量pe。
[0183]
在编码过程中,除了常用的rnn网络结构和attention结构,也有将二者结合的方式,充分提取用户历史数据中化所体现出的偏好信息,较为成功的编码方式为阿里巴巴使用用户长期序列与短期序列分别进行编码,在通过“门”融合的处理方式将不同信息进行统一编码。具体来说,将用户的历史数据序列分为近期序列与长期序列,近期序列代表用户的
短期兴趣,长期序列代表用户的长期偏好,再将二者结合,以此来充分体现用户的行为特征。
[0184]
在短期序列中,首先对商品信息使用rnn网络进行编码,在将rnn的网络循环结构的输出进行多头自注意力机制的处理,来处理商品序列之间的权重关系,最后在利用用户信息与商品序列的输出输入注意力网络,将其结果作为用户短期兴趣的编码方式。在长期序列中,为减少参数的规模,直接将商品序列信息与用户信息输入注意力网络,再将该网络的输出进行线性映射,映射为与商品编码维度相同的向量,将此向量作为用户的长期偏好。
[0185]“门”融合的处理与lstm融合的方式相似,将短期兴趣的编码向量与长期兴趣的编码向量进行融合,得到最终的pe,流程图如图5所示。
[0186]
对于用户的短期行为序列,在使用lstm模型编码的同时使用了多头自注意力机制,将其输出在于用户信息eu进行注意力网络的加权,最终输出短期兴趣的向量pu,其中eu={f
age
,f
zip
,f
occu
},具体的,lstm运算公式如下:
[0187]rt
=σ(wr·
[h
t-1
,x
t
]);
[0188]zt
=σ(wz·
[h
t-1
,x
t
]);
[0189][0190][0191]
这样,得到具体的ht之后,将其输入下一步的多头注意力网络中,其中,attendtion的query,key和value均使用了lstm层的输出作为输入,公式如下:
[0192][0193]
其中,
[0194]
令则可以将attention()表示为:
[0195][0196][0197][0198]
最后将得到的h
t
进一步与代表用户属性的向量eu输入注意力网络,公式如下:
[0199][0200][0201]
通过上述运算得到表示用户短期偏好的向量su。对于用户的长期序列,直接采取用户信息与历史记输入attention网络结构,公式如下:
[0202][0203][0204]gk
表示lu子集里面第k个embedding,然后将每个子集生成的embedding拼接起来,
再经过一层全连接生成最终的pu,公式如下:
[0205][0206]
pu=tanh(w
pzu
+b);
[0207]
最终,将生成的eu,s
t
,pu做为输入加入到一个gate里面,然后生成最终的结果pe,公式如下所示:
[0208][0209][0210]
推荐模型的性能评估
[0211]
一、数据来源说明
[0212]
movielens是一个电影观看网站,同时公布了一些公开的数据资料,如表2所示,根据公开样本的数量不同,分为四个不同大小的数据集,数据集主要包括用户信息、电影信息及用户的观影记录及其评价,具体包括四个数据集:
[0213]
表2.movielens数据集介绍
[0214]
数据集名称用户数量电影数量评分数量(万)稀疏度movielens-100k100017001094.12%movielens-1m6000400010095.83%movielens-10m7200010000100098.61%movielens-20m13800027000200099.46%
[0215]
从表2中可以看出,movielens是一个比较稀疏的数据,四个数据集通过不同的用户规模和电影规模来区分,其中稀疏度也有所变化,其中movielen-100k数据中评分数量为10万,平均每个用户观看历史记录为100部,平均每部电影被60人观看,整体稀疏度为94.12%,评分矩阵数据还是稀疏,因此推荐模型的重要性便体现出来了。随着数据集的增大,稀疏度也逐渐增高,一方面更加贴合显示生活,另一方面也给推荐模型的学习带来了长尾数据,使得模型更加难以训练。
[0216]
具体来说,每个数据集包含了三个表格,分别是用户信息,电影信息及评分信息。用户信息主要包括用户的id、年龄、性别、职业、邮编。其中年龄已经做了分桶,为离散的数值,性别为二分类属性、职业归结为18个类别,邮编是连续的数值,但总数也是固定的数值。电影信息包括id,电影标题、发布时间、类别,标题为英文语句,发布时间为时间戳数据,类别主要分为19个类别,例如动作、冒险、喜剧、战争、西方。同一部电影可能有多个标签,也可能只有一个类别标签。电影评分数据主要包含用户id、电影id、用户给电影的评分值和时间戳属性,用户给电影的评分值为1~5分,根据时间戳可以将用户的观影记录给序列化,来反映用户的浏览记录顺序,此浏览顺序可以作为用户信息的重要特征。除此之外,本发明通过imbd电影网站爬取了电影对应的宣传海报及文本简介的其余非结构化的信息。
[0217]
二、评价指标
[0218]
指标1:p,精确率表示预测为正样本的样本中,正确预测为正样本的概率:
[0219][0220]
其中,tp表示样本的真实类别为正预测得到的结果也为正的样本数量,fp表示样本的真实类别为负预测得到的结果却为正的数量。
[0221]
指标2:map,ap(average precision),即为平均准确率,ap是准确率-召回率曲线的面积,是一种反应排序的指标,对于每一类指标,都可以计算一个ap值,用户u的ap计算公式如下:
[0222][0223]
p
ui
表示推荐列表中物品i排序位置。若p
uj
<p
ui
,则表示用户u的排序列表中物品j的排序位置在物品i之前。
[0224]
map(mean average precision)即为所有用户u的ap再取均值(mean),那么则有:
[0225][0226]
指标3:ndcg(normalized discounted cummulative gain),除了反映推荐物品类别的监督数据,排序的相对顺序也是非常重要的指标,比如目标物品推荐在top10的前2位和后2位有着不同的作用效果,因此为了体现这一类数据的特性引入了累积增益,cg为每个推荐结果相关性的累加后作为整个推荐列表的信息反馈,如下公式:
[0227][0228]
这里,rel表示处于位置i的推荐结果的相关性,k表示所要考察的推荐列表的大小,在cg的基础上引入位置的信息才能反映关于位置的推荐列表的属性,即dcg:
[0229][0230]
dcg不能评价不同的推荐列表的推荐效果,对不同用户的推荐列表进行归一化,即ndcg,对于用户u的ndcg@k定义为:
[0231][0232]
这里的k表示推荐列表的大小。那么,则有:
[0233][0234]
指标4:mrr(mean reciprocal rank),正确检索结果值在检索结果中的排名来评估检索系统的性能。
[0235][0236]
其中,|q|是用户的个数,ranki是对于第i个用户,推荐列表中第一个在真实结果中的item所在的排列位置
[0237]
三、基准模型
[0238]
1、宽广模型wide&deep
[0239]
宽广模型(wide&deep)是深度学习应用于推荐算法的经典模型,兼顾深度模型的优势且模型训练规模较小,易于上线,具体来看广义线性模型和非线性特征变换的组合广泛用于输入稀疏的大规模回归和分类问题。特征的交叉非常有效并且可解释性也很好,但是为了提高模型泛化能力,需要大量的特征工程工作,而深度神经网络可以更好的通过稀疏特征的低纬稠密向量泛化到非显性的特征组合。但是当用户物品的交互数据比较稀疏的
时候,深度神经网络可能会过拟合,google提出wide&deep推荐模型,同时训练线性模型和深度模型,结合了记忆与泛化的优点。google在google play商店内的10亿用户和百万app上评测了该模型,结果显示相比纯wide和纯deep模型,wide&deep模型显著提升了app的下载数。
[0240]
2、因子分解机模型fm:
[0241]
因子分解机模型fm引入了特征交叉来丰富特征,在特定的数据背景下,没有特征交叉的模型可能会得出错误的结论,但是手动的特征交叉会存在一些问题:特征交叉的个数较多导致模型参数过于复杂,部分特征交叉的参数无法的训练
[45]
,因此fm借鉴矩阵分解的思想,学习每个变量的隐向量,两个隐向量的内积作为特征交叉的权重,当考虑二阶特征交叉时,模型如下:
[0242][0243]
其中,n代表样本的特征数量,xi是第i个特征的值,w是模型参数,只有当xi与xj都不为0时,交叉才有意义。同时2阶fm可以很容易泛化到高阶:
[0244][0245]
3、深度因子分解机模型deepfm
[0246]
深度因子分解机模型deepfm(deep factorization machines)是华为改良fm模型的一个版本
[46]
,其中增加了对输入特征深度的挖掘,利用神经网络进行信息融合及信息提取,在此基础上拼接传统的fm模型,这样既可以提取深度的信息,也可以获取广度的信息,在记忆性和泛化性上取得了比较不错的成绩。
[0247]
4、注意力因子分解机模型afm
[0248]
注意力因子分解机模型afm(attention factorization machine)以fm为基础,认为fm通过以相同权重建模所有特征交互的方式存在问题,因为不是所有特征交互都是同样有价值的,相反没有多大用的交互特征反而会引入噪声,afm(attentional factorization machine)通过对fm不同的特征交互引入不同重要性来改善fm,重要性通过注意力机制来学习。
[0249]
四、结果分析
[0250]
在测试环节中,使用了movielens 100k的数据进行展开,并划分80%作为训练集,20%作为测试集。通过上文的模型描述,在测试环节目前实现了利用结构化数据进行推荐的部分,并取得了一定的效果,模型整体分为两部分,其一为生成器推荐商品,这一部分利用策略梯度的方式进行优化迭代,进而达到模型训练的结果。在这一部分中,将目标r作为最大化的目标,进而对推荐网络的参数进行更新,另一部分为判别器,用来对推荐的商品进行评价分数的预测,预测结果为观看及相应的评分和不观看,这一部分也就是分类模型,是一个六分类的模型,损失函数利用分类模型的常用损失函数交叉熵进行训练迭代,同时两部分的优化器都使用adam。
[0251]
在测试集上的结果如下,根据策略梯度的算法及后期的改进算法,目前进行了相同数据的两次不同奖励进行,其一为奖励r为上前文定义的,其二为r减去均值。具体原因为:在对生成器进行策略梯度更新时,需要对历史数据进行抽样来近似计算采取当前策略的奖励,抽样具有不确定性,当抽取的样本有偏时,奖励r本身会误导参数更新的方向,需要
减去一个基准,来减小抽样有偏时对参数更新方向的误导。
[0252]
在本次测试中,仅仅引入电影的结构化数据和用户的id信息,为加速模型的收敛效果,训练集及测试集采取负采样,在测试集中,推荐池的大小为10,其中正样本的数目为2,负样本数目为8,采取滚动推荐的效果,其指标图3所示:
[0253]
表3.模型结果及评价指标
[0254] p3p5p10mapndcg3ndcg5ndcg10mrrgan-gru-dqn(r)0.2910.2520.1980.3010.3290.2780.2610.421gan-gru-dqn(r-mean)0.3210.2740.1750.310.3750.2690.2510.401gan-attention-dqn(r)0.3520.2690.2130.3240.3920.3490.3010.438gan-attention-dqn(r-mean)0.3640.3020.2390.3340.4210.3720.3310.472
[0255]
可以看出,本发明提出的模型在实际数据训练测试的环节中具有一定的可行性,具体来看在推荐电影的靠前排序上效果较好,同时由于前文定义的r有正有负,直接采取r作为策略梯度的权重与r减去均值作为权重的效果相差无几,说明在强化学习中合理的设置奖励r对模型的训练结果有重要意义。在采取gru和attention的对比测试中,可以看出引入attention会提高推荐的指标,但是attention的网络参数数目多,需要较多的训练数据来避免训练集数据上过拟合,而测试数据集上表现不佳,这点在后面测试中也逐渐会显示出来。
[0256]
在接下来在原有信息的基础上加入电影简介信息,并利用bert预训练模型对电影简介进行向量化编码。bert模型进行向量化后文本的维度为768,直接与其余特征拼接之后输入gru或者attention网络中,会存在模型参数过多,训练不充分的情况,因此在此处首先将bert输出的结果进行降低纬度,最后与评分、电影类别信息的向量进行连接,一同作为输入信息用于推荐-评价的模型中去,生成器及判别器的损失函数都可以收敛,其结果如表4所示:
[0257]
表4.模型结果及评价指标
[0258] p3p5p10mapndcg3ndcg5ndcg10mrrfm0.3050.2970.2470.3080.2380.1940.2720.319w&d0.4010.3750.3140.4140.4220.4010.37230.449afm0.4170.3910.3540.4490.4380.3990.3470.521nfm0.3840.3570.3250.3470.4080.3570.3040.462pg0.2430.1730.1440.2490.1970.1840.1710.265gan-dqn-attention0.3810.3240.3090.4280.4390.3670.3270.435gan-dqn-gru0.3780.3040.2980.4020.4120.3560.3080.421gan-dqn-lstm0.3690.3110.3010.3990.4190.3610.2920.425gan-dqn-sdm(train)0.5780.5210.4930.6710.6060.5270.4970.568gan-dqn-sdm(test)0.2120.1720.1450.2940.2820.2630.2460.278
[0259]
表4可以看出,通过文本信息的引入对推荐结果有一定的提升,在准确率上,提升了2%左右,map指标提升5%左右,ndcg提升5%,mrr提升3%。同时用户历史观看数据编码的部分,按照前文模型描述,测试环节分别使用了transformer、gru、lstm网络结构进行编码,可以看出,gru的结果略好与lstm,可能的原因为其参数较lstm少四分之一,在数据有限
的情况下模型训练效果更好。当引入attention结构之后,结果相比于循环神经网络有了一定的提高,对长序列的预测准确率明显优于使用循环神经网络。但是,模型的表现在测试集上依旧不如已有模型afm、wide&deep模型。同时,利用smd进行编码时,模型在训练集表现较好,模型在测试集的效果较差,存在明显的过拟合现象。输出参数规模之后可以验证此猜想,smd的参数量是其余模型的两倍以上。
[0260]
同时可以对比直接利用策略梯度方法进行推荐模型训练时,推荐结果相交其余模型差很多,也说明了利用强化学习做推荐时,预训练模型的重要性。在后续的测试中,可以得出一定推荐结果较差的原因,本次推荐过程中的判别器是pointwise的结果,是对单点进行预测和评价,而忽略了两个不同结果的相对大小,在后面的测试中会在判别器中引入相对排序的损失函数,来要求判别器不仅仅考虑单点的预测而且引入相对排序的信息。
[0261]
上文的测试是在负采样的环境中进行的,负采样的采样空间较小,模型相较之下更加容易训练,同时的出的指标也较高,在实际的推荐环节中,推荐商品的空间其实是很大的,在不采用负采样时,本次测试的电影选择空间为1700个,相关的测试推荐指标如表5所示:
[0262]
表5.模型结果及评价指标
[0263] p10p50p100mapndcg10ndcg50ndcg100mrrfm0.04360.02550.01410.0440.0340.01664520.01555840.0456w&d0.04610.02350.0150.05180.05310.02664420.01582680.0526afm0.04460.02150.01410.04740.04860.02520480.01453760.0497nfm0.04430.02240.01440.04790.05030.0259920.0140160.051gan-dqn-attention0.04850.02720.01520.05010.05110.02911260.01801930.0543gan-dqn-gru0.04960.02790.01690.05340.05210.02848860.01651720.062gan-dqn-lstm0.04760.02660.01610.0430.05060.02656080.01507840.0573gan-dqn-sdm(train)0.1040.05630.03550.12080.10910.0569160.0357840.1022gan-dqn-sdm(test)0.00360.01750.00990.050.04790.0268260.0167280.0473
[0264]
通过上述可以看出,本发明提出的模型表现要比已有模型略好,说明利用gan和dqn的模型面对更加稀疏的数据集时表现要更好一些,具体来看,利用gru编码的模型依旧比利用lstm编码模型表现更好一些,但是引入attention的模型表现要差一点,可能是模型参数过多,训练还未达到最优解。同时可以看出,不进行负采样时,sdm还是未训练好,说明单纯增加样本负采样时不能有效提高模型的结论,想要提高结果仍需要增加有效数据的样本数目。
[0265]
本发明还提供了一种的电子设备,如图6所示,本发明实施例提供的电子设备300的结包括处理器301和存储器303,处理器301和存储器303相连,如通过总线302相连。
[0266]
处理器301可以是cpu,通用处理器、dsp,asic,fpga或者其他可编程器件、晶体管逻辑器件、硬件部件或者其他任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器301也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,dsp和微处理器的组合等。
[0267]
总线302可以包括一通路,在上述组件之间传送信息。总线302可以是pci总线或eisa总线等。总线302可以分为地址总线、数据总线、控制总线等。为了便于表示,图中仅以一条粗线表示,但是并不表示仅有一根总线或一种类型的总线。
[0268]
存储器303可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可以储存信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储、磁盘存储介质或其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望程序代码并能够由计算机存取的任何其他介质,但不限于此。
[0269]
存储器303用于存储本技术方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的应用程序代码,以实现本发明上述任一实施例提供中的推荐方法。
[0270]
本技术实施例最后还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本发明上述任一实施例提供中的推荐方法。
[0271]
上文对本发明进行了足够详细的具有一定特殊性的描述。所属领域内的普通技术人员应该理解,实施例中的描述仅仅是示例性的,在不偏离本发明的真实精神和范围的前提下做出所有改变都应该属于本发明的保护范围。本发明所要求保护的范围是由所述的权利要求书进行限定的,而不是由实施例中的上述描述来限定的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1