📜  基于知识的agent

📅  最后修改于: 2020-09-23 09:35:46             🧑  作者: Mango

人工智能中基于知识的代理

  • 智能代理需要有关现实世界的知识 ,以便做出决策和推理以有效地采取行动。
  • 基于知识的代理是指那些具有维护内部知识状态,对知识进行推理,在观察后更新其知识并采取行动的代理。这些代理人可以用某种形式上的代表来代表世界,并采取明智的行动
  • 基于知识的代理包括两个主要部分:
    • 知识库和
    • 推理系统

基于知识的代理必须能够执行以下操作:

  • 代理应该能够代表状态,动作等。
  • 代理商应该能够纳入新的观念
  • 代理可以更新世界的内部表示
  • 代理可以推论世界的内部表示
  • 代理可以推断出适当的动作。

基于知识的代理的体系结构:

上图表示基于知识的代理的通用体系结构。基于知识的代理(KBA)通过感知环境从环境中获取输入。该输入由代理的推理引擎获取,并且还与KB通信,以根据KB中的知识存储进行决策。KBA的学习元素通过学习新知识来定期更新KB。

a

知识库:知识库是基于知识的代理的核心组成部分,也称为知识库。它是句子的集合(此处的“句子”是一个技术术语,与英语中的句子并不相同)。这些句子用称为知识表示语言的语言表示。KBA的知识库存储有关世界的事实。

为什么要使用知识库?

知识基础是更新知识所必需的,以便代理可以根据经验学习并根据知识采取行动。

g

推理系统

推论意味着从旧的句子中衍生出新的句子。推理系统使我们可以在知识库中添加新句子。一句话是关于世界的命题。推理系统将逻辑规则应用于知识库,以推断出新信息。

推理系统会生成新的事实,以便代理可以更新知识库。推理系统主要根据以下两个规则工作:

e

  • 正向链接
  • 向后链接

KBA执行的操作

以下是KBA执行的三个操作,以显示智能行为:

  • 告诉:该操作告诉知识库它从环境中看到的内容。
  • 要求此操作询问知识库应执行的操作。
  • 执行:执行选定的动作。

n

通用的基于知识的代理:

r

以下是基于知识的通用代理程序的结构概述:

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 TELLS KB,表明选择了哪个操作。

MAKE-PERCEPT-SENTENCE生成一个句子,设置为代理在给定的时间感知到给定的感知。

MAKE-ACTION-QUERY生成一个句子,询问当前应该执行哪个动作。

MAKE-ACTION-SENTENCE生成一个句子,该句子断言所选择的动作已执行。

各种级别的基于知识的代理:

可以在以下不同级别上查看基于知识的代理:

1.知识水平

知识级别是基于知识的代理的第一级,在这一级别中,我们需要指定代理知道什么以及代理目标是什么。使用这些规范,我们可以修复其行为。例如,假设一个自动出租车代理人需要从A站到B站,并且他知道从A到B的路线,所以这是在知识层面上。

2.逻辑级别:

在此级别上,我们了解到知识的知识表示形式是如何存储的。在此级别上,句子被编码为不同的逻辑。在逻辑层面上,知识被编码成逻辑语句。从逻辑上讲,我们可以期望自动出租车代理到达目的地B。

3.实施水平:

这是逻辑和知识的物理表示。在实现级别,代理按照逻辑和知识级别执行操作。在此级别上,自动出租车代理实际上会实施他的知识和逻辑,以便他可以到达目的地。

设计基于知识的代理的方法:

构建基于知识的代理的方法主要有两种:

  • 1.声明性方法:我们可以通过使用一个空的知识库进行初始化并将所有我们想从中开始的句子告诉代理来创建一个基于知识的代理。这种方法称为声明性方法。
  • 2.程序方法:在程序方法中,我们将所需行为直接编码为程序代码。这意味着我们只需要编写一个已经对所需行为或代理进行编码的程序。

但是,在现实世界中,可以通过结合声明式方法和过程方法来构建成功的代理,并且声明式知识通常可以编译为更有效的过程代码。