吴恩达deeplearning.ai:通过偏差与方差进行诊断

news2024/12/27 1:08:49

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏

文章目录

  • 偏差与方差
    • 高偏差
    • 高方差
    • 合适的模型
    • 理解偏差与方差
  • 总结


当你构建神经网络的时候,几乎没有人能够在一开始就将神经系统构建得十分完美。因此构建神经网络最重要的是直到你下一步需要做什么来提高你模型的表现。其中,通过查看**偏差(bias)方差(variance)**就是一种很好的手段。让我们看看该怎么做。

偏差与方差

在这个专栏开始的章节中,我们曾经在房价预测的例子中使用线性拟合,但效果不好,我们称这个算法有很高的偏差(High Bias),即欠拟合(underfit)。之后我们也用过四阶多项式来进行拟合,但是效果也不好,我们称这种算法有很高的方差(High variance),即过拟合(overfit)。最后我们发现,二阶多项式的拟合效果最佳,我们称之为Just Right。因为这是个单特征问题,我们可以通过画图来理解:
在这里插入图片描述
但是如果我们面对的是多特征模型,我们就不能通过画图来判断拟合程度是否良好了。因此,我们需要一种更加系统的,通用的方法来定义模型的拟合程度;我们可以在训练集和交叉验证集的性能来判断偏差与方差的大小。


高偏差

例如我们就看最左边这个图,如果我们想要计算 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 c v J_{cv} Jcv J t r a i n J_{train} Jtrain的公式一样,只是数据换成了一些新的数据点:
在这里插入图片描述
那么很显然,连训练集的代价函数都很高,那么交叉验证集也一样很高。
高偏差的函数的一个典型特征就是模型在训练集的效果都不是很好,即 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 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都比较小,那么这个模型就算是比较合适的了。
在这里插入图片描述

理解偏差与方差

我们再从另一个角度考虑下这个问题。在上文的例子之中,我们可以看出,随着特征维度d的升高,拟合程度逐渐上升, J t r a i n J_{train} Jtrain逐渐降低,而 J c v J_{cv} Jcv先下降后上升,我们可以画出d和j的关系图:
在这里插入图片描述
所以我们一般选择的点就是图中箭头的这种,从而能够使得J_train和J_cv都保持在一个较低的水准,从而提高了模型的效果。


另外补充一种更加糟糕的情况,那就是一看你发现训练集的代价函数很大,但然后你发现交叉验证集的代价函数甚至比训练集还要大。出现这种情况一种比较常见的原因是你的模型过于复杂,使得模型在前几个数据就已经过拟合了,无法拟合训练集后面的数据,因此导致了训练集的大偏差。而在交叉验证集由于数据全是全新的,对于前几个数据也无法很好地拟合,因此导致了比偏差还要大的方差。
在这里插入图片描述

总结

虽然上面讲了很多种不同的效果不佳,但是最重要的是要记住高偏差是在训练集的效果不好,高方差是在验证集的效果不好。观察偏差和方差是改善模型的一个重要手段。下节博客我们将详细讲讲正则化是如何影响方差与偏差的,这将帮助你更好地使用正则化的方法来改善模型。


为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

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

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

相关文章

BUGKU 头等舱

头等舱 打开环境,什么都没有,使用BP抓包,发送到重发器里,看响应得到flag

LeetCode 热题 100 | 图论(二)

目录 1 基础知识 1.1 什么是拓扑排序 1.2 如何进行拓扑排序 1.3 拓扑排序举例 2 207. 课程表 3 210. 课程表 II 菜鸟做题,语言是 C 1 基础知识 1.1 什么是拓扑排序 含义:根据节点之间的依赖关系来生成一个有序的序列。 应用&#xff1a…

详细了解C++中的namespace命名空间

