2022吴恩达机器学习第2课week3

2023-10-25 19:30

本文主要是介绍2022吴恩达机器学习第2课week3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2022吴恩达机器学习课程学习笔记(第二课第三周)

  • 1-1 决定下一步做什么
  • 1-2 模型评估
  • 1-3 模型选择&交叉验证测试集的训练方法
  • 2-1 通过方差与偏差进行诊断
  • 2-2 正则化、偏差、方差
  • 2-3 制定一个用于性能评估的基准
  • 2-4 学习曲线
  • 2-5 (修订)决定下一步做什么
  • 2-6 方差与偏差
  • 3-1 机器学习开发的迭代
  • 3-2 误差分析
  • 3-3 添加更多数据
    • 添加数据的类型
    • 数据增强
    • 数据合成
  • 3-4 迁移学习-使用其他任务中的数据
    • 迁移学习原理
    • 迁移学习有效的原因
  • 3-5 机器学习项目的完整周期
  • 3-6 公平、偏见与伦理
  • 4-1 倾斜数据集的误差指标
  • 4-2 精确率与召回率的权衡

1-1 决定下一步做什么

本周将分享一些关于如何在机器学习项目中决定下一步该做什么的实用建议。
有效构建机器学习算法的关键在于找到一种对于在哪里投入时间做出正确选择的办法。比如诊断花很长时间收集数据集是否起作用。

在这里插入图片描述

1-2 模型评估

你已经有了一个模型,怎么评估模型的性能。
当一个模型拥有两个参数以上时,绘制f变得比较困难,所以需要一个系统的方法来评估。
我们将数据集分成训练集和测试集两个子集,在训练集上训练模型、参数,在测试集上测试性能。
在这里插入图片描述
这是具有平方误差成本的回归模型。
在这里插入图片描述
通过最小化成本函数来寻找参数w,b。
J t e s t J_{test} Jtest 衡量模型在测试集上的性能。
J t r a i n J_{train} Jtrain 衡量模型在训练集上的性能。
在这里插入图片描述
在这里插入图片描述
在使用了逻辑回归的分类算法中,以上可以用来计算在训练集或者测试集上分类错误的比例。

1-3 模型选择&交叉验证测试集的训练方法

为了更好地拟合数据,我们可能会使用额外的参数d,发现d=5时的 J t e s t J_{test} Jtest最小,当我们想估计这个模型表现如何时,可以之间报告 J t e s t J_{test} Jtest
但这个过程有一个缺陷就是 J t e s t J_{test} Jtest是泛化误差的乐观估计(低于实际的泛化误差)。
可以类比到使用训练集训练 w 和 b 会使 Jtrain 成为泛化误差的一个过度乐观估计,使用测试集训练 d(多项式次数) 也会使 Jtest 成为泛化误差的乐观估计。
在这里插入图片描述
所以,我们将数据集分为训练集、交叉验证集、测试集。
交叉验证集用于检查不同模型的有效性和真实性,也叫做验证集、开发集。
在这里插入图片描述
所以我们选择合适模型的方法是:使用训练集拟合参数,使用交叉验证集选择模型,使用测试集估计泛化误差。由于在训练和选择模型(决策)时完全不使用测试集,而仅将测试集用于评估,这保证化误差不是乐观估计。
在这里插入图片描述
交叉验证方法也可以用于神经网络模型。
在这里插入图片描述

2-1 通过方差与偏差进行诊断

我们在之前学习的,欠拟合也叫高偏差;过拟合也叫高方差。
不通过作图,我们也可以通过计算 J t r a i n J_{train} Jtrain J c v J_{cv} Jcv 来判断模型是否具有高偏差或者高方差。
随着多项式次数的增加,显示发生欠拟合、然后是恰好拟合、最后发生过拟合, J t r a i n J_{train} Jtrain越来越低, J c v J_{cv} Jcv 先降低后升高。
在这里插入图片描述
在这里插入图片描述

