NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

小米在知识表示学习的探索与实践

  • 2021-07-17
  • 本文字数:5869 字

    阅读完需:约 19 分钟

小米在知识表示学习的探索与实践

知识表示是知识获取与应用的基础,贯穿了小米知识图谱的构建与应用。本文将结合小米知识图谱的构建及小爱问答场景,介绍融合文本和知识图谱的知识表示学习方法,以及知识表示在知识图谱补全、实体链接、实体推荐等任务的落地。主要围绕以下 3 点展开:

  • 业务介绍,小米知识图谱的架构和业务;

  • 算法介绍,融合文本和知识图谱的表示学习方法;

  • 算法应用,知识表示学习在实体链接、实体推荐、知识补全的应用;

业务介绍

1. 小米知识图谱团队


小米知识图谱团队,旨在硏究知识图谱在开放领域和行业领域的构建和应用技术,把知识图谱推广到相关的业务场景上。目前团队已经构建了大规模、高质量的知识图谱,提供了实体检索、实体链接、概念图谱等服务,并且服务于小爱同学、小米网、小米信息流等业务方。

2. 知识图谱为小爱赋能



这是一个知识图谱为小爱赋能的例子。当用户询问巩俐籍贯的时候,我们从库中给出相应的答案,与巩俐相关的实体信息。下面简单介绍一下处理流程。



当用户询问一个问题(query)时,比如说问题是“武汉大学周边有什么好吃的?”,它的解答流程就是:

① 首先语言识别出这句话的文本内容;

② 然后通过分析发现用户的意图是想询问“美食”相关的事物;

③ 接着通过实体匹配去进行核心实体的识别,实体的歧义性消除以及属性的归一等处理,确定用户询问的是全国重点大学“武汉大学”这个实体的“周边美食”这个属性;

④ 据此从库中查询相应的结果,并且作为输出;

⑤ 另外我们还会针对该实体做实体的推荐,以此实现相似问题的推荐;

算法介绍


知识表示学习是指基于分布式的表示思想,将实体或者是关系的语义信息映射到低维、稠密、实值的向量空间中,使得语义相似的两个对象之间的距离也很相近。


最常见的表示学习方法是融合事实信息的方法,比如基于翻译、张量分解、神经网络和图神经网络的各种模型。但是这些模型并不善于处理大规模知识图谱中存在实体与关系长尾分布的问题。在图谱中,长尾分布体现为很多实体数量极少甚至没有关系事实,这就导致数据存在很严重的稀疏性。


对于这些长尾的实体和关系,在没有或者很少关系的情况下,仅基于传统的事实三元组(头部,关系,尾部)进行学习,是没有办法得到的。对此大佬们尝试了各种五花八门的解决办法,最简单直接的就是:

① 利用知识库中其他的信息,比如说文本描述信息、信息实体类型、关键路径、逻辑规则等,还包括实体的属性、时序信息、图结构等;

② 利用知识库外的海量信息,比如说互联网等,包含大量知识库实体和关系的有关的信息。

1. 融合文本描述的优势


融合文本描述的优势有哪些?

  • 发掘实体之间的语义相关性,精确的语义表述能够提升三元组的可区分性。在上面的例子中我们可以看到{撒贝宁,配偶,李白},而李白的描述文本中就存在“撒贝宁妻子”这样的关键信息。该情境下,融合文本描述的语义信息能够帮助发掘更多的语义之间的相关性;

  • 当一些实体对于现有的知识图谱来说是新的,并且仅仅带有描述性信息的时候,传统的知识图谱表示学习方法不能够表示这些新的实体,但是融入了文本描述的模型,就能够通过描述信息建立这些实体的表达。


文本描述如何构成呢?我们的处理方式是将实体的类型、文本描述和重要的三元组按照一定的规则进行拼接,构成一段文本,作为实体的描述文本,这段文本比简单的文本描述包含更多的信息。

2. 文本与知识图谱对齐

下面将会介绍两种经典的融合文本和知识图谱的知识表示学习方法,这两种方法都可以将实体向量、关系向量和词向量放到同一个语义空间下。为什么要把文本以及词向量放到一个空间中?因为如果我们遇到了需要同时处理文本和实体的任务,实体和文本中的词做内积等向量运算才会有意义,依靠这些运算方法我们就能比较实体和文本之间的词的关系。



