我读过一个简单的反射代理不会在很多环境中理性地行动。例如,一个简单的反射代理在驾驶汽车时无法理性行事,因为它需要先前的感知才能做出正确的决定。
我不会说对先前感知的需要是简单的反射代理不理性行事的原因。我想说简单反射代理的更严重的问题是它们不执行长期计划。我认为这是导致他们并不总是理性行事的主要问题,这也与您提供的理性定义一致。基于反射的代理通常不涉及长期计划,这就是为什么它实际上并不经常根据它所拥有的知识做得最好。
关于合理性定义的另一个问题:国际象棋引擎是合理的,因为它在允许使用的时间内选择最佳移动,还是不合理,因为它实际上并没有(总是)找到最佳解决方案(需要更多时间这样做)?
像极小极大这样的算法在其“最纯粹”的公式中(对搜索深度没有限制)对于象棋这样的游戏来说是合理的,因为它会以最佳方式下棋。但是,这在实践中是不可行的,运行时间太长。在实践中,我们将运行具有搜索深度限制的算法,以确保它们停止思考并在合理的时间内选择动作。这些不一定是理性的。这又回到了周公在他的回答中描述的有限理性。
但是,如果我们尝试用“在允许使用的时间内选择最佳移动”的方式来谈论这个问题,这个故事就不是很清楚了,因为在一定的时间内,什么是可能的或不可能的,很大程度上取决于因素如:
- 我们选择实现的算法
- 我们硬件的速度
- 执行效率/使用的编程语言
- 等等。
例如,假设我可以说我实现了一个算法,该算法需要一个预先计算好的最优解的数据库,而该算法只是在数据库中查找解并立即执行最优动作。即使给定非常有限的时间,这样的算法也将能够真正是理性的。在实践中很难实现,因为我们一开始就很难构建这样的数据库,但算法本身是明确定义的。所以,你不能在你对理性的定义中真正包含“考虑到允许使用的时间”之类的东西。