键盘敲烂,月薪过万,同学们,加油呀! 目录 键盘敲烂,月薪过万,同学们,加油呀! 一、命名空间的理解 二、::作用域运算符 三、命名空间(namespace&…

勒索病毒最新变种.helper勒索病毒来袭,如何恢复受感染的数据?

尊敬的读者: 在数字时代,我们享受着科技带来的便利,但与此同时,网络安全威胁也在不断演变。其中,勒索病毒是一种极具破坏力的威胁,而.helper勒索病毒更是最新的变种之一。当你的文件被.helper勒索病毒加密…

SparkStreaming在实时处理的两个场景示例

简介 Spark Streaming是Apache Spark生态系统中的一个组件,用于实时流式数据处理。它提供了类似于Spark的API,使开发者可以使用相似的编程模型来处理实时数据流。 Spark Streaming的工作原理是将连续的数据流划分成小的批次,并将每个批次作…

redis04 发布与订阅

一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消 息。 redis客户端可以订阅任意数量的频道。 发布订阅流程图 发布和订阅实现 打开两个窗口订阅channel1频道,再打开一个窗口向chan…

ssh连接github报错:ssh_exchange_identification: Connection closed by remote host

报错截图:ssh_exchange_identification: Connection closed by remote host 配置步骤: 生成新的 SSH 密钥并将其添加到 ssh-agent - GitHub 文档 这个报错是我在寒武纪MLU270的dcoker环境中遇到的,但是在windows系统中可以通过SSH的方式git…

Excel 按奇数偶数列处理数据

目录 一. 需求背景1.1 获取偶数列的数据1.2 奇偶列数据互换 二. 解决方式2.1 为列添加奇偶辅助列2.2 通过公式将奇偶列互换 一. 需求背景 1.1 获取偶数列的数据 ⏹ 最近在整理歌单,发现部分歌曲没有歌词,于是打算自己制作一份。 从网上找到了歌词&…

从下一代车规MCU厘清存储器的发展(1)

目录 1.车规MCU制程工艺朝28nm进发 2.MCU存储器概述 3.MCU大厂的选择 3.1 瑞萨自研STT-MRAM 3.2 ST专注PCM 3.3 英飞凌和台积电联手RRAM 3.4 NXP如何计划eNVM 4.小结 1.车规MCU制程工艺朝28nm进发 随着英飞凌发布了关于AURIX TC4xx系列即将量产的新闻,国际…

RS编码的FPGA实现

RS编码,即Reed-solomon codes,是一类纠错能力很强的特殊的非二进制BCH码(BCH码是一种有限域中的线性分组码,具有纠正多个随机错误的能力)。对于任选正整数S可构造一个相应的码长为nqS-1的 q进制BCH码,而q作…

机器学习,数学统计常用数学符号

通用字体,符号规则 x x x 标量 x \boldsymbol{x} x 向量 X \boldsymbol{X} X 随机向量、矩阵 χ \chi \quad χ 集合 x ^ \hat{x} x^ 估计或近似值 x ∗ x^* x∗ 最优值 x ˉ \bar{x} xˉ 平均值 常见的数学符号 ∀ \forall \quad ∀ 对任意 ∃ \exists ∃ 存在 ∝…

青少年CTF擂台挑战赛 2024 #Round 1 Web方向题解 WP 全

EasyMD5 题目描述:php没有难题 考点总结:脑洞题目,不如我出(狗头 只允许两个都上传pdf文件。 文件还不能太大了。burp多次发包发现要求两个pdf内容不一样 不一样时候,提示我们MD5碰撞。 科学计数法绕过 PHP的后门 …

快递平台独立版小程序源码|带cps推广营销流量主+前端

源码介绍: 快递代发快递代寄寄件小程序可以对接易达云洋一级总代 快递小程序,接入云洋/易达物流接口,支持选择快递公司,三通一达,极兔,德邦等,功能成熟 如何收益: 1.对接第三方平台成本大约4元…

vscode如何远程到linux python venv虚拟环境开发?(python虚拟环境、vscode远程开发、vscode远程连接)

文章目录 1. 安装VSCode2. 安装扩展插件3. 配置SSH连接4. 输入用户名和密码5. 打开远程文件夹6. 创建/选择Python虚拟环境7. 安装Python插件 Visual Studio Code (VSCode) 提供了一种称为 Remote Development 的功能,允许用户在远程系统、容器或甚至 Windows 子系统…

Linux:kubernetes(k8s)node节点加入master主节点(3)

Linux:kubernetes(k8s)搭建mater节点(kubeadm,kubectl,kubelet)-CSDN博客https://blog.csdn.net/w14768855/article/details/136415575?spm1001.2014.3001.5502 我在上一章部署好了主节点&…

MySQL 数据库表设计和优化

一、数据结构设计 正确的数据结构设计对数据库的性能是非常重要的。 在设计数据表时,尽量遵循一下几点: 将数据分解为合适的表,每个表都应该有清晰定义的目的,避免将过多的数据存储在单个表中。使用适当的数据类型来存储数据&…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:显隐控制)

控制组件是否可见。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 visibility visibility(value: Visibility) 控制组件的显隐。 卡片能力: 从API version 9开始,该接口支持在…

HarmonyOS Full SDK的安装

OpenHarmony的应用开发工具HUAWEI DevEco Studio现在随着OpenHarmony版本发布而发布,只能在版本发布说明中下载,例如最新版本的OpenHarmony 4.0 Release。对应的需要下载DevEco Studio 4.0 Release,如下图。 图片 下载Full SDK主要有两种方式,一种是通过DevEco Studio下载…

2024 年 5 大移动应用安全预测

2024 年已经到来,企业必须为接下来的事情做好准备。为未来做好准备需要回顾过去。企业可以从那里判断自己当前的状态,从而做出准确的预测。 移动应用程序安全仍然是企业关注的一个重要问题,特别是当消费者依赖应用程序来完成更重要的任务时。…

python3装饰器

装饰器 它允许你修改函数或类的行为,而不更改其源代码。实质上,装饰器是接受另一个函数作为参数并返回一个包装原始函数的新函数。这样,你可以在不修改原始函数的情况下,添加一些额外的功能或逻辑。 def time_cost(func):"…