“直男变暖男”—— 当推荐系统遇上知识图谱

  • 2019 年 10 月 8 日
  • 筆記

本文转载自文旅记

作为一个文科生,深知文化娱乐、旅游休闲、市场营销等领域正在迎接推荐算法的洗礼,传统的分析、内容生产,势必会发生改变。因此笔者一直关注技术领域,斥巨资(狗头保命

)先后参加了python机器学习、知识图谱的课程学习。入门路漫漫,血泪有谁知,吾将上下而求索。本文只是作为探索之路的一个开头,与感兴趣的朋友共同努力,推动文科生走出技术白痴的困境。

本文章内容来源为集智学园孙星恺课程《系统讲解知识图谱——从建模到应用》课程,CDA机器学习工程师课程相关笔记整理,课程版权归原作者所有。


一、被人嘲笑的推荐系统

当女孩子说“我肚子疼”,“钢铁直男”可能会告诉女孩子说“多喝热水”。如今的推荐系统,可能也像“钢铁直男”一样遭到一些人吐槽。当我们打开音乐软件,手贱点击了一首“改革春风吹满地”的恶搞歌曲之后,第二天就会收到“江南皮革厂倒闭了”的推送;更哭笑不得的是,在“猜你喜欢”中,我们可能会看到“Are U OK”“Shnappi”等搞笑歌曲。不禁让人感叹,明明我们还喜欢其他类型的音乐,可是为什么只推送这一种奇葩音乐呢?这看似人工智能的音乐软件,怎么就“宛如人工智障”了呢?

推荐系统是一项工程技术解决方案,本质上是销售系统的一部分,它代替用户评估其从未看过、接触过和使用过的物品。从“没得选”“人帮选”再到“算法选”,实现了初步脱离面对面的产品推荐模式,通过用户的注册信息、历史行为、社交关系、兴趣点、所处上下文环境、地理位置等各种信息,加上算法,找出用户最可能喜欢的东西推荐给用户,现在很多电子商务网站都有这个应用。

目前用的比较多、比较成熟的推荐算法是协同过滤 (Collaborative Filtering,简称 CF)推荐算法,CF的基本思想是根据用户之前的喜好以及其他兴趣相近的用户的选择来给用户推荐物品。

如图所示,在CF中,用m×n的矩阵表示用户对物品的喜好情况,一般用打分表示用户对物品的喜好程度,分数越高表示越喜欢这个物品,0表示没有买过该物品。图中行表示一个用户,列表示一个物品,Uij表示用户i对物品j的打分情况。CF分为两个过程,一个为预测过程,另一个为推荐过程。预测过程是预测用户对没有购买过的物品的可能打分值,推荐是根据预测阶段的结果推荐用户最可能喜欢的一个或Top-N个物品。

要将推荐系统落地到业务上需要大量的工程开发,涉及到日志收集,ETL,分布式计算,特征工程,推荐算法建模,数据存储,提供接口服务,UI展示与交互,推荐效果评估等各个方面,推荐系统是一项庞大而复杂的体系工程。过程中,会用到数据挖掘、机器学习、深度学习等技术。在用户画像、物品画像、匹配模型等方面有广泛的用途。

然而,现在不管是基于特征的推荐,还是基于用户或者物品的协同过滤推荐,都遇到了一些瓶颈:“信息茧房”、稀疏性、冷启动、多样性、可解释性等问题。

都说直男不懂女孩潜台词,其实可能是女孩子根本没有给直男了解她更多爱好、更多行为的机会。但话说回来,女孩子的隐私是随随便便就能打探到的吗?问她“干嘛呢”,更是大忌,跟你非亲非故,为啥要天天向你报备呢?推荐系统同样如此,如果我们不注意方法,很容易被用户“开除球籍”。

这个时候,知识图谱就显示出了优势。

二、当推荐系统遇上知识图谱

知识图谱能够给推荐系统带来三个好处:

一是提高精准度,知识图谱为物品引入了更多的语义关系,就可以深层次地发现用户兴趣。

