2020-7-23 吴恩达DL学习-C3结构化ML项目-w2 ML策略2(2.10 是否要使用端到端的深度学习--是否有足够的数据)

274 篇文章 24 订阅
233 篇文章 0 订阅

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

2.10 是否要使用端到端的深度学习 Whether to use end-to-end learning

假设你正在搭建一个ML系统,你要决定是否使用端对端方法,我们来看看端到端DL的一些优缺点,这样你就可以根据一些准则,判断你的应用程序是否有希望使用端到端方法。

优点

在这里插入图片描述

上图是应用端到端学习的一些好处。

首先端到端学习真的只是让数据说话。假设你有足够多的(x,y)数据,那么不管从 x x x y y y最适合的函数映射是什么,如果你训练一个足够大的NN,希望这个NN能自己搞清楚。使用纯ML方法,直接从 x x x y y y输入去训练的NN,可能更能够捕获数据中的任何统计信息,而不是被迫引入人类的成见。

例如,在语音识别领域,早期的识别系统有这个音位 phoneme 概念,就是基本的声音单元,如cat单词的“cat”的Cu-、Ah-和Tu-,我觉得这个音位是人类语言学家生造出来的,用音位描述语言也还算合理。但是不要强迫你的学习算法以音位为单位思考,这点有时没那么明显。如果你让你的学习算法学习它想学习的任意表示方式,而不是强迫你的学习算法使用音位作为表示方式,那么其整体表现可能会更好。

端到端深度学习的第二个好处就是所需手工设计的组件更少,这也许能够简化你的设计工作流程,你不需要花太多时间去手工设计功能,手工设计中间表示方式。

缺点

在这里插入图片描述

那么缺点呢?上图中有一些缺点。
首先,它可能需要大量的数据。要直接学到 x x x y y y的映射,你可能需要大量数据。

我们在上节课里看过一个例子,你可以收集大量子任务数据,比如人脸识别,我们可以收集很多数据用来分辨图像中的人脸,当你找到一张脸后,也可以找得到很多人脸识别数据。

但是对于整个端到端任务,可能只有更少的数据可用。端到端学习的输入端 x x x y y y是输出端,所以你需要很多这样的(x,y)数据,在输入端和输出端都有数据,这样可以训练这些系统。这就是为什么我们称之为端到端学习,因为你直接学习出从系统的一端到系统的另一端。

另一个缺点是,它排除了可能有用的手工设计组件。

ML研究人员一般都很鄙视手工设计的东西,但如果你没有很多数据,你的学习算法就没办法从很小的训练集数据中获得洞察力。所以手工设计组件在这种情况,可能是把人类知识直接注入算法的途径,这总不是一件坏事。

我觉得学习算法有两个主要的知识来源

  • 一个是数据
  • 另一个是你手工设计的任何东西,可能是组件,功能,或者其他东西。

所以当你有大量数据时,手工设计的东西就不太重要了,但是当你没有太多的数据时,构造一个精心设计的系统,实际上可以将人类对这个问题的很多认识直接注入到问题里,进入算法里应该挺有帮助的。

端到端深度学习的弊端之一是它把可能有用的人工设计的组件排除在外了,精心设计的人工组件可能非常有用,但它们也有可能真的伤害到你的算法表现。

例如,强制你的算法以音位为单位思考,也许让算法自己找到更好的表示方法更好。所以这是一把双刃剑,可能有坏处,可能有好处,但往往好处更多,手工设计的组件往往在训练集更小的时候帮助更大

如果你在构建一个新的ML系统,而你在尝试决定是否使用端到端深度学习,我认为关键的问题是,你有足够的数据能够直接学到从 x x x映射到 y y y足够复杂的函数吗?
在这里插入图片描述

我还没有正式定义过这个词“必要复杂度(complexity needed)”。但直觉上,如果你想从 x x x y y y的数据学习出一个函数,例如上图中看着x射线图像,识别出图像中所有骨头的位置,也许这是个相对简单的问题,也许系统不需要那么多数据来学会处理这个任务。又例如给出一张人物照片,也许在图中把人脸找出来不是什么难事,所以你也许不需要太多数据去找到人脸,或者至少你可以找到足够数据去解决这个问题。

相对来说,把手的X射线照片直接映射到孩子的年龄,直接去找这种函数,直觉上似乎是更为复杂的问题。如果你用纯端到端方法,需要很多数据去学习。

再讲一个更复杂的例子,你可能知道我一直在花时间帮忙主攻无人驾驶技术的公司drive.ai,无人驾驶技术的发展其实让我相当激动,你怎么造出一辆自己能行驶的车呢?

好,这里你可以做一件事,这不是端到端的深度学习方法,你可以把你车前方的雷达、激光雷达或者其他传感器的读数看成是输入图像 image。但是为了说明起来简单,我们就说拍一张车前方或者周围的照片,然后驾驶要安全的话,你必须能检测到附近的车 cars,你也需要检测到行人 pedestrians和其他的东西,当然,我们这里提供的是高度简化的例子。

弄清楚其他车和形如的位置之后,你就需要计划你自己的路线 route。换句话说,当你看到其他车子在哪,行人在哪里,你需要决定如何摆方向盘在接下来的几秒钟内引导车子的路径。
在这里插入图片描述

如果你决定了要走特定的路径,例如上图右边道路的俯视图,包含了你的车和你决定了要走的那条路线,那么你就需要摆动你的方向盘到合适的角度 steering,还要发出合适的加速和制动指令。

所以从传感器或图像输入到检测行人和车辆,DL可以做得很好,但一旦知道其他车辆和行人的位置或者动向,选择一条车要走的路,这通常用的不是DL,而是用所谓的运动规划软件完成的。

如果你学过机器人课程,你一定知道运动规划,决定了你的车子要走的路径之后,还会有一些其他算法,我们说这是一个控制算法,可以产生精确的决策(motion planning),确定(control)方向盘应该精确地转多少度,油门或刹车上应该用多少力。
在这里插入图片描述

这个例子就表明了,如果你想使用ML或者DL来学习某些单独的组件,当你应用监督学习时,你应该仔细选择要学习的 x x x y y y映射类型,这取决于哪些任务你可以收集数据。

相比之下,谈论纯端到端深度学习方法是很激动人心的,你输入图像image,直接得出方向盘转角steering。但是就目前能收集到的数据而言,还有我们今天能够用NN学习的数据类型而言,这实际上不是最有希望的方法,或者说这个方法并不是团队想出的最好用的方法。

我认为这种纯粹的端到端深度学习方法,其实前景不如更复杂的多步方法。因为目前能收集到的数据,还有我们现在训练NN的能力是有局限的。

总结

端到端的DL,有时候效果拔群,但你也要注意应该在什么时候使用端到端深度学习。

最后,谢谢你,恭喜你坚持到现在,如果你学完了本课程《结构化ML项目》,那么我认为你已经变得更聪明,更具战略性,并能够做出更好的优先分配任务的决策,更好地推动你的ML项目,也许比很多ML工程师,还有和我在硅谷看到的研究人员都强。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值