智能体,即拥有智能的个体。无论是从定义还是从对其实际功能来分析,都它都离不开和人之间的比较与对比。本章主要介绍智能体的基本定义、理性的概念、环境的本质和智能体的结构。
何为智能体?
和人一样,智能体是能够感知外界环境并作出相应动作的个体。离开环境谈智能体是没有意义的,正如单个存在的人类(以及任意个体)。
何为理性?
理性,即为效能最大化,而这个最大化是有条件的,即智能体已知的信息和当前的环境。因此理性可以定义为:
对每一个可能的感知序列,根据已知的感知序列和智能体内建的先验知识,理性智能体应该选择期望能使其性能度量最大化的行动。
何为环境?
智能体的环境可以先狭义的定义为任务环境,称之为PEAS(Performance、Environment、Actors、Sensors)。在构建智能体时,首先要规定任务环境。而构建任务环境的法则是抽象与抛弃。两者实际相辅相成,是将任务环境的实质内容表示出来,例如构建一个求两地之间路线的智能体时,太阳耀斑爆发与否一般来说可以忽略掉。其实质为在一定的约束条件(实际路线)下,求两点的连通路线,最佳情况一般为最短路径,或者最短时间等。
任务环境的属性有:
- 完全观察与部分可观察
- 确定的与随机的
- 片段式的与延续的
- 静态的与动态的
- 离散的与连续的
- 单智能体与多智能体
智能体结构
智能体=智能体结构+智能体程序
智能体程序
典型的智能体程序有两种,最基本是表驱动型。智能体由一张表驱动,而该表中记录了智能体当前时间点以前接受到的所有感知序列与外界环境组成的输入和需要采取的行动(输出)。
function TABLE-DRIVEN-AGENT(percept) returns an action static percepts,输入序列,初始为空 table,动作列表,以感知序列为索引,初始完全指定 将percept加入到percepts中 action <--- LOOK-UP(percepts,table) return action
上述伪代码描述了表驱动程序如何运作:表中储存了所有序列和所对应的应该采取的行动。智能体通过将当前获得感知加入到感知序列中来在表中查询应该采取的行动。以上!
表驱动智能体最大的缺点:空间爆炸!!!不解释!
除去表驱动,基础的智能体程序还有简单反射型智能体。其特点是只根据当前的感知序列来采取行动而不管感知序列历史。这种假设很傻很天真,但效果还不错。它可以被看做是表驱动智能体程序的一阶马尔科夫版本。
智能体结构
使用简单反射模式可以构建出简单反射型智能体。
条件-行动规则实际就是简化的表。
对付可观测环境最好的方法就是让智能体追踪记录当时无法观测到的那部分世界。也就是说,智能体应该维持取决于感知历史的内部状态。更新内部状态需要两种知识:
- 世界独立于智能体将如何发展的信息
- 智能体行动将如何影响世界的信息
它的特点是条件-行动规则不再是通过当前感知查询,而是根据当前状态查询。如下伪代码所述。
function REFLEX-AGENT-WITH-STATE(percept) returns action static state,对当前世界的描述 rules,条件-动作规则的集合 action,最近的动作,初始为空 state <--- UPDATE-STATE(state,action,percept) rule <--- RULE-MATCH(state,rules) action <--- RULE-ACTION(rule) return action
有时知道世界的信息还不足以知道如何行动——如同人一样,没有目标———>基于目标的智能体。
为了提高效率,还有基于效用的智能体。
类人形态:学习型智能体。
重点总结:智能体=智能体结构+智能体程序、智能体程序、智能体结构。