要将 A2C 变为 A3C,您必须使其异步。据我了解,这样做的“正确”方法是使用策略和批评者的副本将工人线程化,然后将状态/动作/奖励元组返回到主线程,然后在主线程上执行梯度更新政策和批评,然后重复这个过程。
我理解为什么在分布式环境中复制是必要的,但如果我总是在本地运行它,那么我是否可以只对策略和评论家的全局变量执行更新,即避免复制的需要?如果更新的并发性得到正确处理,那可以吗?
要将 A2C 变为 A3C,您必须使其异步。据我了解,这样做的“正确”方法是使用策略和批评者的副本将工人线程化,然后将状态/动作/奖励元组返回到主线程,然后在主线程上执行梯度更新政策和批评,然后重复这个过程。
我理解为什么在分布式环境中复制是必要的,但如果我总是在本地运行它,那么我是否可以只对策略和评论家的全局变量执行更新,即避免复制的需要?如果更新的并发性得到正确处理,那可以吗?
您可能想查看与 Phizaz 的评论相关的这篇论文:Asynchronous Methods for Deep Reinforcement Learning(特别是搜索 Hogwild)。