综上,诊断学习算法的偏差和方差的方法:

  • 如果 J t r a i n J_{train} Jtrain 很高,则具有高偏差(欠拟合)。
  • 如果 J c v J_{cv} Jcv 远高于 J t r a i n J_{train} Jtrain ,则具有高方差(过拟合)。
  • 如果 J t r a i n J_{train} Jtrain 很高,并且 J c v J_{cv} Jcv 远高于 J t r a i n J_{train} Jtrain,则同时具有高偏差和高方差。

对于部分数据发生过拟合,对于部分数据发生欠拟合时,会出现同时具有高偏差和高方差的情况(可能会出现在神经网络中,而一般不会出现在线性回归中)。

2-2 正则化、偏差、方差

和选择合适的d值类似,通过试验不同的 λ λ λ选择最小的 J c v J_{cv} Jcv,并报告相应的 J t e s t J_{test} Jtest作为泛化误差。
在这里插入图片描述
λ 很大时,代价函数会过于注重减小参数的值,极端情况参数如 1000,发生欠拟合;
λ 很小时,代价函数会过于注重拟合数据,极端情况 λ 为 0,发生过拟合。
在这里插入图片描述
以 λ 为自变量和以 d 为自变量时对应的 J t r a i n J_{train} Jtrain J c v J_{cv} Jcv 图像是非严格镜像的,因为 λ 较小时和 d 较大时 对应的是过拟合(高方差),相反,λ 较大和 d 较小时对应的是欠拟合(高偏差)。

2-3 制定一个用于性能评估的基准

当使用非结构化数据时,通常人类水平的表现可以作为一个很好的基准,有时也可以将经验水平作为基准。
以语音识别为例看看学习算法是否具有高偏差或高方差,此时训练误差意味着音频中没有被正确识别的音频百分比。
J t r a i n J_{train} Jtrain = 10.8% 意味着训练集中有 89.2% 的音频被正确识别。
直观上看来,训练集误差和交叉验证集误差都很高,但事实上我们还有另一项有用的标准,人类表现性能,即人类识别的正确率,训练误差仅比人类识别误差高 0.2%,而交叉验证误差比训练误差高 4.0%,因此可以看出此模型具有高方差问题而不是高偏差问题。

在这里插入图片描述
当判断训练误差是否高时,通常建立一个性能评估基准。

  • 前两个数据之间的差距决定了是否存在高偏差问题
  • 后两个数据之间的差距决定了是否存在高方差问题

2-4 学习曲线

学习曲线是一种学习算法性能和训练集大小之间的函数。
通常情况下,随着数据量的增多,因为模型更强大了,所以交叉验证误差随之下降;
而训练误差会上升,因为数据越多,模型很难完美的契合每个数据;
但是训练误差会低于交叉验证误差,因为我们拟合数据的时候是使用训练集数据,并希望其误差最小。
当学习算法具有高偏差(欠拟合)时,增加数据量不会降低训练误差(如下),问题可能出在模型本身。
在这里插入图片描述
当学习算法具有高方差(过拟合)时,增加数据量会有所帮助。
在这里插入图片描述
综上,当我们发现模型性能没有达到我们的预期时,不要盲目地增加数据量,要看看问题出现在了哪里,才能有效地解决。

2-5 (修订)决定下一步做什么

如果发现你的算法具有很高的方差,解决方法是:

  • 获得更多的训练数据。
  • 简化模型(获得更小的特征集或者增加正则化参数 λ)
    如果发现你的算法具有很高的偏差,解决办法是:
  • 使模型更强大(获得更大的特征集或者减小正则化参数 λ)
    在这里插入图片描述
    另外,不要为了获得更小的偏差而随意降低训练集的大小,这样虽然会减少训练误差,但会恶化交叉验证误差和算法性能。

2-6 方差与偏差

