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

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达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.mzph.cn/news/717997.shtml

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

相关文章

制作耳机壳的UV树脂和塑料材质哪一个成本更高一些?

总体来说,制作耳机壳的UV树脂的成本可能会略高于塑料材质。 原材料成本:UV树脂通常是通过复杂的合成过程制成的。这些过程不仅需要大量的能源投入,还需要较高水平的技术和设备支持,因此原材料成本较高。相比之下,塑料…

04-prometheus服务的动态发现

一、概述 目前,我们每增加一个被监控的节点,就需要修改prometheus的配置文件,然后重新加载prometheus服务,这种方式比较繁琐,每次新增、删除被监控节点都需要重新操作一遍,不适合生产环境的大规模监控架构&…

Go-zero中分布式事务的实现(DTM分布式事务管理器,在一个APi中如何调用两个不同服务的rpc层,并保证两个不同服务之间的业务逻辑同时成功)

涉及到的相关技术 1.DTM分布式事务管理器,解决跨数据库、跨服务、跨语言栈更新数据的一致性问题。 2.SAGA事务模式,SAGA事务模式是DTM中常用的一种模式,简单易上手.(当然还有其它更多的事务模式,这里采用的SAGA只不过是其中一种较为简单的方法) 3.Go-zero框架,ETCD服务注册... …

Windows 2012 设置 nginx 开机自启动(适用于windows2012/10)

Windows 2012 设置 nginx 开机自启动(适用于windows2012/10)https://www.cnblogs.com/xuegqcto/articles/7521483.html 在windows server 2012上安装nginx,同时配置开机自启动服务(推荐使用“Windows Service Wrapper”工具&…

【Linux】线程概念|线程理解|线程控制

文章目录 线程概念Linux中线程是否存在的讨论线程创建和线程控制线程的终止和等待(三种终止方式 pthread_join()的void**retval) 线程概念 线程就是进程内部的一个执行流,线程在进程内运行,线程在进程的地址空间内运行&#xff0…

LeetCode-第14题-最长公共前缀

1.题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 2.样例描述 3.思路描述 按字符串数组每个数组的长度,将字符串数组从小到大排序;他们的公共前缀一定小于或等于最长元素长度…

2024年智能驾驶年度策略:自动驾驶开始由创造型行业转向工程型行业

感知模块技术路径已趋于收敛,自动驾驶从创造型行业迈向工程型行业。在特斯拉的引领下,国内主机厂2022年以来纷纷跟随特斯拉相继提出“重感知、轻地图”技术方案,全球自动驾驶行业感知模块技术路径从百花齐放开始走向收敛。我们认为主机厂智能…

2023.3.3周报

目录 摘要 一、文献阅读 1、题目 2、摘要 3、模型架构 4、文献解读 一、Introduction 二、实验 三、结论 二、PINN 一、PINN比传统数值方法有哪些优势 二、PINN方法 三、正问题与反问题 三、PINN实验 一、数学方程 二、模型搭建 总结 摘要 本周我阅读了一篇…

Postman上传文件的操作方法

前言 调用某个接口,测试上传文件功能。一时间不知如何上传文件,本文做个操作记录,期望与你有益。 步骤一、设置Headers key:Content-Type value:multipart/form-data 步骤二、设置Body 选择form-data key:file下拉框选择file类型value&…

STM32(8)NVIC编程

中断源由部分片上外设产生 在misc.h中找,杂项 配置NVIC GPIO和AFIO不能产生中断源,但能通过EXTI,由EXTI产生中断源 NVIC不需要开启时钟,因为NVIC模块位于内核内部,芯片一上电就能工作。 中断响应函数 中断向量表在启…

Java:JVM基础

文章目录 参考JVM内存区域程序计数器虚拟机栈本地方法栈堆方法区符号引用与直接引用运行时常量池字符串常量池直接内存 参考 JavaGuide JVM内存区域 程序计数器 程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器,各线程…

Unity 常用的4种灯光、制作镜子、灯光的调用修改数值、

创建灯光时,一般用4种:定向光、点光源、聚光、区域光、 定向光:太阳 点光源:灯泡 聚光灯:手电筒 区域光:烘焙-贴图 灯光选择已烘焙 需要先选择被烘焙的物体,然后再选择Contribute GI 等待进…

java中的set

Set Set集合概述和特点 不可以存储重复元素 没有索引,不能使用普通for循环遍历 哈希值 哈希值简介 是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值 如何获取哈希值 Object类中的public int hashCode():返回对象的哈希码值。 哈希值的特点 同一个…

分布式ID生成算法|雪花算法 Snowflake | Go实现

写在前面 在分布式领域中,不可避免的需要生成一个全局唯一ID。而在近几年的发展中有许多分布式ID生成算法,比较经典的就是 Twitter 的雪花算法(Snowflake Algorithm)。当然国内也有美团的基于snowflake改进的Leaf算法。那么今天我们就来介绍一下雪花算法…

计算机视觉基础知识(二)---数字图像

像素 像素是分辨率的单位;构成位图图像的最基本单元;每个像素都有自己的颜色; 图像分辨率 单位英寸内的像素点数;单位为PPI(Pixels Per Inch),为像素每英寸;PPI表示每英寸对角线上所拥有的像素数目:,x:长度像素数目,y:宽度像素数目,Z:屏幕大小;屏幕尺寸(大小)指的是对角线长…

springer模板参考文献不显示

Spring期刊模板网站,我的问题是23年12月的版本 https://www.springernature.com/gp/authors/campaigns/latex-author-support/see-where-our-services-will-take-you/18782940 参考文献显示问好,在sn-article.tex文件中,这个sn-mathphys-num…

数据结构c版(3)——排序算法

本章我们来学习一下数据结构的排序算法! 目录 1.排序的概念及其运用 1.1排序的概念 1.2 常见的排序算法 2.常见排序算法的实现 2.1 插入排序 2.1.1基本思想: 2.1.2直接插入排序: 2.1.3 希尔排序( 缩小增量排序 ) 2.2 选择排序 2.2…

rtt的io设备框架面向对象学习-io设备管理层

目录 1.设备基类2.rtt基类2.1 rtt基类定义2.2 对象容器定义2.3 rtt基类构造函数 3.io设备管理接口4.总结 这层我的理解就是rtt基类和设备基类所在,所以抽离出来好点,不然每个设备类都要重复它。 1.设备基类 /include/rtdef.h中定义了设备基类struct rt_…

STM32(11)按键产生中断

1.初始化IO引脚,设置模式,速度等 2.设置AFIO(配置EXTI的引脚映射),记得开启时钟 3.配置EXTI的通道(EXTI0和EXTI1) 4.配置NVIC 4.1 中断优先级分组 4.2 配置中断 5.编写中断响应函数 在中断向量…

蓝桥ACM培训-实战1

前言&#xff1a; 今天老师没讲课&#xff0c;只让我们做了一下几道题目。 正文&#xff1a; Problem:A 小蓝与操作序列&#xff1a; #include<bits/stdc.h> using namespace std; stack<int> a; int main(){int n,flag1,ans;string cz;cin>>n;for(int i1;…