协同过滤算法效果不佳怎么办?知识图谱来帮忙啦!

Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation(WWW2019)

Paper:https://arxiv.org/pdf/1901.08907.pdf

作者:一元,炼丹笔记小编

背景

协同过滤在真实推荐场景中经常会受到稀疏性冷启动问题的影响,为了缓解此类问题,我们使用附带信息(side infomation)来处理。本文,作者使用知识图谱作为附带信息并采用多任务学习的方式来处理该问题。

问题定义模型介绍

1. 问题形式

1.1 符号定义 & 案例解释

我们有一个MMM个用户的集合,U={u1,u2,…,uM}U=\left\{u_{1}, u_{2}, \ldots, u_{M}\right\}U={u1,u2,,uM},以及NNN个商品的集合, V={v1,v2,…,vN}V=\left\{v_{1}, v_{2}, \ldots, v_{N}\right\}V={v1,v2,,vN},以及用户和商品的交互集合,Y∈RM∗NY \in R^{M * N}YRMN。如果用户uuu和商品vvv有交叉,例如点击,观看,购买等,那么yuv=1y_{u v}=1yuv=1,反之则为0。

除此之外,我们还有知识图谱G\mathcal{G}G, 它由实体关系实体(entity-relation-entity)的三元组(h,r,t)(h, r, t)(h,r,t)组成,其中分别表示head,relation,和tail。例如(Quentin Tarantino, film.director.film, Pulp Fiction)就表示Quentin Tarantino监制了电影Pulp Fiction。而在推荐场景中, 一个商品v∈Vv \in \mathcal{V}vV可能和G\mathcal{G}G中的一个或者多个实体关联。例如在电影推荐中, Pulp Fiction可能和它一个同名的关联,但是在新闻推荐中,标题名字为”Trump pledges aid to Silicon Valley during tech meeting”在知识图谱中就和实体"Donald Trump"以及"Silicon Valley"相关联。

1.2. 问题定义

给定用户和商品的交互矩阵YYY以及知识图谱G\mathcal{G}G,我们希望预测用户对于之前从未有交互的商品是否存在潜在的兴趣?所以我们的目标就是:

  • yˉuv=F(u,v∣Θ,Y,G)\bar{y}_{u v}=\mathcal{F}(u, v \mid \Theta, Y, \mathcal{G})yˉuv=F(u,vΘ,Y,G)

其中yˉuv\bar{y}_{u v}yˉuv为用户uuu和商品vvv交互的Θ\ThetaΘ概率,F\mathcal{F}F为函数的参数,

2. 模型框架

本文的整体模型框架如下:

MKR由三个模块组成:

  • 推荐模块:使用用户和商品作为输入并且使用MLP和cross&compress单元分别抽取dense的用户和商品特征;抽取的特征然后输入到另一个MLP并输出预测概率;
  • 右侧的KGE模型也使用了多层从head和知识三元组中抽取特征并且输出在分数函数fff和实际尾部监督下的尾部预测的表示;
  • 推荐模块和KGE模块通过特殊设计的cross&compress单元进行连接。提出的单元还可以学习在推荐系统和KG中实体的高阶交叉信息。

2.1 Cross & compress 单元

为了建模商品和实体的特征交叉,我们设计了一个cross&compress单元。对于商品以及它所关联的实体,我们先构建影隐藏特征vl∈Rdv_{l} \in R^{d}vlRd以及el∈Rde_{l} \in R^{d}elRdd∗dd * ddd个成对交叉。
Cl=vlelT=[vl(1)el(1)…vl(1)el(d)………vl(d)el(1)…vl(d)el(d)]∈Rd∗dC_{l}=v_{l} e_{l}^{T}=\left[\begin{array}{ccc} v_{l}^{(1)} e_{l}^{(1)} & \ldots & v_{l}^{(1)} e_{l}^{(d)} \\ \ldots & \ldots & \ldots \\ v_{l}^{(d)} e_{l}^{(1)} & \ldots & v_{l}^{(d)} e_{l}^{(d)} \end{array}\right] \in R^{d * d} Cl=vlelT=vl(1)el(1)vl(d)el(1)vl(1)el(d)vl(d)el(d)Rdd
ClC_{l}Cl是在第lll层的特征交叉矩阵, ddd是隐藏层的维度。

