在人工智能中的知识基础代理:
- 智能代理需要有关现实世界的知识,才能做出有效行动的决策和推理。
- 基于知识的代理人是那些能够维持内部知识状态,理解知识,在观察后更新知识并采取行动的代理。这些代理可以用一些正式的代表来代表世界,并且能够智能地行动。
- 基于知识的代理由两个主要部分组成:
- 知识库和
- 推理系统。
基于知识的代理必须能够执行以下操作:
- 代理应该能够代表状态,行动等。
- 代理应该能够纳入新的感知
- 代理可以更新世界的内部表示
- 代理可以推断出世界的内部表征
- 代理可以推断出适当的操作。
基于知识的代理的体系结构:
上图表示基于知识的代理的通用体系结构。基于知识的代理(KBA)通过感知环境从环境中获取输入。输入由代理的推理引擎获取,并且还与KB通信以根据KB中的知识存储来决定。KBA的学习元素通过学习新知识定期更新KB。
知识库:知识库是基于知识的代理的核心组件,也称为KB。它是一个句子集合(这里的“句子”是一个技术术语,它与英语中的句子不同)。这些句子用一种称为知识表示语言的语言表达。KBA的知识库存储了关于世界的事实。
为什么要使用知识库?
需要知识库来更新代理人的知识,以便通过经验学习并根据知识采取行动。
推理系统
推理意味着从旧的推导出新的句子。推理系统允许我们向知识库添加新句子。句子是关于世界的命题。推理系统将逻辑规则应用于KB以推断新信息。
推理系统生成新事实,以便代理可以更新KB。推理系统主要在两个规则中起作用,给出如下:
- 正向链
- 反向链
由KBA执行的操作
以下是KBA为了显示智能行为而执行的三项操作:
- 告诉:此操作告诉知识库它从环境中感知到了什么。
- 询问:此操作会询问知识库应执行的操作。
- 执行:执行选定的操作。
基于知识的通用代理:
以下是基于知识的通用代理程序的结构大纲:
function KB-AGENT(percept):
persistent: KB, a knowledge base
t, a counter, initially 0, indicating time
TELL(KB, MAKE-PERCEPT-SENTENCE(percept, t))
Action = ASK(KB, MAKE-ACTION-QUERY(t))
TELL(KB, MAKE-ACTION-SENTENCE(action, t))
t = t + 1
return action
基于知识的代理将感知作为输入,并将操作作为输出返回。代理维护知识库KB,它最初具有一些现实世界的背景知识。它还有一个计数器来指示整个过程的时间,并且该计数器初始化为零。
每次调用该函数时,它都会执行以下三个操作:
- 首先它告诉KB它所感知的内容。
- 其次,它询问KB应该采取什么行动
- 第三个代理程序告诉选择了哪个动作的KB。
MAKE-PERCEPT-SENTENCE
生成一个句子作为代理在给定时间感知给定感知的设置。MAKE-ACTION-QUERY
生成一个句子,询问当前应该采取哪种行动。MAKE-ACTION-SENTENCE
生成一个句子,断言所选行动已被执行。
各级知识型代理商:
可以在不同级别查看基于知识的代理,如下所示:
1. 知识水平
知识级别是基于知识的代理的第一级,在此级别中,需要指定代理知道的内容以及代理目标是什么。有了这些规范,就可以修复它的行为。例如,假设一个自动出租车代理需要从A站到B站,他知道从A到B的路,所以这就是知识层面。
2. 逻辑级别
在这个层面,理解知识的知识表示是如何存储的。在这个级别,句子被编码成不同的逻辑。在逻辑层面,将知识编码成逻辑句子。在逻辑层面,可以期望自动出租车代理到达目的地B。
3. 实施水平
这是逻辑和知识的物理表示。在实现级别代理程序根据逻辑和知识级别执行操作。在这个级别,自动出租车代理实际上实现了他的知识和逻辑,以便他可以到达目的地。
设计基于知识的代理的方法
构建基于知识的代理主要有两种方法:
-
声明性方法:可以通过使用空知识库初始化并告诉代理想要开始的所有句子来创建基于知识的代理。这种方法称为声明式方法。
-
程序方法:在程序方法中,直接将所需行为编码为程序代码。只需要编写一个已编码所需行为或代理的程序。
然而,在现实世界中,可以通过结合声明性和程序性方法来构建成功的代理,并且通常可以将声明性知识编译成更有效的过程代码。