吴恩达deeplearning.ai:学习曲线决定下一步怎么做

news2024/9/23 11:46:13

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏
学习曲线是一种图形表示方法,用于展示模型在训练过程中的学习表现,即模型的训练集和验证集上的性能如何随着训练时间的增加而变化。可以帮助我们了解模型的学习进度。

文章目录

  • 学习曲线
    • 线性回归方程为例
      • 一个理想的学习曲线
      • 高偏差时的学习曲线
      • 高方差时的学习曲线
  • 决定下一步做什么
  • 大型神经网络带来对于偏方差的新解决方法
    • 解决神经网络过大问题
    • 代码实现


学习曲线

线性回归方程为例

我们以以下方程为例:
f w , b ( x ) = w 1 x + w 2 x 2 + b f_{w,b}(x)=w_1x+w_2x^2+b fw,b(x)=w1x+w2x2+b

一个理想的学习曲线

然后我们可以绘制其学习曲线,横坐标为训练集的大小(也可以理解为epoch的次数),纵坐标为training set以及validation set的价值函数值,你拟合出来的图像很有可能是这样子的:
在这里插入图片描述
可以看出,随着training set的增大, J t r a i n J_{train} Jtrain逐渐上升,而 J c v J_{cv} Jcv逐渐减小,这其实是容易理解的。当数据的量很少时,我们的拟合曲线很容易通过所有的点,此时training set上的损失值就比较小甚至为0,但是此时模型的泛化程度就肯定很低了,因此在cv set上的损失就会很大。而随着数据量的增加,拟合曲线就很难通过所有的点了,因此此时的 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二者的关系是不太变化的,但是于之前不同的是你的代价函数值会明显高于你的预期值(如图所示),而且随着数据量的增加,最后的代价函数值仍然处于一个稳定的范围,并不会随着数据量的增加而使得模型的效果变好。因此,如果你的模型出现了高偏差的情况,不要着急着去增加数据量,此时更好的选择应该是优化你的算法。

高方差时的学习曲线

如果在定义你的代价函数的时候, λ \lambda λ设置得过小,那么此时容易出现过拟合的现象,此时容易出现的情况就是低偏差高方差,难以泛化:
在这里插入图片描述
在这种情形之下,一开始的 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上升但是也不会超过人类水平很多。


总之,在训练神经模型的时候,绘制其学习曲线能够很好地帮助你直到下一步该如何调整模型,但是缺点就是你如果实验多个模型,对算力是个很大的考验,可能会非常昂贵。但即使你无法真实地绘制出这个曲线,你也可以利用这种思想在脑海中形成一个虚拟图像,帮助你提高模型效果。


决定下一步做什么

在了解了以上这些概念之后,我们在模型遇到困难时应该了解了一些努力的方向了。现在我们还是用以前的例子,看看如何综合利用之前的方法:
在这里插入图片描述
你已经完成了一个关于房价预测的线性回归模型,代价函数如上图,但是预测的时候出现了一些错误的预测,你下一步该做什么呢?
以下是一些常见的选择:
——获得更多的训练数据
——尝试使用更少的特征
——尝试获得更多的特征
——添加多项式特征
——尝试增大 λ \lambda λ
——尝试减小 λ \lambda λ
事实上,以上的六个方法都有可能减少偏差和方差,这取决于你具体的应用场景,我们来依次分析。
对于第一个方法:如果你的算法具有高方差,比如算法对于过小的数据集过度拟合,那么确实可以通过添加更多训练数据对模型提供很大的帮助,但是如果是高偏差,那么这个方法帮助就很小了。
对于第二个方法:如果你的算法具有很多的特征,那么这将赋予算法很高的灵活性,从而无法适应更加复杂的模型。如果你怀疑你的算法具有很多意义不明的特征或者冗余的特征,可以尝试采用这种方法。从而可以降低过拟合的发生(用于解决高方差的发生)。
对于第三个方法:这个就比较明显了,可以用于解决高偏差的问题。
对于第四个方法:如果你是线性函数,三线可以很好地拟合训练集,那么添加额外的多项式特征可以帮助你在训练集做得更好,用于解决高偏差问题。
对于第五个方法:以前的博客详细介绍过,用于解决高偏差问题。
对于第六个方法:同理,解决高方差问题。
总结如下:
在这里插入图片描述

大型神经网络带来对于偏方差的新解决方法

