Amazon DeepRacer 训练日志分析范例与强化学习 Reward Function 设计
Amazon DeepRacer 是一款专门为帮助开发人员进行强化学习(Reinforcement learning)实践而开发的 1/18 比例的完全自动驾驶赛车。Amazon DeepRacer 为开发人员提供了一种学习强化学习的简单方法,用新的强化学习算法和模拟到真实域传输方法进行实验,并在现实世界中体验强化学习。开发人员可以在在线模拟器中训练、评估和调整强化学习模型,将他们的模型部署到 Amazon DeepRacer 上,从而获得现实世界的自动驾驶经验,并参加 Amazon DeepRacer League 的比赛。
在开启 Amazon DeepRacer 之旅之前,我们首先在 Amazon DeepRacer 线上模拟器中进行模型训练。一般而言,在训练完成后,我们需要追溯训练过程中 agent 的运动情况,并进行针对性分析,才能优化强化学习核心 reward function 设计。在本文中,我们将会阐述针对训练过程运动日志分析的操作步骤,并针对分析结果进行 reward function 的调优与调优后对比。
打开 Amazon DeepRacer 控制台,点击 Reinforcement learning—Your models,选择对应模型。
在 Training 下,点击 Download logs。
解压模型文件后,我们会看到如下层级:
其中 logs 下为训练过程日志,metrics 下为训练过程指标,sim-trace 下为每个 iteration 下的 trace 以及对应 award 的记录。我们有多种方式对于过程数据进行分析,这里主要分析不同 reward function 对于 sim-trace 的影响。
为了统一进行分析,首先需要将所有 training-simtrace 下的 csv 进行 concat,脚本如下图所示:
运行后,在 $OutFileName 路径下生成新的.csv 文件。之后,我们将训练日志按 episode 来进行划分,依次查看在训练不同阶段的 reward 以及对应的 action 变化:
Waypoint 限制 reward function 下 train log 可视化。
上图所示是一个进行了局部 waypoint 限制的 reward function 下的 0-10% episode 与 90%-100% episode 的 reward 记录,可以看到,在该 reward 下,模型快速收敛,并且迅速获取到较高 reward 记录。
all_wheels_on_track,速度与转向限定 reward function 下 train log 可视化。
不同的 reward function 下 reward 分布不同,上图所示对于 all_wheels_on_track,速度与转向进行了限定的训练 log 展示,该图中 reward 峰值连续且均匀,但是在连续过弯时候因为没有 waypoint 限制容易出界,即上图中的黄色区域。
Steer
throttle
Waypoint 限制的 reward function 下的 reward 分布整体均匀,但是如果我们将 feature 换为 steer 或者 throttle, 如上图所示,可以看到,由于 reward 并没有对于连续 action 的奖励,action 特别是 throttle 在训练过程中呈不连续状态。Throttle 的不连续性不会影响 completion_percentage,但是会影响速度,在竞速比赛中难以拿到优秀成绩。
针对这一问题,我们在 reward function 中额外增加了对于连续 action 的 reward, 之后新的 log 如下图所示:
Steer
可以看到,在限制了转向与速度后,虽然动作变得更连续,但是原有 waypoint 的限制被弱化,整体线路不再顺畅,特别是在左下角部分,出现了异常的弯道,这在实体赛会存在出圈的风险。同时,分析 log 不难看出,算法收敛也显著变慢。可见,Reward 设置需要综合考虑多方面的因素,并留给算法足够的优化空间,并不一定限制越多,效果越好。
强化学习的 reward function 设计需要持续进行优化。特别是在实体赛中,遇到的 sim2real gap 会带来额外的调整。持续可视化训练过程 log 的过程,也是我们逐步理解不同 reward function 对模型结果影响的过程。
本篇作者
赵安蓓
亚马逊云科技解决方案架构师
负责基于亚马逊云科技云平台的解决方案咨询和设计,尤其在大数据分析与建模领域有着丰富的实践经验。
评论