二是增加多样性,知识图谱提供了不同的关系连接种类,有利于推荐结果的发散,避免推荐结果越来越局限于单一类型。

三是容易解释,知识图谱可以连接用户的兴趣历史和推荐结果,提高用户对推荐结果的满意度和接受度,增强用户对推荐系统的的信任。

那么什么是知识图谱呢?

知识图谱,从本质上说,是一种大规模的语义网络。富含实体(entity)、概念(concepts)及其之间的各种语义关系(semantic relationships)。

作为一种语义网络,是大规模时代知识表示的重要方式之一;作为一种技术体系,是大数据时代知识工程的代表性进展。

构建知识图谱的目标,从多源数据中抽取出Schema中定义的实体与关系数据,形成一个多元知识节点互联的数据库,进而支撑知识检索、知识推荐、知识问答、知识分析等知识服务。

其中,知识图谱的存储,就是设计一个合理的存储方案实现对知识(知识元与关系)的持久化存储并提供高效的检索。

而知识推理,从知识库中已有的实体关系数据出发,进行计算机推理,建立实体链的新关联,从而拓展和丰富知识网络。主要用于知识补全、关系预测、知识问答等,它是基于符号验算的推理+基于数值计算的推理。

知识图谱的应用场景有很多:结合场景、数据、技术,我们可以在搜索、推荐、问答、解释、决策中使用到它。

三、知识图谱试图解决推荐系统哪些问题?

一是数据稀疏性和冷启动问题。一个常见思路是,在推荐算法中额外引入一些辅助信息(side information)作为输入。辅助信息,可以丰富对用户和物品的描述、增强推荐算法的挖掘能力,从而而有效地弥补交互信息的稀疏或缺失。

常见的辅助信息包括:

1、社交网络(social networks)

2、用户、物品属性(attributes)

3、图像、视频、音频、文本等多媒体信息(multimedia)

4、上下文

与此伴生的,是如何根据具体推荐场景的特点将各种辅助信息有效地融入推荐算法,这也一直是推荐系统研究领域的热点和难点。

二是可解释性问题。可解释推荐是在给出推荐结果的同时,给出对结果的支持论据(即解释)。也就是说,选择这个算法模型,效果好在哪里呢?

如果需要更细地进行定义,就要考虑具体应用及目标:

如果更侧重模型可解释性(模型导向),就要求论据能够帮助用户更好地理解模型行为;

如果更注重解释质量中的说服力,则要求论据能够帮助用户更好地做决定。

1、在建模之前的可解释性方法。

2、建立本身具备可解释性的模型。

3、在建模之后使用可解释性方法对模型做出解释。

总体而言,知识图谱包含了实体之间丰富的语义关联,为推荐系统提供潜在的辅助信息来源,可更好地进行用户画像和物品画像,描绘他们的关系网络。从而使得推荐结果更精确,推荐内容更多样,推荐同时还能给出一些合理解释。

四、主要实现方法

基于知识图谱的推荐系统,有很多种实现方法,在本文中,主要介绍5种。

1、异构信息网络

异构信息网络作为一种新的建模方式,包含更多的信息以及整合丰富的语义关系,成为网络数据挖掘的重要工具,各类任务如相似度度量,分类、排序、推荐等都已得到广泛应用,它有四个特点:

(1)基于路径的推荐方法MetaGraph:将知识图谱视为一个异构的信息网络HIN,然后构造物品之间的基于meta-path或者meta-graph的特征(两个实体的一条特定的路径)。

(2)利用了知识图谱的网络结构,由不同类型的元路径相连的两个物品都具有一定的相似度

(3)手动涉及meta-path或者meta-graph

(4)无法在实体不属于同一个领域的场景中应用

2、DKN(DeepKnowleage-Aware Network)

这种方法,主要被用于新闻内容的推荐算法中。原因有三个:

(1)新闻标题和正文中存在大量的实体,

(2)实体间的语义关系可以有效地扩展用户兴趣

