0

Pytorch は、actor-critic を使用して 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 と value は何を意味しますか? 彼らは、なぜ r - 値に等しい報酬でアクション空間で REINFORCE を実行するのでしょうか? また、r に一致するように値を設定しようとするのはなぜですか?

ご協力いただきありがとうございます!

4

1 に答える 1