在为局部状态分配效用时难以指定长期视角

我目前正在阅读Wiley和Woolridge的《多代理系统导论》,希望有人能帮我澄清以下内容。作者在谈到效用函数时提到:

效用是一个数值,表示状态的“好坏”:效用越高,状态越好。

代理的任务是实现最大化效用的状态 – 我们不向代理指定如何实现这一点。在这种方法中,任务规格将简单地是一个函数

u:E -> R 

它将每个环境状态与一个实数值相关联。

有了这样的性能度量,我们就可以用几种不同的方式来定义代理在某个特定环境中的整体效用。一种(悲观的)方式是将代理的效用定义为代理可能遇到的最差状态的效用;另一种方式可能是将整体效用定义为代理遇到的所有状态的平均效用。没有对错之分:度量取决于你希望代理执行的任务类型。

这种方法的主要缺点是它为局部状态分配效用;在为单个状态分配效用时,难以指定一个长期视角。

我对这个缺点和局部状态的具体含义感到困惑。有人能解释一下吗?


回答:

我将在这里展示一个例子来解释这个概念。希望对你有帮助。有关详细信息,请参阅幻灯片

问题:

这是一个经典问题,称为Tile World(瓷砖世界)。

  • 二维网格世界,其中有代理、瓷砖、障碍物和洞穴。
  • 代理可以向四个方向移动(上、下、左、右),如果它位于瓷砖旁边,它可以将瓷砖推向相应的方向。
  • 代理需要用瓷砖填满洞穴。
  • 目标是用瓷砖填满所有洞穴。

enter image description here

环境状态

环境的状态可以使用以下变量来描述:

  • 代理的当前位置 (a_x, a_y)
  • 四个瓷砖的当前位置 (t1_x, t1_y), (t2_x, t2_y), (t3_x, t3_y), (t4_x, t4_y)

状态转移

假设在当前状态下,如果代理将下方的瓷砖向下推,系统状态将转移到下一个状态,在这个状态中,除了代理的当前位置和被推动的瓷砖的位置外,其他变量保持不变。

效用函数

我们的效用函数可以定义为填满的洞穴百分比,即:

            已填满的洞穴数   u =  -------------------------            总洞穴数 

显然:

  • 如果代理填满所有洞穴,效用 = 1
  • 如果代理填满零个洞穴,效用 = 0

关联效用函数

现在看看下面的两个状态。

enter image description here enter image description here

很容易看出:

  • 两个状态的效用值相同,为 1/3(因为1个洞穴中的3个被填满)
  • 左侧(状态 s1)是一个位置,在这个位置你无法将所有瓷砖移动到洞穴中
  • 右侧(状态 s2)是一个位置,在这个位置你有机会将剩余的两个瓷砖移动到洞穴中。

因此,得出的结论是:

  • 如果你只将效用函数关联到局部状态,例如 u(s1)u(s2),你实际上无法在效用方面区分它们。 u(s1)=u(s2)=1/3

  • 你需要对状态有一个全局或长期的视角,这可以通过运行来表示,运行是一系列交错的环境状态和代理采取的行动的序列。

  • 你可以不为单个状态分配效用,而是为运行分配效用。这种方法本质上采取了长期视角。

    u: run -> 实数值

  • 在这种设置下,代理的最佳策略是最大化期望效用,这并不意味着它会是最好的,但平均来说我们可以期望它表现最佳。

    期望效用 = 求和( u(r) x Prob(r) )

请参考你提到的书或相应的幻灯片了解更多详情。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注