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

news2024/11/26 22:40:57

目录

  • 开发机器学习系统的过程
  • 开发机器学习案例
    • 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. 下载一个预训练模型,并在不修改或重新训练的情况下使用它进行预测。
    请添加图片描述
    请添加图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

考勤机如何选购

考勤机如何选购 选购目的:为强化管理,保证公司考勤工作顺利开展,拟在我司采用指纹识别技术进行员工考勤,如此可有效提升工作效率,而指纹识别考勤技术又是最为便捷、可靠且非侵入性的考勤方式。 指纹考勤…

Python Django 实现教师、学生双端登录管理系统

文章目录 Python Django 实现教师、学生双端登录管理系统引言Django框架简介环境准备模型设计用户认证视图和模板URL路由前端设计测试和部署获取开源项目参考 Python Django 实现教师、学生双端登录管理系统 引言 在当今的教育环境中,数字化管理系统已成为必不可少…

Hi3861 OpenHarmony嵌入式应用入门--点灯

本篇实现对gpio的控制,通过控制输出进行gpio的点灯操作。 硬件 我们来操作IO2,控制绿色的灯。 软件 GPIO API API名称 说明 hi_u32 hi_gpio_deinit(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO…

一文教你使用sql快速查询1对多数据关系,生成一个多维数据!

本篇文章主要讲解:利用mysql的sql特性,实现对多表查询下,一个用户对应多条记录数据查询为一条数据并以列表形式显示的教程。 日期:2024年6月17日 作者:任聪聪 一、创建数据库表 创建test_a表,内容如下&…

Python 全栈系列250 数据流实践

说明 之前好几个企业都提过飞机在飞的时候换发动机的例子,来比喻变革是多么无奈和危险。还有的说法更直接:不变等死,变就是找死,总得选一样。 后来我自己的体会也差不多是这样,总有一些窘境让你抉择:是忽忽…

在Qt编写的exe或者dll中设置版本号

1.背景 在别人编写的exe或者动态库中,通过右键–》属性–》详细信息中,通常都有版本信息: 那我们自己编译出来的Qt程序,如何设置这些版本号呢? 2.解决方案 参考【.pro文件中设置版本等信息】,只要在工…

【完结】无代码网页爬虫软件——八爪鱼采集器入门基础教程

《八爪鱼采集器入门基础教程》大纲如下: 课程所提软件,八爪鱼采集器下载: 1.软件分享[耶]八爪鱼,爬取了几百条网站上的公开数据,不用学代码真的很方便。[得意]2.发现了一个很棒的软件,?不用学python也可…

【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用

接上文【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用_ueditor ruoyi vue后端配置项没有正常加载,上传插件不能正常使用!-CSDN博客 成功解决图片、视频上传问题后,当服务部署在公网时,会存在大文件无法正常上传的问题。 出现…

微软修复Wi-Fi驱动高危漏洞 影响Windows所有版本 可通过局域网发起攻击

微软修复 WiFi 驱动程序中的高危安全漏洞,该漏洞影响 Windows 所有版本,可以通过公共 WiFi 等发起攻击。如果攻击者能够接入到目标设备所处的网络中,则可以悄无声息完成攻击,不需要用户进行任何交互。 在本月例行安全更新中微软修…

比特币的共识协议

目录 前言 一、铸币交易 1.铸币权 2.铸币交易(coinbase tx) 3.输入和输出 二、小型的区块链 1.见下图所示 2.哈希指针 3.双花攻击 三、块头块身,全节点轻节点 1.块头(block head) 2.块身 3.全节点full node(fully validating node…

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(六)---- 初窥操作系统启动流程(xv6启动)

系列文章目录 操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建&#x…

数据库系统概论(个人笔记)(第四部分)

数据库系统概论(个人笔记) 文章目录 数据库系统概论(个人笔记)4、中间的SQL4.1 连接表达式4.2 视图4.3 事务4.4 完整性约束4.5 SQL数据类型和模式4.6 SQL中的索引定义4.7 授权 4、中间的SQL 4.1 连接表达式 Join Expressions Join…

10.无代码爬虫软件做网页数据抓取流程——工作流程设置与数据预览

首先,多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器版本区别的详情,请访问这篇帖子:https://blog.csdn.net/cctv1123/article/details/139581468 八爪鱼采集器免费版和个人版、团队版下…

视频监控平台:通过网络SDK对TCL网络摄像机进行PTZ控制 的源代码介绍及分享

目录 一、视频监控平台介绍 (一)概述 (二)视频接入能力介绍 (三)功能介绍 二、TCL网络摄像机 (一)360度全景自动旋转: (二)高清夜视和全彩…

五、路由协议

目录 一、为何划分子网? 二、静态路由 三、OSPF 3.1、OSPF原理 3.1.1、ospf四步过程 3.2、OSPF区域划分 3.2.1、为什么划区域? 3.2.2、划分规则 3.3、OSPF参数 3.4、五种报文 3.4.1、hello报文 3.4.2、DD报文 3.4.2、LSR、LSU、LSAck报文 3…

黄仁勋:下一波AI的浪潮是物理AI

B站:啥都会一点的研究生公众号:啥都会一点的研究生 最近AI圈又发生了啥? 快手视频生成大模型“可灵”开放邀测,效果对标 Sora 在OpenAl文生视频大模型Sora发布后,国内企业争相入局,快手视频生成大模型可…

MySQL之优化服务器设置和复制(一)

优化服务器设置 操作系统状态 CPU密集型的机器 CPU密集型服务器的vmstat输出通常在us列会有一个很高的值,报告了花费在非内核代码上的CPU时钟;也可能在sy列有很高的值,表示系统CPU利用率,超过20%就足以令人不安了。在大部分情况下&#xff…

pyqt 鼠绘椭圆 椭圆标注

目录 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json pyqt 画椭圆中心点固定,调整是,两端一起调整。 pyqt 椭圆标注 四个方向可以调整,调整时,另一端固定,只调整当前端,椭圆参数保存加载json import sys import json from …

React@16.x(32)useDebugValue

目录 1&#xff0c;介绍2&#xff0c;作用 1&#xff0c;介绍 从一个例子开始&#xff1a; export default function App() {const [n, setN] useState(0);const refH1 useRef();useEffect(() > {console.log("父组件");});return <h1 ref{refH1}>{n}&l…

C++语法02 输出语句与分隔

目录 标准输出语句 题目&#xff1a;小知的位置 小知的位置参考代码 如何输出算式的结果&#xff1f; 题目&#xff1a;难题 难题参考代码 如何分隔多个算式输出的内容&#xff1f; 题目&#xff1a;两道题目 两道题目参考代码 标准输出语句 标准输出指令&#xff1a…