2017-03-06 6 views
0

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과 일치하도록 값을 설정하려합니까?

도움 주셔서 감사합니다.

+0

질문에 따라 배우 - 비평가 방법을 알지 못하는 것 같습니다. Sutton과 Barto의 흥미로운 장을 제안합니다. https://webdocs.cs.ualberta.ca/~sutton/book/ebook/node66.html –

답변

1
  • 우선 보상은 상태에 따라, 시간에 대해 수집 :

  • 이 후, r 보상 결과 동작 -의 값이 예상 보상 실제

  • 간의 차이 그 차이는 상태에서 그 행동의 예상 값을 조정하는 데 사용됩니다.

상태 "중간"인 경우 예상되는 보상 fo r 행동 "jump"가 10이고 실제 보상이 단지 2 였을 때, AI는 -8 (2-10)만큼 벗어났습니다. 강화는 "기대치 조정"을 의미합니다. 따라서 우리가 반으로 조정하면 새로운 보상이 10- (8 * .5), 즉 6이됩니다. AI는 실제로 AI가 10을 얻으 리라고 생각했지만, 이제는 자신감이 떨어지고 6이 더 좋다고 생각합니다. 추측. 따라서 AI가 많이 벗어나지 않으면 10 - (2 * .5) = 9, 더 작은 양으로 조정됩니다.