吴恩达2022机器学习专项课程C2W3:2.26 机器学习发展历程

目录

  • 开发机器学习系统的过程
  • 开发机器学习案例
    • 1.问题描述
    • 2.创建监督学习算法
    • 3.解决问题
    • 4.小结
  • 误差分析
    • 1.概述
    • 2.误差分析解决之前的问题
    • 3.小结
  • 增加数据
    • 1.简述
    • 2.增加数据案例一
    • 3.增加数据案例二
    • 4.添加数据的技巧
    • 5.空白创建数据
    • 6.小结
  • 迁移学习
    • 1.简述
    • 2.为什么迁移学习有作用
    • 3.小结
  • 机器学习的整体步骤
  • 将模型部署到生产环境
  • 公平偏见与道德
    • 1.偏见
    • 2.不道德消极
    • 3.建议
    • 小结
  • 课后问题

开发机器学习系统的过程

机器学习发展的迭代循环:确定系统架构、选择模型和数据、设定超参数,然后实现和训练模型。初次训练通常效果不理想,因此需要进行诊断(如偏差和方差分析)并进行误差分析。根据诊断结果,调整模型结构、超参数或数据,重复这一循环,直到达到预期性能。
在这里插入图片描述

开发机器学习案例

1.问题描述

左边的例子展示了一个典型的垃圾邮件,其中包含像“劳力士手表”这样的内容。垃圾邮件发送者有时会故意拼错单词来迷惑识别器。右边是吴恩达发给他弟弟的正常邮件,关于一起过圣诞节的事情。那么,如何构建一个分类器来识别垃圾邮件和非垃圾邮件呢?
在这里插入图片描述

2.创建监督学习算法

输入特征x是电子邮件的特征,输出标签y是1或0,表示它是垃圾邮件或非垃圾邮件。这是一个文本分类的例子,通过分析电子邮件文本并将其归类为垃圾邮件或非垃圾邮件。

构建特征的一种方法是选择字典中最常用的一万个单词,并用这些单词来定义特征x_1到x_10,000。例如,对一封电子邮件,如果某个单词出现,则相应特征为1,否则为0。另一种方法是计算每个单词在电子邮件中出现的次数。

有了这些特征后,可以使用分类算法,如逻辑回归或神经网络,根据这些特征x来预测标签y。
在这里插入图片描述

3.解决问题

训练完初始模型后,如果效果不佳,你可能会有多种改进算法的想法。例如,可以尝试收集更多数据,如通过蜜罐项目获取垃圾邮件数据,或者开发更复杂的特征,如基于电子邮件路由信息或处理邮件正文中的拼写错误。

为了选择最有前景的改进方向,可以根据算法的表现来决定。如果算法有高偏差,收集更多数据可能效果不大;如果方差高,增加数据会有帮助。选择正确的方向能显著加速项目进展。
在这里插入图片描述

4.小结

在机器学习和开发的迭代循环中,你可能会有许多修改模型或数据的想法。不同的诊断方法可以指导你选择最有希望的架构。在前几个视频中,我们讨论了偏差和方差。在下个视频中,我将介绍误差分析过程,这是另一个关键方法,用于判断哪些架构选择可能有效。我们将以构建垃圾邮件分类器为例,探讨误差分析的应用。

误差分析

1.概述

方差偏差在第一位,误差分析在第二位。

在选择如何改进学习算法性能时,偏差和方差是最重要的概念,而误差分析则是其次。具体来说,假设你有500个交叉验证样本,算法错误分类了其中的100个。误差分析指的是手动检查这100个错误样本,找出常见的错误类型。例如,如果许多错误样本是医药垃圾邮件,你可以统计这些类型的错误数量,并决定是否针对这些错误进行优化。

通过误差分析,你可以发现某些类型的错误更普遍,从而决定优先解决这些问题。例如,如果故意拼写错误的影响较小,那么可能不需要优先解决。这个过程可以帮助你高效地选择改进方向,并避免在影响较小的问题上浪费时间。

最后,误差分析可以为你提供灵感,例如收集更多特定类型的数据或设计新的特征,从而改进算法性能。

在这里插入图片描述

2.误差分析解决之前的问题

回到这个列表,偏差方差分析可以告诉你收集更多数据是否有帮助。根据示例算法的误差分析,更复杂的邮件特征可能有些帮助,但不大,而更复杂的特征用于检测垃圾邮件或钓鱼邮件则帮助很大。检测拼写错误的效果相对较小。
在这里插入图片描述

