吴恩达深度学习课程三: 结构化机器学习项目 第二周:误差分析与学习方法(五)端到端学习

此分类用于记录吴恩达深度学习课程的学习笔记。

课程相关信息链接如下:

  1. 原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai
  2. github课程资料,含课件与笔记:吴恩达深度学习教学资料
  3. 课程配套练习(中英)与答案:吴恩达深度学习课后习题与答案

本篇为第三课的第二周内容,2.92.10的内容,也是本篇的理论部分的最后一篇。


本周为第三课的第二周内容,本周的内容关于在上周的基础上继续展开,并拓展介绍了几种"学习方法",可以简单分为误差分析和学习方法两大部分。

其中,对于后者的的理解可能存在一些难度。同样,我会更多地补充基础知识和实例来帮助理解。本篇的内容关于端到端学习,与其说它是一种学习方式,不如说它更像一种学习逻辑,并不难理解,因此本篇的篇幅也较短。

1.什么是端到端学习?

现在有这样一道数学题摆在我们面前:

\[5 \times 10 =? \]

相信你在看到题面的时候就已经得到答案了,但是别着急,我们来理顺一下得出答案的思路。

  1. 首先,我们要学习阿拉伯数字本身,学习个位数和十位数的区别。
  2. 然后,我们要学习加法的运算规则,他的表示符号。
  3. 在之后,我们在加法的基础上学习乘法和相关表示与计算。
  4. 最后,我们才得出了计算结果:50

虽然我们一下子就算出了答案,但我们的脑子里一定会有这样一步步的过程:理解符号 → 理解运算 → 理解组合 → 得到答案。

而现在,如果你没有任何数学基础,我只告诉你:

\[4 \times 5 =20,1\times 2 =2,3\times 4 =12······ \]

你解出这道题吗?答案很显然,我们最多蒙一蒙。
但是机器能。

在深度学习的世界里,有一种完全不同的思路。

这种思路不需要我们一层层地把规则写明,也不需要我们告诉模型"先学数字、再学加法、最后学乘法"。
它允许模型直接从输入跳到输出。
不需要人为地拆分中间步骤。

在这种方式下,我们会对模型说:

"这是输入 \(x\),这是输出 \(y\)。

中间怎么处理?你自己学。"

就像只给学生看大量的"题目 → 答案"

却完全不教任何运算规则。

模型必须自己推理出所有隐含的步骤 ,并在内部构建出自己的处理流程。

这种方式就是:端到端学习(End-to-End Learning)

我们来看看课程中一些实际应用的例子,看看端对端学习的适用情况和领域。

2. 端对端学习在什么时候适用?

我们举两个例子来说明这个问题。

2.1 门禁系统的面部识别

先来看看非端对端逻辑下的门禁系统要经过什么样的步骤:

一般来说,我们在这种系统录入的都是证件照,也就是较为精美的正面照。

但是,很显然,在真实扫脸中我们不会这么标准 ,这就像我们之前常常提到的分布不同问题,会很大程度影响模型的实用性。

因此,"检测人脸"这一步是我们根据正常逻辑加入的,是我们为了帮助提高拟合手动设计的步骤。

我们可以训练两个模型来实现这个系统:

  1. 从不同角度、距离的人脸检测模型。
  2. 检测到的人脸与数据库的对比识别模型。

当然,这只是一个示例,也有其他的方法和技术。

现在,再来看看端对端逻辑下的系统实现:

很显然,要想实现端对端学习,最重要的前提就是极大规模的数据集

而实际上,在门禁系统中,上面这种非端对端的学习方式反而更好 ,为什么?

我们来看看二者的对比,归根到底,还是数据问题。

因此,在数据量不足的情况下,传统非端对端的学习方式反而效果更好。

那端对端有什么较为突出的应用领域吗?有的兄弟,有的。

我们继续下一个例子。

2.2 语言翻译

如果我们人工把中文翻译成英文,你在脑海可能会一个个拼出每个字对应的英文单词再组合。

为什么说在这个领域端对端学习更好,很简单,数据容易获取
你在翻译软件输入一句中文并翻译成英文,好了,现在你已经得到一个样本和其相应的标签了。

这样,模型可能不理解单个英文字母是什么,不理解具体的语言逻辑,但是它就是可以通过自己的学习方式进行翻译。

显然,这得益于海量的数据支持。

3. 端对端学习的优缺?

端到端学习听起来很"酷",直接输入 \(x\),直接输出 \(y\),就像魔法一样。但任何技术都有两面,端到端学习也一样。

最后我们通过对比来看看它的优缺点,也当作是对它的总结。

项目 端到端学习(End-to-End) 传统分步骤方法(Pipeline)
设计复杂度 结构简单,不需要人为拆分步骤 需要人工划分多步骤、设计特征
对数据的依赖 极强,需要海量数据 数据需求较少,模块可分开训练
整体性能 可达到更好的"全局最优" 可能受制于每个子模块的局部最优
可解释性 差,内部逻辑是黑箱 好,每个步骤都可观察、可调试
调试难度 高,出错很难定位 低,可逐个模块定位问题
鲁棒性(分布变化) 容易受到数据分布偏差影响 更稳,因为每步可强制规则约束
适用场景 翻译、语音识别等"数据巨大"的任务 医疗影像、人脸识别等数据有限任务
相关推荐
寻星探路1 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
聆风吟º3 小时前
CANN runtime 全链路拆解:AI 异构计算运行时的任务管理与功能适配技术路径
人工智能·深度学习·神经网络·cann
User_芊芊君子3 小时前
CANN大模型推理加速引擎ascend-transformer-boost深度解析:毫秒级响应的Transformer优化方案
人工智能·深度学习·transformer
智驱力人工智能4 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
人工不智能5774 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
h64648564h4 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
心疼你的一切4 小时前
解密CANN仓库:AIGC的算力底座、关键应用与API实战解析
数据仓库·深度学习·aigc·cann
学电子她就能回来吗6 小时前
深度学习速成:损失函数与反向传播
人工智能·深度学习·学习·计算机视觉·github
Coder_Boy_7 小时前
TensorFlow小白科普
人工智能·深度学习·tensorflow·neo4j
大模型玩家七七7 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习