然后我们通过交叉特征矩阵将下一层的商品和实体特征向量映射到它们的潜在表示空间。

  • vl+1=ClwlVV+ClTwlEV+blV=vlelTwlVV+elvlTwlEV+blVv_{l+1}=C_{l} w_{l}^{V V}+C_{l}^{T} w_{l}^{E V}+b_{l}^{V}=v_{l} e_{l}^{T} w_{l}^{V V}+e_{l} v_{l}^{T} w_{l}^{E V}+b_{l}^{V}vl+1=ClwlVV+ClTwlEV+blV=vlelTwlVV+elvlTwlEV+blV
  • el+1=ClwlVE+ClTwlEE+blE=vlelTwlVE+elvlTwlEE+blEe_{l+1}=C_{l} w_{l}^{V E}+C_{l}^{T} w_{l}^{E E}+b_{l}^{E}=v_{l} e_{l}^{T} w_{l}^{V E}+e_{l} v_{l}^{T} w_{l}^{E E}+b_{l}^{E}el+1=ClwlVE+ClTwlEE+blE=vlelTwlVE+elvlTwlEE+blE

其中, wl∈Rdw_{l} \in R^{d}wlRdbl∈Rdb_{l} \in R^{d}blRd是训练的权重和偏差向量。这个称为compress操作,因为我们将Rd∗dR^{d * d}Rdd投影到RdR^{d }Rd上。通过上面的操作,我们从水平和垂直方向进行了压缩。

  • cross&compress单元:[vl+1,el+1]=C(vl,el)\left[v_{l+1}, e_{l+1}\right]=C\left(v_{l}, e_{l}\right)[vl+1,el+1]=C(vl,el)

通过该操作,MKR可以自适应地调整知识迁移的权重并且学习两个任务的相关性。

注意:交叉压缩单元应该只存在于MKR的底层。在深层结构中,特征通常沿网络从广义(general)到特定(special)的转换,并且随着任务的不同性的增加,特征在更高层次的移植性会显著下降。因此,共享高层的信息有可能导致负迁移,特别是对于MKR中的异构任务。在MKR的高层中,商品的特征与用户特征混合,实体特征与关系特征混合。混合特征不适合共享,因为它们没有明确的关联。

2.2 推荐模块

MKR中的推荐模块由两个原始输入特征向量uuuvvv组成, 给定用户uuu的原始特征向量,我们使用LLL层的MLP对其深层的语义信息进行抽取。

  • uL=M(M(…M(u)))=ML(u)u_{L}=\mathcal{M}(\mathcal{M}(\ldots \mathcal{M}(u)))=\mathcal{M}^{L}(u)uL=M(M(M(u)))=ML(u)

其中M(x)=σ(Wx+b)\mathcal{M}(x)=\sigma(W x+b)M(x)=σ(Wx+b)是全连接网络层, 对于商品vvv,我们使用LLLcross&compress的单元抽取它的特征:

  • vL=Ee∼S(v)[CL(v,e)[v]]v_{L}=E_{e \sim \mathcal{S}(v)}\left[C^{L}(v, e)[v]\right]vL=EeS(v)[CL(v,e)[v]]

其中S(v)\mathcal{S}(v)S(v)是商品vvv的相关实体集合。

在获得用户uuu的潜在特征uLu_{L}uL以及商品vvv的潜在特征vLv_{L}vL之后,我们使用下面的方式对其进行预估:

  • yˉuv=σ(fRS(uL,vL))\bar{y}_{u v}=\sigma\left(f_{R S}\left(u_{L}, v_{L}\right)\right)yˉuv=σ(fRS(uL,vL))

2.3 知识图谱Embedding模块

知识图谱embedding将实体以及关系embed到某个连续的向量空间中,和推荐模块类似, 对于给定的知识三元组(h,r,t)(h, r, t)(h,r,t),我们首先使用多个KaTeX parse error: Expected '}', got '&' at position 13: \text {cross&̲compress} 的单元以及非线性层来处理head hhh以及关系rrr的原始特征向量,最终它们的潜在向量被concatenate到一起, 之后再接上上K层的MLP预测ttt,
hL=Ev∼S(h)[CL(v,h)[e]]rL=ML(r)tˉ=MK(hLrL)h_{L}=E_{v \sim \mathcal{S}(h)}\left[\mathcal{C}^{L}(v, h)[e]\right] r_{L}=\mathcal{M}^{L}(r) \bar{t}=\mathcal{M}^{K}\left(\begin{array}{l} h_{L} \\ r_{L} \end{array}\right) hL=EvS(h)[CL(v,h)[e]]rL=ML(r)tˉ=MK(hLrL)
其中S\mathcal{S}S是和实体hhh相关的商品集合, tˉ\bar{t}tˉ是尾部的预测向量,最终,(h,r,t)(h, r, t)(h,r,t)三元组通过得分函数fKGf_{K G}fKG计算得到:

  • score⁡(h,r,t)=fKG(t,tˉ)\operatorname{score}(h, r, t)=f_{K G}(t, \bar{t})score(h,r,t)=fKG(t,tˉ)