3.小结

偏差方差诊断和误差分析对筛选和决定模型改进方向非常有帮助。但误差分析对人类擅长的问题更容易,例如识别垃圾邮件。而对于人类也不擅长的任务,如预测广告点击率,误差分析较难进行。但在适用的情况下,误差分析能显著帮助集中精力于更有前景的改进,节省大量时间。在下个视频中,将深入探讨如何高效地增加数据。

增加数据

1.简述

这里分享一些增加、收集甚至创建更多数据的技巧。每个机器学习应用可能需要不同的方法,因为不同问题有不同的数据需求。

通常,增加所有类型的数据既耗时又昂贵。相反,更有效的方法是根据误差分析的结果,重点增加那些算法表现不佳的数据类型。例如,如果误差分析显示医药垃圾邮件是大问题,则应集中精力获取更多这类数据。

另一种方法是数据增强,特别适用于图像和音频数据。通过对现有数据进行旋转、缩放、对比度调整等变换,生成新的训练样本。这可以显著增加训练集的大小,提高算法的性能。

总结来说,重点增加特定类型的数据或使用数据增强技术,可以更有效地提升算法性能。

在这里插入图片描述

2.增加数据案例一

一个更高级的数据增强示例是对字母A应用网格,并进行随机变形。通过扭曲网格,可以生成许多变形后的字母A,从而创建更丰富的字母A样本库。这种扭曲过程将一个图像样本转化为多个训练样本,帮助学习算法更加稳健地学习。
在这里插入图片描述

3.增加数据案例二

数据增强同样适用于语音识别。例如,在语音搜索应用中,可以将原始音频剪辑(如“今天的天气怎么样”)与嘈杂的背景音(如人群噪音或汽车噪音)混合,生成包含背景噪音的新音频剪辑。通过这种方式,可以将一个原始音频变成多个训练样本,如带有背景噪音或差的手机连接音频。这种技术对增加训练数据量、提高语音识别系统的准确性非常关键。
在这里插入图片描述

4.添加数据的技巧

进行数据增强时,所做的变换或扭曲应与测试集中的噪声或失真类型相似。例如,对字母A进行扭曲,或在音频中加入背景噪音或差的手机连接,这些都应与测试集中的情况相符。这些方法会有助于数据增强。而添加纯粹随机且无意义的噪声则通常没什么帮助,因为这类噪声在测试集中很少见。因此,数据增强应模拟测试集中可能出现的情况,以便算法在这些条件下表现良好。
在这里插入图片描述

5.空白创建数据

数据增强通过修改现有的训练样本来创建新的样本,而数据合成则是从零开始生成全新的样本。

例如,在图片光学字符识别(OCR)任务中,可以通过计算机文本编辑器使用不同字体、颜色和对比度生成合成数据。这些合成数据看起来与真实数据非常相似,可以用于训练OCR算法,从而显著提升算法性能。虽然编写生成真实感合成数据的代码需要花费大量时间,但它可以生成大量训练数据,对算法性能有巨大提升。数据合成主要用于计算机视觉任务,较少用于其他领域。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.小结

本节介绍了多种数据工程技术,用于改进机器学习系统中的数据处理。传统的模型中心方法主要关注改进算法或模型,而保持数据集不变。如今,由于现有算法(如线性回归、神经网络、决策树等)已经非常强大,采用数据中心方法可能更有效,即关注改进和增强数据。

数据中心方法包括:根据误差分析结果收集更多特定数据、使用数据增强生成更多图像或音频、通过数据合成创建新的训练样本。这些方法可以提高算法性能。

此外,对于数据稀缺的应用,可以使用迁移学习,从其他相关任务中获取数据来提升算法性能。迁移学习在某些情况下非常强大,下个视频将详细介绍其工作原理。
在这里插入图片描述

迁移学习

1.简述

迁移学习是一种在数据不足的情况下,通过利用其他任务的数据来提高当前任务性能的技术。

例如,假设你想要识别从0到9的手写数字,但没有足够多的这些手写数字的带标签数据,导致通过这个小数据集训练的神经网络性能不够好。这时可以使用迁移学习。比如我们找到一个使用一百万张图片和一千个分类的大数据集预训练好的神经网络,得到其各层参数。然后,我们将这个预训练模型的参数应用到原有的小数据集的神经网络中,将其输出层改为较小的输出层。最后,通过优化算法对新任务进行训练或微调,以提高模型的性能。

