【问题标题】:Can I combine Monte Carlo policy gradient algorithm with other policy gradient algorithms我可以将蒙特卡洛策略梯度算法与其他策略梯度算法结合起来吗
【发布时间】:2020-03-17 05:59:26
【问题描述】:

我知道 Monte Carlo REINFORCE 策略梯度算法的不同之处在于它通过计算每一步的折扣累积未来奖励来计算奖励值。

这里是计算每个时间步的折扣累积未来奖励的代码。

G = np.zeros_like(self.reward_memory, dtype=np.float64)
        for t in range(len(self.reward_memory)):
            G_sum = 0
            discount = 1
            for k in range(t, len(self.reward_memory)):
                G_sum += self.reward_memory[k] * discount
                discount *= self.gamma
            G[t] = G_sum

另一个提高准确性的例子是计算动作后的奖励,称为“reward to go”。 另一个例子是添加熵奖励。

是否可以在蒙特卡洛方法中添加熵奖金和奖励,或者其中之一。

在奖励计算之后,蒙特卡洛还采取了另一个步骤是对值进行归一化。

“在实践中,标准化这些也很重要。例如,假设我们为上述 100 个 Pong 游戏推出批次中的所有 20,000 个动作计算 [折扣累积奖励]。一个好主意是在我们将它们插入反向传播之前“标准化”这些回报(例如,减去均值,除以标准差)。通过这种方式,我们总是鼓励和阻止大约一半的已执行操作。从数学上讲,您还可以将这些技巧解释为控制策略梯度估计器方差的一种方式。

如果同时添加熵奖励或修改奖励,这是否会影响准确性?

来自研究 PDF https://arxiv.org/pdf/1506.02438.pdf

我正在研究策略梯度算法,我想知道如何改进这些算法。如果您能帮助我,我将不胜感激。

编辑:

我也想补充一下是否也可以添加优势功能

A(s,a) 是优势函数;假设我们还添加了奖励和熵奖金,是否可以将此添加到蒙特卡洛方法中?

【问题讨论】:

    标签: python deep-learning pytorch reinforcement-learning montecarlo


    【解决方案1】:

    你在这里混合了一些东西。

    蒙特卡罗方法是一种计算状态-动作对回报的方法:作为遵循当前策略 π 的状态-动作对 (s, a) 之后所有未来奖励的贴现总和。 (同样值得注意的是,REINFORCE 并不是一个特别好的 RL 算法,而且与 TD(λ) 等相比,蒙特卡洛对收益的估计具有相当高的方差。)

    另一方面,熵红利和优势函数是损失(用于训练演员的函数)的一部分,因此与返回计算无关。

    我建议您阅读Reinforcement Learning Book 以更深入地了解您在做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 2018-11-18
      • 2020-02-23
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      相关资源
      最近更新 更多