在pytorch例子中演员批评算法背后的解释?

时间:2017-03-06 21:53:02

标签: reinforcement-learning pytorch

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

我在https://github.com/pytorch/examples/blob/master/reinforcement_learning/actor_critic.py#L67-L79找到的代码段中对他们的几个等式感到困惑:

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()

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

  • 首先收集一段时间的奖励以及状态:导致奖励的行动

  • 然后r - 值是预期奖励与实际

  • 之间的差异
  • 该差异用于从该州调整该行动的预期值

因此,如果处于“中间”状态,行动“跳跃”的预期奖励为10,实际奖励仅为2,则AI被关闭-8(2-10)。加强意味着“调整期望”。因此,如果我们将它们调整一半,我们新的预期奖励是10-(8 * .5),或者6.意味着AI真的认为它会得到10,但现在它不那么自信并认为6更好猜测。因此,如果AI没有太多关闭,10 - (2 * .5)= 9,它将调整较小的量。