知识图谱是一种数据结构,把世界上的知识组织成实体与实体之间的关系。
近几年,人工智能的进展突出体现在以知识图谱为代表的知识工程和以深度学习为代表的机器学习领域。
知识图谱是上世纪60年代从语义网络发展起来的,分别经理了专家系统、贝叶斯网络、OWL(Web Ontology Language)和语义WEB,以及2010年后谷歌的知识图谱。知识图谱的存储和查询语言从RDF到OWL及SPARQL查询,都逐渐因为使用上的不便及高昂的成本,而被工业界主流遗弃。图数据库逐步成为目前主要的知识图谱存储方式,目前应用比较广泛的图数据库有Neo4J、graphsql、sparkgraphx(包含图计算引擎)、基于HBASE的Titan、BlazeGraph等,各自的存储和查询语言也不同。
知识图谱首先要定义一个系统的关系规则,关系规则定义了不同类别实体之间可以处在的关系。
如父子关系
依据定义的关系规则,知识图谱就可以实例化描述世界上千万的父子关系。
类似的也可以定义夫妻关系、雇佣关系、位置关系等
知识图谱作为更高阶的结构化数据可以将图分析挖掘、自然语言处理、语义分析等智能技术结合到一起做以往做不到是事。
下面列举两个优点:
根据Schema,知识图谱可以自动推断出新的知识。如根据两层父子关系,可以推断出祖孙关系。
比如字符串“位于香港的图书馆”,对于知识图谱而言这不再是单纯的字符串,而是饱含语义的关系查询:
要查询某一个东西,它属于博物馆类别的,并且是位于香港的。
大规模知识图谱的构建会从原始数据中抽取众多实体和关系,以图的方式进行节后话存储,原始数据可以是结构化或非结构化。
对于结构化的数据转换为图结构比较容易;
对于复杂的非结构数据,进行知识图谱构建的主要方法是传统NLP和基于深度学习模型两类方法,且目前更倾向于使用深度学习来抽取AVP(属性-值对),基于深度学习模型的方法可以完成命名实体识别NER、关系抽取和关系补全等。
2.1 命名实体识别
NER是从非结构文本中找出相关实体,并标出位置和类型,它是NLP领域中一些复杂任务的基础,如关系抽取、信息检索。
NER一直是NLP领域的热点,早期是基于字典和规则的方法,后来基于机器学习的方法,近几年基于深度学习的方法。
在统计学习中,NER被定义为序列标注问题,不同于分类问题,序列标注问题中的预测标签不仅与输入特征有关,还与之前的预测标签有关,即预测标签之间存在相互依赖的关系。条件随机场(CRF)是序列标注的主流模型。
2.2 基于深度学习的序列标注模型BiLSTM-CNN-CRF
BiLSTM-CNN-CRF主要由Embedding层(词向量、字向量等)、BiLSTM、tanh隐藏层以及CRF层组成(对于中文不需要CNN)。
2.3 知识图谱的推理
常见的模型有RESCAL模型和TRESCAL模型
RESCAL模型的核心思想,是将整个知识图谱编码为一个三维张量,由这个张量分解出一个核心张量和一个因子矩阵,核心张量中每个二维矩阵切片代表一种关系,因子矩阵中每一行代表一个实体。由核心张量和因子矩阵还原的结果被看作对应三元组成立的概率,如果概率大于某个阈值,则对应三元组正确;否则不正确。
而TRESCAL则是解决在输入张量高度稀疏时所带来的过拟合问题。
路径排序算法也常用来判断两个实体之间可能存在的关系,比如PRA算法。
2.4 知识图谱在深度学习模型中的应用
知识图谱应用在在深度学习中分两种方式:
一种是将知识图谱的语义信息输入到深度学习模型中,将离散化的知识表示为连续化的向量,从而使知识图谱的先验知识能够作为深度学习的输入;
另一种是利用知识作为优化目标的约束,知道深度学习模型的学习过程,通常将知识图谱的知识表示为优化目标的后验正则项。
知识图谱的表示学习用实体和关系的向量化表示,关键是合理的定义知识图谱中关于事实(三元组h,r,t)的损失函数fr(h,t),其总和是三元组的两个实体h和t的向量化表示。通常,当h,r,t成立时,期望最小化fr(h,t)。
常见的有基于距离和翻译的模型。
2.4.1 基于距离的学习方法
比如SE模型,基本思想是当两个实体属于同一个三元组时,他们的向量投影后的空间也应该彼此靠近。所以损失函数定义为:
其中矩阵Wr1和Wr2用于三元组中头实体h和尾实体t的投影操作。
2.4.2 基于翻译的学习方法
常见的基于翻译的模型有TransE、TransH和TransR模型,其通过向量空间的向量翻译来描述实体与关系之间的相关性。
知识图谱的表示转化后,根据不同领域的应用,可以和各种深度学习模型相结合。比如在自动问答领域,可以和encoder-encoder相结合,将问题和三元组进行匹配,计算其向量相似度,从而为某个问题找到来自知识图谱的最佳三元组。在推荐系统中,通过网络嵌入(network embeding)获取结构化知识的向量化表示,然后分别用SDAE(stacked Denoising Anto-Encoder)和层叠卷积自编码器(Stacked Convolutional Auto-Encoder)来抽取文本知识特征和图片知识特征,并将三种特征融合进协同集成学习框架,利用三类知识特征的整合来实现个性化推荐。
2.5 小结
构建知识图谱没有一个统一的方法,因为其构建需要一整套知识工程的方法,需要用到NLP、ML、DL以及图数据库技术、知识表示推理技术等。知识图谱的构建是一个系统工程,而且知识是不断更新的,所以一定要快速迭代和快速产出检验。
将病人、病例、医院、医生、药品等医疗数据组织成知识图谱。
在图谱上医生可以搜索家族病史网络,查询相似病例及解决方案;
病人可以搜索疾病相关的病症、药品、医院等。
金融业各种交易数据可以构成知识图谱,包括现金账户、股票账户、大宗商品账户、债券账户之间所有的交易数据。
在知识图谱上对潜在的洗钱模式进行模式匹配、子图挖掘等。
数据库顶级会议SIGMOD’2016有一篇论文“Top-k Relevant Semantic Place Retrieval on Spatial RDF Data”
论文中提出了基于空间地理位置和语义查询的知识图谱技术。该技术可以应用在商业选址、旅游技术酒店推荐、广告推荐、医疗等领域。
比如某人要开酒店,就可以在知识图谱上查询街道周边的酒店类型、居民类型、交通配套等,为选址提供全方位的支持。
实际上,微信、滴滴、顺丰、美团所有的线上线下的商业数据都是知识图谱。将这些图谱进行实体融合打通就可以整合组成一个很大的知识图谱。。。这就厉害了,基本上任何的商业应用都能做了!!!是不是很强大。
在公安知识图谱上,进行安全事件分析、潜在高危地区、高危人群挖掘监测,把公安数据,如户籍、人口、通信、商业、交通、财产信息等组成完备的知识谱图。
就可以对嫌疑人员进行一个预判,比如有10个嫌疑人中有一个犯罪分子,我们可以根据这10个人在知识图谱中的位置和关系进行预判,重点排查。
2017年谷歌的知识图谱已经包含了一千多亿条关系,而这只是世界上知识的冰山一角。在如此之大的规模上,如何快速的响应就显得至关重要。
知识图谱是高度结构化的数据,从上亿网页、文本、图书等非结构化信息中抽取知识图谱的工作量是异常大的,如何完全自动化精确抽取知识图谱还需要很长时间的探索和努力。
4.3 挑战三:知识融合
即多源数据融合,包括实体对齐、属性对齐、冲突消解、规范化等。对于Open-domain这是一个举步维艰的过程,对于特定领域可以通过别名举证、领域知识、等方法进行对齐和消解,会涉及较多的逻辑。