【问题标题】:Reinforcement Learning Policy Gradient two different update method with reward?强化学习策略梯度两种不同的更新方法与奖励?
【发布时间】:2018-06-29 10:43:44
【问题描述】:

我正在查看 2 个不同的策略梯度示例,并且想知道为什么有 2 种不同的方法可以获得优势函数。 其中一个https://github.com/flyyufelix/VizDoom-Keras-RL/blob/master/reinforce.py 将优势直接设置为折扣奖励

advantages[i][self.actions[i]] = discounted_rewards[i]

并将其直接传递给分类交叉熵。

https://github.com/MorvanZhou/Reinforcement-learning-with-tensorflow/blob/master/contents/7_Policy_gradient_softmax/RL_brain.py 的另一个有

loss = tf.reduce_mean(neg_log_prob * self.tf_vt)

然后他试图将其最小化(tf_vt 只是 discounted_reward,以与上述相同的方式计算)。

第一种方法不应该是

advantages[i][self.actions[i]] = probability_from_softmax * discounted_rewards[i]

如果他们是一样的?还是我误解了这里手动计算负对数概率的区别?

【问题讨论】:

    标签: keras reinforcement-learning


    【解决方案1】:

    我认为它是一回事。他们只是用两种不同的方式写作。第一个定义计算优势函数,而第二个定义直接计算损失。优势函数仅给出与平均奖励(价值)相比,该特定奖励的优势程度。如果您提供的值为零,您将获得第一个定义。现在,需要计算损失。所以分类交叉熵给出了对数概率乘以优势。在第二个定义中,整个事情都是手动完成的。

    【讨论】:

    • 那么和DQN相比,loss是(TD target-Prediction)^2,那么REINFORCE的loss是多少呢?原始算法是 θ ← θ + α∇θ logπθ(st,at)vt 其次,由于它只是设置奖励所采取的行动,在交叉熵期间其他人会受到它的影响吗?例如为什么没有设置优势[i][self.actions[i]] = softmax[i],有点像 DQN 算法的设置?
    • 我会将 REINFORCE 与监督学习算法进行比较。损失是动作概率乘以奖励,类似于监督损失(由奖励加权)。对于第二个问题,损失是更新策略网络。因此,所有策略网络需要知道的是对于给定的状态,要采取的最佳行动是什么。我知道您将它与 DQN 混淆了,但在这种情况下,您直接从状态转到操作而不更新 Q 值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多