首页 > 解决方案 > 使用另一个代理的经验如何影响深度强化学习中的学习效果

问题描述

我正在做一个项目,我有多个软演员-评论家子代理在使用共享经验的环境中同时学习。每个子代理使用自己的策略选择一个动作,整个代理将这些组合成一个动作选择,作为动作提交。环境为每个代理的此操作提供单独的奖励。然后每个代理将这个 (state, action, next_state, reward, done) 元组添加到它的重播缓冲区,稍后用于更新它的策略。

为了展示一个最小的例子,我做了类似的事情:

    actions = [agent.select_action(state) for agent in agents]
    selected_action = policy(actions)
    next_state, rewards, done, info = env.step(selected_action)
    for agent in agents: 
       agent_reward = rewards[agent]
       agent.add_experience(state, selected_action, next_state, agent_reward, done)

为了更新每个代理,我使用随机重放缓冲区来选择数据:

    data = self.replay_buffer.sample_batch(self.batch_size)
    
    self.q_optimiser.zero_grad()
    loss_q, q_info = self.compute_loss_q(data)
    loss_q.backward()
    self.q_optimiser.step()

    self.pi_optimiser.zero_grad()
    loss_pi, pi_info = self.compute_loss_pi(data)
    loss_pi.backward()
    self.pi_optimiser.step()

我的问题是,使用代理的策略网络从未实际选择的体验是否会破坏该代理的学习?

我的直觉是,这样做可能会错误地改变网络中的权重,因为这些权重永远不会导致最终在回放缓冲区中看到的动作。如果是这样,有没有办法在不同的代理之间有效地分享经验?

任何帮助是极大的赞赏 :)

标签: deep-learningneural-networkpytorchreinforcement-learningmulti-agent

解决方案


推荐阅读