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

标签 tensorflow artificial-intelligence reinforcement-learning policy agent

我在看 tf-agents学习强化学习。我正在关注这个 tutorial .使用了不同的策略,称为 collect_policy用于训练而不是用于评估 ( policy )。
该教程指出存在差异,但在 IMO 中,它没有描述为什么有 2 个策略,因为它没有描述功能差异。

Agents contain two policies:

agent.policy — The main policy that is used for evaluation and deployment.

agent.collect_policy — A second policy that is used for data collection.


我看过 source code of the agent .它说

policy: An instance of tf_policy.Base representing the Agent's current policy.

collect_policy: An instance of tf_policy.Base representing the Agent's current data collection policy (used to set self.step_spec).


但是我没有看到self.step_spec源文件中的任何位置。我找到的下一个最接近的东西是 time_step_spec .但这是 TFAgent 的第一个 ctor 参数类,因此通过 collect_policy 设置是没有意义的.
所以我唯一能想到的就是:把它付诸实践。所以我用了 policy而不是 collect_policy为了训练。尽管如此,代理还是达到了环境中的最高分数。
那么这两种策略之间的功能区别是什么?

最佳答案

有一些强化学习算法,例如 Q-learning,它们使用策略在环境中表现(或与之交互)以收集经验,这与他们尝试学习的策略(有时称为目标策略)不同.这些算法被称为离策略算法。不脱离策略的算法称为在策略(即行为策略与目标策略相同)。在策略算法的一个例子是 SARSA。这就是为什么我们同时拥有 policycollect_policy在 TF-Agents 中,即一般情况下,行为策略可能与目标策略不同(尽管情况并非总是如此)。
为什么会这样?因为在学习和与环境交互的过程中,你需要探索环境(即采取随机行动),而一旦你学会了接近最优的策略,你可能就不需要再探索了,只需采取接近最优的行动即可(我说接近最优而不是最优,因为你可能没有学到最优的)

关于tensorflow - tf-agent 的 `policy` 和 `collect_policy` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61403558/

相关文章:

python - 谷歌 tensorflow 速成类(class)。表示问题 :Programming exercises Task 2: Make Better Use of Latitude

artificial-intelligence - Delphi/Pascal 中的 TD(λ)(时间差分学习)

python - 如何创建具有多种功能的 OpenAI Gym 观察空间

python - '操作系统错误 : [WinError 126] The specified module could not be found' when using OpenAI Gym-Atari on Windows 10

python - 如何正确塑造 RNN 的时间序列数据?

TensorFlow - 如何导入具有多个标签的数据

TF 2 API 中的 tensorflow.contrib.graph_editor?

python - 为什么 conv2d 层需要 ndim=4 输入?

neural-network - U-net和FCN背后的直觉用于语义分割

machine-learning - Erlang 中的感知器在训练后不学习