在 RL 代理的阶段性训练中,我应该总是从相同的初始状态开始,还是可以从几个有效的初始状态开始?
例如,在健身房环境中,我的env.reset()
函数应该始终将我重置为相同的开始状态,还是可以在每个训练集从不同状态开始?
在 RL 代理的阶段性训练中,我应该总是从相同的初始状态开始,还是可以从几个有效的初始状态开始?
例如,在健身房环境中,我的env.reset()
函数应该始终将我重置为相同的开始状态,还是可以在每个训练集从不同状态开始?
这取决于智能体试图学习的任务,当然也取决于环境约束。
在 Atari 游戏中,代理有一个预先确定的起点,因为这是游戏规则的一部分,所以我想说这足以证明每个模拟都从该起点开始。此外,你必须注意你正在使用的奖励函数的类型,例如(一个非常愚蠢的函数只是为了理解这个概念)如果你奖励代理取决于它与结局的接近程度点而不是距离起点有多远,代理最终可能仅因为它在终点附近重生而获得巨额奖励,这将是一个人工制品,而不是一个好的行动选择的公平奖励。选择随机起点没有真正意义的其他情况可能是对话系统,您知道对话以问候开始,
无论如何,环境允许随机选择代理的起始位置的情况。在这篇论文中例如,训练一个代理从迷宫中逃脱,以及在每次迭代中随机选择的代理的出口点和初始位置。这部分是由于研究原因,作者正在分析训练比简单的“空间记忆”更复杂的策略的可能性,但无论如何,从概念上讲,在这种情况下选择随机起点并没有错。同样,只要奖励函数设计得当,其他任务可能会跟随或逃离特定对象,即使在末端有一个随机的起始位置,代理无论如何都会学会在接近目标时更快地移动(朝向或靠近目标)相反的方向取决于任务)。实际上,在这种情况下,我认为随机的初始位置会有潜在的好处,
这是你的选择。
这甚至可能在训练和目标系统之间有所不同。称为“探索开始”的方法选择随机开始状态(如果您正在评估动作值的确定性策略,则选择动作)。
一般来说,如果您没有理由选择探索开始,您应该让您的env.reset()
函数将环境置于您希望代理在生产中遇到的开始状态分布中提取的状态。如果您使用函数逼近,这将有所帮助——这意味着训练数据的分布将更好地匹配生产中看到的分布,并且逼近器可能对此很敏感。
在某些情况下,例如策略梯度方法,您的成本函数将根据给定起始状态分布的预期回报来定义,因此至少在评估期间,您将需要一个env.reset()
与目标起始分布相匹配的函数。
训练和评估的起始状态有不同的分布仍然是可以的,并且作为训练的超参数可能值得研究。例如,如果训练开始状态分布可以选择难以随机获得的状态,它可以帮助代理找到任何高价值的状态。