MIT系列公开课之自动驾驶车辆中的深度学习
更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)
MIT 高级研究员讲授了自动驾驶车辆中深度学习系列公开课,Medium 上有人整理出其中的一节,要点笔记整理如下,搭配视频学习效果更佳:
https://v.qq.com/txp/iframe/player.html?vid=v0377lgefzu&width=500&height=375&auto=0
(课程视频)
深度学习领域的研究人员正在研制能够理解汽车内外环境的汽车。
深度强化学习竞赛,代码在允许训练多个 Agent 的 v2.0 浏览器中运行。
SegFuse:动态驾驶场景分割竞赛。给出原始视频,自动汽车在该视频中移动。此训练集包含像素级标签、场景分割和光流等地面真实标签。
目标:性能优于当前图像分割的水平。
需求:机器人需要解释、理解和跟踪场景的细节。
DeepCrash:
目标:使用深度 RL 来规避高速碰撞避免。
训练:使用 Monocular 相机输入,对以 30mph + 速度运行的车辆模型进行 1000 次训练。
DeepTesla:
使用大规模网络来训练端到端方向盘,使用单目视频作为训练的输入。
为什么选择自动驾驶车辆?
目标:将数据驱动学习的方法应用于自动驾驶车辆。
数据广泛:道路上的车辆数量众多。
深度:汽车和人类之间有着密切的联系。用户把生命托付给机器人,把“控制权”交给汽车。因此,这个系统的生命关键特质意义深远,将对系统极限进行真正的测试。
自动驾驶车辆:这是一个个人机器人,而不是一个感知控制系统。在发生状况时,还需要人类通过控制转移给予辅助。而一个真正的、能达到人类同等动态特性的感知系统出现,可能还需要几十年的时间。
认知负荷:一个完全连接的 C 神经网络可以接受原始的三维输入数据,来分析驾驶员的认知负荷,如身体姿势分析,司机的睡意等。
参数:在一些领域,自动化需要达到人类的智力水平。
建议:在每个算法的设计中考虑到人类的存在。
感知控制可以处理 90%的情况。
深度学习在大量数据处理方面表现非常出色。由于人们把生命直接托付给了机器,因此我们需要可以从现实世界数据中学习的技术。
感知 / 控制端
基于人类的合作和互动。
AI:能够完成复杂的目标。
理解 / 推理:能够将复杂的信息转化为简单有用的信息。
深度学习(表征学习,Representation Learning 或 Feature Learning)能够捕捉毫无意义的原始信息,并构建分层表示,从而使模型生成洞察力。
深度学习是人工智能中能够从数据中获取结构,从而获得见解的最有效的方法。
表示很重要。例如:地心模型 vs 日心模型。
用笛卡尔 vs 极地标系分开圆圈和三角形
例如:用一层隐藏的神经网络来分离蓝色和红色曲线。通过深度学习掌握函数(使用原始输入来生成输出)。
数据越多,深度学习效果越好
边缘泛化是深度学习的主要挑战。
受到生物学上人类的神经元结构的启发。
人类神经网络:1000 亿个神经元,1000 万亿个突触
(最高水平)ResNet-52:6000 万个突触。
7 个数量级的差异。
区别:
人类的神经网络没有堆叠,人工神经网络是堆叠的。
无序 Vs 有序
同步学习 Vs 异步学习
未知学习 Vs 反向传播
处理速度慢 Vs 处理速度快
低功耗 Vs 低效率
相似性:两者都是大规模的分布式计算。
虽然基本的神经元很简单,但连接的单元可以有非常复杂的应用。
神经元
神经元由一组具有权重的边的输入组成
权重相乘
增加偏差
非线性函数确定神经网络是否被激活。
神经网络组合:
前馈神经网络:成功应用于计算机视觉。
递归神经网络:向自身反馈,并且有记忆。与人类相似,其在时间序列相关数据中的效果很好(因此训练难度更大)。
普遍性:多个神经网络可以仅使用一个隐藏层学习所有相似功能 *。
前提是算法足够好。
限制:神经网络的能力不是重点,而是方法。
监督学习:需要人来为数据做注释。
强化监督学习:人 + 机器学习。
半监督
无监督学习:机器输入。
强化学习:机器输入。
目前正在使用的方法:1,2
未来更好的方法:3,4,5。
受 DL 影响的领域:
定义和解决一个特定问题。例如估计波士顿的房价。
通用智能:强化和无监督学习。
监督学习
训练阶段:1. 输入数据 2. 标签 3. 数据训练
测试阶段:1. 新数据 2. 输入到学习系统 3. 产生输出
学习
正向传递:将输入数据输入到神经网络中,并生成预测。
反向传播:测量与期望输出的偏差并计算误差,根据误差的大小调整用于预测值的参数(超参数)。
我们可以用 DL 做什么?
一对一映射。
一对多。
多对多。
异步多对多。
术语:
DL = 神经网络(深度学习 = 神经网络)。
DL 是 ML(机器学习)的一个子集。
MLP:多层感知器
D 神经网络:深度神经网络。
R 神经网络:递归神经网络。
LSTM:长短期记忆。
C 神经网络:卷积神经网络。
DBN:深度信念网络。
神经网络操作:
卷积
池
激活功能
反向传播
激活函数
Sigmoid。缺点:梯度会逐渐消失,并且不以零为中心
Tanh(双曲正切函数)。缺点:梯度逐渐消失。
RELU。缺点:不以零为中心。
梯度逐渐消失:当神经网络的输出或梯度非常低,导致学习进程缓慢时。
反向传播
神经网络的学习过程。
目标:更新权重和偏差以减少损失函数。
子任务:
正向传递计算网络输出和错误。
反向传播计算梯度。
从权重中消除一部分梯度。
由于这个过程是模块化的,所以是可并行的。
学习
学习是一个优化的过程。
目标:通过更新权重和偏差来最小化损失函数。
使用的技术:小批量梯度下降和随机梯度下降。
学习上的挑战
损失函数是高度非线性的。
梯度消失
ReLU 衰弱:Derivate= 输入为 0。
鞍点。
过度拟合:神经网络可以学习训练数据,但不能很好地概括现实世界的数据。检测:训练错误少,但测试错误多。
正则化:
可以促进泛化的方法:
创建验证集:训练数据子集
早期中断:保存节点并评估神经网络在测试数据上的运行状况。
丢失:随机删除一些节点(以及传入和传出节点)
保留节点的概率(p)
输入节点 p 应该会高得多。
目标:促进更好的泛化。
正则化(Regularization)权重惩罚:
L2 惩罚:指权值向量中各个元素的平方
除非误差导数很高,可以保持较小的权重。
防止拟合采样错误。
更流畅的模型。
对于 2 个相似的输入,权重会分散分布。
L1 惩罚:
允许保持较大的权重。
[Neural Network Playground: To play around with techniques and practise][1]
深度学习的突破
发生了什么改变?
计算能力增加。
可用大型经过组织的数据集。
算法与研究在 GPU 上进行。
软件和基础设施。
财务支持。
进行 DL 并不容易
与人类相比:
人类视觉:发展了 540,000,000 年的数据。
两足动作:230,000,000 年的数据。
抽象思维:10 万年的数据。
神经网络:
像素数据失真,导致预测不准确。
视觉问题:光照、姿势、遮挡、内部类别的变化。
:
:
对象识别 / 分类:
目标:输入图像并预测输出
ImageNet:拥有 21800 万 + 类别的 1400 万种类别
竞赛:ILSVRC(大规模视觉识别挑战赛):
AlexNet(2012)在准确度上有了显著提高。
Resnet(2015):战胜人类水平。
例子:DL 的泛化能力仍远不及人类。
众多使用相同体系结构的应用程序:我们可以根据需求改变预测层,以对尽可能多的类别进行预测。
图像分类。
图像标题。
对象本地化。
图像分割。
FCNN(模糊聚类神经网络,Fuzzy Clustering Neural Network):
每个像素被分配到一个类,输入一个图像,并产生另一个图像作为输出。
目标:图像到图像的映射。
应用案例:
像素级全景分割。
对象检测。
背景去除。
Pix2PixHD:从语义标签贴图生成高分辨率照片的真实图像。
RNN:使用序列运行
应用案例:
生成手写作品。
生成图像标题。
生成视频描述。
转向注意力建模。
使用选择性注意绘画。
重大突破
乒乓球(2012):向 AGI(通用人工智能)迈出一步。
AlphaGo(2016):从人类专长的游戏中学习。
AlphaGo Zero(2017):在没有任何数据训练的情况下击败 AlphaGo 和 Co!(通过自身实践获得知识)。
DeepStack(2017):首次击败职业扑克玩家。
目前的不足
要定义一个好的奖励函数并不简单,结果可能会令人惊讶。
缺乏健壮性:向像素添加噪声会导致错误的预测。
目前的挑战:
迁移学习:在密切相关的领域效果良好。
挑战:缺少跨领域迁移学习。
原因:理解推理或理解的能力
巨大的数据需求量。
数据必须经过注释。
不完全自动化:超参数调整
奖励:定义一个好的奖励函数非常困难。
透明度:神经网络大多是黑匣子(甚至在经过可视化处理后)。
边缘情况:DL 不擅长处理边缘情况。(尤其是自动驾驶)。
回答:为什么用 DL?
把技术有效地应用于现实世界可能会带来巨大的机遇,而目前 DL 是这些方法中最有效的。
原文链接:
https://medium.com/init27-labs/mit-6-s094-deep-learning-for-self-driving-cars-2018-lecture-1-notes-807be1a50893