引子
人工智能有三大关键要素:算法、数据和算力。将人工智能的训练工作比作造房子,数据就是建造房子所需要的石头、木头、砂浆等材料;算法就是房子的组成方式、造房子的方法等;算力就是吊车、独轮手推车一类的工具。
要想让计算机具有智能,首先要让它拥有知识。知识的表示方法,也是人工智能训练绕不过去的一个问题。
1. 一阶谓词逻辑表示法
“一阶谓词逻辑表示法是一种重要的知识表示方法,其以数理逻辑为基础,能够精确表达人类的思维活动规律。”,一些教科书上写道。这种表示法,就是采用一套符号系统,来表示对世界的描述性陈述,并在此基础上进行推导。
该表示系统有三个核心概念:
- 个体:表示独立存在的事物。用小写表示。
- 谓词:用来描述个体的属性和个体之间关系,具有真假性。用大写字母表示。
- 量词:包括全称量词和存在量词,分别表示“对于任意的……,都……”和“存在……,使得……”的关系。
此外,还有一些连接词,比如:
- 合取词$\wedge$,其两侧命题同时为真,才为真。
- 析取词$\vee$,其两侧命题有一为真,则为真。
- …
举个例子,如何用该系统表示“只要你是一个人,就会死”呢?
$$
(\forall x)(P(x)\to D(x))
$$
其中,$x$代表个体,$P(x)$代表$x$是一个人类,$D(x)$代表$x$是会死的,中间的箭头表示推导出。
至于在该表示系统上的推理,可以使用数理逻辑的相关知识。
2. 产生式表示法
有很多知识,可以被理解为规则。举个例子,“一个水分子由两个氢原子和一个氧原子组成”,就可以抽象成if…then…形式的语句:If 一个分子是水分子, then 这个分子由两个氢原子和一个氧原子组成。产生式表示法就是应用if…then…形式的语句来表示知识的一个系统。
对于确定的知识,我们可以这么表示:
If 前提, then 结论。
对于不确定的知识,我们可以这么表示:
If 前提, then 结论 (置信度)。
此外,这种表示系统可以用与或树来表示。对于如下的形式,可以用与节点表示:
If 前提1 and 前提2…, then 结论。
对于如下的形式,可以用或节点表示:
If 前提1 or 前提2…, then 结论。
这样我们便可以通过一系列已有的前提,得出相应的结论。
3. 语义网络表示法
不同的物品、概念间有着不同的关系。如果我们用节点表示物品,用有向边代表关系,就成功地用图表示了知识。
语义网络的基本结构很简单:
节点1-具有意义的有向边-节点2
有向边的意义有很多种,比如:
实例关系:ISA
“我是一个人”,这个知识就可以表示成:
我–ISA->人
其中,ISA为is a,表示“……是一个……”、个体与集合的关系、“具体与抽象”的关系。
分类关系:AKO
“鸵鸟属于鸟类”,可以表示成:
鸵鸟–AKO->鸟类
其中,AKO为a kind of,表示“……是一种……”、集合与集合的关系、“子类与超类”的关系。
聚类关系:Part-of
“手属于人体”,可以表示成:
手–Part-of->人体
表示“……是……的一部分”的关系。
属性关系:have
“人体有手”,可以表示成:
人体–have->手
表示“……有……”的关系。
情况与动作的表示
节点可以用来表示事件或者动作。
连接词和量词的表示
合取、析取关系,可以通过引入相应的节点来表示。
对于否定、蕴含关系和存在量词,则可以通过引入相应的关系来表示。
对于全程量词则可以通过分块语义网络表示:
GS,表示所有全称实例的集合;G表示某一个全称实例,G的辖域(或者说,G所表示的具体内容),就是那条标记F的有向边所指向的方块。在这个方块里面,R是一个动作,是一种学习方式,学习的主体是S,S是一个学生,客体是P,P是一门外语。
4. 框架表示法
这个表示系统里面,很多词翻译得都很奇怪。
和语义网络表示法差不多,框架表示法用一种类似于键值对的方式存储数据。
首先,我们用一个Frame(框架)来表示一个物品、概念。该框架下面,包含着若干Slot,Slot用来表示该Frame的一些特征,接着,每个Slot(槽)都有一些Facet(侧面,一个方面),Facet用来描述Slot的不同属性。
举个例子,一个景德镇制造的白色的陶瓷水杯可以用如下的框架来表示:
Frame: 水杯
Slot1 颜色:白色
Slot2 材质:陶瓷
Slot3 产地:
Facet1 国家:中国
Facet2 具体地址:景德镇
框架之间可以彼此继承,比如水杯这个框架可以继承自生活用品的框架。
面向对象。