飙着车学“机器学习”?要不是380万人围观我都不敢相信( 二 )


如何理解这句话?
不妨先从一辆自动驾驶小车构造展开 。
AmazonDeepRacer的自动驾驶小车有代际区分 。 一代车是参赛主力 , 核心包括一个IntelAtom处理器 , 一个四百万像素1080p分辨率摄像头 , 一个高速WiFi以及IntelOpenVino计算机视觉工具套件 。 一代车主要用于竞速比赛 , 通过视觉识别判定赛道 , 完成比赛 。
飙着车学“机器学习”?要不是380万人围观我都不敢相信
文章图片
更高阶的是二代车DeepRacerEvo , 配备立体摄像头和激光雷达 , 可用于可进行追逐赛与避障赛 。
如果熟悉自动驾驶 , 你可能也能看出这一配置可谓“朴素” , 却足够体验自动驾驶的乐趣——
这是因为真正赋予小车自动驾驶灵魂的 , 是算法与模型 。
同当今马路上的自动驾驶车一样 , AmazonDeepRacer同样使用到机器学习门类下的一门技术:
强化学习(RL) 。
该项技术兴起不过数年 , 却算得上是近些年人类最重要的技术突破之一 。 2016年战胜李世石的AlphaGo背后就是该技术发挥作用 。
强化学习原理不难理解 , 就是一种“驯兽师”机制 , 也可以理解为「巴浦洛夫的狗」原理 。
飙着车学“机器学习”?要不是380万人围观我都不敢相信】以“小鸡啄纸”为例:
如果我们想训练一只鸡啄粉色纸片 , 那么 , 每当它啄到粉色纸片时 , 就奖励给食物 。
经过一番训练后 , 这只鸡就一直能正确找到粉色纸片了 。
△来自Twitter用户@YAWScience
当然 , 奖励无人小车和电脑不能用食物 , 而是用它们能懂的“奖励函数”(RewardFunction) 。
对于AmazonDeepRacer来说 , 开发者可以设置一个超级简单的奖励函数 , 它只有两个参数:all_wheels_on_track表示四个轮子是否全在赛道内 , progress代表当前完成进度 。
飙着车学“机器学习”?要不是380万人围观我都不敢相信
文章图片
具体到代码上 , 如果有车轮不在赛道上发生一次 , 就扣除奖励函数 , 反之 , 就一直以小车走过的进度来奖励它 。
奖励函数的值越大 , 就说明训练越成功 , 当奖励函数为负值时 , 任务失败 。
defreward_function(params):ifnotparams["all_wheels_on_track"]:reward=-1else:reward=params["progress"]returnreward
如果想让小车更聪明 , 不要在跑道上拐来拐去 , 我们还可以把函数设置得稍微复杂一点 , 以小车偏离跑道中心虚线的距离作为一个参数 。 距离越小 , 则奖励越大 。
训练过程中 , 小车通过摄像头等记录自己的位置 , 不断调整车速和行驶方向 , 当奖励函数最大化且稳定后——
“驯兽”就完成了 , 恭喜 , 你已掌握强化学习的根本原理 。
飙着车学“机器学习”?要不是380万人围观我都不敢相信
文章图片
如何参赛?
比赛热血好玩 , 还有奖金可拿 , 原理易懂 , 现在 , 你是不是迫不及待想玩玩?
参与方式很简单:只需注册一个亚马逊云科技账户就行 。
登陆账号进入AmazonDeepRacer控制台 。
在构建模型之前 , 先在车库配置一辆自己的虚拟赛车 。
飙着车学“机器学习”?要不是380万人围观我都不敢相信
文章图片
给它起一个炫酷的名字(名字不可以更改 , 千万不要取个“test”就完事了) , 选个你喜欢的颜色并根据你要参加的比赛类型配置摄像头 。
创建好专属虚拟小车后 , 按照提示一步步创建模型:
飙着车学“机器学习”?要不是380万人围观我都不敢相信
文章图片
官方还提供虚拟环境 , 降低上手门槛 , 让小车在虚拟世界中训练 , 完成后 , 就可提交模型选一场比赛参加了!