【发布时间】: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