我正在 C++ 中实现一个 SARSA(lambda) 模型,以克服 DP 模型的一些限制(DP 模型所需的大量时间和空间),这有望减少计算时间(类似研究需要几个小时 atm ) 和更少的空间将允许为模型添加更多的肤色。
我们确实有明确的转移概率,它们确实有所作为。那么我们应该如何将它们整合到 SARSA 模型中呢?
简单地根据概率本身选择下一个状态?显然 SARSA 模型并不完全期望你使用概率——或者我可能读错了书。
PS-有没有办法知道算法是否正确实施?第一次与 SARSA 合作。
我正在 C++ 中实现一个 SARSA(lambda) 模型,以克服 DP 模型的一些限制(DP 模型所需的大量时间和空间),这有望减少计算时间(类似研究需要几个小时 atm ) 和更少的空间将允许为模型添加更多的肤色。
我们确实有明确的转移概率,它们确实有所作为。那么我们应该如何将它们整合到 SARSA 模型中呢?
简单地根据概率本身选择下一个状态?显然 SARSA 模型并不完全期望你使用概率——或者我可能读错了书。
PS-有没有办法知道算法是否正确实施?第一次与 SARSA 合作。
动态规划 (DP) 和强化学习 (RL) 之间的根本区别在于,前者假设环境的动态是已知的(即模型),而后者可以直接从过程中获得的数据中学习,形式为一组样本、一组过程轨迹或单个轨迹。由于这个特性,当模型难以构建或构建成本高昂时,RL 方法非常有用。但是,应该注意的是,这两种方法共享相同的工作原理(在Sutton 的书中称为 Generalized Policy Iteration )。
鉴于它们相似,两种方法也有一些局限性,即维度灾难。来自Busoniu 的书(第 3 章是免费的,可能对您的目的有用):
DP 和 RL 领域的一个核心挑战是,在它们的原始形式(即表格形式)中,DP 和 RL 算法不能用于解决一般问题。它们只能在状态和动作空间由有限数量的离散元素组成时实现,因为(除其他原因外)它们需要价值函数或策略的精确表示,这对于具有无限数量元素的状态空间通常是不可能的(或者当状态数量非常多时成本太高)。
即使状态和动作采用有限多个值,表示值函数和策略的成本也会随着状态变量(以及 Q 函数的动作变量)的数量呈指数增长。这个问题被称为维度灾难,当存在许多状态和动作变量时,经典的 DP 和 RL 算法变得不切实际。为了解决这些问题,必须使用近似表示价值函数和/或策略的经典算法版本。由于大多数实际感兴趣的问题都具有大的或连续的状态和动作空间,因此近似在 DP 和 RL 中是必不可少的。
在您的情况下,您应该使用某种函数逼近似乎很清楚。但是,鉴于您知道转移概率矩阵,您可以选择基于 DP 或 RL 的方法。在 RL 的情况下,转换仅用于计算给定动作的下一个状态。
使用 DP 还是 RL 哪个更好?实际上我不知道答案,最佳方法可能取决于您的具体问题。直观地说,以有计划的方式 (DP) 对一组状态进行采样似乎更安全,但也许您的状态空间的很大一部分与找到最佳策略无关。在这种情况下,对一组轨迹 (RL) 进行采样可能在计算上更有效。无论如何,如果这两种方法都应用得当,应该会得到类似的解决方案。
注意:当采用函数逼近时,收敛特性更脆弱,在迭代过程中发散并不罕见,特别是当逼近器是非线性的(例如人工神经网络)结合 RL 时。
如果您可以访问转换概率,我建议不要使用基于 Q 值的方法。这将需要额外的抽样以提取您已有的信息。
情况可能并非总是如此,但如果没有其他信息,我会说这modified policy iteration
是更适合您的问题的方法。