gpt4 book ai didi

python - GAE : Why does GAE perform worse than normalized return and advantages

转载 作者:行者123 更新时间:2023-12-05 07:26:03 29 4
gpt4 key购买 nike

我正在以 GAE 为优势实现 PPO。以下代码是我根据OpenAI的基线实现计算GAE和返回的方式。

advantages = np.zeros_like(rewards)
last_adv = 0
for i in reversed(range(len(rewards))):
delta = rewards[i] + nonterminals[i] * self._gamma * values[i+1] - values[i]
advantages[i] = last_adv = delta + nonterminals[i] * gamma * lam * last_adv
returns = advantages + values[:-1]
advantages = normalize(advantages) # normalize advantages

值得一提的是 valuesrewards 等其他数组多了一个元素,因此 values[-1] 可以被用作额外的下一个状态。然而,这种实现的表现比下面给出的简单归一化返回和优势要差得多

returns = rewards
next_return = 0
for i in reversed(range(len(rewards))):
returns[i] = rewards[i] + nonterminals[i] * gamma * next_return
next_return = returns[i]

# normalize returns and advantages
values = normalize(values[:-1], np.mean(returns), np.std(returns))
advantages = normalize(returns - values)
returns = normalize(returns)

在不改变任何其他东西的情况下,上述实现在gym 环境LunarLanderContinuous-v2 中不断地达到270+ 的平均分数。另一方面,GAE 实现的得分永远不会超过 100。请参见下图的示例,其中更好的一个是使用规范化实现运行的 enter image description here

我的实现有什么问题?

另外,这里是normalize

的代码
def normalize(x, mean=0., std=1., epsilon=1e-8):
x = (x - np.mean(x)) / (np.std(x) + epsilon)
x = x * std + mean

return x

最佳答案

您计算优势的代码似乎是正确的。 normalize 有什么作用?通常您标准化您的数据,这意味着您减去它的平均值并除以它的标准偏差。我问是因为在您的代码的第二部分中,您将返回的均值和标准差传递给函数 normalize,而在第一部分中您没有。

此外,为什么要在代码的第二部分使用 returns 规范化 values?我觉得很奇怪。

最后,如何训练 V 功能? (我假设 values 包含 V 值)。我发现学习如下

    for epoch in range(epochs_v):
v_values = ... # compute your values using V
a_values = ... # compute A as in your code
target_values = v_values + a_values # generalized Bellman operator
# optimize V on your dataset with minibatches and ADAM

比“一次性拟合”效果更好

    v_values = ... # compute your values using V
a_values = ... # compute A as in your code
target_values = v_values + a_values # generalized Bellman operator
# fit V to target_values

关于python - GAE : Why does GAE perform worse than normalized return and advantages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54536452/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com