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

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 分数是一种调和平均分数的计算方法,它更关注较低的分数。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于"吴恩达机器学习笔记2022"的问题,我没有在引用的内容中找到具体的相关信息。根据我所了解到的是,吴恩达是一位著名的机器学习专家,他在机器学习领域有很高的声誉,并且他的机器学习程非常受欢迎。他的机器学习程涵盖了从基础概念到实践应用的广泛内容,可以帮助学生建立起对机器学习的扎实理解并掌握相关的技能。如果您对具体的吴恩达机器学习笔记2022有进一步的问题, 请提供更多的细节,我将尽力为您解答。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【机器学习 吴恩达2022程笔记(持续更新)](https://blog.csdn.net/weixin_45837404/article/details/128709041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2022吴恩达机器学习程学习笔记(第一第一周)](https://blog.csdn.net/Yang0114_/article/details/127400605)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值