“秋名山上行人稀,常有车手较高低。如今无人车当道,全是 AI 老司机。”
且问 AI 老司机表现如何?
可灵活转弯,控速自如:
可行云流水,沿最优路线过弯:
更可多次打圈,绕多少下也不在话下:
这场竞速赛事,主角确实是一群 AI 老司机,人类全程只能看,也没有什么遥控器参与。
更准确地说,它们是历经千万次虚拟练车训练出来的人工智能模型。这些模型所角逐的赛事也在业内颇具盛名,这就是亚马逊云科技举办的——
Amazon DeepRacer League。
作为全球最多开发者参与的自动驾驶赛车联赛,Amazon DeepRace 不拼谁更有钱买跑车,更不拼谁有资源搞场地,只拼选手们写的强化学习算法和训练水平——
堪称全球智力水平选秀综艺,充分诠释“ Smart is the new sexy ”的真正奥义。
开办至今, Amazon DeepRacer 在 AI/ML 圈已有相当名气,14万开发者参与其中,知乎上还有铁粉晒经历、Po证书。
大众影响力水涨船高,仅一部预告片就有380万播放量。
随着赛事越办越破圈,去年,Amazon DeepRacer League 更与 F1 官方搞起联名,举办了一场虚拟“巴塞罗那站”比赛,坐实自动驾驶界 F1 名头。
所以,这个 Amazon DeepRacer 什么来头?为什么让技术爱好者们如此上头?
最多开发者参与的自动驾驶联赛
2018年,亚马逊云科技萌生举办 AI 算法大赛念头,让更多人了解相关技术,甚至入门成为从业者,Amazon DeepRacer League 应运而生。
活动一开始就面向非业内群体,官方提供了几乎所有参赛软件资源,甚至有教程攻略,参与者甚至无需花钱购买实体小车,可以先在云平台上 3D 赛车模拟器,训练自己的自动驾驶算法。
入门后,参与者即可报名参加每个月的线上预选赛。如果你冲入全球前64强,就能获得线下联赛参赛资格——
和世界各路高手实地 PK 你的模型。
虽说门槛低,比赛奖金也却很高。
冠军将获得10000美元的奖金,亚军则奖励5000美元,季军2000美元。
低门槛加上高额奖金,玩的还是前沿技术,比赛自打举办,吸引了全球不同背景的人们关注。
参与者中,既有硅谷全栈开发人员、飞行员,来自新加坡、加拿大银行员工,还有中国大学生……
不同背景参与者加入,不仅体现比赛多元性,让机器学习技术为更多人所知,同时,也为比赛增添许多有意思的小片段。
比如 Amazon DeepRacer TV 2019年决赛中,一位中国台湾小哥逆转获胜后,赢得冠军,但发表获奖感言时,他却用了中文表达自己的心情,整得英语主持人一时不知道怎么接话…
值得一提的是,今年DeepRacer也开始在国内举办面向中国开发者的中国挑战赛,奖品同样丰厚,值得关注与期待。
如何驯服一只无人车?
从赛场回顾技术理论,实际上,Amazon DeepRacer 活动背后的基础即简单又前沿。
如何理解这句话?
不妨先从一辆自动驾驶小车构造展开。
Amazon DeepRacer 的自动驾驶小车有代际区分。一代车是参赛主力,核心包括一个 Intel Atom® 处理器,一个四百万像素1080p分辨率摄像头,一个高速 WiFi 以及 Intel OpenVino 计算机视觉工具套件。一代车主要用于竞速比赛,通过视觉识别判定赛道,完成比赛。
更高阶的是二代车 DeepRacer Evo ,配备立体摄像头和激光雷达,可用于可进行追逐赛与避障赛。
如果熟悉自动驾驶,你可能也能看出这一配置可谓“朴素”,却足够体验自动驾驶的乐趣——
这是因为 真正赋予小车自动驾驶灵魂的,是算法与模型。
同当今马路上的自动驾驶车一样,Amazon DeepRacer 同样使用到机器学习门类下的一门技术:
强化学习(RL)。
该项技术兴起不过数年,却算得上是近些年人类最重要的技术突破之一。2016年战胜李世石的 AlphaGo 背后就是该技术发挥作用。
强化学习原理不难理解,就是一种“驯兽师”机制,也可以理解为「巴浦洛夫的狗」原理。
以“小鸡啄纸”为例:
如果我们想训练一只鸡啄粉色纸片,那么,每当它啄到粉色纸片时,就奖励给食物。
经过一番训练后,这只鸡就一直能正确找到粉色纸片了。
△ 来自Twitter用户@YAWScience
当然,奖励无人小车和电脑不能用食物,而是用它们能懂的“奖励函数”( Reward Function )。
对于 Amazon DeepRacer 来说,开发者可以设置一个超级简单的奖励函数,它只有两个参数:all_wheels_on_track 表示四个轮子是否全在赛道内, progress 代表当前完成进度。
具体到代码上,如果有车轮不在赛道上发生一次,就扣除奖励函数,反之,就一直以小车走过的进度来奖励它。
奖励函数的值越大,就说明训练越成功,当奖励函数为负值时,任务失败。
代码语言:javascript复制def reward_function(params):
if not params["all_wheels_on_track"]:
reward = -1
else:
reward = params["progress"]
return reward
如果想让小车更聪明,不要在跑道上拐来拐去,我们还可以把函数设置得稍微复杂一点,以小车偏离跑道中心虚线的距离作为一个参数。距离越小,则奖励越大。
训练过程中,小车通过摄像头等记录自己的位置,不断调整车速和行驶方向,当奖励函数最大化且稳定后——
“驯兽”就完成了,恭喜,你已掌握强化学习的根本原理。