通过 DQN 实现的策略梯度与价值函数

数据挖掘 强化学习 政策梯度
2022-02-01 23:04:07

在学习了 Q-learning、Sarsa 和 DQN 之后,我现在发现了一个术语“策略梯度”。

我有点不清楚它与上述方法有何不同。以下是我的理解,请指正:

  1. 从我第一次遇到 DQN 的那一刻起,我就一直认为 DQN 的输入向量只包含当前状态的特征。在 DQN 的输出层,我们有一个动作向量然后我们取得分最高的动作的索引一种并执行它。它使我们进入下一个状态s'.

  2. 计算误差(我们估计的分数有多不正确一种) 我们提供s'进入我们的DQN,然后发现它的最高动作类似于1。再次,它将在DQN的输出层

  3. 通过引导计算错误一种一种'. 除了所选动作的索引之外,“错误”向量的所有位置都为零一种


这实际上是“策略梯度”,而不是我最初认为的价值函数方法吗?

在这种情况下,价值方法是否会是一个 DQN:

[state_features; action_one_hot_encoded_vector] 串联作为输入,输出为单个值?

阅读此链接后,我得到了这个印象

DQN Policy Gradient 的基本思想是这么简单,还是我弄错了?


编辑:有一个关于政策毕业生的非常棒的讲座。不幸的是,该视频是故意不公开的,因此普通人无法真正了解它-但我是免费教育的,所以这里是: CS294-112 9/6/17

1个回答

DQN Policy Gradient 的基本思想是这么简单,还是我弄错了?

这是不正确的。正如您最初所想的那样,DQN 是一种价值函数方法。

您的困惑似乎源于 DQN 中可能的动作表示的两个选项。您可以估计单个(s,一种)发挥作用一种作为神经网络的输入,或者可以估计所有可能的(s,*)具有多个输出,每个输出一个一种. 但是,这是您如何设置神经网络的实现细节。它可能会改变最终系统的效率,但根本不会改变 RL 算法的性质。

策略梯度方法基于修改参数策略函数π(一种|,s,θ)和学习θ. 最基本的策略梯度算法是REINFORCE,它需要一个情节问题,并在每个情节之后更新 on-policy。

重要的是,您不能使用(s,一种)并在 Q-learning 中生成策略以创建策略梯度方法。这样做的主要障碍是有效的政策最大参数一种q^(s,一种,θ)是不可微分的θ,因此无法计算梯度并进行更新以改进策略。

一般来说,如果一个算法学习一个状态值(s)或行动价值(s,一种)然后用它来决定策略,然后它是基于价值的。如果它直接学习策略,那么它可能是一种策略梯度方法(在 RL 术语中它很可能是策略梯度,但您也可以使用例如遗传算法进行策略搜索)。

策略梯度方法还包括学习策略和相关值函数(通常是状态值)的 Actor-Critic 方法(s))。这是一种比 REINFORCE 更先进的算法,因为它可以应用于连续(非偶发)问题,并更新每一步的估计。一种流行的 Actor-Critic 方法是A3C