小数据集的神经网络有两种训练方式:只训练输出层参数或训练所有参数。迁移学习使得新模型从更好的初始参数开始,能够在小数据集上取得更好的效果。如果你的训练集很小,选项1可能效果更好;如果训练集稍大一些,选项2可能更好。

首先在大数据集上训练,然后在小数据集上微调参数,被称为监督预训练和微调。迁移学习的优势在于它能够利用其他研究者预训练好的神经网络,通过替换输出层并进行微调,快速实现高效的模型。
在这里插入图片描述

2.为什么迁移学习有作用

(1)概述
迁移学习有效的原因在于,通过训练神经网络识别多种不同的图像(如猫、狗、汽车和人),神经网络学会了检测通用的图像特征,如边缘、角落和基本形状。这些特征对其他计算机视觉任务(如识别手写数字)也非常有用,因此可以将这些学习到的参数应用到新任务中,提升其识别性能。
在这里插入图片描述
(2)注意事项
预训练的限制在于输入类型必须一致。对于计算机视觉任务,预训练和微调都需要在图像数据上进行。对于语音识别系统,需要在音频数据上预训练神经网络,再在自己的音频数据集上微调。不同类型的应用需要在相应类型的数据上预训练,例如文本数据的应用需要在文本数据上预训练并微调。

3.小结

迁移学习有两个步骤:第一步是下载在大数据集上预训练的神经网络,输入类型需与应用一致;第二步是在自己的数据上进一步训练或微调。使用预训练的神经网络可以在小数据集上取得不错的效果。

机器学习的整体步骤

机器学习项目的完整周期包括以下步骤:

  1. 确定项目范围:决定项目内容和目标。例如,进行语音识别以实现语音搜索。
  2. 数据收集:获取训练模型所需的数据,如音频和转录标签。
  3. 训练模型:使用收集的数据训练模型,并进行偏差方差或误差分析以改进模型。
  4. 循环改进:根据误差分析,回去收集更多数据并继续改进模型,直到模型表现良好。
  5. 部署模型:在生产环境中部署模型,让用户使用。
  6. 持续监控和维护:监控模型性能,维护和改进模型以应对性能下降。

通过这些步骤,确保模型在实际应用中表现稳定和高效。
在这里插入图片描述

将模型部署到生产环境

当你训练出高性能的机器学习模型(如语音识别),通常会将其部署到一个推理服务器上,通过API进行预测。当用户通过移动应用说话时,应用将音频传递给推理服务器,服务器返回语音转录结果。
实现这一过程可能需要编写相关代码,具体的软件工程量取决于应用需求。记录输入数据和预测结果对系统监控非常有用,可通过监控发现数据变化并重新训练和更新模型。

部署可能需要一些软件工程,对于小规模应用或在少数服务器上运行,需求较少。MLOps(机器学习运营)是一个新兴领域,涉及系统地构建、部署和维护机器学习系统,确保模型可靠、扩展性好、日志记录和监控完善,并能够及时更新模型。如果要为数百万人部署系统,需要高度优化的实现,以控制计算成本。训练高性能模型是关键,但部署时需要考虑和解决额外步骤。
在这里插入图片描述

公平偏见与道德

1.偏见

机器学习算法影响着数十亿人,构建这些系统时需要考虑公平和伦理问题。历史上出现了一些带有严重偏见的系统,如歧视女性的招聘工具和对深色皮肤个人不公平的人脸识别系统。这些系统不应该被推出。我们应避免构建和部署存在偏见的问题系统,并确保我们的算法不会强化负面刻板印象。这些措施有助于创建一个更公正和道德的机器学习环境。在这里插入图片描述

2.不道德消极

机器学习算法存在一些负面使用案例,如深度伪造视频、传播有害言论和生成虚假内容等,这些都具有不道德性。我们不应构建对社会有负面影响的系统。伦理问题非常复杂,没有简单的解决方案。我建议大家在工作中遵循一些一般性的指导和建议,以确保工作更少偏见、更公平和更有伦理。
在这里插入图片描述
在这里插入图片描述

3.建议