(3)实体间的语义关系难以被传统方法(话题模型、词向量方法)发掘

DKN方法包括三个方面,

一是知识提取(Knowledge Distillation),包括标题word embedding,标题entity embedding,上下文实体特征contextual entity embedding;

二是新闻特征提取CNN (Knowledge Aware-CNN深度卷积网络);

三是基于注意力机制的用户兴趣预测。

总体说来,DKN是结合了用户嵌入、注意力网络、知识卷积网络三者的整体点击率预测系统。然而,它并不是一个端到端的方式。

此时,一个基于协同过滤和知识图谱特征学习的推荐系统模型就出现了。

3、基于协同过滤和知识图谱特征学习的推荐系统模型

这种模型将推荐算法和知识图谱特征学习的目标融合,并在一个端到端的优化目标中进行训练。在推荐系统中引入了结构信息、文本数据、图像数据等知识库中的信息,来提升推荐系统的质量。通过训练一个模型,给定具有结构知识、文本及图片的知识库和用户的的隐式反馈,返回给用户最有可能感兴趣的物品列表。

基于用户-物品交互记录生成用户表示向量,各种知识综合成物品的表示向量,最终,用户向量和物品向量都输入神经网络,依据网络的输出值来判断物品是否值得推荐给用户,返回每一个用户最有可能感兴趣的item列表。

由于协同过滤算法比较成熟,这种融合模型目前也是应用相对广泛的一种模型。

4、知识图谱增强推荐能力的多任务特征学习

推荐系统和知识图谱特征学习2个任务之间存在相关性,将推荐系统和知识图谱特征学习视为两个分离但是相关的任务,采用多任务学习框架。

它的好处在于:信息互补、摆脱局部极小值、防止推荐系统过拟合、提高推荐系统的泛化能力。

由于推荐系统中的物品和知识图谱中的实体存在重合,所以两个任务并非相互独立。交叉特征共享单元(一个可以让两个任务交换信息的模块)作为两者的连接纽带。

推荐部分使用用户和物品的特征表示作为输入,预测的点击概率作为输出。

知识图谱特征学习部分使用一个三元组的头结点和关系表示,作为输入,预测的尾节点表示作为输出。

5、基于知识图谱的跨领域推荐(Cross Domain Recommender systems,CDRS)

由于用户的兴趣偏好或物品特征在领域之间存在一致性/相似性,跨领域推荐系统能够通过源领域的信息对目标领域进行辅助推荐,CDRS由三个基本要素构成:领域(domain),用户-物品重叠场景(user-itemoverlap)和推荐任务(recommendation task)。

CDRS一般有4种实现方法:

(1)基于图的方法,用于计算源领域和目标领域的用户与项目之间的关系

(2)基于因式分解的方法,用于提取出源领域和目标领域的用户和项目之间的通用特征

(3)基于语义的方法,将源领域的属性应用到目标领域中,生成知识图谱

(4)基于标签的方法,生成涉及领域之间相互关联的元数据

跨领域推荐的场景一般有三类:

(1)用户/物品完全重叠,能比较容易地将两个领域合并成一个领域

(2)用户/物品部分重叠,重叠的用户/物品成为新兴共享和迁移学习的桥梁

(3)用户/物品完全不重叠,需要挖掘领域间隐含的共同用户/物品或其他关系进行迁移学习。

利用知识图谱发现不同实体间的关联路径,并计算相关度。基于迭代的权重传播(类似于PageRank)可跳出头尾实体节点的相关程度。

五、总结

我们需要清醒的看到,对物品知识的获取,需要人工构建知识,对长尾实体的覆盖有限;用户知识的获取,系统需要用户输入信息,甚至要反复交互,体验感差。

不管什么工具或者是什么方法,肯定是以应用需求为导向,从常见简单应用场景进行尝试,从“小场景”入手,对本领域业务目标有一定认知,定义好场景与问题边界,相信在知识图谱的助力下,“直男”推荐系统以后能够更懂人性,更“暖男”,有更好的应用前景。