1

我目前正在尝试从您以前的论文中复制一些关于我安装 flow 的结果。我遇到了以下问题,其中我不清楚实验中使用的确切参数以及论文中给出的结果。

对于 [1],我希望能够通过从您的存储库运行 stabilizing_highway.py 来重现结果。(使用提交“bc44b21”,虽然我尝试运行当前版本,但找不到与我的问题相关的差异)。我预计在 [2] 中使用的合并场景是相同的。

我已经发现论文/代码中的差异是:

1) [2] (2) 中的奖励函数与 [1] (6) 中的不同:第一个使用最大值并在总和的第一部分进行归一化。为什么会有这种差异?查看代码,我将其解释如下:根据评估标志,您可以将(a)奖励计算为模拟中所有车辆的平均速度,或者(b)作为 [2] 中给出的函数(没有标准化关于速度的术语),但值为 alpha(代码中的 eta2)= 0.1(参见 merge.py,第 167 行,compute_reward)。我找不到论文中给出的 alpha 参数,所以我假设使用了代码版本?

2)我进一步阅读了代码,就好像您通过迭代模拟中的所有车辆来计算它,而不仅仅是观察到的车辆?这对我来说似乎违反直觉,在部分观察到的环境中使用奖励函数通过使用来自完全观察到的状态信息的信息来训练代理......!?

3)这引出了下一个问题:您最终希望在设置评估标志时评估给定的奖励,即模拟中所有车辆的平均速度,如 [1] 的表 1 所示。这些值是通过对您可以运行可视化工具生成的 emit.csv 文件中的“速度”列进行平均计算得出的吗?

4)下一个问题是关于[1]和[2]图中的累积收益。在 [1] 图 3 中,在合并场景中,cum。回报最大约为 500,而最大。[2] 的值,图 5 约为 200000。为什么会有这种差异?使用了不同的奖励函数?请您提供两者的 alpha 值并验证哪个版本是正确的(纸质或代码)?

5) 我还观察到 [1] 表 1,Merge1 和 2:ES 显然具有最高的平均速度值,但 TRPO 和 PPO 具有更好的累积回报。这是否表明用于评估的 40 次推出不足以获得具有代表性的平均值?或者说最大化训练奖励函数不一定能给出好的评价结果​​?

6) 我不清楚其他一些参数:在 [1] Fig3 中,提到了 50 个 rollout,而 N_ROLLOUTS=20。你推荐使用什么?在 [1] A.2 Merge 中,T=400,而 HORIZON=600,和 [2] C. Simulations 讨论了 3600s。查看运行 Visualizer_rllib.py 时在 Sumo 中产生的回放,模拟在时间 120.40 终止,这将与 600 的 HORIZON 相匹配,时间步长为 0.2 秒(此信息在 [2] 中给出。)所以我假设,为此在场景中,地平线应该设置得比 1 和代码都高得多,而不是设置为 18.000?

感谢您的任何提示!韩国

[1] Vinitsky, E., Kreidieh, A., Le Flem, L., Kheterpal, N., Jang, K., Wu, F., ... & Bayen, AM(2018 年 10 月)。混合自治交通中强化学习的基准。在机器人学习会议上(第 399-409 页)

[2] Kreidieh、Abdul Rahman、Cathy Wu 和 Alexandre M. Bayen。“通过深度强化学习在封闭和开放网络中消散走走停停的波浪。” 在 2018 年第 21 届智能交通系统 (ITSC) 国际会议上,第 1475-1480 页。IEEE,2018 年。

4

1 回答 1

1

对答案的延迟表示歉意。

  1. 代码中描述的版本是使用的版本。论文 [1] 是在论文 [2] 之后编写的(尽管之前发表了一篇),我们添加了一个标准化术语来帮助标准化跨问题的学习率。奖励函数是代码库中使用的函数;评估标志为真对应于实际计算流量统计(即速度),而它为假对应于我们在训练时使用的奖励函数。

  2. 正如您所指出的,在奖励函数中使用所有车辆是一个糟糕的假设,我们显然无法访问所有这些数据(尽管您可以想象我们能够通过归纳循环读出它)。未来的工作将集中在消除这一假设上。

  3. 你可以这样做。然而,我们只是通过使用训练好的策略运行实验来计算它,存储每一步的所有车辆速度,然后在实验结束时计算结果。

  4. 不幸的是,这两个版本都是“正确的”,正如您所指出的,差异与在 [2] 中添加“eta”术语和在 [1] 中的规范化有关。

  5. 正如您所说,训练奖励函数与测试奖励函数不同,因此在评估标志关闭时表现良好的算法可能在评估标志打开时表现不佳。这是我们做出的选择,具有单独的训练和测试功能。欢迎您在训练时使用测试功能!

  6. 两者都应该工作;我怀疑代码库中的 N=20 是随着时间的推移逐渐出现的,因为人们发现这种情况不需要 50。然而,每个 RL 算法在更多的 rollout 上都会做得更好,所以设置 N=50 不会有任何伤害。至于地平线,据我所知,在代码库中答案是 sim_step 是 0.5,地平线是 750,所以实验应该运行 375 秒。

如有更多问题,请给通讯作者(我)发邮件!我很乐意帮助你更详细地解决这个问题。

于 2019-07-02T20:26:19.943 回答