吴恩达deeplearning.ai:机器学习的开发过程与优化方法

news2024/11/15 8:46:30

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
我想在接下来分析下开发机器学习系统的过程,这样当你自己动手时,能够做出更加正确的判断。

机器学习开发的迭代 Iterative loop of ML development

决定模型架构

第一步,要决定模型架构,这意味着你要选择正确的模型,正确的参数,也许超参数等等。在决定完这些后,就可以训练模型。正如在之前的博客之中说的那样,模型一般不会一上来就很理想。下一步就可以查看一些诊断,例如查看程序的偏差和方差(以及下一节中的错误分析),根据诊断的结果,你可以再次调整模型,例如调整正则化系数啊,扩大神经网络啊,添加删除数据啊,增加或者减去特征之类的,这样就形成了一个迭代的闭环:
在这里插入图片描述
让我们看看一个垃圾邮件分类器的示例:

垃圾邮件分类器

左边是垃圾邮件的示例,右边是正常邮件:
在这里插入图片描述
垃圾邮件中经常会拼错一些敏感词,从而使得垃圾邮件分类器出错,所以我们该如何构建分类器呢
一种方法是构建一个监督学习算法,其中输入特征x是是电子邮件的特征输出标签y是0or1,这取决于文章是否是垃圾邮件。
构造电子邮件特征的一种方法是取英语单词的前10,000个单词并使用它们构造特征x_1一直到x_10000,例如下图的邮件,我们的输入特征就是a,andrew,buy,deal,discount等是否出现,出现了就记为1,否则为0:
在这里插入图片描述
另一种方法是记录出现次数,而非单单的01:
在这里插入图片描述
之后你就开始训练模型。并且开始想方法提高模型性能,以下是一些方法:

  1. 获得更多数据
  2. 发展基于邮件地址的复杂的特征
  3. 发展更加复杂的读文件文本的功能
  4. 检测语法错误

选择正确的方法可以加速你的工作进度。例如,如果你的模型具有高偏差,那么方法一就不太合适,但如果具有高方差,那么就比较合适了。在开发算法时,可以发展很多不同的想法并应用,并不一定要拘束于特定的一些方面。

误差分析

在诊断并选择下一步如何修改模型这一方面,我认为最重要的是偏差方差分析,而第二重要的就是误差分析。让我们看看具体是什么:
假设你有500个交叉验证的示例,并且你的算法错误地分类了其中的100个。误差分析的意思仅仅就是手动地查看这些事例每个具体错在了什么地方,从而能够了解算法错在了什么地方。具体来说,一种经常的做法是从错误的示例中找出一组,并将其分组为共性的主题或者特征。
例如,你发现很多分错的例子是药品销售,那么你就可以手动地查找,并且发现有21篇是药品销售。或者你怀疑是因为有些邮件有故意拼错的单词导致无法识别,那么也可以计算下有多少篇是有拼写错误的,假设找到了三个,按照这个思路下来,你可能还会找到邮件地址异常的7篇,18篇试图窃取密码,还有那么5篇是通过发送图片来发送垃圾邮件的。
在这里插入图片描述
然后你就会得出结论,影响你算法准确度的主要是以下几类邮件:卖药的邮件,窃取密码的邮件。那么你就当然优先解决以上的这些问题。
另外要说明的是,以上的这些类别并非一定是相互独立的,其实很多是相互重叠的,即一个例子可以有以上的多个特征。
如果例子很多的话,你可能没法一次性查看所有的例子,可以采取随机抽查的方法。

下一步怎么做

接下来,你就可以针对某种类型的问题来专门修正的你的模型。例如你发现你的模型难以识别医药类广告,那么你就可以多给它喂医药类邮件的数据,让它对其更加敏感。或者你可以在你的词库中增加医药类的相关名词,等等。反正就是对症下药。因此诊断时除了观察偏差方差,记得还可以进行误差分析。
在这里插入图片描述
为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…

【uniapp】uniapp小程序中实现拍照同时打开闪光灯的功能,拍照闪光灯实现

一、需求前提 特殊场景中,需要拍照的同时打开闪光灯,(例如黑暗场景下的设备维护巡检功能)。 起初我是用的uviewui中的u-upload组件自带的拍照功能,但是这个不支持拍照时打开闪光灯,也不支持从通知栏中打开…

哈希表应用

例题 在这里使用一个简化版的问题进行分析:给定N个自然数,值域是,求出这N个自然数中共有多少个不同的自然数。 分析 如果值域是,那么可以利用之前介绍过的计数排序算法解决问题。定义一个的大数组a,每个位置a[x]所对…

vue 使用 PrintJs 实现打印pdf效果

一、print.js介绍 Print.js主要是为了帮助我们直接在应用程序中打印PDF文件,而无需离开界面,并且不使用嵌入。对于用户不需要打开或下载PDF文件的特殊情况,他们只需要打印它们。 例如,当用户请求打印在服务器端生成的报告时&…

Spring web MVC(入门)

1、什么是MVC(一种思想) Model View Controller : Model—模型 View—视图 Controller—控制器 2、Spring MVC是一种实现(我们现在学的是Spring web,Spring mvc过时了) View属于前端问题我们后端人员不必太过于关注…