这一篇文章描述了比较经典的文本与知识图谱对齐的模型 Jointly(联合模型),作者先后发表了两篇论文来优化该方法。文章研究的内容是融合文本信息到知识图谱中,实现知识图谱中的实体和实体描述文本联合嵌入表示。对齐模型的关键在于将实体向量、关系向量和词向量表示在同一个语义空间下。要求实体的表示向量不仅满足知识图谱的结构化约束,同时也要被文本描述中的词向量进行约束。模型一共分为三个部分:

  • 文本嵌入:采用 skip-gram 模型,利用欧式距离衡量两个单词之间的相似性,训练词与词之间的约束;

  • 知识嵌入:采用 Trans-E 模型,训练实体与实体之间的约束;

  • 对齐模型:利用文本描述对齐,训练实体和文本之间的约束,确保关系能够和文本的单词在同一个语义空间中。



第二篇论文也根据类似的原理,将基于平移的嵌入方法从特定的三元组嵌入扩展到了文本感知模型,提出了名为 DKRL 的模型。该模型的特点是:

  • 对于事实元组论文采用了典型的 Trans-E 模型,通过最大似然值获得实体和关系的嵌入;

  • 对于描述文本,论文使用了连续词袋模型和深度卷积模型对文本进行嵌入。连续词袋模型忽略了文本的词序,而卷积模型会考虑词序;

  • 对每一个实体,DKRL 都会学习语义的嵌入和结构的嵌入,再通过右侧的一系列公式进行拟合。

3. 需求和实现


后续任务需要通过预训练得到词向量,实体向量,并且保证两者之间需要能够计算相似度,同时也要保证实体向量和实体向量之间可以计算相似度。上文介绍的两个模型均可以满足该需求。右上的表格展示了几个不同的模型在链接预测任务上的效果,联合模型,即第一篇论文中的模型展现了较好的效果,于是我们基于该模型对实体和词进行了训练,得到了词向量、关系向量以及实体向量。该模型的效果具体体现在:

  • 由图一(左上)可以看到“王者荣耀”这个词和“李白”的候选实体之间的相似度评分,该分数表明模型学习到了词和实体之间的关联;

  • 由图二(右上)可以看到虽然“唐代诗人李白”的文本描述中不存在“将进酒”一词,但是模型也学到了其关联;

  • 图三图四(左下和右下)显示,模型也学习到了实体向量与实体向量之间的关系,比如植物“小米”实体向量和水果“苹果”实体向量比较靠近,而“小米公司”的实体向量和“苹果公司”的实体向量比较靠近。

这些特性对完成后续的任务有很大的帮助。

算法应用

1. 实体链接


实体链接任务目标是把文本中的实体指称项,即实体名称,链接到知识库中对应的实体上。

举一个例子来帮助大家理解实体链接,比如问题“王者荣耀中的李白有哪些台词?”,为了解答这个问题我们需要:

① 识别句子中的核心实体“李白”;

② 从库中检索“李白”所有的候选实体;

③ 实体链接,从众多的候选实体中找到正确的实体,与句子中的“李白”进行关联;


实体链接的难点主要有两个方面:

  • 实体会有不同的表达方式(mention),比如“青莲居士、李太白”,也对应了李白这个实体;

  • 同一个表达方式也会对应不同的实体,比如说“王者荣耀中李白的技能是什么?”,“李白和杜甫并称为什么?”,这两句中实体的表达方式都是“李白”,但是对应了不同的实体。



左侧图中展示了实体链接的处理流程,这里详细介绍一下实体消歧部分。


实体消歧包括两个模块,第一个部分是粗排,第二个部分是精排。

关于粗排

为什么要做粗排处理?

在做候选实体生成时,我们希望从库中获取尽可能多的相关实体,确保没有遗漏正确实体。但这样做会导致消歧这一步骤被引入了太多的噪声,造成消歧效率的下降。所以需要粗排模型来降低候选实体的个数。经过实验,粗排后,消歧准确率提升了 3%,预测的速度提升了 50%,而召回率仅仅下降了 0.4%。

