第二章:智能Agent

本章讨论Agent的本质,Agent是否完美,环境的多样性,及由此带来的各种Agent分类。

1. Agnet和环境

Agent通过传感器感知环境并通过执行器对所处环境产生影响,不同Agent用的传感器也各不相同。我们用 「感知」 表示任何给定时刻Agent的感知输入,而 「感知序列」 是该Agent所接受的所有输入数据的历史记录,Agent依赖感知序列做出行动,可以说 Agent函数 描述了Agent行为,它将感知序列映射为行动序列。

2. 好的行为:理性的概念

「理性Agent」 是做事正确的Agent。但什么是“正确的”?

如果Agent做出的行动序列能将环境变成渴望的,那这个Agent性能良好。这里的渴望,通过 「性能度量」 表述,它对环境状态的任何给定序列进行评估。显然,没有一成不变的性能度量,具体问题具体分析才是关键。作为一般原则,最好根据实际在环境中希望得到的结果来设计性能度量,而不是根据Agent表现出的行为。

我们这样定义理性Agent:对于每个可能的感知序列,根据已知的感知序列提供的证据和Agent具有的先验知识,理性Agent应该选择能使其性能度量最大化的行动。

理性不等于完美,理性是使期望的性能最大化,而完美是使实际的性能最大化。理性的选择只依赖于已知的感知序列,而观察有助于最大化期望性能,信息收集是理性的重要部分。

理性Agent不仅要收集信息,还需要从这些信息中尽可能多的 「学习」。如果Agent依赖于设计人员的先验知识而不是它自身的感知信息,那它就缺乏自主性。理性Agent应当自主学习,以弥补不完整或不正确的先验知识。但实践中,我们并不要求Agent一开始就完全自主,给它些初始知识以及学习能力是合理的。

3. 环境的性质

有了理性的定义,差不多可以思考如何来构建理性Agent了。不过,首先必须考虑 「任务环境」。我们要规定性能度量、环境以及Agent的执行器和传感器,这些就是任务环境。根据这四个单词的首字母,我们称之为 PEAS 描述。

以自动驾驶汽车为例,首先,我要考虑我们所期望的性能度量是什么?油耗少?用时短?安全性高?其次,这车的行驶环境是什么?公路?乡间小道?雪地?它的执行器一般还是和人工驾驶一样,油门、刹车、发动机那些。但可能还需要一些语言模块与人交流。基本的传感器有哪些?摄像头、红外测距仪、速度表等。

任务环境的范围是很大的,我们可以对它们进行分类,这些维度在很大程度上不但决定了适当的Agent设计,也决定了实现Agent的主要技术群体的实用性。这里的定义是非正式的:

  • 完全可观察的与部分可观察的:Agent传感器在任何时间点上都能获取环境的完整状态,那任务环境就是完全可观察的,否则为部分可观察。
  • 单Agent与多Agent:这个不多说了。主要注意:AgentA是否要把另一个对象B当作Agent对待,就要看B的行为是否也致力于让AgentA的行为的性能度量值最大化。
  • 确定的与随机的:如果环境的下一个状态完全取决于当前状态和Agent执行的动作,那环境就是确定的,否则就是随机的。
  • 片段式的与延续式的:在片段式的任务环境中,Agent的经历被分成了一个个独立的原子片段。每个片段都不依赖以前的片段中采取的行动。而延续式环境中,当前决策会影响所有未来的决策。
  • 静态的与动态的:顾名思义了,但有种情况是环境不会变,而Agent的性能评价随时间变换,那这样的环境就是 半动态的
  • 离散的与连续的:环境的状态、时间的处理方式以及Agent的感知信息和行动,都有离散/连续之分。
  • 已知的与未知的:这种其实应该指Agent的知识状态,在已知环境中,所有的行为后果是给定的,如果是未知的则Agent需要学习如何工作以便更好决策。

人们会意识到,最难处理的情况就是部分可观察的、多Agent的、随机的、延续的、动态的、连续的和未知的环境。

