七类重点问题概述
导论:
(1)知识工程发展简史
(2)知识图谱的定义
(3)知识图谱的代表性项目有哪些?特点是什么?
知识表示:
(4)常用的知识表示方法有哪些?各自的优缺点是什么?
(5)知识图谱的符号化表示(RDF、RDFS、OWL),向量表示(Trans系列算法)
知识获取之实体识别
(6)实体识别的三类常用方法?各自的优缺点有哪些?
(7)基于序列标注的机器学习方法,HMM、CRF的基本原理
(1)知识工程发展简史
本章节主要对知识工程的发展历史、关键事件、一般的发展阶段、代表性人物等进行介绍
依据时间顺序,将知识工程的发展历史表述如下:
-
Minsky(明斯基)(1969年图灵奖获得者):感知机、框架知识表示(framework)。Minsky被称为人工智能之父、知识图谱框架理论的创立者
-
McCarthy(麦卡锡)(1971年图灵奖获得者):提出LISP语言,开发Advice Taker系统
-
Newell和Simon(1975年图灵奖获得者):提出形式化语言,通用问题求解
-
Feigenbaum(爱德华·费根鲍姆)(1994年图灵奖获得者):1977年,知识工程提出者,专家系统之父、知识工程奠基人“Knowledge is the power in AI”
-
Judea Pearl(2011年图灵奖):概率图模型之父
-
Berners-Lee(2016年图灵奖):语义网
-
知识工程起源阶段(20世纪50年代——70年代初)
自1956年,达特茅斯会议(我们认为这是人工智能的起点)后,比较具有代表性的成果:Newell、Shaw、Simon等人编制出逻辑机LT,证明了38条数学定理(以Newell和Simon为代表的符号主义学派取得丰硕成果,代表成果为逻辑机LT);
在1956年,Samuel研制挑起程序,掀起了人工智能发展的第一个高潮;
1960年 定义了GPS的逻辑推理架构,提出启发式搜索的思路 -
知识工程的第一次寒冬(20世纪60年代-70年代初):不切世纪的研发目标接二连三失败,人们期望过高
-
1977年,知识工程诞生:爱德华·费根鲍姆分析传统的人工智能忽略了具体的知识,认为,人工智能必须引进知识。
在费根鲍姆带领下,设计了专家系统(早期人工智能的重要分支):是一种在特定领域内(面向垂域)具有专家水平解决问题能力的程序系统
所谓专家系统,一般由两部分组成:知识库和推理引擎。根据专家们提供的知识和经验,模拟专家的思维过程,进行主动推理和判断,以解决问题。1968年,第一个成功的专家系统DENDRAL问世,1977年,费根鲍姆正式命名其为知识工程 -
知识工程蓬勃发展(20世纪70年代-90年代)
在1977年,知识工程诞生之后,这个领域还在不断产生新的逻辑语言和方法
美国的DEC公司使用的专家配置系统XCON是其中较为接触的成果。当客户订购VAX系列计算机时,专家配置系统XCON能够根据需求自动配置零部件。
但,这种专家系统应用的逻辑处理方法,在逻辑和数据较多的情况下,数理逻辑的分析过程十分复杂,难以向前继续发展 -
1998年,万维网与连接数据
万维网的出现,极大方便了知识的获取。而在1998年,万维网之父蒂姆·伯纳斯·李 提出语义网。
语义网的核心:语义网可以直接向机器提供能用于程序处理的知识。通过将万维网上的文档转化为计算机所能理解的语义,使得互联网成为信息交换的媒介。
此后,由于自顶向下(符号主义)的设计落地较为困难(依赖于专家的设计和人类的理解,不满足开放域的设计需求)学者们考虑在数据本身上下文章,提出了==“连接数据”==的概念。
连接数据希望数据不仅仅发布于语义网中,更需要建立起自身数据之间的链接,从而形成一张巨大的链接数据网。
第一个大规模开放域链接数据:DBpedia项目。类似的还有Wikipedia、Yago等结构化知识的知识库 -
2012年,谷歌提出知识图谱,知识工程进入新发展时期
-
Wikipedia(维基百科)的受众是人,而Freebase强调机器可读。
(2)知识图谱的定义
学术上认为,知识图谱是连接主义的,是结构化储存人类知识的数据库,最早由Google2012年正式提出,是一种表示显示以及认知世界汇总各种对象之间关联关系的语义网络,可以对显示世界的事物及其相互关系进行形式化地描述。
知识图谱的基本组成单位:三元组(实体-关系-实体),将巨像的事物和抽象的概念表现为实体。实体之间的关系,构造巨大的知识网络。
==定义:==知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。
知识图谱由节点和边组成,节点既可以是具体的事物也可以是抽象的概念;边可以用于描述节点的属性,也可以描述节点与节点之间的关系。
(3)知识图谱的代表性项目有哪些?特点是什么?
CYC
最初的目标是建立人类最大的常识知识库。
Cyc主要由术语Terms和断言Assertions组成。
术语Terms包含概念、关系和实体的定义
断言Assertions用于建立Terms之间的关系,这既包括对事实Fact的描述,也包含对规则Rule的描述
Cyc的主要特点是:基于形式化的知识表示方法来刻画知识。形式化的优势是可以支持复杂的推理,而过于形式化也导致知识库的扩展性和应用的灵活性不够
WordNet
WordNet是著名的词典知识库,主要用于词义消歧
WordNet主要定义名词、动词、形容词和副词之间的语义关系,例如名词之间的上下位关系,动词之间的蕴含关系
ConceptNet
ConceptNet是常识知识库,依靠互联网众包、专家创建和游戏三种方式来创建,其中导入了大量开放的结构化数据,如DBPedia,Wikinart、Wordnet
ConceptNet知识库以三元组形式的关系型知识构成,包含2800万关系描述
与Cyc相比,ConceptNet采用了飞行回话、更加接近自然语言的描述,而非像Cyc那样采用形式化的谓词逻辑。
此外,ConceptNet侧重于词与词之间的关系,完全开放免费。
FreeBase
这是一个由元数据组成的大型合作知识库,内容则主要来自 其社区成员的贡献,整合了许多网上的资源,包括部分私人wiki站点中的内容,致力于打造一个允许全球所有人(和机器)快捷访问的资源库(存在有机器接口)
2010年被谷歌收购,2014年十二月,google宣布将在六个月后关系Freebase,并将全部数据迁移至Wikidata
WikiData
- WikiData是一个免费开放的数据库,人类和机器均可阅读和编辑
- WikiData起结构化数据中央存储的作用,其为Wikipedia,Wikivoyage,Wikitionary,Wikisource以及其他项目提供服务
其他
包括但不限于:DBPedia、YAGO、BabelNet、Nell、ConceptGraph等等
关于OpenKG,这是一个开放的中文知识图谱
(4)常用的知识表示方法有哪些?各自的优缺点是什么?
知识表示的核心:用便于知识处理的方式描述知识
-
角色一:作为编程语言
-
角色二:表达信息及拟人推理(符号推理)
“智能是显性信息上的推理”
对于显性的含义:是指对于人是可读的
对于推理的含义:是指像人一样的思考过程
属于符号表示
-
角色三:表达信息及拟人行为(行为推理)
“对信息编码并适合计算出期望解雇欧的编码形式”
属于向量表示
接下来进入正题,
常用的知识表示方法,及各自的优缺点:(传统的知识表示还是以符号表示方法为主,能够显式地表示知识,人比较容易理解,但,这样的知识的来源主要依靠专家和人工,构建复杂的知识框架较为复杂和困难)
一阶谓词逻辑(First-order Logic)
霍恩逻辑是一阶谓词逻辑的子集,著名的Prolog语言就是基于霍恩逻辑设计的
- 对于原子Atom:
p(x1,x2,…,xn)中,p是谓词,xi是变量或常量。
如has_pet(X,Y) - 对于规则Rules:
由原子组成规则,形式为Body->Head。
如has_dog(X,Y)->has_pet(X,Y) - 对于事实Fact:
其实是没有body和变量的规则,仅仅余下Head和常量(无需条件而先验性存在的事实)
如->has_pet(Mary, DaHang)
关于优缺点:
优点:
自然性:一阶谓词逻辑接近自然语言,是显示表示的,容易接受
严密性:有严格的形式定义和推理规则
易实现性
缺点:
表达能力有限,无法表达不确定知识
组合爆炸,经常出现事实、规则等的组合爆炸
效率低,推理复杂度通常较高
需要注意的是,一阶谓词逻辑是以人的逻辑进行设计的,并不适合机器的逻辑表示
产生式规则(Production Rule)
对于产生式规则,其核心表达如下所示:
产生式规则的优点:
(1)自然性:由于产生式系统采用了人类常用的表达因果关系的知识表示形式,既直观自然,又便于进行推理
(2)模块性:产生式系统中的规则形式相同,易于模块化管理
(3)有效性:能表示确定性知识、不确定性知识、启发性知识、过程性知识
(4)清晰性:产生式有固定的格式,既便于规则设计,又易于对规则库中的知识进行一致性、完整性检测
产生式规则的缺点:
(1)效率不高:产生式系统求解问题的过程是一个反复进行“匹配——冲突消解——执行”的过程。由于规则库一般都比较大,而匹配又十分耗时,因此其工作效率不高
(2)在求解复杂问题时,容易引起组合爆炸
(3)不能表达结构性知识:产生式系统对具有结构关系的知识无能为力,不能把具有结构关系的事物间的区别与联系表示出来
(4)因此人们经常将它与其他知识表示方法相结合(如框架表示、语义网络)
框架(Framework)
框架系统的核心思想为:人在认识现实各种事物的过程中,以一种框架形式的模板存储信息,根据实际情况修改模板细节得到对事物的认识
框架系统的组成要素:一个框架可以由若干个槽及其约束条件组成,每个槽中可包含不同的侧面
对于槽:用于描述对象的某一属性
对于侧面:用于描述槽的某一方面属性
如:
对于框架系统的优点:
(1)框架对于知识的描述非常完整和全面
(2)基于框架的知识库质量非常高
(3)框架允许数值计算,这一点要优于其他的知识表示语言
框架系统的缺点:
(1)框架的构建成本非常高,对知识库的质量要求也很高
(2)框架的表达形式不灵活,很难同其他形式的数据集相互关联使用
语义网络(Semantic Network)
对于语义网络,本质上是带标识的有向图,能够表达语义与支持推理。
语义网络由节点和连接线(弧)组成:
节点:带有若干属性,能够标识事物的状态、概念等信息
弧:表达节点间的关系、动作等
语义网络的单元为三元组:(节点1,弧,节点2)
如:(大连理工大学,类型,“双一流”大学)
两个实例:
对于语义网络:
优点:
(1)结构性:语义网络是一种结构化的知识表示方法,它能把事物的属性以及事物之间的各种语义联想显式地表示出来
(2)联想性:它最初是作为人类联想记忆模型而提出的
(3)自然性:直观地将事物的属性及其语义联系表示出来,更加便于理解。自然语言与语义网络的转换比较容易实现,故语义网络表示法在自然语言理解系统中应用最为广泛
缺点:
(1)非严格性:语义网络没有公认的形式表示体系。一个给定的语义网络所表达的含义完全依赖于程序如何对它进行解释
(2)通过推理网络而实现的推理不能保证其正确性。此外,目前采用的表示量词(全程量词和存在量词)的语义网络表示法在逻辑上是不充分的,不能保证不存在二义性
(3)处理上的灵活性:语义网络表示知识的手段多种多样,虽然灵活性很高,但同时也由于表示形式的不一致使得对其处理的复杂性提高,对知识的检索相对复杂,要求对网络的搜索要有强有力的组织原则
逻辑程序(Logic Programming)
缺省逻辑(Default Logic)
(5)知识图谱的符号化表示(RDF、RDFS、OWL)及向量表示(Trans系列算法)
知识图谱,旨在建模、识别。发现和推断 事物、观念 之间的复杂关系,是事物关系的可计算模型,以及被广泛应用于搜索引擎、智能问答、语言理解、视觉场景理解、决策分析等领域
知识图谱的符号化表示方法(RDF, RDFS, OWL)
总的来说,知识图谱可以由RDF、OWL等方法,进行符号化地表示
RDF(Resource Description Framework)
RDF由主谓宾(Subject,predicate,object)的三元组组成
RDFS(RDF Schema)简答语义模式框架
与RDF的不同之处:
- 加入了类Class和子类subClassOf的概念
- 类型type
- 属性property,子属性subPropertyOf
- 定义域Domain,值域Range
对实体进行了概念上的分层
OWL(web ontology language)
网络本体论语言???
由于RDF和RDFS的表达能力较为有限,RDF的主谓宾模式局限于二元常谓词,RDFS局限于子类分层和属性分层 ,再加上属性的定义域和值域的限定,故而提出了OWL
在理想的情况下,我们认为OWL应该作为RDFS的一个扩展,一遍继续使用RDFS中类和属性的含义(rdfs:subClassOf等),并且增加一些建模原语以提供更强的表达能力
具体来说,在rdf和rdfs的基础上,owl对数据属性和对象属性加以区分,数据属性和对象属性(关系)等的出现,为知识图谱提供了更强的表达能力
下图表示OWL词汇是在RDFS基础上拓展而来的:
对于OWL的一些表达构件:
对于这三种方法,其实是语义逐渐增强的一个过程。
RDF在开始时是一个没有语义的元数据框架,因为推理的需要而加上了一些语义,转化为RDFS(也就是加上了类、子类、属性等)为了与OWL进行统一和后期对接,两种语言都采用了复杂啊的模型论语义,以支持基于规则的推理。
然而,在实践过程中,很少使用推理,故而RDF多被用为一种数据描述语言
知识图谱的向量化表示方法
- 在符号表示的过程中遇到了一些挑战:符号表示下的知识图谱,难以应用于大规模知识库、无法进行语义计算、且扩展困难
- 而知识图谱的向量表示有利于刻画隐含的 不明确的 知识,并且基于神经网络和向量表示的推理,显然具有较好的鲁棒性和泛化性
对于词的向量表示:
- 独热编码(one hot encoding):无语义层信息编码、稀疏性强、向量维度=词表大小
- 词袋模型(bag of word):不考虑上下文关系、不关心词出现的顺序
- 分布式表示:考虑词的上下文语义信息、能表示出语义层面上词的相似程度、常称之为词向量、词嵌入
- 常用工具:word2vec、CBoW模型、Skip-gram模型
受到词向量的启发,我们将实体和关系映射到连续的向量空间
这样的方法,可以包含语义层面的信息,且易于机器理解、计算
知识图谱的向量表示,也称为知识图谱嵌入、知识图谱的表示学习、知识表示学习,等
下面,我们仅对TransE模型进行介绍,对于该系列中的其他模型如TransH等,将在后续复习到,再进行添加
TransE模型:
我们将每个事实(head, relation,tail)来说,将relation看做从head到tail的翻译操作,则优化目标就是使得h+r尽量靠近t
(6)(知识获取之)实体识别的三类常用方法?各自的优缺点有哪些?
基于模板和规则方法
- 人工编写模板(pattern)
- 根据一些线索去检测命名实体(names)
- 需要人工构建大量的实体抽取规则
- 一般是该领域的专家手工构建
优点:在小数据集上可以达到很高的准确率和(低???)召回率
缺点:
(1)(随着数据集的增大,)代价太大、存在系统(规则集的)建设周期长,且需要建立不同领域的知识库作为辅助以提高系统识别能力;鲁棒性差、,对于每个新领域的文本都需要更新规则来保持最优性能,需要大量的专门知识和人力;
(2)移植性差,难以迁移应用到别的领域中去。基于规则的方法性能依赖于具体语言、领域和文本风格,对新的领域而言,编制过程需要语言学专家重新书写规则,且不同领域字典不同,难以在其他实体类型或数据及上扩展
基于序列标注的机器学习方法
-
总体缺点:
(1)基于统计的方法对特征选取的要求较高,需要从文本中(挖掘并)选择出对该项任务有影响力的各种特征(包括单词特征、上下文特征、词典及词性特征、停用词特征、核心词特征、语义特征),并将这些特征加入特征向量中;(需要对训练语料所包含的语言信息进行统计和分析,从训练语料中挖掘出特征)
(2)基于统计的方法对语料库的依赖也比较大,而可以用来构建和评估平明实体识别系统的大规模通用语料库又比较少
(3)基于统计的方法的性能相较于基于规则的方法而言偏低,因为基于统计的方法获取的概率知识总赶不上人类专家的专业知识的可靠性,而且有些知识获取必须专家的经验 -
对于隐马尔科夫模型:
优点:
HMM对转移概率和表现概率直接建模,统计共现概率,更加适用于一些对实时性有要求以及像信息检索这样需要处理大量文本的应用,如短文本命名实体识别 -
对于条件随机场:
Conditional Random Fields(CRF)
在传统及其学习中,CRF被看做是命名实体识别的主流模型。
优点:对一个位置进行标注的过程中,CRF可以利用内部及上下文特征信息;在搜索空间较小的场景(如分词、词性标注、命名实体识别等,每一步的预测类别不会太多)crf所求的是全局最优,也就是让整个序列最优,其性能较好
缺点:存在收敛速度慢、训练时间长的问题
基于深度学习方法
优点:
(1)NER问题适用于非线性转化,其效果已经达到或超过了基于丰富特征的CRF模型
(2)深度学习方法可以避免大量的人工特征的构建,无需特征工程(无需大量人工特征),使用词向量以及字符向量就可以达到很好的效果,加入高质量的词典特征能够进一步提升效果;节省了设计NER功能的大量精力
(3)深度学习能通过梯度传播来训练,这样可以构建更复杂的网络
(4)神经网络结构可以有效地建模上下文信息,CRF可以优化输出标签序列,添加一些约束
(7)基于序列标注的机器学习方法(HMM、CRF)的基本原理
利用统计机器学习算法,结合人工选取的大量特征,通过序列标注的方式进行实体抽取。
- 一般涉及三个基本步骤:训练语料的标注、特征定义、模型训练
- 对于训练语料的标注,分别IOB和IO标注方法
- 对于特征定义,在训练模型之前,需要人工选取每个词的一组特征作为模型输入,这些特征包含:(1)单词级特征(2)词典级特征(3)文档级特征
- 模型训练:常常使用的模型有隐马尔科夫模型和条件随机场。模型通过解决概率计算、模型参数学习、序列预测 三个问题来实现对输入的自然文本的标注,即命名实体识别
HMM
隐状态序列,我们标注为x,输出序列,我们标注为y
实质上是一种有向图模型,是结构最简单的动态贝叶斯网络
基于马尔科夫性,我们假设特征之间是独立的
关于HMM,有两个重要的假设:
(1)齐次马尔科夫链假设:任意时刻的隐藏状态只依赖于它前一个隐藏态。对应的为转移概率(当前标签出现的概率的依赖关系)
(2)观测独立性假设:任意时刻的观察状态仅仅依赖于当前时刻的隐藏状态,对应的为观测概率(当前输出,即word,出现的概率的依赖项)
CRF
随机场是由若干个位置组成的整体,当给每一个位置中国按照某种分布随机赋予一个值后,其全体就叫做随机场
- 马尔科夫随机场是随机场的一个特例,它假设随机场中某一个位置的赋值仅与和他相邻的位置的赋值有关,和预期不相邻的位置的赋值无关
- 条件随机场是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X是给定的,而Y是在给定的X的条件下的输出
==note:==与马尔科夫方法相反,隐状态序列(实体类型标签)作为y而word作为x