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对模型结果影响的过程。
本篇作者
赵安蓓
亚马逊云科技解决方案架构师
负责基于亚马逊云科技云平台的解决方案咨询和设计,尤其在大数据分析与建模领域有着丰富的实践经验。