参考书目:知识图谱:方法、实践与应用
知识工程导论、知识表示、知识推理、知识构建、知识存储、知识管理、知识工程应用
第1章 知识工程导论
1.1 知识工程简史
1.1.1 知识工程主要成就
1969图灵奖 Minsky感知机,框架知识表示
1971图灵奖 McCathy LISP语言
1975图灵奖 Newell&Simon形式化语言,通用问题求解
1994图灵奖 Feigenbaum知识工程提出者
2011图灵奖 Judea Pearl 概率图模型之父
2016图灵奖 Berners-Lee语义网
1.1.2 专家系统
其中,以Newell和 Simon为代表人物的符号主义学派,最先取得丰硕成果,最著名的代表为逻辑机LT。符号主义最核心的思想是什么呢?符号主义认为人工智能源于数理逻辑,认为智能的本质就是符号的操作和运算。(数学家的天下)
后来我们也知道,早期对于人工智能过高的期望和算力不足造成了接二连三的项目失败。在人工智能领域经历挫折之后,研究者们不得不冷静下来,重新审视、思考未来的道路。这时候,西蒙的学生,爱德华·费根鲍姆(Edward A. Feigenbaum)站了出来。他分析传统的人工智能忽略了具体的知识,人工智能必须引进知识。
Feigenbaum是专家系统之父,知识工程的奠基人。Knowledge is the power in AI。专家系统一般由两部分组成:知识库与推理引擎。它根据一个或者多个专家提供的知识和经验,通过模拟专家的思维过程,进行主动推理和判断,解决问题。第一个成功的专家系统DENDRAL化学分子式分析系统于1968年问世(面向垂域(特定领域、垂直领域)的专家系统)。1977年,费根鲍姆将其正式命名为知识工程。
把知识融合在机器中,让机器能够利用我们人类知识、专家知识解决问题,这就是知识工程要做的事。
不幸的是,随着日本五代机的幻灭,专家系统在经历了十年的黄金期后,终因无法克服人工构建成本太高,知识获取困难等弊端,逐渐没落。
1.1.3 知识工程与互联网
1998年随着万维网的出现,为知识的获取提供了极大的方便。万维网之父蒂姆·伯纳斯·李再次提出语义网sematic network/web。它的核心是:语义网可以直接向机器提供能用于程序处理的知识。通过将万维网上的文档转化为计算机所能理解的语义,使互联网成为信息交换媒介。这需要自顶向下的优质设计框架,必须在一开始就对分类想的非常清楚,从而对数据进行表示处理。
由于自顶向下的设计落地困难,学者们将目光转移到数据本身上来,提出了连接数据的概念。连接数据希望数据不仅仅发布于语义网中,更需要建立起自身数据之间的链接从而形成一张巨大的链接数据网。其中, DBpedia项目是目前已知的第一个大规模开放域链接数据。类似的还有Wikipedia、Yago等都属于这一类结构化知识的知识库。
1.1.4 知识图谱的出现
谷歌搜索是谷歌公司的核心产品服务,这类互联网的应用,主要有以下特点:
- 大规模开放性应用,永远不知道用户下一次搜索关键词是什么;
- 精度要求不高;大部分搜索理解与回答只需要实现简单的推理,复杂推理为极少数。
在这样的诉求下,谷歌推出了自己的知识图谱,使用与语义检索,从多种来收集信息,以提高搜索质量。而知识图谱的推出,基本上宣告了知识工程进入了一个新的时代,我们称之为大数据时代的知识工程阶段。谷歌利用一个全新名称表达与传统知识表示其毅然决裂的态度。
知识图谱即为一种大规模语义网络。这样的一个知识规模上的量变带来了知识效用的质变。
我们有海量的数据、强大计算能力、群智计算以及层出不穷的模型。在这些的外力的支持下,解决了传统知识工程的一个瓶颈性问题——知识获取。我们可以利用算法实现数据驱动的大规模自动化知识获取。
和传统知识获取不同,以前是通过专家自上而下的获取知识,而现在是利用数据自下而上,从数据里面去挖掘知识、抽取知识。另外,众包与群智成为大规模知识获取的一条新路径。高质量的UGC内容,为自动挖掘知识提供了高质量数据源。
1.1.5 知识图谱的应用前景
大数据知识这个词是BigKE,它将会显著提升机器认知智能水平。我们正在经历感知智能到认知智能的过渡阶段,未来最重要到技术即是实现认知智能。知识图谱使可解释人工智能成为可能。在人工智能发展的任何阶段,我们都需要事物的可解释性,现在的深度学习也常因为缺少可解释性受人诟病。而知识图谱中包含的概念、属性、关系是天然可拿来做解释的。
通过知识图谱等先验的知识去赋能机器学习,来降低机器学习对于样本的依赖,增强机器学习的能力。知识将显著增强机器学习能力。传统的机器学习都是通过大量的样本习得知识,在大数据红利渐渐消失的情况下,逐渐遇到发展瓶颈。而通过知识图谱等先验的知识去赋能机器学习,来降低机器学习对于样本的依赖,增强机器学习的能力,或许是连接主义和符号主义在新时代下的共生发展。
1.2 知识工程的主要问题
1.2.1 知识获取
隐性知识、过程知识等难以表达。比如如何表达老中医看病用了哪些知识;不同专家可能存在主观性,例如,我国有明确治疗规范的疾病占比非常小,大部分依赖医生的主观性。
1.2.2 知识表达
逻辑学规定了一套数理逻辑符号可供参考,然而现实生活中有太多复杂的知识形态。
1.2.3 知识应用
很多的应用,尤其是很多开放性的应用很容易超出预先设定的知识边界;还有很多应用需要常识的支撑,而整个人工智能最怕的恰恰就是常识。为什么?因为常识它难以定义、难以表达、难以表征;知识更新困难,太依赖领域专家,还有很多异常或难以处理的情况。
1.3 什么是知识图谱
感谢Google命名。Google知识图谱是它的一个知识库,使用语义检索从多种来源收集信息,以提高Google搜索的质量。是一种表示现实以及认知世界中各种对象之间关联关系的语义网络,可以对现实世界的事物及其相互关系进行形式化描述。(多源异构的知识来源)
底层的知识图谱就是三元组,两端是实体,中间是关系。工业界认为知识图谱是语义网络,学术界不这样认为。语义网络是符号主义的产物,需要符号描述,知识图谱好像没有。
可以认可的是:知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。由节点和边组成。节点既可以是具体的事物也可以是抽象的概念,边可以用于描述节点的属性,也可以描述节点与节点之间的关系。
知识图谱:结构化存储人类知识的数据库。
基本组成:实体-关系-实体
将具象的事物和抽象的概念表现为实体、实体间的关系,构建成巨大的知识网络。
1.4 知识图谱的价值
人工智能的三要素:计算力(GPU CPU FPGA etc)、算法(深度学习、机器学习、专业领域传统算法)、数据(结构化、标定、数据量、分布均匀、特定应用场景)
深度学习算法:以人工神经网络ANN为代表的深度学习算法成为了人工智能应用落地的核心引擎。
深度学习的缺陷:深度学习可以模仿人类的视觉等感知能力,但想要真正实现类人智能,机器需要掌握大量常识性知识,用人的思维模式和知识结构来进行语言理解、视觉场景解析和决策分析。
需要引入人工智能时代的机器智脑:知识图谱。
现有的应用:基于知识图谱的语义检索系统
传统检索基于关键词的搜索返回网页,基于知识图谱的搜索引擎根据结构化的实体知识,给用户提供更有条理的信息,探索更完善的知识体系。(搜索居里夫人,关联展示同时代的其他物理学家化学家)
1.5 小结
知识就是一种精炼的数据,精炼的数据获取后通过知识引擎表示。底层是神经网络和表示学习。可以来进行智能搜索、推荐、语言理解、大数据分析、机器推理等。
本节重点:
1、发展历史
2、知识图谱概念
3、知识图谱应用
4、知识图谱项目
5、知识图谱相关技术
第二章 知识表示
2.1 什么是知识表示
知识是合理的,真实的,被人相信的
知识表示使知识便于用机器处理。他有三种用途:作为编程语言,表示信息及拟人推理,表达信息及拟人行为
2.1.1 作为编程语言
知识表示语言SQL语句啊这类的
2.1.2 表达信息及拟人推理
智能是显性(人可以读的)信息(符号人工智能)上的推理(与人类似的思考过程)
这个主要是通过符号进行的,而下一个主要是从连接主义
我们看下面这个例子,左边是非结构化语言,右边是结构化语言描述
2.1.3 表达信息及拟人行为
对于信息编码并适合计算出期望结果的编码形式。
我们来看一个地形图的分类问题:
CNN多层卷积后pooling一下然后softmax一下就可以得出结果啦。 人工特征在发展的过程中有闪光的时候,但是深度框架一出来效果太好了以至于整个人工特征就没啥用了。
理性走到了符号主义,经验走到了连接主义。
比如人是怎么样表达知识的?我们举一个高考的例子:
我们适合把常识的已经固定了的知识(历史之类的,像沉船这个事件不适合放入知识图谱)放入知识图谱,然后进行拼接相似度分析,最后通过一个分类任务得出结果。对比上一种那个是集合运算,这种方法是AI算法的特点:不确定优化分析。
接下来看一个比较常见的知识表示形式:机器通过三元组的形式组织知识,使用图论模型,将知识符号化从而让机器理解知识。而另外一种就是向量表示,具体的到2.3 2.4看一下
向量表示:头实体,尾实体,关系R。如果关系R是一样的,那么向量之间相减的结果是一样的。在图中的位置并不表示大小关系而是空间映射。
2.2 知识表示方法简介——传统方法
常用的知识表示方式有:
一阶谓词逻辑,产生式规则,框架,语义网络,逻辑程序,缺省逻辑。
2.2.1 一阶逻辑谓词
接近NL,容易接受,逻辑严密,容易实现;但是表达能力有限(如果以某种概率存在的知识无法表示),组合爆炸,效率低。
hasdog(x,y)->haspet(x,y)
可以通过并交补的布尔计算进行操作,霍恩逻辑是一阶逻辑微词的子集
所以:适合人的逻辑表示,不适合计算机
2.2.2 产生式规则
if x then y,cf=[0,1] x前提,y结论or操作,cf置信度
直观自然易于推理,易于模块化,能表示各种知识(确定性,不确定,启发,过程),格式固定高度一致;但是效率不高,组合爆炸,不能表示结构性知识,因此常与框架表示、语义网络结合。
2.2.3 框架系统
人在认识现实的事物中,通过框架模板形式存储信息,根据实际情况修改模板细节,得到对于事物的认识。
一个框架包含若干个槽及其约束条件,每个槽可以包含不同侧面。
槽:描述对象某一属性
侧面:描述槽的某一方面属性
对于知识描述全面完整,知识库质量高,允许数值计算;但是成本很高,对于知识库质量要求非常高,表达不灵活。
2.2.4 语义网络
带标识的有向图,能够表达语义和支持推理,由节点和连接线组成。
节点:带有若干属性,表示事物的状态、概念。
弧:表达节点间的关系、动作等。
语义网络是通过三元组形式组合的:节点1,弧,节点2
接过话的表示事物属性和事物间的语义联系,是根据人类联想记忆模型提出的,直观自然;但是不严格没有公认的表示体系,不能保证正确性及非二义性,处理上复杂度高检索复杂。
描述很简单但是不够严谨导致一些问题。 要和其他的知识表示方式组合在一起。
2.2.5 小结
传统知识表示以符号表示方法为主,符号表示方法显示表示知识,但来源主要靠专家和人工,所以是非常繁琐的。
2.3 知识图谱的表示方法-符号表示
知识方法:知识图谱
表示方式:RDF、OWL等方法,符号化表示
2.3.1 RDF Resource description framework
RDF:三元组形式主谓宾
这些信息是以一种自底而上的方法进行组织和描述的。
RDFS,包括class subClassOf type Property subPropertyOf Domain Range
早期来说这个对于机器和人都比较友好
使用xml的描述形式,描述一张CD的信息。 使用简单语义框架的rdfs定义类与子类,但是不区分数据属性和对象属性。
rdfs只有浅层的语义信息,我们想要获取深层的语义信息还需要继续改进。这时候我们引入OWL。
2.3.2 OWL Web Ontology Language
OWL:因为RDF和RDFS表达能力非常有限,所以局限在二元常谓词。RDFS局限于子类分层和属性分层,以及属性的定义域和值域限定。OWL可以继续使用RDFS中类和属性的含义,并增加建模原语提供更强大的表达能力。
我们看最后这个person和place,OWL可以定义这个Place是Person的出生地,但是RDFs不可以。
表达构件(还是基于符号化的表示形式)这部分了解一下就行:
其实从RDF到RDFs到OWL时从弱语义到强语义的尝试,RDF一开始是没有语义框架的元数据框架,因为推理的需要所以加上了语义,为了和OWL统一,两个语言采用了复杂的模型语义以支持推理。但实际使用中他太复杂了,堆栈技术太大了,所以现在只变成了一种数据描述语言。
OWL语言族复杂度分析(了解)
OWL每个子语言是前述语义表达构件的一类集合,并有相应的复杂度分析方式
2.4 知识图谱的表示方法-向量表示(重点)
符号表示的问题:难以应用于大规模知识库,无法进行语义计算,扩展困难
引入向量表示,有利于刻画隐含的不明确的知识;有较好的鲁棒性和泛化性。
要表示一个人必须放在各种环境要素中进行表示,所以可以进行分布式的表示方式。
有了这个数据就可以做链路预测任务了。
2.4.1 词的向量表示
词向量表示有两种经典表示法:
1、One-hot Endcoding(用来给NN做初始向量)
没有语义层的编码,非常稀疏,向量维度=词表大小
2、Bag-of-word(统计自然语言处理里面常用)
不考虑上下文关系,不关心词出现的顺序,语义信息缺失
词向量的分布式表示
考虑上下文语义信息,表示语义层面词的相似程度,称为词向量or词嵌入
CBoW模型和Skip-gram模型是常用的Word2Vec模型
2.4.2 知识图谱-向量表示
受到了词向量的启发,将实体和关系映射到连续的向量空间(本质)。包含语义层面的信息;便于机器理解、计算。
称为:知识图谱嵌入、知识图谱的表示学习、知识表示学习等。
上面这种描述关系很宽松,语义关系也不强。如果需要做推理还需要其他的软件支撑
知识表示的学习模型(非常经典):
TranE模型通过机器学习对模型学习(基于翻译的模型)
对于每个事实(head relation tail)将relation看做从head到tail的翻译操作。
如果三元组(hrt)当hr约等于t时,我们认为三元组成立。d函数是衡量两个向量之间的距离函数。优化的是hlt的向量表示方法。
此外还有线性模型,张量分解模型,距离模型(KL散度啊之类的)等。
2.5 总结
1、知识表示的角色
2、知识图谱的符号表示
RDF RDFs OWL
3、知识图谱的分布式表示
经典算法TranE,了解基于DL的词的表示方式,基于网络表示的node2vector,基于大规模预训练的Berch??
第3章 知识获取
3.1 知识获取导论
3.1.1 知识无处不在
工业飞机制造,人体生理学,建筑设计结构,污水处理,食品药学,软件开发,医学balabala
结构化的知识让知识图谱来表述是非常容易的。
垂直领域的知识图谱构建是非常困难的,需要各种领域专家,还得融合在一起。MINS(info management system)系统的构造因为知识图谱技术变得较容易,成本变得更低。实验级一般是千万级,到了工业界就是亿级的,冷启动也是非常重要的问题。
软件开发的知识:
3.1.2 什么是知识获取
知识获取是人工智能和知识工程系统中,机器如何获取知识的问题。
狭义知识获取:人工移植将知识存储到机器中。系统设计、程序编制、人机交互。
广义知识获取:机器自动or半自动获取知识,直接通过感知从外部环境获取。
3.1.3 知识获取技术体系
知识构建(KA基于IA之上基于数据库进一步处理),信息抽取(命名实体识别,文本模态),数据挖掘(爬虫etc),本体工程。他的交叉领域有NLP IP(image process) DM ML
学者型专家一般去做Ontology比较多,实践性(日本武士型??)非常善于实践,只管数据有什么然后构建知识图谱。
3.1.4 知识获取与专家系统
有知识工程师共同把领域内的知识通过知识工程存储到知识库中,和综合数据库一起输入推理机,然后传给人机交互界面把推理的结果传送给用户。
Dendral系统:判定某待定物质的分子结构的专家系统。输入数据,输出物质化学结构。
整个系统功能分为三部分:1、利用专家知识对分子结构进行约束 2、生成结构图 3、利用化学家对于数据的知识,给出第二部分的结果排队。4、最后给出分子结构图
MYCIN系统
控制结构上:1、以病史,化验,症状微数据找出可能导致感染的细菌,并给出每种细菌的可能。
2、给出针对这些细菌的药方。
RIXCON系统
运用计算机系统配置知识根据用户订货选择最合适的系统部件
国内相关的专家系统有中医诊治、小麦施肥、渔场预报等
目前的现代的知识获取一般指自主学习专家系统(IBM Watson)认知计算,信息分析,NLP机器学习。
学习能力:通过证据为基础的学习能力,从大数据中快速提取关键信息。
推理能力:假设生成,透过数据解释洞察、模式和关系。
理解能力:NLP处理结构化和非结构化能力
3.1.5 知识获取的基本任务
知识获取就是语义提取,把非结构化的知识转化成分层的结构关系。
定理、模式、结构 它们三者的语义强度从弱到强
知识获取的途径:
人工(人工智能系统设计师,知识工程师,专家,用户)移植:分为静态移植or动态移植
静态移植:人工进行知识的编码or编排输入到计算机中,是系统获得先验知识。
动态移植:通过常规人工输入的方法对知识库进行人工改进,使系统获得动态知识。