强化学习策略梯度有两种不同的奖励更新方法?

时间:2018-06-29 10:43:45

标签: keras reinforcement-learning

我查看了两个有关策略梯度的示例,并且想知道为什么有两种不同的方法来获取优势函数。 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]

如果要相同的话?还是我误解了此处手动计算负对数概率之间的区别?

1 个答案:

答案 0 :(得分:0)

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