我们使用正则化的内积fKG(t,tˉ)=σ(tTtˉ)f_{K G}(t, \bar{t})=\sigma\left(t^{T} \bar{t}\right)fKG(t,tˉ)=σ(tTtˉ)作为得分函数。

2.4 学习算法

MKR的最终Loss为:
L=LRS+LKG+LREG=∑u∈U,v∈VJ(yˉuv,yuv)−λ1(∑(h,r,t)∈Gscore⁡(h,r,t)−∑(h′,r′,t′)∉Gscore⁡(h′,r,t′))+λ2∥W∥22\mathcal{L}=\mathcal{L}_{R S}+\mathcal{L}_{K G}+\mathcal{L}_{R E G}=\sum_{u \in U, v \in V} \mathcal{J}\left(\bar{y}_{u v}, y_{u v}\right)-\lambda_{1}\left(\sum_{(h, r, t) \in \mathcal{G}} \operatorname{score}(h, r, t)-\sum_{\left(h^{\prime}, r^{\prime}, t^{\prime}\right) \notin \mathcal{G}} \operatorname{score}\left(h^{\prime}, r, t^{\prime}\right)\right)+\lambda_{2}\|W\|_{2}^{2} L=LRS+LKG+LREG=uU,vVJ(yˉuv,yuv)λ1(h,r,t)Gscore(h,r,t)(h,r,t)/Gscore(h,r,t)+λ2W22
上面式子中, J\mathcal{J}J是交叉熵函数, 用来计算推荐模块的损失; 第二项计算KGE模块的损失, 其中我们希望增加所有正的三元组的分数同时减少所有负的三元组的分数。最后一项是正则项。

3. 理论分析

cross&compress的单元有足够的多项式近似的能力。证明略。

1. 和Baseline比较

  • MKR在四个数据集上对比其他所有方法都取得了最好的效果;

2. 和MKR的变种比较

  • MKR中设计的交叉策略可以学习到更加高阶的信息,取得更好的效果

3. 在稀疏场景下的情况

  • 和其他模型对比, MKR在数据稀疏的情况下下降是最少的,这也验证了模型MKR当用户商品交叉较少的情况下依然可以取得不错的效果;

4. KGE side的结果

  • RS的任务也可以帮助KGE任务,这也说明了multi-task learning可以利用共享信息帮助提升所有任务的效果。

5. 参数敏感度(KG:Knowledge Graph, KGE:Knowledge Graph Embedding)

  • KG大小的影响: Bing-News的效果随着KG size的变大而稳定变好;
  • RS的训练频率: MKR前期会随着训练频次的增加而变好,但是到达某个值t=5之后,效果会略有下降,这可能是因为KGE模块的高训练频率会误导MKR的目标函数,而KGE训练频率太小则无法充分利用KG传递的知识;
  • Embedding维度的影响:随着embedding维度的增大, 效果前期会有提升,但是到后面之后会慢慢变差一些,这可能是因为过大的embedding维度会引入噪音的问题;

小结1

训练频率会误导MKR的目标函数,而KGE训练频率太小则无法充分利用KG传递的知识;

  • Embedding维度的影响:随着embedding维度的增大, 效果前期会有提升,但是到后面之后会慢慢变差一些,这可能是因为过大的embedding维度会引入噪音的问题;

小结2

提出了一种多任务学习的知识图增强推荐方法MKR。MKR是一个端到端的深度模型框架,由两部分组成:推荐模块和KGE模块。两个模块都采用多个非线性层来提取输入的潜在特征,以适应用户商品和头部关系对之间复杂的交互作用。由于这两个任务不是独立的,而是通过商品和实体联系在一起的,因此我们在MKR中设计了一个交叉压缩单元来关联这两个任务,它可以自动学习项目和实体特征的高阶交互,并在两个任务之间传递知识。在四个推荐场景中进行了大量的实验。结果表明MKR比强基线有显著的优越性和KG的使用效果。

