【问题标题】:What is the difference between the `policy` and `collect_policy` of a tf-agent?tf-agent 的 `policy` 和 `collect_policy` 有什么区别?
【发布时间】:2020-08-07 17:49:14
【问题描述】:

我正在查看tf-agents 以了解强化学习。我正在关注这个tutorial。使用了不同的策略,称为 collect_policy 用于训练而不是用于评估 (policy)。

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

代理包含两个策略:

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

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

我看过source code of the agent。它说

策略: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 进行训练。尽管如此,agent 在环境中还是达到了最高分。

那么这两种策略在功能上的区别是什么?

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2020-04-17
    • 2020-03-04
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多