Reinforcement learning pytorch示例中actor-critic算法背后的解释?

Reinforcement learning pytorch示例中actor-critic算法背后的解释?,reinforcement-learning,pytorch,Reinforcement Learning,Pytorch,Pytorch提供了一个在OpenAI健身房环境中使用演员评论家扮演Cartpole的好例子 我对以下代码片段中的几个等式感到困惑: 在这种情况下,r和值是什么意思?为什么他们在行动空间上运行,而奖励等于r值?为什么他们要尝试设置值,使其与r匹配 谢谢你的帮助 首先,奖励a将与状态一起收集一段时间:导致奖励的操作 那么r值就是预期报酬和实际报酬之间的差值 该差异用于调整该状态下该操作的预期值 因此,如果处于“中间”状态,动作“跳跃”的预期奖励为10,而实际奖励仅为2,那么AI将被关闭-8(2

Pytorch提供了一个在OpenAI健身房环境中使用演员评论家扮演Cartpole的好例子

我对以下代码片段中的几个等式感到困惑:

在这种情况下,r和值是什么意思?为什么他们在行动空间上运行,而奖励等于r值?为什么他们要尝试设置值,使其与r匹配

谢谢你的帮助

  • 首先,奖励a将与状态一起收集一段时间:导致奖励的操作

  • 那么r值就是预期报酬和实际报酬之间的差值

  • 该差异用于调整该状态下该操作的预期值


因此,如果处于“中间”状态,动作“跳跃”的预期奖励为10,而实际奖励仅为2,那么AI将被关闭-8(2-10)。强化意味着“调整预期”。因此,如果我们将它们调整一半,我们将得到新的预期回报是10-(8*.5),或6。这意味着人工智能真的认为它会得到10分,但现在它信心不足,认为6分是更好的猜测。因此,如果AI的偏差不大,10-(2*.5)=9,它将调整较小的量

从你的问题来看,你似乎不知道演员批评的方法。我向你推荐萨顿和巴托有趣的一章:
saved_actions = model.saved_actions
value_loss = 0
rewards = []
for r in model.rewards[::-1]:
    R = r + args.gamma * R
    rewards.insert(0, R)
rewards = torch.Tensor(rewards)
rewards = (rewards - rewards.mean()) / (rewards.std() + np.finfo(np.float32).eps)
for (action, value), r in zip(saved_actions, rewards):
    action.reinforce(r - value.data.squeeze())
    value_loss += F.smooth_l1_loss(value, Variable(torch.Tensor([r])))
optimizer.zero_grad()
final_nodes = [value_loss] + list(map(lambda p: p.action, saved_actions))
gradients = [torch.ones(1)] + [None] * len(saved_actions)
autograd.backward(final_nodes, gradients)
optimizer.step()