神经网络出现之前,机器学习工程师必须在偏差和方差之间权衡,即平衡多项式次数的复杂性或者正则化参数 λ 以使偏差和方差不会太高。
而神经网络让我们摆脱了必须权衡偏差与方差的困境。
在这里插入图片描述
当神经网络足够大时,只要数据集不是特别大,几乎总能适应训练集,唯一不足是会使速度减慢。

  • 当模型在训练集上表现不好时,即高偏差问题,则需要使用更大的神经网络,直至在训练集上表现良好。
  • 当在交叉验证集上表现不好时,即高方差问题,则需获取更多的数据并重新训练。

但这个方法也有局限性,训练更大的神经网络虽然会减少偏差,但是也会使计算速度变慢,而且有时我们无法得到更多的数据。
事实证明,一个具有良好正则化的大型神经网络通常要比较小的网络做得更好。
总体来说,神经网络的出现使人们专注于解决高偏差以外的其它问题,至少在大型神经网络上如此。

3-1 机器学习开发的迭代

在这里插入图片描述

  1. 选择模型整体架构,包括使用哪种机器学习模型,使用哪些数据,超参数等。
  2. 实施和训练模型。
  3. 诊断。当上个步骤训练的模型性能达不到我们的预期,我们可以查看和分析一些诊断数据,及误差分析,并做出决策(增大模型,修改正则化参数,增大数据量,添加或减少特征量,等),并使用新的架构重新迭代,知道达到预期的目标。
  4. 以建立垃圾邮件分类系统为例,讲述开发过程。

3-2 误差分析

错误分析是指手动查看出现错误的样例,并试图深入了解算法出错的地方,一般是按照共同的属性将他们分组。
在这里插入图片描述
此时我们会发现什么问题是重要的,什么问题是相对次要的。
而当我们拥有一个很大的数据集时,通常是选择一部分数据进行分析,并选择最需要解决的问题和数据,进行模型的优化。
误差分析的一个限制是,通常解决人类擅长的问题,比如识别单词,而在人类不擅长的问题上,比如预测人类会点击哪个广告,误差分析通常也解决不了。

3-3 添加更多数据

添加数据的类型

当我们在训练机器学习算法时,我们总是希望拥有更多的数据。因此,有时我们想获得更多所有类型的数据,但是有时候既慢又贵,此时我们专注于添加对我们的分析更有帮助的数据会更高效。
也就是说,如果我们有办法添加更多的各种类型的数据,那是最好,否则,如果错误分析表明在某些问题上我们的算法性能非常差,我们就专注于获取这部分数据可能会更有效。

数据增强

利用现有的训练样例创建一个新的训练样例。
可能通过旋转、缩放、改变对比度、镜像等方式,也可以通过引入网格进行随机扭曲。
在这里插入图片描述
数据增强也适用于语音识别。
在这里插入图片描述
数据增强的一个技巧是对数据所做的更改或扭曲,应该代表测试集中的噪声类型;而对于数据纯粹随机无意义的噪声通常没有多大帮助。
在这里插入图片描述

数据合成

不是通过修改现有的示例,而是从头构建全新的示例
以 photo OCR (自动让计算机读取图像中显示的文本)为例,用电脑生成的图片看起来也很逼真。
数据合成多数用于计算机视觉,而较少用于其他应用程序。
在这里插入图片描述
机器学习在过去的几十年发展中,大多数机器学习研究人员的注意力都集中在以传统的模型为中心,也就是说他们下载固定的数据集,并专注于改进算法或模型。
在这里插入图片描述
而今天很多算法已经非常好了,并且适用于许多应用程序,因此,有时花更多时间采用以数据为中心的算法会更有成效。
对于没有那么多的数据的程序,迁移学习技术可能会是模型性能大大提升,关键思想是从完全不同或不相关的项目中获得数据。

3-4 迁移学习-使用其他任务中的数据

迁移学习原理

