为基于模型的动态编程算法保持这种分类法的完整性,我认为值迭代是一种 Actor only 方法,而策略迭代是一种 Actor-Critic 方法。然而,在提到策略迭代时,没有多少人会讨论 Actor-Critic 一词。怎么来的?
策略迭代和价值迭代都是基于价值的方法。策略迭代中的策略要么是任意的,要么是从值表派生的。它没有单独建模。
要算作一个参与者,策略函数需要直接建模为状态的参数函数,而不是通过价值评估间接建模。您不能使用策略梯度方法来调整 Actor 的策略函数,除非可以根据控制状态和动作之间关系的参数导出策略函数的梯度。一个 Actor 策略可能被记为π( a | s , θ )和参数θ是什么使学习改进成为可能。
策略迭代通常会根据当前价值估计生成明确的策略。这不是可以直接操纵的表示,而是测量值的结果,并且没有可以学习的参数。因此,在策略迭代中看到的策略不能用作 Actor-Critic 或相关方法中的参与者。
另一种表述方式是,DP 中的策略和价值函数不够独立,不能被视为演员/批评者对。相反,它们都是相同度量的视图,价值函数更接近原始度量,而策略是价值函数到策略空间的映射。
另外,我不熟悉任何基于模型/动态编程的方法,比如仅演员方法?这些存在吗?如果不是,是什么阻止了这种情况的发生?
基于模型的动态规划与 Q-learning 或 SARSA 等无模型方法的主要区别在于,动态规划方法直接使用全分布模型(可以表示为p(r,s′|s,a)) 来计算预期的自举回报。
原则上没有什么可以阻止您将以这种方式计算的预期回报替换为 REINFORCE 或 Actor-Critic 方法。但是,这样做可能在计算上很困难——例如,当动作空间很大时,通常会选择这些方法。
使用基于模型的期望的基本强化将特别困难,因为您需要计算每个起始状态的所有可能轨迹的期望值 - 如果您要将所有可能结果的树扩展到该程度,那么简单的树搜索算法将性能更好,然后该算法解决为一次性计划穷举树搜索。
Actor-Critic 对 Critic 使用动态编程方法应该是可行的,我希望您可以找到在某些情况下执行此操作的示例。它可能适用于某些纸牌或棋盘游戏,如果组合的动作空间和状态空间不是太大 - 它的行为有点像使用预期的 SARSA 作为评论家组件,除了也在状态转换动态上运行预期(而预期SARSA 只是将期望置于政策之上)。你也可以改变它的深度,在理论上以额外的计算为代价获得更好的估计(如果有很大的分支因子,可能会增加很多额外的计算)