从无人货运到自动驾驶汽车,自动驾驶正在改变我们的出行方式,智能交通正在加速构建。而机器学习就是实现它的核心技术,也被称为自动驾驶的“大脑”。众所周知,自动驾驶依赖昂贵的激光雷达或者复杂的可视化智能方案,都是大公司的专属,那么问题来了,普通人要如何低成本参与并学习机器学习在自动驾驶中的应用呢?
亚马逊云科技给出的答案就是 DeepRacer 竞赛。它将机器学习降低到非专业人士的层面,使编程爱好者也可以通过开发赛车模型体验训练强化学习算法的乐趣。9 月 26 日的亚马逊云科技推出 DeepRacer 技术公开课内容,全方位解析 DeepRacer 竞赛的相关知识,以及如何通过这个平台开启机器学习和自动驾驶之旅。
DeepRacer:强化学习入门的首选平台
要让计算机具备驾驶能力,核心就是教会它“学习”。传统的监督学习和无监督学习存在一定局限,而强化学习模拟了人类学习的方式,通过不断的试错获得解决问题的策略,是一个更强大的机器学习范式。
强化学习的思路是,在一个特定的环境中,让 AI 去尝试不同的行为,然后根据行为反馈(奖励或惩罚)不断改进策略。这类似于我们训练猫狗的方式,奖励好的行为,惩罚错误的行为,逐步获得期望的结果。
以 AlphaGo 为例,它就通过自我对弈进行强化学习,探索不同的下法,获得胜负反馈,逐步积累经验,最终战胜人类高手。
DeepRacer 是一个基于强化学习的自动驾驶开发平台和竞赛。参赛者需要通过编程指导一辆模拟赛车驾驶,使其尽可能快速且稳定地完成赛道。
具体来说,需要编写两个部分:
奖励函数:定义不同状态下的奖励值,这决定了车辆的学习目标。
训练模型:选择行为空间、超参数等,运行训练过程,获得驾驶模型。
平台会生成模拟环境,赛车利用摄像头视觉感知状态,你只需提供奖励函数。通过大量的试错,它会逐步掌握最优驾驶策略。
这简化并浓缩了端到端的强化学习过程,初学者可以快速上手,零基础就能训练出自动驾驶模型。
重要提示:编写奖励函数实现不同驾驶逻辑
奖励函数使用 Python 编写,根据当前状态判断赛车行为,返回一个奖励值。
例如下面这个实现了中线跑的逻辑:
我们也可以只奖励完赛,让赛车自己决定如何跑完全程:
修改奖励函数可以实现不同的驾驶效果。但需要结合道路规则、物理知识进行设计,这也是 DeepRacer 的趣味所在。
进一步提升模型泛化能力的方法与技巧
另外模型训练完成后,平台会给出三条评估指标:
奖励值:是否持续提升
完赛率:是否持续提升,最后接近100%
评估完赛率:是否维持100%
如果奖励值提升缓慢,可能存在欠拟合。如果完赛率无法到达 100%,可能是过拟合。我们可以调整超参数重新训练。
此外还可以使用一些辅助工具,如 Amazon 提供的 DeepRacer 分析工具,帮助分析模型表现,发现问题所在。
训练环境与实际情况无法完全一致,这需要提升模型的泛化能力。以下技巧可供参考:
使用多样化的训练场景(赛道、天气等),尽可能覆盖更多情况
采用图像增强,模拟不同光照等条件
选择合适的网络结构,既可学习特征又避免过拟合
使用正则化技术防止过拟合
采用早停机制,防止过度训练
模型集成,组合多个模型输出,提高鲁棒性
另外,亚马逊提供了免费视频课程,从理论到实战全面讲解强化学习知识,可以帮助理解和提升模型效果。
DeepRacer 竞赛介绍:让自动驾驶无门槛
DeepRacer 竞赛分为线上模拟赛和线下实车赛。线上模拟赛包括区域预赛和全球总决赛。选手提交模型参加预赛,根据完成时间获得积分。积分达到一定水平可进入总决赛,争取全球冠军。
线下实车赛跟 AWS 年会同期举行。选手组装真实赛车,车辆在实际赛道上运行竞速。评委根据完赛时间进行评判。
无论哪种形式,前期优胜者都能获得丰厚奖品,如 AWS 积分、电子产品、赛车周边等。要参加竞赛,只需要几个简单步骤:
1.在 AWS 控制台创建并训练 DeepRacer 模型
2.选择赛道,编写奖励函数并设置其他参数
3.训练模型,调整超参数直至表现优异
4.在规定时间内提交模型,查看排行榜
5.比赛期间可以继续优化模型,提高排名
编程经验不必专业,只要按照奖励函数的思路,任何人都可以提交一个可跑车型。创建第一个自动驾驶模型,尽情感受竞速的魅力吧!
DeepRacer 最大的意义,是让机器学习和自动驾驶真正做到无门槛。
过去这些技术仅限于大公司研究机构,资源需求极高。而通过模拟和云计算,普通开发者也可以轻松编程实践,对技术的学习不再是纸上谈兵。
开源社区中不乏利用 DeepRacer 进行创新的案例。社区成员开发了辅助工具,实现自动奖励函数生成。基于 DeepRacer 改造的虚拟现实赛车也为残障人士提供了模拟驾驶的可能性。
可以预见,类似 DeepRacer 的平台将推动学习型人工智能的普及,也会带来更多意想不到的创意,这正是开源文化的魅力所在。
当自动驾驶逐渐成为现实,任何人都可以为这个时代贡献一份力量,这一切都始于我们打开编程的大门,走进机器学习的世界。