转载

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

MIT 紧跟时代步伐, 开设的 6.S094 课程名为《为自动驾驶构建深度学习》的课程 ,旨在教学生们为自动驾驶搭建一个深度学习系统,授课者为 Lex Fridman。课程要求学生拥有基本的编程知识(最好是 Python)。

全课只有九节一小时的课程,于 1 月 9 日开课,今天就结课啦。而且!据雷锋网从议程表上了解到,从开课一直到 1 月 16 日,官网表示会陆续放出 PPT 及视频文件,雷锋网会持续关注。

DeepTesla 与 DeepTraffic 就是 MIT 这门课程里面的两个重点培训内容,

  • 前者直接以端到端模型训练一个自动驾驶的起动模型;

  • 后者以游戏化的方式模拟汽车在高速公路上行驶,而我们的目标就是 (没有蛀牙) 训练一个神经网络,利用强化学习控制红车,并让它的速度尽可能提升到最快(也就是超车啦!速度与激情)。

那么首先我们得先补补课,为什么要采用循环神经网络呢?主要鉴于它能够将输出重新做为输入再次进入神经网络中进行训练,也就是拥有所谓的「记忆」。

强化学习的一个典型例子就是 DeepMind 训练机器玩 Atari,虽然机器并不知道游戏规则,但每一次游戏都能让机器得到一次分数的反馈,而目标就是让得分最大化。

美国人每年要浪费 80 亿小时在堵车上,因此如果能采用自动驾驶系统,让老司机们解放双手,想必真真是极好的。

DeepTesla:特斯拉自动驾驶,我也行

DeepTesla 通过一个简单的演示呈现卷积神经网络的端到端转向。顶端呈现的四个指标呈现的是前向传递及后向传递所需的时间,以及目前网络已经训练的示例,还有网络的当前状态(是处于训练数据?还是在提取数据?)。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

下方的图表呈现的是损失函数,我们都知道,正常状态下随着时间的推移,损失函数的值应该会越来越小。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

而在编辑器下方还有一个可视化图层的功能,用户可以在网络中看到每个图层的处理情况。如果加载了特斯拉视频,随着视频内容的增加,神经网络的训练效果也会变得更好。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

下方两个小的方向盘及旁边的数值指的是实际值(蓝色)与系统预测值(白色)的对比。是不是非常智能?

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

以第一次加载 DeepTesla 为例:我们整个网络大小为(200,66,3)的输入层,表示宽度为200,高度66,涵盖三个通道(红绿蓝)。紧接着有一个卷积层、一个合并层与一个输出神经元。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

ConvNetJS为我们提供了几种训练算法, 具体能够在这里找到 。

DeepTraffic:让小车跑得更快

整个 DeepTraffic 游戏实际上是在网格上运行,但你也可以通过选择不同的模式,让网格呈现出来。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

每辆车周围的方格表示的是它自身的速度,而橙色区域指的是该车辆可能的行驶方位。

比如在安全系统中,车辆周围会出现一个 H 型的区域,橙色表示相对安全,而红色表示周围已经有车在附近车道,此时红色小车不能越到红色区域。如果你提升了小车的速度,那么这个区域也会随之变化,毕竟如果有车挡在你的面前,为了保证安全,你一定会减缓速度(这与我们这个小游戏的目标相反)。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

编程页面主要分为三块,一是实时的道路模拟情况,还能调整自己车辆的行驶速度,以提升测试速度;二是编程页面,在这里可以修改神经网络的具体代码;第三部分会显示目前神经网络的状态,还能将代码保存、重置或下载。

代码区的这几个变量可以控制网络的输入大小,更多的输入也就意味着更复杂的交通环境,也意味着需要更长的学习时间及更大的学习难度。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶 MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

整个代理由一个名为「learn」的函数所控制,该函数能够接受当前的状态(以一个扁平阵列呈现),而所得到的反馈为行车速度,也就是以 mph 为单位的平均速度。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

函数最基本的形式(告诉代理,让车辆维持现状,不需要变道或减速)大概长这样:

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

而既然这是一个追求速度的「比赛」,那么你需要通过神经网络控制车辆,比如:

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

在初始代码中,已经提供了上述内容。当然,你可以自行对数据进行预处理,并将这些状态输入网络,但不需要在这上面花太多时间。

这个地方就是你施展「才华」的地方——这是一个隐藏层里的一个神经元示例。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

下图呈现的是最终的回归层,它决定了最终的执行环节将会呈现怎样的结果。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

在 Q-Learning 里还提供了一些其它选择, 可以在 Github 上找到 。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

最后一步就是创建“大脑”。

如果点击了 run training,那么可以训练神经网络,并以 30 倍于实时的速度实现单线程运行,随后训练网络的结果会以可视化的形式呈现在电脑上,学生们也可以做一些即时反馈和改进。

该网站上的评估键可以直接运行同样的任务,也就相当于小测验。通过每次 30 分钟的 10 次运行,最后将计算出每次车辆的平均速度,并取中值做为结果。而且,本地测试的评估会受到其它车辆出现的情况的影响,所以本地的测试只能做为参考。

值得一提的是,Fridman 老师表示这些车都有着安全系统,所以不需要担心车的反应速度不够快,它们不会因为你突然操控加速减速而出车祸的。(老师入戏好深……)

Fridman 还在主页上公布了一个 神经网络训练排名榜 ,目前有三位同学取得了很不错的成绩,甚至还有比老师训练得好的,太厉害了。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶

老师说了,如果速度不能提上 60km/h,那你明天就不要来上课了(误)。不过排行榜今天就截止统计啦,所以大家如果测试了比排行榜更高的分数,欢迎告诉雷锋网 (公众号:雷锋网) 小编呀,我们会找你做硬创公开课的。

以上只是对 MIT 课程的简单介绍,雷锋网会做后续关注。

雷锋网原创文章,未经授权禁止转载。详情见 转载须知 。

MIT 开了一门只有九小时的课,教你用深度学习构建自动驾驶
原文  http://www.leiphone.com/news/201701/6w1e29T5w2YXTuQu.html
正文到此结束
Loading...