FLOW 目前如何处理剪辑操作,squash_to_range,no_final_linear

How is FLOW currently dealing with clipping actions, squash_to_range, no_final_linear

我对 FLOW 确保策略网络输出与操作 space 限制相匹配的方式感到困惑。

在我按照安装指南安装的 rllib/ray 版本中,我看到了两种不同的处理方式:

1) squash_to_range 模型选项:这在代码中可用,但是:

"The squash_to_range option is deprecated. See the clip_actions agent option instead."

2) clip_actions:可用,但流程示例包括以下行:

config['clip_actions'] = False  # FIXME(ev) temporary ray bug

查看rllib/ray的当前版本,我看到了一个新选项:

3) no_final_linear

#Whether to skip the final linear layer used to resize the
#hidden layer outputs to size `num_outputs`. If True, then the last
#hidden layer should already match num_outputs.
"no_final_linear": False,

flow 中提供的示例代码将 fcnet 输出剪辑到动作的框限制 space。 调试我得到的原始网络输出,它包含远远超出操作 space 范围的值。

我在实施自己的实验时是否遗漏了什么?我认为为操作定义框 space 就足够了。

对我来说,只剪辑动作似乎不是个好主意,我宁愿使用 no_final_linear 选项。

你对此有何看法?

切换到当前版本的 ray 有什么影响? (我的是conda安装环境文件中的ray 0.6.1)

您打算如何解决 "temporary ray bug" 问题?

感谢任何提示

这是一个很好的观点。在 Ray 0.6.1(我们在 Master 上使用的当前版本)中,存在一个错误,即 Ray 的 clip_actions 没有正确地将裁剪结果更新到损失中。这在更新的 Ray 版本中得到了解决。正如您所提到的,因此网络输出超出了可接受的范围;为了解决这个问题,我们只是在 Flow 的 base_env.

的 step 方法中实现了裁剪

解决此问题的一种方法是升级到最新版本的 Ray(尽管我只测试了 Ray 0.7.2 的兼容性)。 你绝对可以更新到最新版本的 Ray,问题相对较少,尽管你必须稍微修改 运行ner 脚本以使其兼容。如果您 运行 遇到升级 Ray 版本的问题,请联系我们!

我们的修复计划是针对计划于 8 月下旬发布的版本升级到最新版本的 Ray(可能更早,但我们不想做出任何无法兑现的承诺)。