飙着车学「机器学习」?要不是380万人围观我都不敢相信

2021-12-17 15:27:21 浏览数 (1)

“秋名山上行人稀,常有车手较高低。如今无人车当道,全是 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

如果想让小车更聪明,不要在跑道上拐来拐去,我们还可以把函数设置得稍微复杂一点,以小车偏离跑道中心虚线的距离作为一个参数。距离越小,则奖励越大。

训练过程中,小车通过摄像头等记录自己的位置,不断调整车速和行驶方向,当奖励函数最大化且稳定后——

“驯兽”就完成了,恭喜,你已掌握强化学习的根本原理。

0 人点赞