Pytorch는 OpenAI 체육관 환경에서 Cartpole을 배우기 위해 배우 평론가를 사용하는 좋은 예입니다. 내가 https://github.com/pytorch/examples/blob/master/reinforcement_learning/actor_critic.py#L67-L79에서 발견 된 코드에서의 방정식의 몇 가지에 대한 혼란 스러워요pytorch 예제의 배우 비평 알고리즘에 대한 설명?
:
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과 값은이 경우에 무엇을 의미합니까? 왜 그들은 r - value와 동일한 보상으로 REINFORCE를 행동 공간에서 운영합니까? 그리고 그들은 왜 r과 일치하도록 값을 설정하려합니까?
도움 주셔서 감사합니다.
질문에 따라 배우 - 비평가 방법을 알지 못하는 것 같습니다. Sutton과 Barto의 흥미로운 장을 제안합니다. https://webdocs.cs.ualberta.ca/~sutton/book/ebook/node66.html –