environments

来源:互联网 发布:matlab svd 算法 编辑:程序博客网 时间:2024/05/21 18:32

了解了 rational 之后,我们就可以设计 agent 了。
设计一个 agent 之前,我们要先指定好 4大项 PEAS (Performance, Environment, Actuators, Sensors)。
比如一个自动驾驶出租车的 agent,我们的 PEAS 是这样的:

这里写图片描述

  • Performance 的衡量包括:能够到达正确的目的地、最小化油耗和磨损、最小化时间或成本,最小化违章和对其他司机的干扰、最大化安全和对乘客的舒适度、最大化利润。很显然,这些目标是有冲突的,所以需要权衡。
  • Environment:各种路况,从农村小路到城市道路再到12车道高速,路上会有行人、动物,警车,路障,泥水,路陷。还要与潜在的和现有的乘客交互。另外还有雨雪天气,以及左舵右舵的可能性。显然,环境限制的越严格,则越简单。
  • Actuators:加速,转向,刹车,与乘客聊天(语言识别和发音),或者与其他车辆交流(打喇叭)。
  • Sensors:摄像头看路,红外或声纳判断与他车或障碍物的距离,计速器防止超速罚单以及弯道减速,探测车部的引擎表油表电表,GPS导航,键盘或麦克风让用户输入目的地。

下面是环境的各种属性:

Fully observable vs. partially observable vs unobservable:当 agent 可以感知所有环境时我们称这为完全可见。而有些 Sensors 可能不准确或者不可用时,我们称之为部分可见,当所有sensor都不可用时,我们称之为 完全不可见。

Single agent vs. multiagent:比如,自己解题的 agent 是 Single agent 环境,而两个下象棋的 agent 是 multiagent 环境,在象棋的两个对手agent中,他们是 竞争 的环境,而开车的多个 agent 则是 合作 的环境,在竞争环境中,随机行为是合理的,因为可以避免可预测性的陷阱(pitfalls of predictability)。

Deterministic vs. stochastic:当环境的下一个状态是由当前的状态以及 agent 要执行的 action 决定的,我们说它是 Deterministic,否则,说它是 stochastic。在一个“完全可见的”,且“Deterministic”环境中,agent 不需要担心不确定的东西。比如在游戏中,agent 是 Deterministic,即使它不能预测其他玩家的行动。而在现实中,形势太复杂,我们必须得看作是 stochastic,因为我们不可能知道所有不可见的因素。,如果一个环境不是完全可见的,或者不是 确定性的,我们说它是 uncertain。 “stochastic”一般来说意味着后果的不确定性在概率上是可以量化的。nondeterministic的环境是指 action 以它们可能的后果为特点,但是没有概率属性。nondeterministic 的环境通常用于描述衡量 performace 时 agent 达到 action 的所有可能的后果。

Episodic(偶发的) vs. sequential(串行的,与parallel相反):在偶发的环境中,agent 的经验被划分成原子事件,在每个事件中,agent 接收到感知,而后执行一个单独的 action,关键的是,下一个事件不依赖于上一个事件的 action。很多类别的任务都是偶发的。比如一个 agent 的决定是要找出组装流水线上有问题的部件,而不考虑前一个部件,也不影响下一个部件。在连续的环境中,当前的决定可能影响所有未来的决定,比如下象棋时的步骤决定。偶发的要简单的多,因为不需要考虑之前。

Static vs. dynamic:如果一个环境会在 agent 正在考虑时变化,我们称之为 动态的,否则是 静态的。静态的环境很容易处理,因为 agent 做决定时不需要持续观察整个世界,也不需要考虑时间的推移。而动态的环境会持续询问 agent 想要做什么,如果此时还没有决定,则认为决定什么都不做。如果环境不随着时间变化,但是agent 的 performance(目标) 随着时间变化,我们说它是 semidynamic。自动驾驶的agent是动态的,因为其他车和自己都一直在移动,而驾驶算法决定下一步要做什么。限时的象棋agent是半自动的。而不限时的解题agent是静态的。

Discrete(离散的) vs. continuous(连续的):离散/连续 的区别适用于环境的状态、处理时间的方式、以及agent 的感知和行动。比如,象棋的环境有一个有限数量的不同状态,象棋还有一个离散的感知和行动。自动驾驶是一个“连续状态”、“连续时间”的问题:车的速度和位置的值的变化是平滑的,而驾驶行动也是连续的,比如转向多少度。

Known vs. unknown:严格来说,这个区别不适用于环境本身,而用于 agent 的关于环境的“物理定律”的知识的状态。在已知的环境中,所有 action 的后果(或者随机环境下后果的概率)都给出了。显然,如果环境是未知的,agent 需要学习如何制定好的决策。注意 Known 与 unknown 的区别与 可见/部分可见 是不同的,因为已知的环境也可能是部分可见的,比如纸牌游戏,agent 知道规则,但是看不见下一张是什么牌。而未知的环境可以是完全可见的,新的电视游戏中,屏幕上显示整个游戏但是不知道按下按钮会发生什么。

所以,最麻烦的就是 partially observable, multiagent, stochastic, sequential, dynamic, continuous, 以及 unknown,自动驾驶全属于这些情况。

0 0
原创粉丝点击