Java基础 - 8 - 算法、正则表达式、异常

一. 算法 什么是算法? 解决某个实际问题的过程和方法 学习算法的技巧? 先搞清楚算法的流程,再直接去推敲如何写算法 1.1 排序算法 1.1.1 冒泡排序 每次从数组中找出最大值放在数组的后面去 public class demo {public static void main(S…

JVM——执行引擎

文章目录 1、概述2、计算机语言的发展史2.1、机器码2.2、汇编语言2.3、高级语言2.4、字节码 3、Java代码编译和执行过程4、解释器5、JIT编译器5.1、为什么HotSpot VM同时存在JIT编译器和解释器5.2、热点代码探测确定何时JIT5.3、设置执行模式5.4、C1编译器和C2编译器 6、AOT编译…

python实现桶排序

桶排序(Bucket Sort)是一种排序算法,它将待排序的元素分到有限数量的桶(buckets)中,然后分别对每个桶中的元素进行排序,最后按照顺序将所有的桶中的元素依次取出,即可得到有序序列。…

深入了解Kafka中Topic的神奇之处

欢迎来到我的博客,代码的世界里,每一行都是一个故事 深入了解Kafka中Topic的神奇之处 前言Topic的基本概念Kafka Topic 的定义:Kafka Topic 的基本原理:为何 Topic 是 Kafka 消息传递的核心组成部分: 创建和配置Topic创…

FairScale 库测试实验(一)-- 大模型训练基础之模型并行

DDP的分布式训练方法采用数据并行方式,相当于通过增大数据的batch来加快训练。但对于大模型(LLM)来说,DDP已经不适用了。因为LLMs的模型本身太大,一块GPU都放不下怎么可能去复制从而实现数据并行呢。所以LLM的训练采用…

Ansible常用模块详解

Ansible常用模块详解一、Ansible简介1、Ansible是什么?2、Ansible是怎么工作的?3、Ansible的特性 二、Ansible 环境安装部署三、Ansible 命令行模块1、command 模块2、shell 模块3、cron 模块4、user 模块5、group 模块6、copy 模块7、file 模块8、hostn…

阿里云服务器没有国外地域吗?

阿里云地域没有国外节点?有,阿里云服务器国外地域美国、日本、新加坡、韩国、英国及德国等,阿里云服务器地域遍布全球,共29个地域可选。如果您在购买阿里云服务器时,没有国外地域可选,那是因为活动上提供的…

基于SSM框架的婚庆平台设计与实现

目 录 摘 要 I Abstract II 引 言 1 1相关技术 3 1.1 SSM框架简介 3 1.2 MySQL数据库简介 3 1.3 MVC设计模式简介 3 1.4 本章小结 4 2系统分析 5 2.1功能需求 5 2.1.1 用户功能需求 5 2.1.2 管理员功能需求 6 2.2非功能需求 10 2.3本章小结 10 3系统设计 11 3.1总体设计 11 3.…

spark 实验二 RDD编程初级实践

目录 一. pyspark交互式编程示例(学生选课成绩统计) 该系总共有多少学生; 该系DataBase课程共有多少人选修; 各门课程的平均分是多少; 使用累加器计算共有多少人选了DataBase这门课。 二.编写独立应用程序实现数…

java Spring boot简述jetcache 并叙述后续文章安排

我们之前 讲了 Spring boot 整合 cache 使用 simple(默认) redis Ehcache memcached的几种方式 但是 始终有人觉得不够完善 提出了一些问题 例如 觉得 当前spring boot 对缓存过期的控制过于松散 不严谨 比较明显的体现就是 memcached过期时间在逻辑代码中控制 Ehcache的过期时…

spring boot 集成 mysql ,mybatisplus多数据源

1、需要的依赖&#xff0c;版本自行控制 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java<…

神经网络 梯度与神经元参数w、b关系;梯度与导数关系

参考&#xff1a;https://blog.csdn.net/weixin_44259490/article/details/90295146 概念 梯度与w的关系可以用梯度下降公式来表示&#xff1a;ww−α ∂ c o s t ∂ w \frac{\partial cost}{\partial w} ∂w∂cost​&#xff0c;其中w表示网络的权重&#xff0c; ∂ c o s t…

练习3-softmax分类(李沐函数简要解析)与d2l.train_ch3缺失的简单解决方式

环境为:练习1的环境 网址为:https://www.bilibili.com/video/BV1K64y1Q7wu/?spm_id_from333.1007.top_right_bar_window_history.content.click 代码简要解析 导入模块 导入PyTorch 导入Torch中的nn模块 导入d2l中torch模块 并命名为d2l import torch from torch import nn…

实现鼠标移动el-select下拉框的label上面显示出table悬浮窗

首先是对vue代码 实现思路就是在el-option里面放一个span来包裹el-popover&#xff0c;里面在放tabe实现悬浮表格 <el-form-item label"原理图编号"><el-select v-model"data.number" placeholder"请选择" clearable multiple collaps…

C语言第三十七弹---文件操作(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 文件操作 1、文件的随机读写 1.1、fseek 1.2、ftell 1.3、rewind 2、文件读取结束的判定 2.1、被错误使用的 feof 3、文件缓冲区 总结 1、文件的随机读写…