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

17 Mar 2025 | 4 分钟阅读
  • 智能代理需要了解现实世界的知识来做决策,并进行推理以高效地采取行动。
  • 基于知识的代理是指那些能够维护内部知识状态、对该知识进行推理、在观察后更新知识并采取行动的代理。这些代理可以用某种形式化的表示来表示世界,并进行智能地行动
  • 基于知识的代理主要由两部分组成:
    • 知识库和
    • 推理系统.

基于知识的代理必须能够做到以下几点:

  • 代理应该能够表示状态、动作等。
  • 代理应该能够纳入新的感知。
  • 代理可以更新世界的内部表示。
  • 代理可以推断出世界的内部表示。
  • 代理可以推断出适当的动作。

基于知识的代理的架构

Knowledge-Based Agent in Artificial intelligence

上图表示了一个基于知识的代理的通用架构。基于知识的代理(KBA)通过感知环境来接收来自环境的输入。输入由代理的推理引擎接收,该引擎还与知识库通信,以根据知识库中存储的知识进行决策。KBA的学习元素通过学习新知识来定期更新知识库。

知识库:知识库是基于知识的代理的核心组件,也称为 KB。它是一系列“句子”(这里的“句子”是一个技术术语,与英语中的句子不同)。这些句子用一种称为知识表示语言的语言来表达。KBA 的知识库存储关于世界的关于事实的信息。

为什么要使用知识库?

代理需要知识库来更新知识,以便代理能够从经验中学习并根据知识采取行动。

推理系统

推理是指从旧的句子推导出新的句子。推理系统允许我们将新句子添加到知识库中。句子是关于世界的命题。推理系统将逻辑规则应用于知识库以推导出新信息。

推理系统生成新事实,以便代理可以更新知识库。推理系统主要遵循两个规则,它们是:

  • 正向推理
  • 反向推理

KBA 执行的操作

为了表现出智能行为,KBA 执行以下三个操作:

  1. TELL:此操作将代理从环境中感知到的信息告知知识库。
  2. ASK:此操作询问知识库应该执行什么动作。
  3. Perform:它执行所选的动作。

一个通用的基于知识的代理

以下是一个通用的基于知识的代理程序的结构大纲:

基于知识的代理以感知作为输入,并返回动作作为输出。该代理维护知识库 KB,最初具有一些关于现实世界的背景知识。它还有一个计数器用于指示整个过程的时间,该计数器初始化为零。

每次调用该函数时,它都会执行三个操作:

  • 首先,它将感知到的内容 TELL 给知识库。
  • 其次,它 ASK 知识库应该采取什么行动。
  • 第三,代理程序 TELL 知识库选择了哪个动作。

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

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

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

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

基于知识的代理可以从以下几个级别进行查看:

1. 知识级别

知识级别是基于知识的代理的第一个级别,在这个级别,我们需要指定代理知道什么,以及代理的目标是什么。通过这些规范,我们可以确定其行为。例如,假设一个自动出租车代理需要从 A 点前往 B 点,并且它知道从 A 到 B 的路线,这就是知识级别。

2. 逻辑级别

在这个级别,我们理解知识的知识表示是如何存储的。在这个级别,句子被编码成不同的逻辑。在逻辑级别,发生知识到逻辑句子的编码。在逻辑级别,我们可以预期自动出租车代理能够到达目的地 B。

3. 实现级别

这是逻辑和知识的物理表示。在实现级别,代理根据知识级别和逻辑级别执行动作。在这个级别,自动出租车代理实际实现其知识和逻辑,以便能够到达目的地。

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

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

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

然而,在现实世界中,一个成功的代理可以通过结合声明式方法和程序式方法来构建,并且声明式知识通常可以被编译成更高效的程序代码。