4. Agent的结构

现在来讨论Agent内部是如何工作的。AI的任务是设计 「Agent程序」,它实现的是把感知信息映射到行动的Agent函数。而Agent函数要在 「体系结构」——某个具备物理传感器和执行器的计算装置 上运行,体系结构为程序提供感知信号,运行程序,并把计算结果送达执行器。


下面,我们概述4种基本的Agent程序,它们几乎涵盖了全部智能系统的基础原则:

  • 简单反射Agent

    简单反射Agent是最简单的Agent种类,这种Agent基于当前的感知选择行动,不关注感知历史。简单反射行为也可以用在复杂的环境中,比如自动驾驶的“红灯停,绿灯行”,这种是条件触发的建立好的行为的联接,我们称之为 「条件-行为规则」。简单反射Agent具有极好的简洁性,但智能有限。

  • 基于模型的反射Agent

    世界如何独立于Agent而发展?Agent自身的行为如何影响世界的信息?这种关于“世界如何运作”的知识,无论通过什么方式实现,我们都称之为世界模型。使用了这种模型的Agent就是「基于模型的Agent」。这种Agent会利用世界模型来更新内部状态的信息,这有助于处理部分可观测环境,比如自动驾驶的车辆变道,就需要跟踪记录世界模型中其他车辆的位置。

  • 基于目标的Agent

    只知道当前环境状态对决策而言并不够,Agent还需要目标信息来描述想要达到的状况,基于目标的行动选择需要 「搜索」「规划」。基于目标的Agent很灵活,因为支持它决策的知识被显示表示出来,并且可以修改。也就是说,可以只修改个别相关行为,就可以达成新的目标;如果是反射Agent就要重写很多条件-行动规则。

  • 基于效用的Agent

    要生成高品质的行为,我们还需要根据 「效用」,目标只能提供哪些行动是有效的、哪些是无效的;而效用则能衡量有效的行为中哪些更有效。「效用函数」 是性能度量的内在化,基于效用的Agent可以在选择的多个目标之间进行适当的折中,也可以在目标都无法完成时,根据成功率进行概率加权选出最有可能成功的目标去行动。


到目前为止,我们还没说明这些Agent程序是如何形成的,它们是由机器自己学习来的。我们将简要介绍学习Agent(这不是动宾短语,而是一个名词)的主要思想。

学习Agent可以被划分为4个概念上的组件:评判元件、学习元件、性能元件以及问题产生器

感知信息本身无法告诉Agent做得好还是差,所以需要评判元件根据固定的性能标准产生反馈,评价Agent做得如何并确定应该如何修改性能元件以做得更好。学习元件负责改进提高,而性能元件负责选择外部行动,学习元件的设计很大程度上依赖于性能元件的设计。学习Agent的最后一个组件是问题产生器,它负责行动建议,哪些行动?可以得到新的、有信息的经验的行动,它的任务就是建议探索性行动。

总之,智能Agent的学习可以被总结为改进Agent的每个组件,使得各组件与能得到的反馈信息更加和谐,从而改进Agent的总体性能。


这些组件到底是如何工作的?这里只展示一些基础内容(太多辣),讲讲在不同环境下,表示Agent组件的不同方法——原子、要素结构

  • 原子表示中,世界的每个状态是不可见的,它没有内部结构。
  • 要素化表示中,世界状态表示为变量或特征的集合,每个变量或特征都可能有值。
  • 结构化表示,在要素化表示的基础上,还描述了事物间的相互关联,就像数据结构中的图一样。

