我正在看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
进行训练。而且,代理程序仍能在环境中达到最高分数。
那两个政策之间的功能区别是什么?
答案 0 :(得分:2)
有些强化学习算法(例如Q学习)使用策略在环境中表现(或与环境互动)以收集经验,这与他们尝试学习的策略不同(有时称为策略) 目标政策)。这些算法称为 off-policy 算法。非策略外的算法称为 on-policy (即行为策略与目标策略相同)。策略上的一个示例是SARSA。这就是为什么我们在TF-Agent中同时拥有policy
和collect_policy
的原因,即,通常,行为策略可能与目标策略不同(尽管并非总是如此)。
为什么会这样呢?因为在学习和与环境互动期间,您需要探索环境(即采取随机行动),而一旦您了解了接近最佳的策略,您可能就不再需要探索,而可以采取接近最佳的行动了(我说的是接近最优而不是最优,因为您可能还没有学会最优的方法。