在上面我们提到了解决偏差与方差的一般方法,但是大型神经网络与大数据为解决此类问题提供了新的思路。
在神经网络出现之前,机器学习工程师经常需要考虑的问题就是偏差方差权衡,因为模型简单,就会导致高偏差,而模型复杂,就会导致高方差,两者是矛盾的,因此常常需要在二者之中找到一个平衡点:
在这里插入图片描述
但是,神经网络和大数据的出现改变了这种情况。
事实证明,在小中规模的数据集上训练大型神经网络是低偏差机器,即只要你的神经网络足够大,那么就一定可以很好地拟合数据,因此我们可以根据需要来增加或减小偏差方差(水多加面面多加水法):
在这里插入图片描述
即你先训练了一个神经网络,如果在训练集表现不佳,那么就构建更大的神经网络,如果在cv表现不佳,那么就加更多的数据,直到达到你需要的平衡。这种方法的缺点就是对算力的要求很高,因此随着近些年硬件的发展,神经网络才能获得足够的算力从而长足发展。

解决神经网络过大问题

如果你感觉你的神经网络过大了,担心会不会导致过度拟合,怎么办勒。
事实证明,精心选择的大型正则化网络往往与较小的神经网络一样好甚至更好。因此如果模型大了,那就好好正则化吧,这样也能够达到你想要的效果。另一种说法是,只要你好好正则化,大型的神经网络几乎不会比小模型差。当然大型神经网络要求的算力必然很高,会拖慢运算速度。

代码实现

之前我们创建神经网络的代码是这样的:

layer_1 = Dense(units=25, activation='relu')
layer_2 = Dense(units=15, activation='relu')
layer_1 = Dense(units=1, activation='sigmoid')
model = Sequential([layer_1, layer_2, layer_3])

如果要添加正则化项:

layer_1 = Dense(units=25, activation='relu', kernel_regularizer=L2(0.01))
layer_2 = Dense(units=15, activation='relu', kernel_regularizer=L2(0.01))
layer_1 = Dense(units=1, activation='sigmoid', kernel_regularizer=L2(0.01))
model = Sequential([layer_1, layer_2, layer_3])

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

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

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

相关文章

【大厂AI课学习笔记NO.65】机器学习框架和深度学习框架

笔记思维脑图已上传,访问我的主页可下载。 https://download.csdn.net/download/giszz/88868909 广义上,机器学习框架包含了深度学习框架。 本质上,机器学习框架涵盖分类、回归、聚类、异常检测和数据准备等各种学习方法。 深度学习框架涵…

足球青训俱乐部|基于Springboot的足球青训俱乐部管理系统设计与实现(源码+数据库+文档)

足球青训俱乐部管理系统目录 目录 基于Springboot的足球青训俱乐部管理系统设计与实现 一、前言 二、系统设计 1、系统架构设计 三、系统功能设计 1、管理员登录界面 2、公告信息管理界面 3、学员管理界面 4、商品信息管理界面 5、课程安排管理界面 四、数据库设计…

【MATLAB源码-第155期】基于matlab的OFDM系统多径信道LS,LMMSE,SVD三种估计算法的比较误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种高效的无线信号传输技术,广泛应用于现代通信系统,如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

程序环境和预处理(2)

文章目录 3.2.7 命名约定 3.3 #undef3.4 命令行定义3.5 条件编译3.6 文件包含3.6.1 头文件被包含的方式3.6.2 嵌套文件包含 4. 其他预处理指令 3.2.7 命名约定 一般来讲函数和宏的使用语法很相似,所以语言本身没法帮我们区分二者,那我们平时的一个习惯是…

一篇文章了解和使用Map和Set(HashMap/TreeMap/HashSet/TreeSet)

[本节目标] *掌握HashMap/TreeMap/HashSet/TreeSet的使用 *掌握了解HashSet和HashSet背后的哈希原理和简单的实现 1. 搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树: 1.若它的左子树不为空,则左子树上所有节点的值都…

微信小程序(四十九)拦截器处理登入失败情况

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.拦截器判断处理失败与成功的情况 2.使用拦截器拒绝失败的情况&#xff0c;使网络请求后面的逻辑步骤不会执行 源码&#xff1a; index.wxml <button type"primary" bind:tap"onSubmit"…

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示&#xff1a;具名数据源没有cuckoo*具名数据&#xff08;解决&#xff09; 今天咕咕更新打印模板的时候遇到的问题&#xff0c;就是在模版中配置了字段名&#xff0c;但是启动c#应用&#xff0c;后端发送json数据打印的时候c#报错提示&#xff0c;没有在…

【硬件工程师面经整理16_电路设计篇】

文章目录 1 画一个1.8V转3.3V升压电路。2 用NMOS设计一个双向电平转换电路&#xff0c;及原理3 三分频电路的设计 1 画一个1.8V转3.3V升压电路。 升压&#xff1a;1.8V升3.3V升压芯片方案&#xff0c;如PW5100&#xff0c;固定输出3V、3.3V&#xff0c;输入电压范围0.7V-5V&am…