第二章:智能Agent的更多相关文章

  1. 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第二章:选择你的网络分析灵魂伴侣的最佳策略 在Web Analytics 2.0的新世界秩序中,您必须跳出"单一真理来 ...

  2. [A Top-Down Approach][第二章 应用层]

    [A Top-Down Approach][第二章 应用层] 标签(空格分隔): 未分类 网络应用是计算机网络存在的理由 首先从定义几个关键的应用层概念开始 应用程序所需要的网络服务,客户和服务器,进 ...

  3. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  4. 第二章 Android系统与嵌入式开发

    第二章 Android系统与嵌入式开发 第二章首先要先了解Android和嵌入式Lnux系统有什么区别和联系,嵌入式Linux系统是在嵌入式设备中运行Linux系统:Android系统是在嵌入式设备中 ...

  5. CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  6. 《Getting Started with WebRTC》第二章 WebRTC技术介绍

    <Getting Started with WebRTC>第二章 WebRTC技术介绍 本章作WebRTC的技术介绍,主要讲下面的概念:   .  怎样建立P2P的通信   .  有效的信 ...

  7. [ABP教程]第二章 图书列表页面

    Web应用程序开发教程 - 第二章: 图书列表页面 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以下技术开 ...

  8. HTTP权威指南:第二章

    URL概览 前面提到,URL资源是HTTP协议所使用的寻找资源位置的定位符.分为三个部分,主要的结构是: 方案://服务器/路径 这种结构使得网络上的每一个资源都只有唯一的命名方法,从而使得浏览器可以 ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  10. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

随机推荐

  1. 移动WEB开发之 -- flex布局

    flex布局原理 常见的父项属性 flex-direction设置主轴方向 justify-content 设置主轴上的子元素排列方式 flex-wrap属性 align-items属性 align- ...

  2. GitHub 创始人资助的开源浏览器「GitHub 热点速览」

    你是否注意到,现在主流的浏览器如 Chrome.Edge.Brave 和 Opera 都采用了谷歌的 Chromium 引擎?同时,谷歌每年不惜花费数十亿美元,确保其搜索引擎在 Safari 中的默认 ...

  3. RK3588开发笔记(四):基于定制的RK3588一体主板升级镜像

    前言   方案商定制的主板,加入了360°环视算法功能,涉及到了一些库的添加,重新制作了依赖库的镜像,镜像更新的原来的板子上.   定制的板子    升级接口type-c   设计接口是type-c, ...

  4. yolov5 筛选正样本流程 代码多图详解

    yolov5正样本筛选原理 正样本全称是anchor正样本,正样本所指的对象是anchor box,即先验框. 先验框:从YOLO v2开始吸收了Faster RCNN的优点,设置了一定数量的预选框, ...

  5. 解决方案 | 将时间转换为毫秒bat

    @echo off setlocal enabledelayedexpansion rem 输入的时间 set "time_input=00:07:07.1" rem 解析时间 f ...

  6. 关于Windows 10 LTSC 2019无法安装Edge的解决方案

    最近新换了Windows 10 LTSC 2019系统,使用体验干净且流畅,但是在更新Edge时遇到了问题:系统内装的是9x版本的Edge浏览器,并且提示更新错误,有system level方面的问题 ...

  7. [oeasy]python0133_变量名_标识符_identifier_id_locals

    变量名 回忆上次内容 上次讲了 什么是变量 变量变量 能变的量 就是变量   各种系统.游戏就是由变量所组成的 ​   添加图片注释,不超过 140 字(可选)   声明了变量 并且 定义了变量   ...

  8. oeasy教您玩转vim - 17 - # 向上向下

    向上向下 回忆上节课内容 和 f 相关的是跳到 向 前 跳到是 f 向 后 跳到是 F 和 t 相关的是贴靠 向 前 贴靠是 t 向 后 贴靠是 T 和 小写 相关的是 向前 向前 跳跃是 f 向前 ...

  9. 如何正确使用@Bulider与<T>返回数据

    @Data @ToString @Builder @AllArgsConstructor public class PageResult<T> implements Serializabl ...

  10. RPA美团外卖商家中心批量发送消息

    美团外卖商家中心批量发送消息,首先我们需要确定给谁发,发送什么内容 给谁发:可以传入美团用户名.美团订单号.美团将通过此条件进行搜索进入会话框 发送什么内容:批量发送信息给不同的用户,比如给不同的订单 ...