美文网首页
基于知识图谱的推荐系统

基于知识图谱的推荐系统

作者: python小白22 | 来源:发表于2021-09-02 12:18 被阅读0次

    推荐系统存在的问题

    传统的推荐系统只使用用户和物品的历史交互信息(显式或隐式反馈)作为输入,但这会导致两个问题:
    (1)数据的稀疏性问题:在实际应用场景中,用户和物品的交互信息往往是非常稀疏的。例如,一个电影类APP可能包含了上万部电影,然而一个用户打过分的电影可能平均只有几十部。使用如此少量的已观测数据来预测大量的未知信息,会极大地增加算法的过拟合风险;
    (2)冷启动问题:对于新加入的用户或者物品,由于系统没有其历史交互信息,因此无法进行准确地建模和推荐。
    一般情况下,解决稀疏性和冷启动问题的方法,就是在推荐算法中额外引入一些辅助信息作为输入。这些辅助信息可以丰富对用户和物品的描述,从而有效地弥补交互信息的稀疏或缺失。在各种辅助信息中,知识图谱作为一种新兴类型的辅助信息,这几年的相关研究比较多。

    什么是知识图谱

    知识图谱是一种语义网络,其节点代表实体,边代表实体之间的各种语义关系。一个知识图谱由若干个三元组(ℎ、𝑟、𝑡)组成,其中 ℎ𝑡 代表一条关系的头节点和尾节点,𝑟 代表节点之间的关系。

    上图是一个三元组,它表达了“陈凯歌导演了霸王别姬”这样一条事实,其中h=陈凯歌t=霸王别姬r=导演
    下图是一个简单的知识图谱示例。比如说,图中的“中国”、“北京”、“16410平方公里”等代表的是实体,图中的“人口”、“首都”、“面积”等代表了各实体之间的联系。这样的图具有很强的表示能力,因为它可以通过跟踪图中的不同边来获得实体的多个属性。

    知识图谱引入推荐系统的优势

    知识图谱包含了实体之间丰富的语义关联,为推荐系统提供了潜在的辅助信息来源。知识图谱在诸多推荐场景中都有应用的潜力,例如电影、新闻、景点、餐馆、购物等。和其它种类的辅助信息相比,知识图谱的引入可以让推荐结果具有以下特征:
    (1)精确性
    知识图谱为物品引入了更多的语义关系,可以深层次地发现用户兴趣。比如下图中展示的,用户喜欢霸王别姬这部电影,这部电影的主演的是张国荣,而张国荣正好也主演了阿飞正传,所以用户也可能喜欢阿飞正传这部电影。


    (2)多样性
    知识图谱提供了实体之间不同的关系连接种类,有利于推荐结果的发散,避免推荐结果局限于单一类型。比如说下图中的用户喜欢霸王别姬这部电影,那么就可以从这部电影出发,分别找到与这部电影同主演、同题材、同导演的作品。这样就可以把这三部电影分别推荐给用户,增加了推荐结果的多样性。

    (3)可解释性
    知识图谱可以连接用户的历史记录和推荐结果,从而提高用户对推荐结果的满意度和接受度,增强用户对推荐系统的信任。比如说一个用户喜欢霸王别姬这部电影,则给他推荐下面这三部电影分别是因为他们有相同的主演、相同的题材或者相同的导演。

    知识图谱与推荐系统的结合方法

    基于利用KG信息的方式不同,可以将知识图谱与推荐系统的结合方法分为三类:分别是基于嵌入的方法、基于路径的方法和统一方法。
    1.基于嵌入的方法
    基于嵌入的方法通常直接使用来自 KG 的信息来丰富项目或用户的表示。为了利用 KG 信息,需要使用知识图嵌入 (KGE) 算法将 KG 编码为低秩嵌入。根据用户是否包含在KG中,基于嵌入的方法可以分为两类,分别是基于项目图的和基于用户-项目图的。
    (1)基于项目图的
    该图是由从数据集或外部知识库中提取的项目及其相关属性构成,不包含用户信息。该方法利用知识图嵌入 (KGE) 算法对图进行编码,可以获得项目更全面的表示,然后将项目边信息集成到推荐框架中。具体来说就是可以通过多方面的信息得到项目的潜在向量,这些信息包括KG、用户-项目交互矩阵、项目内容和项目属性等。然后利用偏好得分函数\hat y_{i,j}=f(u_i,v_j),通过得到的用户和项目的潜在向量来计算用户u_i选择项目v_j的概率,并根据概率结果得到用户的偏好排名。
    (2)基于用户-项目图的
    该图中用户、项目及其相关属性充当节点;它们的属性级关系(品牌、类别等)和用户相关关系(共同购买、共同查看等)作为边。该方法从构建出的图谱可以得出实体嵌入,然后根据偏好得分函数\hat y_{i,j}=f(u_i,v_j,r)得到结果。和基于项目图不同的是,这个偏好得分函数中,可以加入关系嵌入r一起计算。

    基于嵌入的方法主要包含两个模块:图嵌入模块,主要利用图嵌入的方法学习知识图谱中实体和关系的表征;和推荐模块,以建模用户对物品的偏好。按照这两个模块的结合方式,可将这一方向的工作划分为三类,分别是依次学习,联合学习和交替学习。
    (1)依次学习
    该方法首先使用知识图谱特征学习得到实体向量和关系向量,然后将这些低维向量引入推荐系统,学习得到用户向量和物品向量。

    (2)联合学习
    该方法将图嵌入模块和推荐模块的目标函数相结合,从而实现端到端的训练。
    (3)交替学习
    该方法引入多任务学习框架,通过将图嵌入模块设计成与推荐模块相关而又分离的任务,例如知识图谱补全,边预测任务,从而利用图嵌入模块监督推荐模块的训练过程。

    2.基于路径的方法
    基于路径的方法是构建一个用户-项目图,利用图中实体的连接模式进行推荐,通过用户和/或项目之间的连接相似性来增强推荐结果。
    其中一种基于路径的方法是利用不同元路径中实体的语义相似性来细化图中用户和项目的表示。然后,根据偏好得分函数得到预测结果。
    另一种方法提出了一些框架来学习连接用户-项目对的路径的显式嵌入,以便直接建模用户-项目关系。具体的,假设 KG 中有 k 条连接u_iv_j的路径,路径p的嵌入表示为h_p,则u_iv_j交互的最终表示为:h=g(h_p);最后,可以利用加入了h的偏好得分函数得到预测结果:\hat y_{i,j}=f(u_i,v_j,h)
    3.统一的方法
    前面介绍的两种方法中,基于嵌入的方法利用用户/项目在KG中的语义表示进行推荐,而基于路径的方法使用语义连接信息进行推荐,但这两种方法都只利用了图中信息的一个方面,所以为了充分利用KG中的信息以获得更好的推荐,提出了结合实体和关系的语义表示以及连通性信息的统一方法。统一的方法是基于嵌入传播的思想。这些方法以KG中的连接结构为指导,对实体表示进行细化。统一的方法主要有两个工作:一是从用户的交互历史中提炼用户的表示,基本思想是利用用户过去交互项目的嵌入以及这些交互项目的多跳邻居来学习用户表示;二是通过聚合项目的多跳邻居的嵌入来细化项目表示。其中,多跳邻居表示为:e_0 \stackrel{r_1} \longrightarrow e_1 \stackrel{r_2} \longrightarrow ... \stackrel{r_H} \longrightarrow e_H,则e_He_0H跳邻居,即就是两个实体通过中间的实体,而间接连在一起的关系。

    总结

    目前对于基于知识图谱的推荐系统还在初学习阶段,对各种方法的具体模型了解还不是很多,前几天看了一篇何向南的结合知识图谱的文章,应该是目前基于知识图谱的推荐系统的文章中效果比较好的,这篇文章利用了多任务学习策略,考虑到KG可能存在缺失的事实,联合训练了KG完成模块和推荐模块。根据目前的了解来说,基于知识图谱的推荐系统在动态推荐、多任务学习和跨域推荐等方面都有很好的研究前景。

    参考

    https://www.cnblogs.com/niuxichuan/p/9317711.html
    A Survey on Knowledge Graph-Based Recommender Systems

    相关文章

      网友评论

          本文标题:基于知识图谱的推荐系统

          本文链接:https://www.haomeiwen.com/subject/lssxwltx.html