所以我很难弄清楚我想如何在我的深度 Q 学习问题中表示我的环境状态。
前提:有一个 2D 网格空间,代理需要访问其中的所有单元格(因为它正在搜索空间),一旦访问了一个单元格,它就被认为是“已搜索”,因此不需要再次访问。
首先:我想好,如果环境对代理的状态表示只是 8 个相邻单元格及其搜索/未搜索状态会怎样。在这种情况下,产生的动作将是移动到相邻单元之一。这里我们有 2^8 种不同的可能状态,然后是 Q(s,a) 函数的 8 个动作。
由于我使用 DQN 结构来解决问题,因此 Q 函数将由具有 8 个输入(相邻单元的状态)和 8 个输出(动作)的神经网络来近似。显然,奖励函数会很简单,因为它会为移动到尚未搜索的单元格产生高奖励,否则会产生低奖励。
然而,当搜索到所有相邻单元格时,这会带来一个明显的问题。代理会随机移动,并可能远离需要搜索的单元格。这对我的目的不利。
第二步:我想如果我想解决这个问题,我需要将有关整个状态空间的信息合并到我的 Q 函数中。这意味着代理知道所有单元格的状态,并且具有将代理带到该单元格的基本上是“路点”的操作。
这将使我对 Q 函数的输入和输出大很多,因为我有一个非常大的状态空间。我还没有具体的尺寸,但它很容易达到 10,000(100x100 网格)或更大。显然,我的奖励功能需要更多地奖励代理,因为它涉及较少的运动。
此外,我的问题可以在模拟中制定以训练 Q 函数,因此我不担心由于物理限制而导致的训练时间。
所以基本上我的问题是这样的:
这个 Q 函数还能用合理大小的神经网络来近似吗?是的,我有很多处理能力可供使用(对不起,我知道这一切都非常模糊),但我宁愿不要夸大其词。
tldr:我有深度 Q 学习问题,我认为我需要一个大的状态动作空间,并且想知道它是否太大而无法被神经网络合理地逼近。
编辑:正如@Constantinos 所指出的,我并没有很好地定义我的问题,所以下面有更多的假设和定义。
状态空间:
- 网格本身并不完全是状态空间,网格中的每个单元格都有“已搜索”或“未搜索”状态,因此我的状态空间可以采用的唯一状态总数实际上是 2^10,000 (假设 100x100 网格)。
- 此外,状态空间还包含有关代理位置的信息。
行动空间:
- 在任何给定位置,代理可以移动到网格上的任何其他位置。因此,动作空间只是可用的 10,000 个动作。
奖励功能:
- 选择将代理带到未搜索位置的动作的积极奖励。
- 选择将代理带到远处位置(以限制移动)的动作的负奖励。
- 选择将代理带入目标状态(即已搜索所有位置)的动作的高积极奖励。
Q-Network的I/O:
- 输入将是元素的向量(每个表示网格上的一个单元格,也可以看作是一个“图像特征”,其中图像是网格),取值为 0 或 1(未搜索或搜索)。
- 输入还必须包含一些关于代理位置的嵌入信息(我目前正在考虑将表示代理位置单元格的输入元素的值更改为 -1)。
- 网络的输出将是一个动作效用值向量,每个值代表移动到某个网格位置的效用。
最后,我应该注意,一旦代理访问某个位置,该位置现在被视为“已搜索”,并且环境状态会相应更新。