deep-learning - 使用另一个代理的经验如何影响深度强化学习中的学习效果
问题描述
我正在做一个项目,我有多个软演员-评论家子代理在使用共享经验的环境中同时学习。每个子代理使用自己的策略选择一个动作,整个代理将这些组合成一个动作选择,作为动作提交。环境为每个代理的此操作提供单独的奖励。然后每个代理将这个 (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()
我的问题是,使用代理的策略网络从未实际选择的体验是否会破坏该代理的学习?
我的直觉是,这样做可能会错误地改变网络中的权重,因为这些权重永远不会导致最终在回放缓冲区中看到的动作。如果是这样,有没有办法在不同的代理之间有效地分享经验?
任何帮助是极大的赞赏 :)
解决方案
推荐阅读
- node.js - 使用 npm install --no-bin-links 安装 package.json 但在运行构建时遇到问题
- tensorflow - 在 build.gradle 依赖项中声明特定 tf-nightly 版本的语法?
- javascript - 将 prop-types 与 useEffect 一起使用,我不知道为什么 useEffect 无法识别 propTypes 的属性
- gherkin - 在 Gherkin 语法中,Example 和 Scenario 有什么区别?
- java - Android 使用 Jsoup 解析嵌套表
- javascript - JavaScript:如果文件代码未更改,则阻止下载 js
- sql - 在 Ibatis 中使用 IN 子句进行动态查询
- ios - “文件”应用程序未加载应用程序的沙箱
- javascript - 无法调用 onClick 函数 chart.js 中的任何函数
- r - 比较r中同一数据框中的列