以下是一些建议,帮助你在部署可能造成危害的系统之前,使你的工作更公平、减少偏见和更具伦理:

  1. 组建多元化团队:组建一个多元化团队,特别是强调对弱势群体可能造成的潜在危害,进行头脑风暴。多元化不仅包括性别,还包括种族、文化等多方面。这有助于团队更好地识别潜在问题并在系统上线前解决。

  2. 文献搜索:查找行业或特定应用领域的标准和指南。例如,在金融行业,已经开始建立有关系统公平性和无偏见性的标准。这些标准可以指导你的工作。

  3. 系统审计:在部署前,审计系统以识别可能的危害。培训模型后,但在投入生产前,检查系统是否对某些群体(如特定性别或种族)存在偏见,并确保在部署前解决这些问题。

  4. 制定缓解计划:如果适用,制定一个缓解计划。一个简单的缓解计划是回滚到先前较为公平的系统。即使在部署后,也要持续监控可能的危害,以便在出现问题时能够快速执行缓解计划。例如,所有自动驾驶汽车团队在上路前都制定了应对事故的缓解计划,这样如果发生事故,可以立即执行计划,而不是在事后手忙脚乱地处理。

在这里插入图片描述

小结

机器学习中的伦理、公平和偏见问题需要认真对待,因为这些系统会影响很多人。不同项目的伦理影响可能不同,但所有从事机器学习工作的人都应努力发现和解决问题,避免之前的错误。最后,鼓励观看关于处理偏斜数据集的可选视频。

课后问题

问题:哪种方式是进行错误分析的方式?

选项:

  1. 计算测试误差 (J_{test})
  2. 收集额外的训练数据以帮助算法做得更好
  3. 计算训练误差 (J_{train})
  4. 手动检查模型错误分类的一部分训练示例,以识别共同的特征和趋势

请添加图片描述

答案:手动检查模型错误分类的一部分训练示例,以识别共同的特征和趋势

答案解释:通过识别相似类型的错误,你可以收集更多类似于这些错误分类示例的数据,从而改进模型在这些类型示例上的表现。


问题:我们有时会取一个现有的训练示例并对其进行修改(例如,通过略微旋转图像)以创建一个具有相同标签的新示例。这个过程叫什么?

选项:

  1. 数据增强
  2. 机器学习诊断
  3. 偏差/方差分析
  4. 错误分析
    请添加图片描述

答案:数据增强

答案解释:是的,修改现有数据(如图像或音频)称为数据增强。


问题:进行迁移学习的两种可能方法是什么?提示:四个选项中有两个是正确的。

选项:

  1. 你可以选择训练模型的所有参数,包括输出层以及早期层。
  2. 你可以选择只训练输出层的参数,并保持模型的其他参数固定。
  3. 给定数据集,先进行预训练,然后在相同数据集上进一步微调神经网络。
  4. 下载一个预训练模型,并在不修改或重新训练的情况下使用它进行预测。
    请添加图片描述
    请添加图片描述

答案:
你可以选择训练模型的所有参数,包括输出层以及早期层。
你可以选择只训练输出层的参数,并保持模型的其他参数固定。

答案解释:正确。训练模型的所有层可能有助于你在自己的训练集上训练模型的所有层。这可能需要更多时间,与你仅训练输出层的参数相比。正确。模型的早期层可能可以直接使用,因为它们正在识别与你的任务相关的低级特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/717716.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【设计模式-12】代理模式的代码实现及使用场景

 代理模式是一种应用很广发的结构性设计模式,它的设计初衷就是通过引入新的代理对象,在客户端和目标对象之间起到中介的作用,从而实现控制客户端对目标对象的访问,比如增强或者阉割某些能力。 1. 概述 代理模…

如何理解电流镜负载的差分对的增益

我们知道最普通的电阻负载的差分对的差分增益是-gmRD,如果我们不希望输出是双端的,而是希望单端输出,那么使用电阻负载的差分对会导致增益变为原先的一半,因此引入了电流镜负载的差分对,它可以在保证增益与原先相同的情…

一小时搞定JavaScript(1)——JS基础

前言,本篇文章是依据bilibili博主(波波酱老师)的学习笔记,波波酱老师讲的很好,很适合速成!!! 文章目录 1.基本语法1.1 JS语言的特点1.2 创建一个JS文件1.3 输入与输出1.4 变量1.4.1 命名规则1.4.2 变量声明数字类型字符串类型布尔类型未定义类型 1.4.3 类型转换隐式转换显示转…

数据可视化实验一:Panda数据处理及matplotlib绘图初步

目录​​​​​​​ 2024-6-17 一、请将所有含有发明家“吴峰”的发明专利的“申请日”打印出来。并将含有“吴峰”的所有发明专利条目保存到Excel中 1.1 代码实现 1.2 运行结果 二、读取文件创建城市、人口、性别比、城镇化率DataFrame对象,计算指标排名&…