202209 青少年软件编程等级考试Scratch二级真题

第 1 题 【 单选题 】 数字&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;6&#xff0c;9&#xff0c;13&#xff0c;19&#xff0c;28&#xff0c;...的下一项是多少&#xff1f; A&#xff1a;37 B&#xff1a;39 C&#xff1a;41 D&#xff1a;47 …

【JavaEE】_第一个SpringBoot项目

目录 1. 第一个SpringBoot项目 1.1 创建项目 1.2 加载依赖 1.3 运行启动类 1.4 创建一个简单类试运行 2. 关于SpringBoot项目的目录结构 3. 关于修改文件名 4. 关于启动日志 5. 关于访问出错 5.1 404 5.1.2 URL输入错误 5.1.2 注解错误 5.2 500 5.3 无法访问此网…

C语言基础(五)——结构体与C++引用

七、结构体与C引用 7.1 结构体的定义、初始化、结构体数组 C 语言提供结构体来管理不同类型的数据组合。通过将不同类型的数据组合成一个整体&#xff0c;方便引用 例如&#xff0c;一名学生有学号、姓 名、性别、年龄、地址等属性&#xff0c;如果针对学生的学号、姓名、年龄…

EasyExcel3.1.1版本上传文件忽略列头大小写

1、背景 项目中使用easyExcel3.1.1版本实现上传下载功能&#xff0c;相关数据DTO以 ExcelProperty(value "dealer_gssn_id") 形式规定其每一列的名称&#xff0c;这样的话easyExcel会完全匹配对应的列名&#xff0c;即用户上传文件时&#xff0c;列名写成Dealer_…

【Linux取经路】文件系统——inode与软硬链接

文章目录 一、前言二、认识硬件——磁盘2.1 磁盘的存储构成2.2 磁盘的逻辑抽象 三、操作系统对磁盘的使用3.1 再来理解创建文件3.2 再来理解删除文件3.3 再来理解目录 四、硬链接五、软链接六、结语 一、前言 在之前的【Linux取经路】文件系统之被打开的文件——文件描述符的引…

【学习心得】响应数据加密的原理与逆向思路

一、什么是响应数据加密&#xff1f; 响应数据加密是常见的反爬手段的一种&#xff0c;它是指服务器返回的不是明文数据&#xff0c;而是加密后的数据。这种密文数据可以被JS解密进而渲染在浏览器中让人们看到。 它的原理和过程图如下&#xff1a; 二、响应数据加密的逆向思路 …

go并发模式之----使用时顺序模式

常见模式之二&#xff1a;使用时顺序模式 定义 顾名思义&#xff0c;起初goroutine不管是怎么个先后顺序&#xff0c;等到要使用的时候&#xff0c;需要按照一定的顺序来&#xff0c;也被称为未来使用模式 使用场景 每个goroutine函数都比较独立&#xff0c;不可通过参数循环…

Linux入门到入土

Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX&#xff08;可移植操作系统接口&#xff09…

常用的电阻、电容的种类和应用场合?

电阻的 a.按阻值特性:固定电阻、可调电阻、特种电阻(敏感电阻)&#xff0c;不能调节的,我们称之为固定电阻,而可以调节的,我们称之为可调电阻.常见的例如收音机音量调节的,主要应用于电压分配的,我们称之为电位器. b.按制造材料:碳膜电阻、金属膜电阻、线绕电阻&#xff0c;捷…

ElasticSearch开篇

1.ElasticSearch简介 1.1 ElasticSearch&#xff08;简称ES&#xff09; Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。 1.2 ElasticSearch与Lucene的关…

从0开始回顾Mysql --- MySQL初体验

大白话从0开始回顾MySQL&#xff0c;去除了一些繁琐的操作的演示以及内容&#xff0c;如MySQL安装等&#xff0c;本篇文章适合复习MySQL语法&#xff0c;学习MySQL语句&#xff0c;对MySQL不太熟练的同学&#xff0c;希望对大家有一些帮助。 MySQL初体验 首先&#xff0c;我将…

Linux内核MMC框架

1.mmc的概念 1.MMC MultiMedia Card&#xff0c;多媒体存储卡&#xff0c; 但后续泛指一个接口协定&#xff08;一种卡式&#xff09;&#xff0c;能符合这接口的内存器都可称作mmc储存体,工作电压&#xff1a;高电压为2.7&#xff5e;3.6 V&#xff0c;低电压为1.65&#xf…