智能代理需要有关现实世界的知识,以便做出决策并推理以有效地采取行动。
基于知识的代理是具有维护内部知识状态,对知识进行推理,在观察后更新其知识并采取行动的能力的那些代理。这些特工可以通过某种形式的代表来代表世界,并采取明智的行动。
基于知识的代理由两个主要部分组成: 知识库和 推理系统。
基于知识的代理必须能够执行以下操作:
代理应该能够代表状态,动作等。
代理人应该能够纳入新的观念
代理可以更新世界的内部表示形式
代理可以推断世界的内部表示形式
代理可以推断出适当的操作。
基于知识的代理的体系结构:
上图表示基于知识的代理程序的通用体系结构。基于知识的代理(KBA)通过感知环境从环境中获取输入。该输入由代理的推理引擎获取,并且该代理还与KB通信,以根据知识库中的知识存储来决定。 KBA的学习元素通过学习新知识来定期更新知识库。
知识基础: 知识库是知识型代理的核心组成部分,也称为KB它是句子的集合(此处的"句子"是一个技术术语,与英语中的句子并不相同)。这些句子用称为知识表示语言的语言表示。 KBA的知识库存储有关世界的事实。
为什么要使用知识库?
需要知识库来更新知识,以便代理可以从经验中学习并根据知识采取行动。
推理系统
推理意味着从旧的句子中提取新句子。推理系统使我们可以在知识库中添加新句子。一句话是关于世界的命题。推理系统将逻辑规则应用于知识库,以推断出新信息。
推理系统生成新事实,以便代理可以更新知识库。推理系统主要根据以下两个规则工作:
正向链接
向后链接
高宝(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告知选择了哪个动作。
MAKE-PERCEPT-SENTENCE生成一个语句,设置为代理在给定的时间感知到给定的感知。
MAKE-ACTION-QUERY生成一个语句以询问哪个动作应该在当前时间完成。
MAKE-ACTION-SENTENCE生成一个语句,该语句断言所选择的动作已执行。
各种基于知识的代理:
基于知识的代理可以在以下不同级别进行查看:
1、知识级别
知识级别是基于知识的代理的第一级,在这一级别中,我们需要指定代理知道什么以及代理目标是什么。使用这些规范,我们可以修复其行为。例如,假设一个自动出租车代理人需要从A站到B站,并且他知道从A到B的路线,所以这是在知识层面上。
2 。逻辑级别:
在此级别,我们了解知识的知识表示形式是如何存储的。在此级别上,句子被编码为不同的逻辑。在逻辑层面上,知识被编码成逻辑语句。从逻辑上讲,我们可以期望自动出租车代理到达目的地B。
3、实现级别:
这是逻辑和知识的物理表示。在实现级别,代理按照逻辑和知识级别执行操作。在这个级别上,自动出租车代理实际上会实施他的知识和逻辑,以便他可以到达目的地。
设计基于知识的代理的方法:
构建基于知识的代理的方法主要有两种:
1、声明性方法: 我们可以通过使用一个空的知识库进行初始化并将所有我们想从中开始的句子告诉代理来创建一个基于知识的代理。这种方法称为声明性方法。
2、程序方法: 在程序方法中,我们将所需的行为直接编码为程序代码。这意味着我们只需要编写一个已经对所需行为或代理进行编码的程序即可。
但是,在现实世界中,可以通过结合声明式方法和过程方法来构建成功的代理,并且声明式知识通常可以编译为更有效的过程代码。