TF代理的`policy`和`collect_policy`有什么区别?

时间:2020-04-24 07:47:50

标签: tensorflow artificial-intelligence reinforcement-learning policy agent

我正在看tf-agents,以学习强化学习。我正在关注此tutorial。培训和评估(collect_policy)使用的政策不同,称为policy

本教程指出存在差异,但是在IMO中,由于没有描述功能上的差异,因此没有说明为什么要采用两种策略。

代理商包含两项政策:

agent.policy-用于评估和部署的主要策略。

agent.collect_policy-用于数据收集的第二个策略。

我看过source code of the agent。它说

policy:tf_policy.Base的一个实例,代表代理程序的当前策略。

collect_policy:tf_policy.Base的一个实例,代表代理程序的当前数据收集策略(用于设置self.step_spec)。

但是在源文件的任何地方都看不到self.step_spec。我发现的下一个最接近的事物是time_step_spec。但这是TFAgent类的第一个ctor参数,因此通过collect_policy进行设置是没有意义的。

所以我唯一能想到的就是:将其进行测试。因此,我使用policy而非collect_policy进行训练。而且,代理程序仍能在环境中达到最高分数。

那两个政策之间的功能区别是什么?

1 个答案:

答案 0 :(得分:2)

有些强化学习算法(例如Q学习)使用策略在环境中表现(或与环境互动)以收集经验,这与他们尝试学习的策略不同(有时称为策略) 目标政策)。这些算法称为 off-policy 算法。非策略外的算法称为 on-policy (即行为策略与目标策略相同)。策略上的一个示例是SARSA。这就是为什么我们在TF-Agent中同时拥有policycollect_policy的原因,即,通常,行为策略可能与目标策略不同(尽管并非总是如此)。

为什么会这样呢?因为在学习和与环境互动期间,您需要探索环境(即采取随机行动),而一旦您了解了接近最佳的策略,您可能就不再需要探索,而可以采取接近最佳的行动了(我说的是接近最优而不是最优,因为您可能还没有学会最优的方法。