tf-agent 的 `policy` 和 `collect_policy` 有什么区别?

Mik*_*erk 5 policy artificial-intelligence agent reinforcement-learning tensorflow

我正在寻找tf-agents来了解强化学习。我正在关注本教程。使用了一种不同的策略,称为collect_policy培训而不是评估 ( policy)。

该教程指出存在差异,但在 IMO 中,它没有描述为什么有 2 个策略,因为它没有描述功能差异。

代理包含两个策略:

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

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

我查看了 agent源代码。它说

policy:tf_policy.Base代表代理当前策略的实例。

collect_policy:tf_policy.Base代表Agent当前数据采集策略的实例(用于设置self.step_spec)。

但是我self.step_spec在源文件中没有看到任何地方。我找到的下一个最接近的东西是time_step_spec. 但这是TFAgent该类的第一个 ctor 参数,因此通过collect_policy.

所以我唯一能想到的就是:把它付诸实践。所以我用policy代替collect_policy训练。尽管如此,代理还是达到了环境中的最高分数。

那么这两种策略之间的功能区别是什么?

nbr*_*bro 3

有一些强化学习算法,例如 Q-learning,使用策略在环境中表现(或与之交互)来收集经验,这与它们尝试学习的策略(有时称为目标策略不同。这些算法称为离策略算法。非离策略的算法称为在策略(即行为策略与目标策略相同)。在策略算法的一个例子是 SARSA。这就是为什么我们在 TF-Agents 中同时拥有policycollect_policy,即,一般来说,行为策略可能与目标策略不同(尽管情况可能并不总是如此)。

为什么会这样呢?因为在学习和与环境交互的过程中,你需要探索环境(即采取随机行动),而一旦你学会了接近最优的策略,你可能不需要再探索而只需采取接近最优的行动(我说接近最优而不是最优,因为你可能还没有学到最优的)