[关闭]
@vourdalak 2018-10-11T06:31:44.000000Z 字数 3639 阅读 1167

智能Agent

CS171

前提

智能主要与理性行为相关。理想状态下,只能Agent要采取一个环境中最好的可能行为。追求尽可能好的行为表现是智能Agent的目标。

Agent和环境

Agent通过传感器感知外部环境,并通过执行器影响外部环境。
感知(Percept)表示任何给定时刻Agent的感知输入。这个感知输入的完整历史数据称为这个Agent到此时刻为止的感知序列(Percept Sequence)
Agent的行动依赖于到这个时刻为止的感知序列。感知序列->行动的关系被定义为这个Agent的Agent函数
Agent的感知序列是无穷的。因此,Agent函数只能通过Agent程序实现。
Agent函数是抽象的数学描述,Agent程序是具体实现Agent函数的方法。

如何判断一个行为的好坏?————理性的概念

性能度量

行为的好坏需要一个具体的,量化的评价,才能达成理性的目标。我们渴望Agent的行动可以导致环境向一个渴望的方向变化。这个“渴望“需要通过性能度量(Performance measure)表述以来评估行为。为了达到客观理性,性能度量基于对环境状态的变化而不是对Agent自身的状态变化。合适的性能度量应该基于想要达成的环境状态目标制定。

理性的判断

性能度量只是理性判断的一个方面。理性的判断基于4个方面:

  1. 定义成功标准的性能度量
  2. Agent对环境的先验知识
  3. Agent可以完成的行动
  4. Agent截止到此时的感知序列

综上我们得出理性Agent的定义:

理性Agent
对每一个可能的感知序列,根据已知的感知序列提供的证据和Agent具有的先验知识,理性Agent应该选择使其性能度量最大化行动

全知与学习

全知(Omniscience)和理性(Raitionality)的区别在于:全知实际效能的最大化,理性期望效能的最大化。理性的选择只依赖到当前的感知序列,所以理性不等于全知。
但是最大化期望性能的行为是合理的,这种为了修改为来感知信息而采取的行动称为信息收集
信息收集后,要求Agent能从信息中尽可能多地学习以来提高自己行为的效率。

自主性

Agent过度依赖设计时输入的先验知识而不是自身的感知信息的情况称为Agent缺乏自主性(Autonomous)。理性Agent应该是自主的,即具有学习和更新知识的能力。给Agent提供初始知识是合理的,关于环境的经验积累足后Agent可以独立于先验知识而有效地行动。

环境的性质

任务环境是理性Agent要求解的基本问题,所以任务环境需要规范化描述。

PEAS描述

对任务环境的基本描述包括4个部分:性能度量(Performance measure)环境(Environment)执行器(Actuators)传感器(Sensors)
首字母缩写为PEAS

任务环境的性质

任务环境范围很大,为了方便经常被根据较少的(7个)维度对任务环境进行分类。

完全可观察/部分可观察 (Fully observable/partially observable)

如果Agent的传感器在每个时间点都能获得完整的环境状态,即任务环境是完全可观察的。
如果Agent的传感器在每个时间点都能获得所有与行动决策相关的环境状态,即任务环境是有效完全可观察的。
完全可观察的环境很方便,因为Agent不需要维护内部状态来记录外部世界,它随时都能全局考虑并做出决策。

单Agent/多Agent (Single Agents/Multi Agents)

先要确定的问题是,怎样算是一个Agent?
B的行为是否寻求于改变A的行为的性能度量值
是,A处于多Agent环境中。
否,B不算Agent。
B的行为是否寻求于最大化A的行为的性能度量值
是,合作的多Agent环境。
否,竞争的多Agent环境,
也可以是又合作又竞争的。

确定的/随机的 (Deterministic/Stochastic)

如果环境的下一个状态完全取决于当前状态Agent执行的动作,没有突发事件,那么该环境是确定的
即使环境完全可观察也可以是随机的,需要与"观察"维度区别开。

片段的/延续的 (Episodic/Sequential)

如果Agent的经历被分成一个个原子(不可分的单位)片段,在每个片段中感知信息并完成单个行动,下个片段不依赖于前一个片段中采取的行动,那么这个Agent的环境是片段性的。片段性环境中无需记忆。
延续环境中,当前决策会影响所有未来的决策

静态的/动态的/半动态 (Static/Dynamic/Semi)

如果环境在Agent计算时会发生变化,那么该Agent的环境是动态的。否则是静态的。静态更好处理。
如果Agent的性能评价随时间变化,那么这样环境称为半动态的。

离散的/连续的 (Discrete/Continuous)

状态如果能够有限地形容出来即称为离散的。

已知的/未知的

指Agent对环境的知识状态,如果所有行动的后果是给定的已知环境。如果Agent需要学习环境是如何工作的以来做出更好决策,那么环境是未知的。

Agent的结构

Agent=Architecture+程序
Architecture即为物理的,具有传感器和执行器的装置。

Agent程序

Agent程序负责实现Agent函数。
输入:当前感知
输出:行动

然而Agent函数的参数为感知序列,所以Agent必须记住感知信息。感知存储在一个序列的数据结构中形成感知序列,根据Agent函数映射表寻找对应的行动。
事实上,Agent函数的映射表是极为庞大的,所以这只停留在理论层面,现实中Agent程序要设计寻找答案的算法来生成输出行动。

基本的Agent程序类型

以下4种几乎涵盖了全部的智能系统的基础原则。

简单反射Agent(Simple reflex)

最简单的Agent类型。只基于当前的感知来选择行动,不关注感知历史
简单反射型Agent具有极好的简洁性,智能也很有限。逻辑可以概括成“如果XXX,那么XXXXX”。类似动物的条件反射。这个简单的“感知->行动”联接称为条件-行为规则
简单反射行为可以在复杂环境中作为辅助,比如自动驾驶过程中“如果看到前车后灯亮就刹车”的功能部分。
因为过度简单,必须存在于完全可观察状态中以来规定所有行动的对应策略。如果处于部分可观察环境中,经常不可避免陷入死循环。

基于模型反射Agent(Model-based reflex)

需要记录历史感知序列,根据感知历史维持内部状态。并且Agent需要预设知道:1.世界是如何运行的,2.自己的行动会如何影响外界环境。这些知识被称为模型

基于目标的Agent(Goal-based)

仅仅知道当前环境状态不足以选择正确的决策,正确的决策取决于Agent的目标信息。目标信息描述想要达到的状况。基于目标的Agent会考虑未来做什么会使自己接近预期目标。一般需要搜索和规划的算法支持。
效率较低,但是很灵活,因为决策的制定方针被函数逻辑显式表达,很好修改。

基于效用的Agent(Utility-based)

性能度量量化了环境状态,所以一个行动是好还是坏可以用函数表示。效用函数是性能度量的内在化。
基于效用的Agent不止要完成目标,还尽力选择期望效用最大化的行动。它的行动取决于效用函数的定义。

学习Agent

学习Agent是图灵提出“建造会学习的机器,然后教育他们”。学习保证设计者不需要面面俱到,而且使得Agent可以在初始未知的环境中运转且进化的更优秀
学习Agent可以被划分为4个概念组件

  1. Critic:评判元件,性能度量的标准判定,反馈评价给学习元件并确定该如何修改性能元件提升效率。
  2. Learn element:学习元件,负责改进提高。
  3. Performance element: 性能元件,负责选择外部行动,类似之前四种的整个Agent。
  4. Problem generator:问题发生器,负责可以得到新的和有信息的经验的行动建议。
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注