本文整理自肖仰华教授在三星电子中国研究院做的报告,题目为《Understanding users with knowldge graphs》。
基于知识图谱的用户理解
背景问题
现有的方法,包括机器学习和深度学习的方法,某种程度上都是在吃大数据的红利,机器学习的效果,模型的效果本质上是由大数据来喂养,我们灌进去的数据越多,模型的效果就越好,尤其是深度学习,随着它的层次结构越来越深以后,它对样本数据的规模和质量的要求也会更高,那么当我们把大数据的红利吃完之后,我们该怎么办呢?
事实上,学术界和工业界在这里年越来越多的意识到这个问题的严重性,就是当我们把大数据红利吃完之后,我们的模型效果应该如何进一步的提升?
对于这个问题,从我这个研究方向给出的答案是什么呢?就是知识。知识的重要性将会越来越突出,我相信很多模型,推荐模型,机器学习算法都将会从数据驱动走向知识引导,越来越多的模型和算法将从基于行为的模型走向基于语义的模型。
我会更多的谈论如何摆脱行为数据的影响来做用户画像和推荐。
因为很多场景下是没有行为数据的,在一些极端的情况下,根本没有用户信息,那么这个时候我们怎么推荐?再比如说在互联网搜索用户画像,高频用户和VIP用户都可以解决的很好,那是因为它数据量足够,但是关键的问题是,很多长尾用户压根没有什么数据,那这个时候我们的模型怎么办?
这时候我们就要借鉴语义和背景知识来给我们力量。这也是为什么我想跟大家分享利用知识图谱来理解用户,给用户画像,来解决推荐的问题的原因。
用户画像
那么在各种各样的画像当中,最流行的一种方法是基于标签的。
在很多实际应用中,大家都在广泛的应用这一类基于标签的画像方法。
基于画像的标签方法其实很简单,就是给用户打一组标签,每个标签给一个权重,权重代表了用户在这个方面兴趣的强烈程度,如图我们给出了一个豆瓣用户的标签云,也给出了一个微博用户的标签云。
不同平台的语言风格,语言体系是不完全一样的,豆瓣的语言倾向于书面化,而微博的语言倾向于碎片化,口语化。
基于标签的用户画像U:一个权重标签的集合
$$ U = {<t_i,w_i>} $$
$t_i$:兴趣标签
$w_i$:权重,代表了用户在这个方面兴趣的强烈程度
问题
时至今日,我们已经有很多方法来帮助解决画像和推荐的问题。
这些方法里面还存在一些问题,问题集中在两个方面。
第一个方面就是用户画像某种程度上还是不完整的。
导致这个问题可能有两个原因:- 第一个原因就是任何画像的来源数据都是有一定偏差的,一般描述的都是用户画像的某一方面,很难有一个非常完整的画像。
- 还有一个非常重要的原因就是隐私,举个例子,大家会发现在微博上其实还是有很多人不愿谈及自己的,比如说宗教信仰,政治观念等等,但是很多时候可能了解用户不愿谈及的这个方面的内容对于我们做产品,做服务又是非常重要的。
基于这两个原因,我们对用户的理解就是一个碎片式的,很难召回完整的目标客户。
用户画像第二个关键的问题就是不正确性,也就是说我们对用户画像的理解很多时候是错误的,这导致就会出现错误的推荐。
导致不正确性的原因有很多,- 第一个就是机器还无法理解这些标签,也就无法做出精准推荐。
- 第二个原因就是在跨领域场景下,由于缺失用户的商品,也就是缺失推荐对象之间的历史交互信息,使得冷启动变成一个非常突出的问题,没有历史信息,一切基于这个的推荐就会失效。
这个时候我们可能会采取一些基于语义的办法,但是基于语义的办法前提是要有精准的语义匹配,这就需要一个庞大精准的知识库来作为背景知识来支持。 - 第三个原因就是没有针对推荐给出解释。这个是非常重要的,当且仅当你给出一个非常合理的解释的时候,用户才会很好的接受推荐。
那如何给出解释呢?以前,解释在人脑里面,现在我们可以利用大规模知识库来产生解释,从而实现能够给出带解释的推荐给用户。
当前基于标签的用户画像方法和推荐方法存在的问题
不完整的用户画像
- 数据不平衡
- 隐私问题
不准确的推荐
- 机器无法理解标签
- 不同领域语义不匹配
- 不可解释性
背景知识
理解用户是我们的终极目标,但是我们要先理解由于用户的行为而产生的标签,这就非常难了,为什么呢?标签可以认为是自然语言的一部分,是一个简单形式,比如可以给我打标签,“IT教师”、“复旦大学”,“知识图谱”,那机器如何理解这些标签呢?目前机器还不能有效的准确的理解人类的自然语言,因为我们的自然语言很多时候是有歧义的,需要通过上下文才能理解的。很多时候语言的表达式是隐含的,比如我们中国人说两个人是爱人关系的时候,不会直接说他们俩是伴侣关系,而会说他们共进晚餐或者看电影之类的,很少直接去谈及这块,所以很多关系是隐含的。语言还有一个重要的难点,就是它的多样性,同一个意思,可以有很多种说法。
那么再进一步分析为什么语言理解这么困难?从根本上来讲,是因为语言理解是建立在人对世界认知的基础之上。你为什么能够理解语言?是因为你已经对这个世界,对在你身边发生的事情有了充分的认知。机器现在还达不到认知世界的能力,机器的大脑里还缺乏非常重要的背景知识,比如这里有几个卡通人物,大家一看就理解了,那是因为你已经有这个背景知识在背后,那么机器想要理解语言,理解标签,就需要有海量的背景知识去支撑它认知这些概念。
为何标签/语言难以理解
标签/语言复杂性
- 歧义性,上下文关联性,含蓄性
- 同样的意思有多种表达方式
标签/语言理解困难
- 仅以人类认知为基础
- 需要大量的背景知识
钢铁侠,蜘蛛侠,美国队长,蝙蝠侠都是卡通英雄
机器需要怎样的背景知识呢?
- 第一个是要有足够大的规模,必须覆盖足够多的实体,足够多的概念。
- 第二个是语义要足够丰富,当说到各种各样的关系的时候,机器必须都能够理解。
- 第三个就是质量足够精良。
- 第四个就是结构必须足够友好。
大家都知道机器最喜欢的是有结构的数据,最怕的是纯文本,无结构的数据,我们希望知识库是以一种机器友好的结构形式来组织的。
知识图谱与本体语义网络
也有人发出疑问,知识图谱跟传统的本体语义网有什么差别呢?
- 先来说本体,以前在特定领域尤其是医疗领域积累了大量的本体,但是大部分都是人工构建的,规模十分有限,而且当要把传统知识工程从一个领域转移到另一个领域的时候,就会发现代价极大,因为人工构建的成本极为高昂。
- 再来看看以前的语义网络,它往往是集中在单一的语义关系上,而不像知识图谱,涵盖了上千数万种语义关系。
- 再比如说文本,文本结构不友好。
这么一看大家就知道传统的知识表示都不行。
这样,知识图谱成为了机器语言认知所需要的知识表示,所谓知识图谱,本质上是一种语义网络,它表达了各种各样实体概念及其之间的语义关系。与之前的知识表示作比较,会发现知识图谱有非常多的优势:
- 第一,它规模巨大,像google的知识图谱现在已经到了几百亿的实体规模。
- 第二,它的语义关系也很丰富,比如说我们自己的CN-DBpedia里涵盖了成千上万种语义关系。
- 第三,知识图谱通常是用RDF来表示的,对于机器来讲,结构足够友好。
- 第四,知识图谱是通过大数据众包的手段来校验它的质量,也就是靠人来校验质量,所以有着比较好的质量。
所以利用知识图谱来帮助机器理解标签,最终理解用户是有可能的。
机器理解语言,需要良好的背景知识
- 机器理解语言需要背景知识
- 大规模
- 语义丰富
- 高质量
- 良好结构
- 传统的知识表示不饿能满足这些要求
- 本体
- 语义网络
- 纯文本
解决两个问题
怎样利用知识图谱来解决刚才提到的不完整和不正确的两个问题呢?
我们利用知识图谱来做标签扩展,标签推断,来提高机器对标签的理解水平,实现基于标签的,基于知识图谱的精准推荐。
不完全性:
- 使用社交网络和知识图谱来做标签扩展
- 1.1 社交图谱中的标签传播
- 1.2 知识图谱中的标签推断
不准确性:
- 使用知识图谱来提高机器对标签的理解水平,提升推荐质量
- 2.1 用概念来理解标签
- 2.2 知识图谱中的用户项语义匹配
- 2.3 概念解释的实体推荐
不完整性
基于社交图谱的标签扩展
这里有一个实际案例,我们在微博上做实验,结果显示这种传播方法很有效,尤其是在宗教信仰,政治观念,教育等方面的推断准确率能高达95%。
比如在这个user case,基于label propagation这么一个思路,用LTPA算法,user A的real tags是music和fashion,但是通过标签传播,你会发现实际上他是一个基督教徒,因为传播出来很多类似Christian,Bible,faith等等这样的标签,那我们看他的微博发现他确实就是一个基督教徒。
这就是tag propagation,通过传播来找到用户的缺失标签。
基于社交图谱的标签传播
问题:很多用户处于隐私考虑,不愿发布标签,或者刻意隐藏自己的行为
思路:从你的好友,寻求关于你的合适标签
方法:基于PageRank机制,让好友的标签传播到特定用户
- 越多好友具有某个标签,用户越可能具有某个标签
- 关系越强,标签越可能传播到某个用户
x与a之间相关性:$f_{xa} = 0.5$
x与c之间的相关性:$f_{xc} = 0.3$
a的标签Christ,权重为0.33;
c的Christ标签,权重为0.25;
传播:x的Christ标签权重为:
$$a_{Christ} \times f_{xa}+b_{Christ} \times f_{xb}\ = 0.33 \times 0.5+0.25 \times 0.3\ = 0.24$$
在微博上的评估显示:
当标签涉及宗教、地点、教育、政治时,传播标签的准确性几乎为95%
论文:An Integrated Tag Recommendation Algorithm Towards Weibo User Profiling,针对微博用户分析的集成标签推荐算法。Springer期刊。
基于知识图谱的标签扩展
关于标签的不正确性,我们做一个tag inference。
这里有两个真实的案例,
第一个案例就是季建业受审的案子,我们要给这个新闻打合理的标签,这个标签难在什么地方呢?大家都知道季建业是南京市长,在山东烟台受审,结果“烟台”出现的频率显著高于“南京”,但是这个新闻按道理应该是“南京”打的这个标签权重高于“烟台”,那么怎样识别出更准确的标签呢?怎么把“烟台”这个标签弱化,而把“南京”这个标签给强调出来?
第二个例子就是枪决案件,打的标签是“朝鲜”,“崔英建”,“枪决”这三个标签,虽然通篇没有提到平壤,但这件事肯定跟平壤是有关系的。
实际上这样的例子很多,一篇讲姚明的文章,即便通篇没有讲篮球,但肯定跟篮球有关系,打上“篮球”的标签准没错。
我想表达什么意思呢?就是有很多应该打的标签,由于这个事实太显然,以至于文本里没有提,而我们现在所有的办法都基于一个假设,就是文本里提到才能打上标签,那么我们有没有办法推断出这些不存在与文本中的标签呢?
实际上我们用知识图谱是可以做到的。我们建构一个语义网络,利用CN-DBpedia把新闻里提到的候选实体之间的语义关联建立起来。
我们的算法怎么实现呢?其实也很简单,我们可以用一些随机游走的办法,可以从新闻中观察到的这个实体去随机游走,看它们能都倾向于走到哪些未被观察到的实体,而这些实体就是很有可能作为标签出现的。实验结果证实这个办法的确能够找到更多人工判断下来的更为准确的标签。
NER:命名实体识别
Forward RW:向前随机游走?一维随机游走?
不正确性
基于知识图谱的标签泛化
再进一步我们想通过知识图谱让机器准确理解这些标签。
人类是在合适的概念层次来理解标签的。比如说人类看这么一组标签“中国,日本,印度,韩国”,很快就会理解,讲的是亚洲国家。基于概念级别去理解这些标签对于后面做精准推荐是十分重要的。那现在问题来了,我们怎么让机器去理解这些标签?怎么为标签产生一个合适的概念呢?
首先我们用一个叫probase的知识库,它包含了大量的实体,也可以认为是标签及其概念。比如“苹果”,它可以是一个企业,也可以是一个水果,企业和水果都是“苹果”的概念。
我们利用probase去产生概念标签的时候,要解决两个问题
- 第一个问题就是我们希望找到的这个概念的覆盖率高,
- 第二问题就是概念的信息尽可能详细。
比如第一个例子“中国,日本,印度,韩国”,可以用“亚洲国家”这个标签,也可以用“国家”这个标签,但显然“亚洲国家”比较好。
我们要处理的最核心的问题就是覆盖率和最小值这么一对矛盾。我们采用的是一个非常通用的模型,是基于信息论的,也就是最小描述长度的方法。
标签泛化
问题:粒度太细
- 海贼王、柯南、千与千寻>动漫
- china, japan, india, korea -> asian country
- dinner, lunch, food, child, girl ->meal, child
- -bride, groom, dress, celebration -> wedding
难点:标签泛化
- Coverage:覆盖给定标签
- Minimality:粒度足够细
思路:
- 算法框架:最小描述长度
- 引入外部isA知识库:Probase
我们把刚才那个概念标签选择问题建模成找一堆概念来encoding我们看到的tag这么一个问题。那么很显然,刚才的两个标准,就可以体现在这里的两个目标里。
第一部分,就是我们要用尽可能少的概念去cover这些实例,那么也就是说概念自身的编码代价要尽可能小。
第二个利用这种概念去encoding知识图谱的tag的代价尽可能小,也就是基于知识图谱的条件的length尽可能小。就有这么一个优化的问题。当然了,这是一个很general的model。在这个general的model下面,我们还要处理一些很实际的情况。
假设一袋单词X调用一个概念。使用概念c编码X的代码长度如下:
基于MDL的概念标签
问题:给出一个标签袋;找出C* = argmin CL(X,C)
最小性:概念编码的描述长度
覆盖范围:按概念编码单词的描述长度
这里C是概念,X是词袋,L(C)就是描述词典所需的信息,也就是记录模型需要信息;L(X|C)为分词后的语料
分词研究中的最小描述长度(Minimum description length)方法
On Conceptual Labeling of a Bag of Words,词袋的概念标记
会议论文:Proceedings of the Twenty-Fourth International Joint Conference on Artificial Intelligence (IJCAI 2015),第二十四届国际人工智能联合会议论文集(IJCAI 2015)
在本文中,我们介绍了概念标签(CL)的任务,该任务旨在生成最少的概念标签集,以最好地概括词袋
我们这里很多都是很实际的案例,来自很多实际的数据的标签。比如在实际的用户的标签、图像或者文件往往会有噪音。比如这个标签里面有很多“苹果、香蕉、早餐、晚餐、猪肉、牛肉”,突然出现一个“子弹”,那这个很可能就是个噪音,所以这个模型要能够噪音容忍,这是第一个问题。
第二个问题就是说有很多像“人口、总统、地点”,实际上最好的概念是“国家”。但你要注意“国家”跟“人口、总统、地点”实际上不是严格的isA关系。人口,总统都是“国家”的一个属性,而不是isA关系。像刚才“中国”和“亚洲国家”那是isA关系。但是人口只能说是国家的一个属性。所以我们在建模的时候不仅仅要考虑isA关系,还需要能够应用这里的属性关系,这是在模型方面的两个改进。
1.我们需要做出选择:要么独立编码离群值,要么使用概念c对其进行编码。我们使用MDL原理进行选择。也就是说,我们计算两个选项产生的代码长度,然后选择长度较短的代码。
2.其中:
- Pe(c | x)表示等式1中定义的isA典型性,
- Pa(c | x)表示等式3中定义的属性典型性。直观上讲,P(c | x)是单词x调用的可能性conceptc,可以是其实例或属性。反向的典型性P(x | c)使用贝叶斯规则推论:P(x | c)= P(c | x)P(x)/ P(c)。
基于知识图谱的跨平台推荐
我们怎样利用这个知识图谱来做一些精准推荐呢?在推荐中最难的一类是跨领域推荐,不同的领域要不共有user,要不共有item,要不共有feature,可是也有非常情况,比如说给微博用户推荐淘宝商品,当然可以用传统的ontology的办法,但是ontology的覆盖率比较低,所以我们要用知识图谱。
如果一个微博用户经常谈论各种旅游名胜,我们能不能把淘宝上的登山杖,旅游鞋推荐给他呢?要知道旅游名胜和登山杖,旅游鞋的描述是风马牛不相及的,是没有办法直接匹配的,那就需要一些间接匹配的方式,通过什么呢?就是通过背景知识图谱来做一个桥接,也就是CN-DBpedia。
“九寨沟”会在知识图谱在里面,知识图谱 里可能有一些相关实体,比如“旅游”,“旅游”和“九寨沟”直接相关,“旅游”与“登山杖”“旅游鞋”也相关,就可以用这种中间实体和概念来桥接两个完全不相关的物品和用户。
实际上我们利用knowledge base构建了很多concept vector来进行描述,分别描述user和item,然后来实现匹配,最终的效果也是相当不错的。
微博用户谈论自然观光,如{九寨沟,长城…}将通过旅行与淘宝的旅行鞋类和cn-dbpedia中的许多其他实体相匹配。
推荐场景:
跨域推荐的不同设置。实线表示用户与项目的互动关系,例如评分,评论等。在子图(a)和(b)中,可以找到共享的用户或项目。在子图(c)中,存在可以用来发现两个域之间关系的共同特征。我们专注于子图(d)的设置,该图比前者更具挑战性,因为无法获得用户-项目关系或跨域的共同特征。
语义相似度计算:
接下来,我们提出一种度量标准,以计算两个标签集的概念向量的相似度。通过使用维基百科文章之间的链接,已证明归一化Google距离[20]是衡量两个术语之间语义相关性的有效方法。但是,它忽略了每个链接的权重。在我们的方案中,配置文件集中的每个标签具有不同的权重,即LTPA计算的标签得分。因此,我们提出了一种更细粒度的度量,即加权普通Google距离(简称WNGD),以在测量两个标签集而不是两个术语的语义相关性时实现更高的准确性。假定CaandCb是解释两个标签集语义的两个概念向量,令A和B代表在CaandCb中遇到的具有非零值的条目集。然后,我们将两个标签集的语义相关性定义为:
Semantic-based Recommendation across Heterogeneous Domains,跨异构域的基于语义的推荐
会议:ICDM.2015
基于知识图谱的实体描述
在线百科全书中的文章推导了标签的概念向量。左侧部分显示在线百科全书中的一些文章。在这种情况下,将tagx和tagy分别映射到Conceptx和Concepty,然后通过一些百科全书概念将tagxis与tagy语义相关,尽管它们没有用相同的术语表示。
A Graph-based Recommendation across Heterogeneous Domains,
会议:(CIKM 2015),
跨异构域的基于图的建议