MKR:协同过滤算法效果不佳,知识图谱来帮忙相关推荐

  1. SIGIR 2019 开源论文 | 基于图神经网络的协同过滤算法

    作者丨纪厚业 单位丨北京邮电大学博士生 研究方向丨异质图神经网络,异质图表示学习和推荐系统 引言 协同过滤作为一种经典的推荐算法在推荐领域有举足轻重的地位.协同过滤(collaborative fil ...

  2. SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高

    1.背景知识 在讲SVD++之前,我还是想先回到基于物品相似的协同过滤算法.这个算法基本思想是找出一个用户有过正反馈的物品的相似的物品来给其作为推荐.其公式为: 其中 rui 表示预测用户u对物品i的 ...

  3. Python基于用户协同过滤算法电影推荐的一个小改进

    之前曾经推送过这个问题的一个实现,详见:Python基于用户协同过滤算法的电影推荐代码demo 在当时的代码中没有考虑一种情况,如果选出来的最相似用户和待测用户完全一样,就没法推荐电影了.所以,在实际 ...

  4. 推荐系统之协同过滤算法分布式实现(附代码实现)

    图片来自网络 文章作者:Sunbow 高级工程师 编辑整理:Hoh Xil 导读:本文主要介绍协同过滤基础知识,以及分布式实现设计,并最终在 Spark 平台上对同现相似度.Cosine 相似度.欧几 ...

  5. 【推荐算法】协同过滤算法——基于用户 Java实现

    只是简单谢了一个Demo,先贴上GitHub地址. https://github.com/wang135139/recommend-system 基本概念就不过多介绍了,相信能看明白的都了解.如果想了 ...

  6. Springboot+采用协同过滤算法的家政服务平台的设计与实现 毕业设计-附源码260839

    Springboot家政服务平台 摘  要 协同过滤算法是一种较为著名和常用的推荐算法,它基于对用户历史行为数据的挖掘发现用户的喜好偏向,并预测用户可能喜好的产品进行推荐.基于协同过滤算法的家政服务平 ...

  7. springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839

    Springboot家政服务平台 摘  要 协同过滤算法是一种较为著名和常用的推荐算法,它基于对用户历史行为数据的挖掘发现用户的喜好偏向,并预测用户可能喜好的产品进行推荐.基于协同过滤算法的家政服务平 ...

  8. 个性化智能推荐(协同过滤算法)技术研究

    个性化智能推荐(协同过滤算法)技术研究 一.  协同过滤推荐(Collaborative Filtering简称 CF)        协同过滤技术是目前推荐系统中最成功和应用最广泛的技术,在理论研究 ...

  9. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

最新文章

  1. 关于生成漏洞信息属性代码备份
  2. win7修改网络计算机名字,小编分析win7系统修改计算机名字的操作方法
  3. 分享一些简单的删查改sql语句
  4. Java集合框架图(学习)
  5. 学习数字电路必须知道的几种编码
  6. 上位机与基恩士plc以太网通讯_2020湛江AB罗克韦尔PLC主机回收二手或全新
  7. matlab中-psi_建议收藏 | 生物信息学中的可变剪切,这些内容你了解吗?
  8. 全网沸腾!鸿蒙手机要来了
  9. poj 2606 Rabbit hunt 解题报告
  10. windows下安装foremost和binwalk(以及两个软件的安装包)
  11. Macromedia Studio 8 简体中文正式版激活码
  12. 在过程中要正式批准可交付成果_PMP项目管理考试试题及答案解析 -
  13. 打印机共享到网络访问不了计算机名,共享打印机XP访问Win7/Win10提示指定的网络名不再可用解决方法...
  14. WindowsGhost 还原系统 0xc0000428 错误
  15. 35岁腾讯员工被裁员感叹:北京一套房,存款700多万,失业好焦虑! 凡尔赛还是事实?
  16. 河北大学计算机学院赵润,影视编导
  17. blob/text column 'content' used in key specification without a key length
  18. 5.6版本GTID复制异常处理一例(转)
  19. 微信十年,张小龙教给我们的产品方法论!(教科书一般的经典)
  20. Blur大战Opensea:a16z的奶酪与Paradigm的独食

热门文章

  1. 火狐Firefox地址栏搜索引擎修改方法!
  2. Visual Studio Code修改字体大小
  3. 油溶性量子点(齐岳)
  4. 嵌入式应用软件任务划分的原则
  5. 区块链溯源是如何实现的?
  6. android 发广播屏蔽home键,如何在Android App中屏蔽(拦截)Home按键及其他按键
  7. 渗透测试 --- 方法论
  8. JAVA程序设计:赛车(LeetCode:818)
  9. Ubuntu 18.04安装Docker Dashboard
  10. 人到中年:最近看到的几篇好文