第二章:智能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. 汇编语言--cpu的工作原理(寄存器)--手稿

    03

  2. Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file

    导读 晚上捣鼓数据库的时候,将mysql服务停止下,然后就死活启动不起来,这下可把我急坏了,自己数据库上有好多自己的个人项目,错误信息如下 ERROR! The server quit without ...

  3. C#皮肤美化

    关于Winform窗体美化,目前大致了解是有两种方式:第一种方式是重写Winform本身的控件,不过这需要非常熟悉控件的各个属性和事件并且要求具有很高的GDI绘图技术.第二种方式是借助第三方Winfo ...

  4. javaweb上传图片存到本地,并存储地址到数据库

    前端使用layui的图片上传,将文件base64编码,然后在后端使用转码类来操作base64编码,并保存图片到本地,继而获取文件地址,将文件地址保存到数据库中 1.使用layui的图片上传 infos ...

  5. Vue2 移动端 ui库 MintUI

    MintUI MintUI是饿了么团队开发的基于移动端的vue组件库.用于搭建移动端界面. http://mint-ui.github.io/docs/#/zh-cn2

  6. mysql Using join buffer (Block Nested Loop) join连接查询优化

    最近在优化链表查询的时候发现就算链接的表里面不到1w的数据链接查询也需要10多秒,这个速度简直不能忍受 通过EXPLAIN发现,extra中有数据是Using join buffer (Block N ...

  7. CSP2023

    坐标HA 背景 NOIP都打完了,CSP-S都没写游记,所以来补一篇(逃-- 正文 Day 7*-1 考前一周停课集训,被whk老师怒斥不务正业,悲QWQ. Day 0 周五得到年级第一zyx的鼓励, ...

  8. 渐变边框文字效果?CSS 轻松拿捏!

    今天,有个群友问了我这么一个问题,如果不想切图,是否有办法实现带渐变边框的字体效果?如下所示: 本文,就将尝试一下,在 CSS 中,我们可以如何尽可能的实现这种渐变边框字体效果. 元素叠加 首先,比较 ...

  9. windows terminal 添加git bash

    打开windows terminal点击设置 修改文件 找到profiles-->list添加一个节点 { "commandline": "C:\\Program ...

  10. 【JSON】JavaScript Object Notation JS对象表示规则

    什么是 JSON? JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的文本格式 ...