主题
训练曲线对比工具
强化学习的训练曲线噪声很大,比较算法或超参数时,把几条曲线放在同一张图上、适当平滑之后再看,往往比盯着日志里的数字更清楚。
数据格式
每行一个数据点,三列用逗号(或 Tab)分隔:曲线名称,横轴值,纵轴值。第一行可以是表头,以 # 开头的行会被忽略。例如:
text
名称,步数,回报
PPO-seed0,2048,22.5
PPO-seed0,4096,31.0
PPO-seed1,2048,19.81
2
3
4
2
3
4
数据只在你的浏览器中处理,不会上传到任何服务器。
平滑方法
平滑采用与 TensorBoard 相同的“去偏指数滑动平均”:
其中
示例数据说明
默认载入的是本站 A2C、PPO、TRPO 示例代码在 CartPole-v1 上的实测日志(每条记录为最近 20 回合的平均回报,单个随机种子)。它们只说明这几份代码在这一次运行中的表现,不能据此断言哪个算法更好——严肃的比较至少需要多个随机种子,并报告均值和置信区间(见 Henderson et al., 2018;Agarwal et al., 2021)。
从本站代码导出数据
本站的示例代码把训练进度打印到终端。你可以把输出重定向到文件,再用几行 Python 转成 CSV:
python
import re, sys
print("名称,步数,回报")
for path in sys.argv[1:]:
for line in open(path, encoding="utf-8"):
m = re.search(r"steps\s+(\d+).*?平均回报\s+([-\d.]+)", line)
if m:
print(f"{path},{m.group(1)},{m.group(2)}")1
2
3
4
5
6
7
2
3
4
5
6
7
用法:python ppo_cartpole.py > ppo.log,然后 python to_csv.py ppo.log a2c.log > curves.csv,最后在上方上传 curves.csv。
参考文献
- Henderson, P., Islam, R., Bachman, P., Pineau, J., Precup, D., & Meger, D. (2018). Deep Reinforcement Learning that Matters. AAAI. arXiv:1709.06560
- Agarwal, R., Schwarzer, M., Castro, P. S., Courville, A., & Bellemare, M. G. (2021). Deep Reinforcement Learning at the Edge of the Statistical Precipice. NeurIPS. arXiv:2108.13264