嘴尚绝卤味:传统与创新的味蕾碰撞,尝鲜必备美食!

在当今的餐饮市场中,各式各样的美食层出不穷,让人目不暇接。而在这一片美食的海洋中,嘴尚绝卤味以其独特的魅力和口感,成功吸引了众多食客的目光。今天,就让我们一起来探索一下,嘴尚绝卤味究竟有何魔力&…

MongoDB~分片数据存储Chunk;其迁移原理、影响,以及避免手段

分片数据存储:Chunk存储 Chunk(块) 是 MongoDB 分片集群的一个核心概念,其本质上就是由一组 Document 组成的逻辑数据单元。每个 Chunk 包含一定范围片键的数据,互不相交且并集为全部数据。 分片集群不会记录每条数据…

Java多线程下载工具,多线程,多任务,断点续传,GUI

目录 一、题目要求 二、效果展示 三、功能实现 四、代码 一、题目要求 序号 功能名称 功能需求标识 简要描述 1 下载功能 Download 当用户输入一个下载链接后,能识别链接并开始多线程下载工作,包括线程监听、线程管理等。 2 续传功能 …

[面试题]Spring

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis Spring 是一个很庞大的技术体系,可以说包容一切&…

APP Android

APP Android 安卓源生应用程序 APP IOS-CSDN博客 05.04 06:11Testing

MySQL修改用户权限(宝塔)

在我们安装好的MySQL中,很可能对应某些操作时,不具备操作的权限,如下是解决这些问题的方法 我以宝塔创建数据库为例,创建完成后,以创建的用户名和密码登录 这里宝塔中容易发生问题的地方,登录不上去&#…

电离层对流层延迟解算

前言: 本章节代码均在Gitee中开源: 电离层对流层延迟解算https://gitee.com/Ehundred/navigation-engineering/tree/master/%E5%8D%AB%E6%98%9F%E5%AF%BC%E8%88%AA%E5%8E%9F%E7%90%86/%E7%94%B5%E7%A6%BB%E5%B1%82%E5%AF%B9%E6%B5%81%E5%B1%82%E8%AF%A…

Python学习笔记12:进阶篇(一),类的相关知识

前言 在讲类之前,我们简单介绍一些Python的知识。这些知识在入门篇没讲,想学Python的,基本都对Python有基础的了解,但是今天开始的进阶知识,会涉及到一些Python的特性,所以在这里介绍一下。 Python是一种高…

数据仓库与数据挖掘(期末复习)

数据仓库与数据挖掘(期末复习) ETL的含义Extract 、 Transformation、Load。 ODS的全称Operational Data Store。 DW全称 Data Warehourse DM全称是Data Mart 数据仓库数据抽取时所用到技术是增量、全量、定时、调度 STAGE层作用是提供业务系统数据…

HTC手机卷土重来,价格和配置给我看麻了

第一眼看到我是不敢相信的,HTC 竟然还活着。 提到 HTC,相信不少同学会发出「那是我在夕阳下奔跑并逝去的青春」这样的感叹吧。 曾经辉煌一时的手机大佬,市占率曾一度达到 15%。 璀璨就如同天边一闪而过的流星。关于它的风光地位,…

FinalShell 连接虚拟机超时,主机ping不通虚拟机,解决

出现问题: 连接主机...java.net.ConnectException: Connection timed out: connect 在排查错误时发现: 虚拟机内能互相ping通,虚拟机能ping通主机 但是主机的cmd命令ping不通虚拟机 问题原因: 虚拟机内能互相ping通&#xff0…

基于Java+Swing贪吃蛇小游戏(含课程报告)

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

计算机组成原理历年考研真题对应知识点(数制与编码)

目录 2.1数制与编码 2.1.1进位计数制及其相互转换 【命题追踪——采用二进制编码的原因(2018)】 【命题追踪——十进制小数转换为二进制小数(2021、2022)】 2.1.2 定点数的编码表示 【命题追踪——补码的表示范围(2010、2013、2014、2022)】 【命题追踪——补码和真值的相…

Debian/Ubuntu linux安装软件

1、官方软件商店安装 2、deb包安装 报错不是sudoers,首先将用户添加到sudo su -l adduser USERNAME sudo exit然后,退出桌面环境并再次登录。 您可以通过输入以下内容来检查上述过程是否成功: groups下载deb包 altshiftf4或右键打开命令行…

【第16章】Vue实战篇之跨域解决

文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…