小米在知识表示学习的探索与实践
知识表示是知识获取与应用的基础,贯穿了小米知识图谱的构建与应用。本文将结合小米知识图谱的构建及小爱问答场景,介绍融合文本和知识图谱的知识表示学习方法,以及知识表示在知识图谱补全、实体链接、实体推荐等任务的落地。主要围绕以下 3 点展开:
-
业务介绍,小米知识图谱的架构和业务;
-
算法介绍,融合文本和知识图谱的表示学习方法;
-
算法应用,知识表示学习在实体链接、实体推荐、知识补全的应用;
业务介绍
1. 小米知识图谱团队
这是一个知识图谱为小爱赋能的例子。当用户询问巩俐籍贯的时候,我们从库中给出相应的答案,与巩俐相关的实体信息。下面简单介绍一下处理流程。
知识表示学习是指基于分布式的表示思想,将实体或者是关系的语义信息映射到低维、稠密、实值的向量空间中,使得语义相似的两个对象之间的距离也很相近。
最常见的表示学习方法是融合事实信息的方法,比如基于翻译、张量分解、神经网络和图神经网络的各种模型。但是这些模型并不善于处理大规模知识图谱中存在实体与关系长尾分布的问题。在图谱中,长尾分布体现为很多实体数量极少甚至没有关系事实,这就导致数据存在很严重的稀疏性。
对于这些长尾的实体和关系,在没有或者很少关系的情况下,仅基于传统的事实三元组(头部,关系,尾部)进行学习,是没有办法得到的。对此大佬们尝试了各种五花八门的解决办法,最简单直接的就是:
① 利用知识库中其他的信息,比如说文本描述信息、信息实体类型、关键路径、逻辑规则等,还包括实体的属性、时序信息、图结构等;
② 利用知识库外的海量信息,比如说互联网等,包含大量知识库实体和关系的有关的信息。
1. 融合文本描述的优势
这一篇文章描述了比较经典的文本与知识图谱对齐的模型 Jointly(联合模型),作者先后发表了两篇论文来优化该方法。文章研究的内容是融合文本信息到知识图谱中,实现知识图谱中的实体和实体描述文本联合嵌入表示。对齐模型的关键在于将实体向量、关系向量和词向量表示在同一个语义空间下。要求实体的表示向量不仅满足知识图谱的结构化约束,同时也要被文本描述中的词向量进行约束。模型一共分为三个部分:
-
文本嵌入:采用 skip-gram 模型,利用欧式距离衡量两个单词之间的相似性,训练词与词之间的约束;
-
知识嵌入:采用 Trans-E 模型,训练实体与实体之间的约束;
-
对齐模型:利用文本描述对齐,训练实体和文本之间的约束,确保关系能够和文本的单词在同一个语义空间中。
后续任务需要通过预训练得到词向量,实体向量,并且保证两者之间需要能够计算相似度,同时也要保证实体向量和实体向量之间可以计算相似度。上文介绍的两个模型均可以满足该需求。右上的表格展示了几个不同的模型在链接预测任务上的效果,联合模型,即第一篇论文中的模型展现了较好的效果,于是我们基于该模型对实体和词进行了训练,得到了词向量、关系向量以及实体向量。该模型的效果具体体现在:
-
由图一(左上)可以看到“王者荣耀”这个词和“李白”的候选实体之间的相似度评分,该分数表明模型学习到了词和实体之间的关联;
-
由图二(右上)可以看到虽然“唐代诗人李白”的文本描述中不存在“将进酒”一词,但是模型也学到了其关联;
-
图三图四(左下和右下)显示,模型也学习到了实体向量与实体向量之间的关系,比如植物“小米”实体向量和水果“苹果”实体向量比较靠近,而“小米公司”的实体向量和“苹果公司”的实体向量比较靠近。
这些特性对完成后续的任务有很大的帮助。
算法应用
1. 实体链接
左侧图中展示了实体链接的处理流程,这里详细介绍一下实体消歧部分。
实体消歧包括两个模块,第一个部分是粗排,第二个部分是精排。
关于粗排
为什么要做粗排处理?
在做候选实体生成时,我们希望从库中获取尽可能多的相关实体,确保没有遗漏正确实体。但这样做会导致消歧这一步骤被引入了太多的噪声,造成消歧效率的下降。所以需要粗排模型来降低候选实体的个数。经过实验,粗排后,消歧准确率提升了 3%,预测的速度提升了 50%,而召回率仅仅下降了 0.4%。
举个例子,比如“王者荣耀中的李白有哪些台词?”这个问题,在我们的库中“王者荣耀”的候选实体有 71 个,“李白”的候选实体有 59 个。在粗排时,我们会为每一个候选实体进行打分,按照相关度从大到小进行排列,选择每一个 mention 所对应的最相似的 n 个实体(Top n),作为精排的输入。
如何实现粗排?
在粗排之后,每一个 mention 的候选实体个数被大大降低,此时我们会对这些实体进行精排处理。精排模型中,我们利用 Bert 构建一个句子对二分类模型,用来判断候选实体和问题中的 mention 相关度。具体流程如下:
① 该模型的输入是一个句子对,text_a 是标记了 mention 位置的文本,text_b 是候选实体的描述文本。句子对经过 Bert 编码之后取[CLS]向量,再经过全连接层,得到上下文特征;
② 合并粗排的三个特征进行全连接的融合训练;
③ 对候选实体进行二次排序;
④ 判断是否为未知实体;
⑤ 选择 Top 1 的实体作为 mention 链接的实体;
在模型训练时,我们对训练方法进行了一些优化。利用知识图谱中的关系三元组构建消歧的样本,关系三元组包括头实体、关系和尾实体,头实体和尾实体有多种表达方式(mention),利用这些不同的表达方式,我们可以去构建大量的正负样本,来帮助我们去学习 mention 和实体之间的语义特征关系。经过第一次的预训练,只需要再训练少量经过标注的线上数据,模型就可以达到较好的消歧效果。
2. 实体推荐
实体推荐的难点在于“冷启动问题”,即如何去寻找实体的相关实体。
我们发现百科页面关系三元组以及新闻中的共现实体,都可以作为相关实体进行推荐。于是我们对百科页面知识图谱中的关系三元组和经过实体链接处理的新闻中的实体进行抽取,以类别为标准进行筛分,作为实体推荐模型的正样本。而负样本可以从库中的其他实体中抽取。
实体推荐模型分为两个部分,表示模型和匹配模型:
-
表示模型利用第二节中的 DKRL 模型进行知识表示学习。学习关系三元组中的结构化信息,编码部分使用 Bert 进行替换;
-
匹配模型利用 DSSM 模型,复用了表示模型中学习到的参数,将两个实体编码成向量,通过计算余弦相似度来去衡量两个实体之间的相关度。
3. 知识补全
三元组的构建也考虑了描述实体的文本,我们再次利用了神通广大的 BERT 完成模型的构建,参考了 KG-BERT 这篇论文。
将已知的关系三元组如上图所示进行构造,text_a 是头实体的描述文本,text_b 是关系的文本名称,text_c 是尾实体的描述文本,这些输入经过 BERT 的编码之后,再经过一个全连接层,计算得到语义特征,并和另外一个结构化的特征进行融合,最终得到一个分数。这里的“结构化特征”由蓝色框中的方程进行表示,整个模型的 loss,可以用红色框中的方程表示。
举个例子,比如判断三元组{撒贝宁,配偶,李白}是否正确,“李白”的第一个候选实体是正确的,可以作为正样本,其他实体都是负样本,然后对模型进行训练,预测每一对自动构建的三元组的分数,按照从大到小的顺序进行排序,选择分数大于 0.5 且 Top 1 的三元组作为正确的三元组,补充到知识图谱当中。
总结与展望
本文简单介绍了知识表示学习在实体链接、实体推荐和知识补全中的应用;和 word2vec 一样,通过知识表示学习得到的实体向量可以应用到很多场景中;工业界实用最重要,很多场景下,对模型的复杂性很敏感,选择模型需要综合考量。知识表示学习的探索之路还有很长,同志们加油!!!
参考文献
1. Wang Z, Zhang J, Feng J, et al. Knowledge graph and text jointly embedding[C] //Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1591-1601.
2. Zhong H, Zhang J, Wang Z, et al. Aligning knowledge and text embeddings by entity descriptions[C]//Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015: 267-272.
3. Xie R, Liu Z, Jia J, et al. Representation learning of knowledge graphs with entity descriptions[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2016, 30(1).
4. Xiao H, Huang M, Meng L, et al. SSP: semantic space projection for knowledge graph embedding with text descriptions[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2017, 31(1).
5. Reimers N, Gurevych I. Sentence-bert: Sentence embeddings using siamese bert-networks[J]. arXiv preprint arXiv:1908.10084, 2019.
6. Yao L, Mao C, Luo Y. KG-BERT: BERT for knowledge graph completion[J]. arXiv preprint arXiv:1909.03193, 2019.
7. 刘知远, 孙茂松, 林衍凯, 等. 知识表示学习研究进展[J]. 计算机研究与发展, 2016, 53(2): 247.
本文转载自:DataFunTalk(ID:dataFunTalk)
原文链接:小米在知识表示学习的探索与实践
本文文字及图片出自 InfoQ
你也许感兴趣的:
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
- 我受够了维护 AI 生成的代码
- 【外评】Linux 桌面市场份额升至 4.45
- 【外评】作为全栈开发人员如何跟上 AI/ML 的发展?
你对本文的反应是: