网站制作公司徐州,泉州制作网页公司,网站功能开发费用多少钱,人性本私 wordpress知识图谱辅助的个性化推荐系统
将从下面4个方面展开#xff1a;
推荐系统的基础知识知识图谱辅助的推荐方法介绍基于embedding的知识图谱推荐方法混合型知识图谱推荐方法
推荐系统的基础知识
1、什么是推荐系统
在当前互联网时代#xff0c;推荐系统是所有面向用户的互联…知识图谱辅助的个性化推荐系统
将从下面4个方面展开
推荐系统的基础知识知识图谱辅助的推荐方法介绍基于embedding的知识图谱推荐方法混合型知识图谱推荐方法
推荐系统的基础知识
1、什么是推荐系统
在当前互联网时代推荐系统是所有面向用户的互联网产品的核心技术只要产品是面向用户的那么就有推荐系统的需求。
推荐系统是解决信息爆炸问题给用户推荐一个用户感兴趣的小规模集合。用户在大量商品中不知道如何选择推荐系统是替用户做这个选择猜用户的兴趣然后给用户推荐一个小规模的商品集合这样用户就不会迷失在大量商品中。
举几个推荐系统的例子。如下图是imdb系统中的电影推荐imdb会推荐用户可能更感兴趣的电影。 如下图是亚马逊系统中的图书推荐给用户推荐和用户更相关用户更感兴趣的书籍。 如下图是bookingcom系统中旅游景点的推荐给用户推荐更感兴趣景点。 如下图是我们更为熟悉的推荐系统的例子知乎抖音头条等系统都有推荐功能。 2、推荐系统的实现方法
推荐系统主要有2个任务一个是评分预测Rating Prediction。如下图左边是评分预测的例子横坐标是物品纵坐标是用户。表格是用户对物品的打分这个评分可以显示的反应用户对物品的喜好层度1表示很不喜欢5表示很喜欢。推荐系统就是预测表格中问好处的缺失值这就叫评分这个评分叫显示反馈Explicit feedback。
另一个是点击预测CTR Prediction。右边是点击预测的例子表格中只有0和10表示用户没有点击过1表示用户点击过这类数据叫隐式反馈Implicit feedback点击预测只能反映用户的非常弱的偏好层度用户点击了不一定说明用户喜欢比如逛淘宝用户只是点击了某个物品就退出了所以点击物品并不能代表用户的真实感受。 推荐系统有一个非常经典的方法叫协同过滤Collaborative Filtering CFCF的核心是假设相似的用户有相似的偏好。
如下图为4个用户对4个物品的打分情况来预测用户u4对物品i1的评分。通过这4个用户在其他3个商品i2i3i4的打分计算出其他3个用户和u4用户的相似度分别是070102然后用相似度加权平均其他3个用户在i1物品的打分这样就得到了u4对i1的评分为21。 协同过滤CF是根据历史物品评分记录计算出用户相似度从而预测分数。CF是一种常见的方法但存在以下2类问题。 第一类是稀疏性问题Sparsity一般情况下评分分布是相当稀疏的比如一个用户一辈子可能只会看几百部电影但电影总数达百万量级所以在计算相似度的时候会有困难。
第二类更进一步冷启动问题Cold start当来了一个新的用户这个新的用户没有历史记录所以没法计算相似性就没法做推荐。当注册新的app时比如读书类的app系统一开始会问你对哪些主题感兴趣因为系统没有你的历史记录刚开始没法给你推荐。
知识图谱辅助的推荐方法介绍
针对推荐系统出现的问题我们的思路是既然用户和物品交互很稀少甚至没有那可以引入其他的一些信息这些引入的信息叫辅助信息Side Information。如下图是4类非常常见的辅助信息社交网络用户或商品属性特征多媒体信息比如电影的海报文本信息视频音频信息等上下文信息假设一个用户购买了一个商品购买记录的一些信息比如时间、地点、当前用户购物车的其他物品信息等。
。 1、什么是知识图谱
知识图谱Knowledge Graphs KG也是一种辅助信息。KG是一个有向异构图heterogeneous graph图中节点表示实体entity边表示关系relation。
一个KG通常包含很多对三元组tripleheadrelationtail其中head和tail是2个实体entityrelation就是边。
如下图推荐系统的item是电影所以Forrest Gump是推荐系统的item同时也是KG中的实体KG中其他的实体并不是推荐系统的item Forrest Gump这部电影的主演是Tom Hanks虽然Tom Hanks是KG的实体entity但并不是item。把图中左边这些三元组triples组合起来就变成了右边的一个很大的KG。 2、为什么要在推荐系统中使用KG
如下图假设一个用户最左边看过3部电影itemCast Away Back to the Future TheGreen Mile在KG中可以将这3部电影连接到其他的一些事情上比如Cast Away 这部电影的类别genre是冒险形AdventureBack to the Future的导演directed是Robert Zemeckis等可以连接到很多其他nonitem实体上再从这些nonitem实体又连接到item电影实体上比如最右边的Interstellar Forrest GumpRaiders of the Lost Ark。 KG建立一个从用户已经看过的电影到没看过的电影的连接而这些连接不是由用户的观看记录得来的。在CF里实际上是把中间这块替换成了其他用户用其他用户历史观看记录得到这些连接。KG提供了另外一种关于物品连接的信息来源的方法。 如上图是一个新闻推荐的例子假设某个用户看过一条新闻这个新闻的内容是Boris Johnson Has Warned Donald Trump To Stick ToThe Iran Nuclear Deal。
从这条新闻中提取了4个实体在KG中可以对这些实体做进一步的扩展做2次做3次扩展又会发现这些实体都指向另外一条新闻North Korean EMP Attack Would Cause Mass USStarvation Says Congressional Report。
这2条新闻在字面上没有任何相似度新闻的单词都不一样但他们是很相关的这个相关性体现在KG上他们在低层是相关的但这种相关性没法从字面意义上得到这也是为什么要用KGKG提供了一种item相似度的计算方式。
3、KG能给推荐系统带来什么
第1个提高推荐系统的精度Precision更准确的发现item之间的相似性如下图2部电影能通过Tom Hanks做个连接。 第2个提高推荐系统的多样性Diversity可以通过主演扩展可以通过电影类别扩展也可以通过导演扩展总有一款是用户非常喜欢的。 第3个是可解释性Explainability可以用KG的path来解释系统为什么会推荐这部电影如下图某个用户喜欢Cast Away这部电影系统会推荐The Terminal这部电影因为他们有相同的主演。 4、知识图谱处理方法
KG 的处理方法中有一类方法叫KnowledgeGraph EmbeddingKGE。KGE主要是对KG的每个实体entity和每个关系relation学习一个低维的特征。在KGE中有一个基于翻译的距离模型Translational distancemodels。 如上公式为TransE算法模型对KG中的每一个tuplehrt学习到的entity embeddingrelation embedding使hr约等于t这的r相当于翻译作用把h翻译成tf函数对每个tuple的真实分值越小越好。 如图a是TransE模型假设head对应的embedding加上relation对应的embedding等于tail对应的embedding。基于TransE有很多扩展模型比如TransH TransR。
TransH解决的是一对多的问题某一个head和relation可能会对应多个tail如图b把head和tail都投影到一个平面上然后让它们在相对应的平面上做转换。TransR是把head和tail都投影到另外一个空间中在新的空间里让hrt。 KGaware Recommender Systems正式方法大概可以分为3类。
第一类是Embeddingbased methods基于embedding的方法embedding是前面介绍的KG embedding关于这类方法下图列举了5篇论文今天将会介绍第2篇和第5篇。 第二类是Pathbased methods基于KG计算路径的推荐方法今天不会涉及这类方法。 第三类是Hybrid methods结合embedding和path的方法今天将介绍一下第1、3、4篇第3、4是比较统一的方法。 5、知识图谱辅助的推荐系统问题定义 已知一个用户的集合Users一个物品的集合Items用户和物品之间的交互relationsyuv一个包括很多nonitem实体的KG。图中yuv表示用户u对物品v的一个隐式反馈即用户有没有点击过这个物品目标是给定一个新的uv对预测点击率yuv。 公式定义如上图。用户集合Uu1u2物品集合Vv1v2交互矩阵隐式反馈Y矩阵Yyuv 01 uU vVKG包括实体entity和关系relation由很多三元组组成。 每个物品v在KG中可能对应一个或多个实体。物品是实体的一个子集。 目的是学习一个预测函数F给定一对uv可以输出一个预测分值uvθ是目前的一个参数。
基于embedding的知识图谱推荐方法
1、DKN方法
DKN Deep knowledgeaware network for newsrecommendation 属于基于embedding的知识图谱推荐方法是2018年发表的论文这篇论文是关于新闻推荐。 如上图给出一段新闻提取新闻中的实体根据这些实体构建一个知识图谱的子图对知识图谱做embedding映射得到每个实体的embedding最后就得到每个实体的特征向量。 如上图对于某个实体Fight Club只有其对应的embedding还不够在KG中每个实体连接着好多其他的实体那这些临近实体就是该实体的上下文将这些上下文中的每个实体的embedding相加平均就得到该实体的上下文embedding。如上图公式中ē就是实体ei的上下文embedding。 在NLP中有一个模型叫KimCNN主要是给定一个sentence返回一个特征向量。如上图给定一个n个单词的sentence图中n为7对每个单词做embedding映射embedding的长度为d图中d为5得到一个dn的wordembedding矩阵。用7个卷积核做卷积进行featuremaps得到7个1维向量对每个向量做池化Max pooling得到该sentence的word embedding。 前面介绍中已有3种特征向量分别是实体embeddings 上下文embeddings word embedings我们的方法是把这3种embeddings做一个累加卷积池化最后得到这个sentence的embeddings这种方法叫KCNN。 接下来介绍基于KCNN做推荐的方法。如上图假设某个用户已经点击过了3条新闻来了一个候选新闻预测该用户对候选新闻的点击率。对这4条新闻做KCNN的embedding映射得到4个特征向量。因为用户看过的新闻的重要性对候选新闻是不一样的用Attention Net计算用户看过的每一条新闻和候选新闻的决策分值。用得到的分值加权观看记录得到User embedding。将user embedding和candidate news embedding拼接输出一个预测的点击概率这个就是做预测的DKN模型。
2、MKR方法
MKRMultiTaskFeature Learning for Knowledge Graph Enhanced Recommendation属于基于embedding的知识图谱推荐方法是2019年发表在WWW的论文是一个多任务的模型。 如上图为MKR框架包括3个模块一个是推荐模块一个是knowledge graph embedding KGE模块还有一个是以上2个模块的桥梁crosscompress units交叉压缩单元下面将分别阐述这3个模块。 推荐系统模块输入是user item输出是用户对物品的点击率。模块分2块一个是lowlevel的部分一个是highlevel的部分。在lowlever部分用了一个MLPmultilayer perceptron来处理用户的特征ULitem是crosscompressunits做的处理返回一个物品的特征VL把UL和VL拼接起来用一个recommendation system函数fRS输出一个点击预测值。 KGE模块也分成lowlever和highlevel部分输入head用crosscompress unites来做特征处理relation用MLP做特征处理把这2个处理结果拼接起来经过一个K层的MLP得到一个predictedtail预测的tail和真实的tail用一个函数fKG算一个分值这样就可以优化这个score值。 这个多任务之所以能做起来主要是推荐系统模块的物品item和KGE模块的实体entity是对应的很多item可以在KGE中找到对应的entityitem和entity是对同一个物品的描述他们的embedding在某种层度上是相似的是可以被连接的。中间的crosscompressunits就是这个连接结合这个模块是在每一层都有在l层输入是item的embedding vl和entity的embedding el输出是下一层的embedding。
这个模块计算分2步第一步是cross第二步是compress。
cross操作是将vlel做一个crossvl是一个d1的向量elT是1d的向量矩阵相乘后得到一个dd的矩阵Cl。
compress是将交叉后的矩阵Cl重新压缩回embedding space这块细节部分可以参考论文。通过参数wl压缩输出vl1el1。 学习算法中loss的计算公式如上图。LRS是推荐系统的loss预测useritem的分值uv和真实分值yuv的差距。LKG是KG的loss对于真实tuplehrt预测分值score越大越好而对于随机替换tupleh’ r t’负样本预测的分值越小越好。LREG是正则项。
算法实现第1块是推荐系统的任务第2块是KGE任务交替训练2者。在每次循环里面做t次的RS的任务训练做1次的KGE任务训练做t次RS训练是因为更关注RS任务这个t是可以调整的这就是MKR模型。
混合型知识图谱推荐方法
1、RippleNet方法
RippleNet Propagating User Preferenceson the Knowledge Graph for Recommender Systems属于混合型知识图谱推荐方法是2018发表在CIKM的一篇论文。 Ripple从名字上理解是水波的意思水波是一层一层的那这个算法是指在KG中某个实体和该实体相连的其他实体也有一跳二跳三跳的关系如上图列出了ForrestGump这部电影对应的3跳的临近实体。 如上图是RippleNet框架输入是一对useritem输出是用户对物品的点击预测值。 对输入用户u获取用户的点击记录Vu在KG中找到对应的Vu比如图中有2个对应实体获取这些实体对应的tuple把实体一跳的集合拿出来。对输入物品v做embedding映射。如上公式将item embedding v和这些head hi在R空间中做一个softmax得到v相对于每个head的分值pi。 如上图公式用pi加权平均对应的tail embedding ti得到输出ou1即当前用户u的一跳的特征对应图中绿色竖条可以看成该用户对当前物品的一阶响应Users1order response。 继续拿ou1特征重复之前的操作拿ou1和物品二跳的tuple算一个p值加权对应的tail embedding得到ou2。
重复做下去得到很多跳的响应值oui把这些响应值加起来得到用户最终的embedding。 用这个用户embedding和物品最初的embedding做内积再用一个sigmoid函数得出点击预测值。 学习算法如上图在已知KG和RippleNet系统情况下学习参数最大化后验概率。通过贝叶斯定理可以把该公式拆成3个值。第1项是参数的先验分布用上面这个公式来刻画这个先验概率分布pθ这项对应的是正则项loss。 第2项给定参数θKG的概率这项对应的是KG的embedding部分。当hrt是正样本Ihrt接近1反之为0希望hTRt能接近真实的tuple值。 第3项已知参数θ和KG用户和物品交互的似然函数。这个似然函数是一个伯努利分布关于用户和物品内积的伯努力分布。 把这3项用负log做处理得到loss函数优化这个模型。
2、KGCN和KGCNLS方法
KGCNKnowledge GraphConvolutional Networks for Recommender Systems是发表在2019年WWW上的一篇论文。KGNNLSKnowledgeawareGraph Neural Networks with Label Smoothness Regularization for RecommenderSystems是发表在2019年KDD上的一篇论文这篇是基于第1篇的扩展这2篇论文一块讲解。核心思想是基于KG辅助的推荐但引入了一个新的模型GCN图神经网络方法是基于GCN对KG扩展一个模型。 在KG中的边没有显示权值只是一个关系类型。引入一个relation scoring function sur对每个relation打分从而把KG转换成weightedgraph。函数sur的输入是user和relation输出一个分值。核心思想是识别用户关注的类型比如有些用户偏好同种类的电影有些用户偏好某个主演的电影。sur用来刻画不同用户对不同relation的偏好层度将user embeding和relation embedding内积算出相应的分值。把异构KG转换成weighted graph这样一个graph对应邻接矩阵Au下标为u是因为每个用户对应的邻接矩阵是不一样的sur是取决于用户。 把KG中实体信息通过GNN做一个融合如上图公式是一个标准的GNN的公式Au是用户对应的邻接矩阵。 Du是Au的三角对称矩阵diagonal degree matrix。 Wl就是训练传输参数矩阵。 HlHl1是entity对应的embedding矩阵。 σ是一个非线性函数。 这个式子本质是在KG上做了一个多跳的message passing把实体周围的那些临近点的特征向中间聚集最后一层学到的特征是融合了多跳的临近点的特征。当得到最后一层embedding Hl后就可以做点击预测。 上图公式中u对应的是Userembedding。 vu是根据前面KGNN计算得出的关于用户的entity embedding。 通过f函数得到预测值f函数可以取内积或MLP等。到这是第1篇论文的KGCN模型。 如上公式在传统GNN模型中Au是固定的只需要训练Wl。 但在我们的模型中Au和Wl都需要训练Au是通过relation scoring function计算图的结构需要训练导致模型参数很多容易过拟合。 为了防止过拟合的问题引入一个正则项给模型一个约束。用label做约束user engagement labels指的是用户对物品的打分值yuv是用户对某个物品的评分这个评分是一个已知值所以可以在KG中对这些点打一个标签。用户看过某部电影对应的标签是1没看过的电影对应的标签是0对nonitem实体没有标签。 下一步是预测某个点的label有一类算法叫标签传播算法label propagation algorithm LPA这个算法是优化下面这个函数。 遍历所有的边Au是边的权值。如果ij节点有边说明这2个节点联系比较强那这2个节点的label会比较相近。这2个节点的边权值越大那这2个节点的label就越一致。这是算法LPA的一个假设标签过度是平滑的。 预测一个无标签的节点将其周围节点的label加权平均重复该操作直到收敛这就是label propagation。 利用label propagation做正则项对于一个节点v其真实lable是yuv图中为0。 利用LPA算法预测这个v的label得到预测值uv算出预测值和真实值之间的损失J。 在做label propagation时标签传播是取决于边权值所以最终预测值是关于边权值的函数损失J也是一个关于边权值的函数。损失函数RA是一个关于A的函数所以可以把梯度往这个损失函数中传播起到一个正则项的作用。 如上图回顾一下整个模型把原始异构KG转成weighted graph学习边的权值得到一个邻接矩阵用GNN得到entity embedding用这个entity embedding 和user embedding来做这个预测得到预测值uv用和真实值y得到一个loss反向传播将误差梯度向前传播更新Au和参数W。
下面部分是正则项邻接矩阵为参数做一个labelpropagation得到预测值uv用和y得到一个loss反向传播更新Au。 的作用。
[外链图片转存中…(img-BLPPLJFH-1709548985930)]
如上图回顾一下整个模型把原始异构KG转成weighted graph学习边的权值得到一个邻接矩阵用GNN得到entity embedding用这个entity embedding 和user embedding来做这个预测得到预测值uv用和真实值y得到一个loss反向传播将误差梯度向前传播更新Au和参数W。
下面部分是正则项邻接矩阵为参数做一个labelpropagation得到预测值uv用和y得到一个loss反向传播更新Au。
[外链图片转存中…(img-EGarVJfB-1709548985931)]
总结一下本文主要介绍了3个部分的内容第1部分介绍了知识图谱是推荐系统的一种新的辅助信息。另外2个部分介绍了两类知识图谱推荐方法一类是基于embedding的知识图谱推荐方法包括DKN和MKR一类是混合型知识图谱推荐方法包括RippleNet、KGCN和KGNNLS。