第二章:智能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. VSCode如何设置Vue前端的debug调试

    vscode在调试vue.代码时,如何进行debug? 1.安装Chrome Debug插件. 2.在launch.json中,将url修改成你前端项目的路径: 1 { 2 // Use Intell ...

  2. P2910

    #include<iostream> #include<utility> #include<vector> using namespace std; typedef ...

  3. nginx负载均衡session共享解决方案

    解决方案: 1.使用客户端的cookie作为存放登录信息的媒介 cookie是将用户登录信息存储在用户终端的数据载体,与session的最大区别就是,session是存储在服务器端的:所以这就很容易解 ...

  4. SQL Server 查询分析及优化方法

    一.影响速度的因素 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) I/O吞吐量小,形成了瓶颈效应 没有创建计算列导致查询不优化 内存不足 网络速度慢 查询出的数据量过大(可以采 ...

  5. Django--StreamingHttpResponse下载文件

    from django.shortcuts import render, HttpResponse from django.http import StreamingHttpResponse impo ...

  6. Django model 层之Models与Mysql数据库小结

    Django model 层之Models与Mysql数据库小结 by:授客 QQ:1033553122 测试环境: Python版本:python-3.4.0.amd64 下载地址:https:// ...

  7. mybatisplus实现一次多表联查+分页查询

    众所周知,mybatisplus非常好用,但是他不好用就不好用在不可以多表联查.在mybatisplusjoin中提供了联查的方法,那个参数我没看懂Orz 不过,历经千辛万苦,我通过xml终于写出来了 ...

  8. 【vue3】详解单向数据流,大家千万不用为了某某而某某了。

    总览 Vue3 的单向数据流 尽信官网,不如那啥. vue的版本一直在不断更新,内部实现方式也是不断的优化,官网也在不断更新. 既然一切皆在不停地发展,那么我们呢?等着官网更新还是有自己的思考? 我觉 ...

  9. 【Vue】Re15 Router 第二部分(缺省路由、动态路由)

    一.设置首页重定向: import Vue from 'vue'; import Router from 'vue-router'; import Home from "../compone ...

  10. github的域名解析IP的文件——最直观的效果是GitHub图片可以正常加载,网页也稳定了——github图片不显示问题

    该codebase提供了hosts文件: https://github.com/ineo6/hosts 主站: https://github.com/ineo6/hosts 镜像: https://g ...