举个例子,比如“王者荣耀中的李白有哪些台词?”这个问题,在我们的库中“王者荣耀”的候选实体有 71 个,“李白”的候选实体有 59 个。在粗排时,我们会为每一个候选实体进行打分,按照相关度从大到小进行排列,选择每一个 mention 所对应的最相似的 n 个实体(Top n),作为精排的输入。


如何实现粗排?


粗排模型,要求高召回、高性能。我们采用了上一节中融合多元信息知识表示学习方法所训练得到的实体向量和词向量,因为他们处在同一个向量空间中,我们可以对其进行向量计算。定义了三个特征,分别是 Context 和 Coherence 以及 LinkCount:

  • Context 表示 mention 的上下文特征,它通过候选实体向量和问题中的每一个词向量进行乘积运算得到,用于发现问题中哪些词和候选实体相关;

  • Coherence 表示实体的一致性,通过计算候选实体和问题中其他 mention 的候选实体相关性来实现;

  • LinkCount 表示实体的先验知识,通过标注数据而来。


利用一个多层感知机对这三个特征进行融合,最终得到每一个候选实体的粗排分数。排列并选择每一个 mention 所对应的最相似的 Top n 个实体,作为精排的输入。


关于精排


在粗排之后,每一个 mention 的候选实体个数被大大降低,此时我们会对这些实体进行精排处理。精排模型中,我们利用 Bert 构建一个句子对二分类模型,用来判断候选实体和问题中的 mention 相关度。具体流程如下:

① 该模型的输入是一个句子对,text_a 是标记了 mention 位置的文本,text_b 是候选实体的描述文本。句子对经过 Bert 编码之后取[CLS]向量,再经过全连接层,得到上下文特征;

② 合并粗排的三个特征进行全连接的融合训练;

③ 对候选实体进行二次排序;

④ 判断是否为未知实体;

⑤ 选择 Top 1 的实体作为 mention 链接的实体;


在模型训练时,我们对训练方法进行了一些优化。利用知识图谱中的关系三元组构建消歧的样本,关系三元组包括头实体、关系和尾实体,头实体和尾实体有多种表达方式(mention),利用这些不同的表达方式,我们可以去构建大量的正负样本,来帮助我们去学习 mention 和实体之间的语义特征关系。经过第一次的预训练,只需要再训练少量经过标注的线上数据,模型就可以达到较好的消歧效果。

2. 实体推荐


实体推荐任务的目标是根据给定的实体推荐一系列相关的实体,这两张图展示了我们的实体推荐的应用场景。我们对实体推荐的工作暂时还处于起步的阶段,并没有考虑复杂的个性化推荐,目前只关注实体之间的相似度。


左图展示了实体链接如何应用于智能问答问题推荐,问题通过 SLU 处理之后会得到其意图和主实体,然后借助实体推荐得到相关的实体,相关实体被用来构建相关的问题,比如说”武汉大学周边好吃的?“,识别到其主实体为”武汉大学“、核心意图为”美食“,以此推荐实体相关的问题,比如说”华中科技大学周边有什么好吃的?“,”清华大学周边有什么好吃的?“,”武汉科技大学周边有什么好吃的?“。同时实现了推荐意图相关的问题,比如说”武汉大学周边有什么好玩的?“,”武汉大学周边有什么景点?“,”武汉大学周边有什么酒店?“等等。


右图展示了实体推荐在图谱自动化构建平台上的应用,当用户搜索一个实体的时候,平台会为其推荐相关的实体。

实体推荐的难点在于“冷启动问题”,即如何去寻找实体的相关实体。


我们发现百科页面关系三元组以及新闻中的共现实体,都可以作为相关实体进行推荐。于是我们对百科页面知识图谱中的关系三元组和经过实体链接处理的新闻中的实体进行抽取,以类别为标准进行筛分,作为实体推荐模型的正样本。而负样本可以从库中的其他实体中抽取。


实体推荐模型分为两个部分,表示模型和匹配模型:

  • 表示模型利用第二节中的 DKRL 模型进行知识表示学习。学习关系三元组中的结构化信息,编码部分使用 Bert 进行替换;

  • 匹配模型利用 DSSM 模型,复用了表示模型中学习到的参数,将两个实体编码成向量,通过计算余弦相似度来去衡量两个实体之间的相关度。

