文章目录
Q1:知识工程的发展简史
上图为知识工程发展的代表性人物(获得图灵奖时间不代表成果提出时间)。
前世今生(AI与推理)
达特茅斯会议之后,最具代表性的成果为:A.Newell(纽厄尔)、J.Shaw(肖)和H.Simon等人编制出了逻辑机LT,能够证明38条数学定理。
1956年,Samuel/塞缪尔研制出跳棋程序,具有自学习功能,掀起AI的高潮。
1960年,A.Newell、Simon等人定义了GPS逻辑推理架构,并提出启发式搜索的思路。
20世纪60年代~70年代初,人工智能迎来了第一个寒冬。
1977年,知识工程诞生。爱德华-费根鲍姆分析传统的AI忽略了具体的知识,AI必须引进知识。
爱德华-费根鲍姆
发明了专家系统,是早期人工智能的重要分支,是一种在特定领域内具有专家水平解决问题能力的程序系统。
专家系统一般由两部分组成:知识库与推理引擎。它根据一个或者多个专家提供的知识和经验,通过模拟专家的思维过程,进行主动推理和判断,解决问题。
第一个成功的专家系统DENDRAL于1968年诞生。1977年,费根鲍姆将其命名为知识工程。
兴起与发展
20世纪70年代~90年代:知识工程蓬勃发展(1977年知识工程诞生之后)。
美国DEC公司的专家配置系统XCON投入应用。
1988年,万维网诞生。
1998年,万维网之父蒂姆-博纳斯-李提出了语义网(核心:语义网可以直接向机器提供能用于程序处理的知识。通过将万维网上的文档转化为计算机所能理解的语义,使得互联网成为信息交换的媒介)。
2006年,蒂姆-博纳斯-李又提出了链接数据。数据不仅仅在语义网中有链接,数据自身之间也有链接,形成一张数据连接网。更像是语义网的简洁描述。具体的产品有DBpedia、Wikipedia、Yago…
2012年,谷歌收购了Freebase,并起名为知识图谱。
Q2:知识图谱的定义
知识图谱最早由Google与2012年正式提出,是一种表示现实以及认知世界中各种对象之间关联关系的语义网络,可以对现实世界的事物及其相互关系进行形式化地描述。
知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。由节点和边组成。节点既可以是具体的事物也可以是抽象的概念。边可以用来描述节点的属性,也可以描述节点与节点之间的关系。
知识图谱概念在不同阶段的表示:
Q3:知识图谱的代表性项目及其特点
名称 | 特点 | 描述 |
---|---|---|
CYC | 基于形式化的知识表示方法来刻画知识(形式化的优势是支持复杂的推理,但过于形式化导致知识库的扩展性和应用的灵活性不够)。 | 最初目标是建立人类最大的常识知识库。主要由术语和断言组成。Terms包括概念、关系和实体的定义,Assertions用于建立Terms之间的关系。 |
WordNet | 用于词义消歧;主要定义名词、动词、形容词和副词之间的语义关系 | 词典知识库 |
ConceptNet | 以三元形式的关系型知识构成,采用了非形式化、更接近自然语言的描述;侧重于词与词之间的关系 | 常识知识库,目的是帮助计算机理解人类语言,接近与WordNet但包含的关系更多 |
FreeBase | 由元数据组成的大型合作知识库(每个条目定义了一套元数据);内容主要由社区成员贡献,整合了大量的网上资源 | |
WikiData | 起结构化数据中央存储的作用;开放协作;多语言 |
Q4:常用的知识表示方法及其优缺点
知识表示的核心是:用便于及其处理的方式描述知识。
一阶谓词逻辑
在一阶逻辑,可以用谓词和变量表示知识,不同于命题逻辑,一阶谓词逻辑支持量词和谓词。
原子命题中,所描述的对象称为个体;用以描述个体的性质或个体间关系的部分称为谓词。
一个原子命题用一个谓词(如P)和n个有次序的个体常元(如 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an)表示成 P ( a 1 , a 2 , . . . , a n ) P(a_1,a_2,...,a_n) P(a1,a2,...,an),称它为该原子命题的谓词形式或命题的谓词形式。
由一个谓词(如P)和n个个体变元组成的(如 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn)组成的 P ( x 1 , x 2 , . . . , x 3 ) P(x_1,x_2,...,x_3) P(x1,x2,...,x3)称它为n元原子谓词或n元命题函数,简称n元谓词。也称为原子(谓词)公式。
n元谓词不是命题。
以逻辑运算符结合原子谓词公式构成的命题公式,成为谓词逻辑。
规则:
B
o
d
y
→
H
e
a
d
Body\to Head
Body→Head,如
h
a
s
_
d
o
g
(
X
,
Y
)
→
h
a
s
_
p
e
t
(
X
,
Y
)
has\_dog(X,Y)\to has\_pet(X,Y)
has_dog(X,Y)→has_pet(X,Y)。
事实:没有Body和变量的规则,如
→
h
a
s
_
p
e
t
(
M
a
r
y
,
D
a
H
u
a
n
g
)
\to has\_pet(Mary,DaHuang)
→has_pet(Mary,DaHuang)。
优点 | 缺点 |
---|---|
自然性:接近自然语言,显示表示,容易接受 | 表达能力有限(无法表达不确定的知识) |
严密性:有严格的形式定义和推理规则 | 组合爆炸,经常出现事实、规则等的组合爆炸 |
易实现性 | 效率低,推理复杂度较高 |
以人的逻辑设计,不适合机器的逻辑表示。
产生式规则
核心表达式为:
IF X THEN Y , CF = [0,1]
X为产生式的前提,Y为结论或者操作,CF为置信度。
优点 | 缺点 |
---|---|
自然性:产生式系统采用了人类常用的表达因果关系的知识表示形式,既直观、自然,又便于进行推理 | 效率不高:求解问题的过程是一个反复进行“匹配-冲突消解-执行”的过程,因为规则库比较大,匹配十分耗时,所以效率不高 |
模块性:产生式系统中的规则形式相同,易于模块化管理 | 组合爆炸,尤其是求解复杂问题 |
有效性:能表示确定性知识、不确定性知识、启发性知识、过程性知识等 | 不能表达结构性知识:产生式系统对具有结构化的知识无能为力,不能把具有结构关系的事物之间的区别和联系表示出来。所以经常与其他知识表示方法相结合 |
清晰性:产生式由固定的格式,既便于规则设计,又易于对规则库中的知识进行一致性、完整性检测 | - |
框架系统
框架系统的思想核心为:人在认识现实各种事物的过程中,以一种框架形式的模板存储信息,根据实际情况修改模板细节得到对事物的认识。
组成要素:一个框架由若干个槽及其约束条件组成,每个槽(用于描述对象的某一属性)中可包含不同侧面(用于描述槽的某一方面属性)。
优点 | 缺点 |
---|---|
框架对于知识的描述非常完整和全面 | 框架的构建成本非常高,对知识库的质量要求非常高 |
基于框架的知识库质量非常高 | 框架的表达形式不灵话,很难同其他形式的数据集相互关联使用 |
框架允许数值计算,这一点优于其他知识表示语言 | - |
语义网络
本质上为:带标识的有向图。能够表达语义与支持推理。
可视化层面,其由节点(带有若干属性,表示事物的状态、概念等信息)和线(表达节点间的关系、动作等)组成。
描述层面,语义网络的单元为三元组(节点1,弧,节点2)。
优点 | 缺点 |
---|---|
结构性:语义网络是一种结构化的知识表示方法,它能把事物的属性以及事物之间的各种语义联想显式地表达出来 | 非严格性:语义网络没有公认的形式表示体系。一个给定的语义网络所表达的含义完全依赖于处理程序如何对它进行解释 |
联想性:它最初是作为人类联想记忆模型提出的 | 通过推理网络而实现的推理不能保证其正确性。目前采用的表示量词的语义网络表示法在逻辑上不充分,不能保证不存在二义性 |
自然性:直观地把事物的属性及其语义联系表示出来,便于理解,自然语言与语义网络的转换比较容易实现,故其使用十分广泛 | 处理上的复杂性:语义网络表示知识的手段多种多样,虽然灵活性很高,但同时也由于表示形式的不一致使得对其处理的复杂性很高,对知识检索相对复杂,要求对网络的搜索要有强力的组织原则。 |
Q5:知识图谱的符号化表示及向量化表示方法
符号化表示
知识图谱可由RDF、RDFS、OWL等方法表示。
RDF(Resource Description Framework)
RDF是一个使用XML语法来表示的资料模型,用来描述Web资源的特性及资源与资源之间的关系。目的是为了便于计算机阅读,因此不是给人看的。
XML的声明
<?xml version="1.0"?>
RDF文档的根元素
规定了两个命名空间,带有rdf前缀的元素来自xxx,带有cd前缀的元素来自xxx
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
rdf:Description包含了对被rdf:about属性标识的资源的描述
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Empire Burlesque">
下面都是该资源的属性
<cd:artist>Bob Dylan</cd:artist>
<cd:country>USA</cd:country>
<cd:company>Columbia</cd:company>
<cd:price>10.90</cd:price>
<cd:year>1985</cd:year>
</rdf:Description>
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Hide your heart">
<cd:artist>Bonnie Tyler</cd:artist>
<cd:country>UK</cd:country>
<cd:company>CBS Records</cd:company>
<cd:price>9.90</cd:price>
<cd:year>1988</cd:year>
</rdf:Description>
</rdf:RDF>
资源是可以拥有URI的任何事物。URI是统一资源标识符,是一个用于标识某一互联网资源名称的字符串。
RDFS(RDF Schema)
是对RDF的一种扩展。
RDF 通过类、属性和值来描述资源。此外,RDF 还需要一种定义应用程序专业的类和属性的方法。应用程序专用的类和属性必须使用对 RDF 的扩展来定义。RDF Schema 就是这样一种扩展。
<?xml version="1.0"?>
RDF文档的根元素,包含了命名空间的定义
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xml:base="http://www.animals.fake/animals#">
<rdf:Description rdf:ID="animal">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>
<rdf:Description rdf:ID="horse">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
<rdfs:subClassOf rdf:resource="#animal"/> 重点是这句
</rdf:Description>
</rdf:RDF>
资源horse是animal的子类。
OWL(Web Ontology Language)
RDF和RDFS表达能力有限,因为RDF局限于二元常谓词,RDFS局限于子类分层和属性分层,以及属性的定义域和值域的限定。
OWL指的是web本体语言。本体是世界上各种实体以及他们之间是怎么关联的科学。
OWL构建在RDF的顶端之上。由XML来编写。
RDFS不区分数据属性和对象属性而OWL区分。
下面是OWL对知识图进行语义层的描述:
在描述上,RDF、RDFS、OWL都差不多,区别最大的是OWL支持很多别的词汇,比如:对称性、传递性、唯一性、相反…
OWL先有本体,定义好自己的类,然后再有一些关系。RDF则是根据现有数据得到的关系,两者构建的方式不一样。
向量化表示
符号化表示的缺陷:
- 难以应用于大规模的知识库;
- 无法进行语义计算;
- 扩展困难;
向量表示的优势:
- 有利于刻画隐含的不明确的知识;
- 基于神经网络和向量表示的推理有较好的鲁棒性和泛化性。
Trans系列算法
这是表示学习的一个步骤:
- 首先我们对实体和关系进行初始化;
- 然后组合出一些三元组,有正样本也有负样本;
- 接着通过打分函数计算Loss;
- 最后根据Loss优化表示再此进入循环。
Trans系列的思想也在打分函数这里体现。
TransE
每一个三元组可以表示为
(
h
,
r
,
t
)
(h,r,t)
(h,r,t),TransE中要求成立的三元组之间有这样的关系(为什么会有这样的关系呢?)
h
+
r
=
t
h+r=t
h+r=t
这也是我们的最终的优化目标。
我们将距离函数定义为
d
(
h
,
r
,
t
)
=
∥
h
+
r
−
t
∥
2
2
d(h,r,t)=\|h+r-t\|_2^2
d(h,r,t)=∥h+r−t∥22
于是损失函数可以写成 L = ∑ ( h , r , t ) ∈ S ∑ ( h ′ , r , t ′ ) ∈ S ( h , r , t ) ′ [ γ + d ( h , r , t ) − d ( h ′ , r , t ′ ) ] + L=\sum_{(h,r,t)\in S}\sum_{(h',r,t')\in S'_{(h,r,t)}}[\gamma+d(h,r,t)-d(h',r,t')]_+ L=(h,r,t)∈S∑(h′,r,t′)∈S(h,r,t)′∑[γ+d(h,r,t)−d(h′,r,t′)]+
其中 [ x ] + [x]_+ [x]+表示大于等于0取原值,小于0取0。
S
(
h
,
r
,
t
)
′
=
{
(
h
′
,
r
,
t
)
∣
h
′
∈
E
}
∪
{
(
h
,
r
,
t
′
)
∣
t
′
∈
E
}
S'_{(h,r,t)}=\{(h',r,t)|h'\in E\}\cup\{(h,r,t')|t'\in E\}
S(h,r,t)′={(h′,r,t)∣h′∈E}∪{(h,r,t′)∣t′∈E}
上式表示被破坏的三元组,其中的head和tail被随机替换。
综合来看,这是希望原三元组损失小,被破坏的三元组损失大。也就是说真有关系的,走的近一些,没关系的,走得远一些。
缺点
对于一对多和多对一的关系不适用。这是因为:
张艺谋与多部影片都有导演关系。都采用TranE模型的话,会造成这些影片的向量十分接近。
Q6&Q7:实体识别(NER)的三类常用方法及其优缺点&HMM和CER的基本原理(侧重于思想、优缺点)
目的:抽取文本中的原子信息元素(通常包含人名、组织/机构名、地理位置、时间/日期、字符值等标签)。
实体抽取的实质:实体检测(起始和结束位置)和分类(是否是实体)问题
基于模板和规则的方法
特点:
- 人工编写模板;
- 根据一些规律线索去检测识别命名实体;
- 需要人工构建大量的实体抽取规则;
- 一般是该领域的专家手工构建。
基于序列标注的机器学习方法
序列标注是给定一个序列,对序列中的每一个元素做一个标记。我们需要的方法能够输入语句,输出标注完的结果。下文是一个例子。
一般设计三个步骤:
- 训练语料的标注;
- 特征的定义;
- 模型的训练。
训练语料的标注
在待处理的文本信息中,用标签标注出用户需要识别抽取的实体名称的位置。如下图所示:
常见的标注方法有:
- IOB:实体名称的开始词标注为B(Beginning);后续标注为I(Inside);其他标注为O(Outside);
- IO:实体标注为I,其他词标注为O;
- …
特征定义
在模型训练之前,需要人工选取每个词的一组特征作为模型的输入。这些特征可以是:
- 单词级特征:首字母是否大些;是否以句点作为结尾;是否包含数字等;
- 词典级特征:外部词典与定义的词表、地名等;
- 文档级特征:基于整个语料文档计算词频、同现词(意义上相关联的词会同时出现)等;
模型训练
模型通过解决概率计算、模型参数学习、序列预测三个重要问题来实现对输入的自然文本的标注。
HMM隐马尔可夫模型
参考这篇文章。
引入-马尔可夫模型
在某段时间内,交通信号灯的颜色变化顺序为:红色-黄色-绿色-红色;
交通信号灯的某一个状态只能由前一个状态决定,这称为一阶马尔可夫模型。
某个星期天气的变化序列为:晴朗-多云-雨天;
天气的某一个状态依赖于前n个天气,这称为n阶马尔可夫模型。
一阶马尔可夫模型
存在一类重要的随机过程:如果一个系统有 N 个状态 S 1 , S 2 , S 3 , . . . , S N S_1,S_2,S_3,...,S_N S1,S2,S3,...,SN。随着时间的推移,该系统从某一状态转移到另一状态。如果用 q t q_t qt表示系统在时间 t 的状态变量,那么 t 时刻的状态取值为 S j ( 1 ≤ j ≤ N ) S_j(1\le j \le N) Sj(1≤j≤N)的概率取决于前 t-1 个时刻(1, 2, …, t-1)的状态,该概率为: p ( q t = S j ∣ q t − 1 = S i , q t − 2 = S k , . . . ) p(q_t=S_j|q_{t-1}=S_i,q_{t-2}=S_k,...) p(qt=Sj∣qt−1=Si,qt−2=Sk,...)
如果在特定情况下,系统在时间t的状态只与其在时间t-1的状态相关,则该系统构成一个离散的一阶马尔可夫链:
p
(
q
t
=
S
j
∣
q
t
−
1
=
S
i
)
p(q_t=S_j|q_{t-1}=S_i)
p(qt=Sj∣qt−1=Si)
引入-HMM
马尔可夫模型又称为显马尔可夫模型,其状态是能够直接观测的。如果我们将这些状态转换为不能观测的,比如我们是瞎子,不能直接看到天气,然后通过感受气温、湿度来观测状态。
隐马尔可夫模型中,我们并不知道模型具体的状态序列,只知道状态转移的概率,即模型的状态转换过程不可观察的。
HMM的组成部分
- 初始状态概率 π \pi π:模型在初始时刻各状态出现的概率;
- 状态转移概率A:模型在各个状态间转换的概率, a i j a_{ij} aij表示在任意时刻t,若状态为 S i S_i Si,则下一状态为 S j S_j Sj的概率;
- 输出观测概率B:模型根据当前状态获得各个观测值的概率, b i j b_{ij} bij表示在任意时刻t。若状态为 S i S_i Si, O j O_j Oj被获取的概率。
隐马尔可夫模型按照如下过程生成观测序列 X 1 , . . . , X n X_1,...,X_n X1,...,Xn:
- 设置状态t=1,根据初始状态概率 π \pi π选择初始状态 Y 1 Y_1 Y1;
- 根据状态值和输出观测概率B,选择观测变量取值 X t X_t Xt
- 根据状态值和状态转移矩阵A转移模型状态,确定 Y t + 1 Y_{t+1} Yt+1.
相比于显马尔可夫模型,HMM多了输出观测概率。因为VMM的状态就是观测结果。
训练的时候将标注作为隐状态、语料作为观测结果学习初始状态概率、状态转移概率和输出观测概率。
测试的时候,我们由三个概率对象以及观测结果要估计每个隐状态。这有点像一个逆过程。
预测算法
预测算法指的是根据马尔可夫模型参数以及观测序列推断隐状态。常见的有近似算法和维特比算法。
HMM模型的两个假设
齐次马尔可夫链假设:即任意时刻的隐状态只依赖于它前一个隐状态;
观测独立性假设:即任意时刻的观察状态只依赖于当前时刻的隐藏状态。
CRF条件随机场
随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做岁机场。
马尔可夫随机场是随机场的特例,它假设随机场中的某一位置的赋值仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关
条件随机场是马尔可夫随机场的特例,它假设马尔可夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下的输出。
在标注问题中,X是输入观测序列,Y表示对应的输出标记序列或者状态序列。
CRF和HMM的目的都是为了求解使得观测状态出现概率最大的隐状态。
基于深度学习的方法
BiLSTM根据单词的上下文,给出当前单词对应标签的概率分布,可以把BiLSTM看成一个编码层。
优缺点
和一般的自然语言处理的三种方法的优缺点是一致的(关系抽取)。
方法 | 优点 | 缺点 |
---|---|---|
基于模版和规则的方法 | 当提取的规则能比较精确地反映语言现象时,该方法的性能较好;准确率高;效率高 | 规则往往过于依赖具体语言,领域或者文本风格;编程过程耗时且难以涵盖所有的语言现象;可移植性差;建设周期长;召回率差 |
基于序列排序的机器学习算法 | 效果不错 | 手工提取的特征要求高 |
基于序列排序的机器学习算法-HMM | 训练速度和识别速度相对快一些,适用于对实时性有要求以及像信息检索这样处理大文本应用 | 正确率稍差 |
基于序列排序的机器学习算法-CER | 提供了一个特征灵活、全局最优的标注框架 | 存在收敛速度慢、训练时间长的问题 |
基于深度学习方法 | 性能好,泛化能力强;预训练模型出来后,训练数据量减少 | 可解释性差;算法模型太大,需要很强的算力 |