假设我们想识别手写数字,但没有那么多的数据,但是我们发现了一个非常大的数据集(小猫,小狗,人,汽车,等),我们就可以首先在这个大的数据集上训练一个神经网络,然后复制这个神经网络及其参数,但是要替换输出层。
在这里插入图片描述
也就是说,在迁移学习中,我们使用除输出层外的所有层的参数作为新神经网络参数的初始化,然后运行优化算法,有两种方法可以训练这个神经网络的参数。

  • 保持输出层以前的参数不变,只训练输出层参数
  • 以输出层以前的参数为起点,训练网络中的所有参数

第一种方法适用于非常非常小的数据集,第二种方法适用于稍大一些的数据集。
直觉上,我们是希望神经网络通过学习大的数据集学到了一些东西,然后稍微在新的数据集上一训练,就能起到较好的效果。

迁移学习有效的原因

在这里插入图片描述

第一层能够检测图像边缘,第二层能够检测图像角落,第三层能够检测图像曲线或者其他一些基本的形状。
通过学习大量数据,我们已经教会神经网络检测边缘、角落和一些基本形状,这些对于其他计算机视觉的任务也很有帮助。
在这里插入图片描述
总结一下,迁移学习分为两步:监督预训练微调
事实上,网络上有很多开源的预训练模型,我们只需要将其下载下来进行微调即可得到很好的效果。
预训练的一个限制就是预训练和微调步骤的图片尺寸必须相同。

3-5 机器学习项目的完整周期

以语音识别为例来说明机器学习项目的完整周期。
在这里插入图片描述
一个完整的机器学习周期包括:
-确定项目范围,即决定你想要做什么。

  • 收集数据。
  • 训练模型。
  • 部署在生产环境中,以供用户使用。
    在这里插入图片描述部署模型的一种常见方法就是采用你的机器学习模型并在服务器中实现它,移动应用程通过 API 调用,将音频传给服务器,服务器将翻译文本传回应用程序。
    根据应用规模,可能需要软件工程来确保我们的推理服务器能够不大量增加计算成本的条件下做出可靠和有效的预测,对大量用户的扩展,日志,系统监控,模型更新等。

3-6 公平、偏见与伦理

不要设计不公平、有偏见、违反伦理道德的机器学习算法,例如性别歧视、种族歧视等。

4-1 倾斜数据集的误差指标

偏斜数据集指的是正例和反例比例失衡的数据集。
只用准确率来衡量算法是否有效通常是不可靠的。
在这里插入图片描述
比如一种非常罕见的疾病,发病率仅有 0.5%,那如果我们让一个算法只输出 0(即没患病),那么准确率达到了 99.5%,但是很明显这不是一个更好的算法。相对于99%和99.2%,很难评价哪个算法更有效,因为后者至少可能预测到了疾病。
所以,一种常见的度量就是精准率召回率
在这里插入图片描述
给以上四个小方格命名:

  • 真阳性:实际患病,预测患病。
  • 假阳性:实际没患病,预测患病。
  • 假阴性:实际患病,预测没患病。
  • 真阴性:实际没患病,预测没患病。
    精准率:所有我们预测患病的群体中,真正患病的比例,
    真阳性 / (真阳性 + 假阳性)。
    召回率:所有真正患病的群体中,我们预测患病的比例,
    真阳性 /( 真阳性 + 假阴性)。
    使用这两个标准衡量算法时,如果算法只输出 0,那召回率将为 0,精准率为 0,这不是一个有效的算法。

4-2 精确率与召回率的权衡

高精准率意味着如果诊断出患有这种罕见疾病的患者,很可能就患病,即这是一个准确的诊断。
高召回率意味着如果有一个还有这种罕见病的患者,算法很可能会正确识别出他们确实患有这种病。
在这里插入图片描述
假设我们使用逻辑回归算法,当提高阈值时,精确率提高,召回率降低;降低阈值时,精确率降低,召回率提高。(根据实际情况调整阈值)
根据不同的阈值我们可以画出精准率和召回率曲线。
除了手动选择阈值以外,我们话可以定义一个指标,F1 分数
在这里插入图片描述

F1 分数是一种调和平均分数的计算方法,它更关注较低的分数。

这篇关于2022吴恩达机器学习第2课week3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/284732

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件