3. 知识补全


在构建知识图谱时,需要从半结构化或者非结构化数据中抽取三元组,但这些三元组难免会存在信息缺失情况,比如左图中,小米代表人物中林斌、王翔等人,都缺失了超链接,撒贝宁配偶、父母、妹妹也都缺失了超链接,这就导致在构建知识图谱时,不能获取完整的关系三元组。


实体补全任务可以概括为:针对已知的头实体、关系和尾实体 mention 的情况下,关联库中的实体以补全三元组。我们的设计方案如下:

① 利用 Schema 去确定尾实体的类别;

② 通过尾实体的 mention 筛选得到尾实体的候选实体,构造三元组;

③ 通过三元组分类模型判断构造的三元组是否正确;

④ 经过对这些三元组的分数进行排序之后,选择 Top 1 且预测正确的三元组。


三元组的构建也考虑了描述实体的文本,我们再次利用了神通广大的 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)

原文链接:小米在知识表示学习的探索与实践

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-07-17 07:002209

评论

发布
暂无评论
发现更多内容

设计电商秒杀系统

Pengfei

融齐鲁,行中国,为天下溪:新华三的数字化赋能之路

脑极体

Mimir 源码分析(二):效率爆棚的分片压缩

Grafana 爱好者

Mimir

【机器学习】梯度下降之数据标准化

计算机魔术师

8月月更

架构实战营模块 7 作业

Roy

架构实战营

使用 Containerlab + Kind 快速部署 Cilium BGP 环境

Se7en

Python 教程之数据分析(3)—— Python中不同图表的数据可视化

海拥(haiyong.site)

Python 8月月更

Jenkins 构建成功后发送邮件配置

宁在春

Docker jenkins 8月月更

【Django | 增删改查】学生管理系统案例

计算机魔术师

8月月更

【Django | 项目搭建】快速搭建自己的项目

计算机魔术师

8月月更

俄罗斯方块彩蛋(附星空表白彩蛋)

计算机魔术师

8月月更

架构实战训练营|毕业总结

Roy

架构实战营

C语言基本的窗口开发

计算机魔术师

8月月更

【小程序 | 启航篇】一文打通任督二脉

计算机魔术师

8月月更

电商秒杀系统设计

Roy

架构实战营

每日一 R「18」类型系统进阶(二)

Samson

学习笔记 8月月更 ​Rust

Git -- 入门这一篇就够了 (入门必备,超硬核)

计算机魔术师

8月月更

Jenkins + Github + Nginx 自动化部署 Vue 项目

宁在春

Docker jenkins 8月月更

【机器学习】浅谈正规方程法&梯度下降

计算机魔术师

8月月更

Mimir 源码分析(一):海量series chunk 同时落盘带来的挑战

Grafana 爱好者

Mimir

趣味俄罗斯游戏开发心得

计算机魔术师

8月月更

架构实战营模块 8 作业

Roy

架构实战营

MySQL数据库之数据查询

乌龟哥哥

8月月更

Mimir 速体验(Part 3): 通过 runtime 配置实现租户细粒度管理

Grafana 爱好者

可观测性 Grafana Mimir

【算法实践】手把手带你快速实现插入排序

迷彩

Python 算法 插入排序 8月月更 折半插入排序

[CSS入门到进阶] 你真的了解 width height 吗?

HullQin

CSS JavaScript html 前端 8月月更

【SpringBoot 一】SpringApplication启动类的Args详解

石臻臻的杂货铺

spring-boot 8月月更

C++中转换构造函数与默认函数的优先级

计算机魔术师

8月月更

「uTools」生成P站Logo插件

小鑫同学

8月月更

Mimir 速体验(Part 1): 使用 docker-compose 一键部署单体版集群

Grafana 爱好者

可观测性 Prometheus Mimir

Mimir 速体验(Part 2): 使用 Grafana agent 实现多租户数据抓取

Grafana 爱好者

Prometheus Mimir

小米在知识表示学习的探索与实践_AI&大模型_DataFunTalk_InfoQ精选文章