深度学习神经网络基础知识(一) 模型选择、欠拟合和过拟合

news2024/9/20 12:34:06

专栏:神经网络复现目录

深度学习神经网络基础知识(一)

本文讲述神经网络基础知识,具体细节讲述前向传播,反向传播和计算图,同时讲解神经网络优化方法:权重衰减,Dropout等方法,最后进行Kaggle实战,具体用一个预测房价的例子使用上述方法。

文章部分文字和代码来自《动手学深度学习》


文章目录

  • 深度学习神经网络基础知识(一)
    • 模型选择、欠拟合和过拟合
      • 1. 训练误差和泛化误差
      • 2. 模型选择
        • 2.1 验证集
        • 2.2 K折交叉验证
      • 3. 过拟合和欠拟合
        • 3.1 定义
        • 3.2 模型复杂度对拟合情况的影响
        • 3.3 解决方法
  • 指路第二节


模型选择、欠拟合和过拟合

1. 训练误差和泛化误差

训练误差(training error)指的是模型在训练数据集上表现出的误差。训练误差通常会随着训练次数的增加而逐渐降低,直到收敛到一个稳定的状态。

泛化误差(generalization error)指的是模型在测试数据集或真实环境中表现出的误差,也就是说,它是指模型对新数据的预测能力。泛化误差的大小取决于许多因素,包括模型的复杂度、训练数据集的大小和质量、模型选择和超参数调整等。泛化误差越小,说明模型的泛化能力越好,即对新数据的预测能力越强。

举个例子说明:
假设我们有一个分类问题,要用一个神经网络将一张图片分为猫和狗两类。我们有一组带标签的训练集来训练这个网络,训练集中有很多猫和狗的图片。
训练误差:在训练过程中,我们用训练集的一部分数据来训练网络,每一迭代会计算损失函数,并且通过反向传播算法更新网络参数,使得模型对训练集的数据拟合得更好。训练误差就是这个模型在训练集上的误差,即模型对训练集的数据拟合程度。
例如,如果我们训练模型100个epoch(迭代次数),每个epoch用训练集中的所有数据训练一遍,并在每个epoch的结束时计算模型在训练集上的准确率。如果训练集中有1000张猫和1000张狗的图片,那么训练误差就是模型在这2000张图片上的分类准确率。
泛化误差:在训练过程中,我们通过训练集来更新模型的参数,让模型在训练集上的表现不断提升。然而,我们真正关心的是模型对于新数据的泛化能力,即模型对于不在训练集中的数据的分类能力。泛化误差就是模型在新数据上的误差,它是我们关心的主要指标。
例如,我们在训练集上训练了一个分类器,准确率达到了90%。但是当我们将它应用到新的数据集时,发现它的准确率只有70%。这意味着模型出现了过拟合,它在训练集上表现很好,但在新数据上表现不佳。在这种情况下,我们需要采取一些措施来降低泛化误差,例如增加数据集的大小,加入正则化项等。

当我们有简单的模型和大量的数据时,我们期望泛化误差与训练误差相近。 当我们有更复杂的模型和更少的样本时,我们预计训练误差会下降,但泛化误差会增大。 模型复杂性由什么构成是一个复杂的问题。 一个模型是否能很好地泛化取决于很多因素。 例如,具有更多参数的模型可能被认为更复杂, 参数有更大取值范围的模型可能更为复杂。 通常对于神经网络,我们认为需要更多训练迭代的模型比较复杂, 而需要早停(early stopping)的模型(即较少训练迭代周期)就不那么复杂。

我们很难比较本质上不同大类的模型之间(例如,决策树与神经网络)的复杂性。 就目前而言,一条简单的经验法则相当有用: 统计学家认为,能够轻松解释任意事实的模型是复杂的, 而表达能力有限但仍能很好地解释数据的模型可能更有现实用途。 在哲学上,这与波普尔的科学理论的可证伪性标准密切相关: 如果一个理论能拟合数据,且有具体的测试可以用来证明它是错误的,那么它就是好的。 这一点很重要,因为所有的统计估计都是事后归纳。 也就是说,我们在观察事实之后进行估计,因此容易受到相关谬误的影响。 目前,我们将把哲学放在一边,坚持更切实的问题。

本节为了给出一些直观的印象,我们将重点介绍几个倾向于影响模型泛化的因素。

  1. 可调整参数的数量。当可调整参数的数量(有时称为自由度)很大时,模型往往更容易过拟合。

  2. 参数采用的值。当权重的取值范围较大时,模型可能更容易过拟合。

  3. 训练样本的数量。即使模型很简单,也很容易过拟合只包含一两个样本的数据集。而过拟合一个有数百万个样本的数据集则需要一个极其灵活的模型。

2. 模型选择

在机器学习中,我们通常在评估几个候选模型后选择最终的模型。 这个过程叫做模型选择。 有时,需要进行比较的模型在本质上是完全不同的(比如,决策树与线性模型)。 又有时,我们需要比较不同的超参数设置下的同一类模型。

例如,训练多层感知机模型时,我们可能希望比较具有不同数量的隐藏层、不同数量的隐藏单元以及不同的激活函数组合的模型。 为了确定候选模型中的最佳模型,我们通常会使用验证集。

2.1 验证集

验证集通常用于在训练过程中评估模型的性能,以帮助选择最佳的超参数(如学习率、正则化系数等)。在训练过程中,我们使用训练集训练模型,并使用验证集评估模型的性能,以便及时调整超参数和防止过拟合。

具体来说,我们将训练数据集分成两部分:训练集和验证集。训练集用于模型的训练,而验证集用于模型的评估。训练集和验证集应该是互不重叠的,即同一个样本不会同时出现在训练集和验证集中。

在训练过程中,我们使用训练集训练模型,并使用验证集评估模型的性能。通过比较训练误差和验证误差,我们可以判断模型是否过拟合。如果训练误差很小,但验证误差很大,那么说明模型过拟合了;反之,如果训练误差和验证误差都很小,那么说明模型的泛化能力很好。我们可以根据验证误差来选择最佳的超参数,以提高模型的性能。

2.2 K折交叉验证

K折交叉验证用以解决训练数据较少,我们并没有办法构建一个完整的验证集的问题,是一种评估模型泛化能力的方法。

在K折交叉验证中,我们首先将数据集分为K个大小相似的互斥子集,每次选取其中一个子集作为验证集,其余K-1个子集作为训练集,进行模型训练和验证。重复K次,每次选取不同的子集作为验证集,最终将K次的验证结果取平均值作为模型的最终性能评估指标。这样可以尽可能地利用数据,减小评估误差,提高模型的稳定性和可靠性。

举个例子,假设我们有1000条数据,希望使用K折交叉验证来评估模型的性能。我们将数据分为10个子集,每个子集包含100条数据。然后依次选取其中一个子集作为验证集,其余9个子集作为训练集,进行模型训练和验证,得到第一轮的验证结果。接着选取另一个子集作为验证集,其余9个子集作为训练集,进行模型训练和验证,得到第二轮的验证结果。以此类推,重复10次,最终将10次的验证结果取平均值作为模型的最终性能评估指标。

3. 过拟合和欠拟合

3.1 定义

过拟合(overfitting)指的是模型在训练集上的表现非常好,但在测试集上表现不佳的现象。也就是说,模型对训练集过度拟合,把训练集的一些噪声也学习进去了,导致在新的数据上表现不好。过拟合的主要原因是模型过于复杂,参数过多,导致模型能够完美地拟合训练集中的每一个数据点,但却失去了对新数据的泛化能力。

欠拟合指的是模型在训练数据上的表现不够好,即训练误差较高,而测试误差也较高。通常是由于模型过于简单,无法拟合数据中的复杂关系,或者是数据集过小,无法充分反映出数据的特征。

3.2 模型复杂度对拟合情况的影响

假设我们正在研究一个线性回归问题,其中有一个因变量 y 和两个自变量 x1 和 x2。我们用训练集和测试集分别来训练和测试模型,并使用均方误差(MSE)作为损失函数。

如果我们的模型是一个低阶多项式,例如一次或二次多项式,那么就有可能欠拟合。这意味着模型不能很好地拟合训练集数据,甚至也不能很好地拟合测试集数据,即使测试集数据是从相同分布中随机采样的。

如果我们的模型是一个高阶多项式,例如 10 次多项式,那么就有可能过拟合。这意味着模型可以在训练集上拟合得非常好,但是不能很好地拟合测试集数据,因为它学习了训练集数据的一些噪声。

在这里插入图片描述

模型复杂度是指模型可以表达的函数族的复杂程度,即模型可以表示的函数的集合。模型复杂度对过拟合和欠拟合的影响非常重要。

当模型的复杂度过高时,模型容易过拟合,即在训练数据上表现良好,但在测试数据上表现较差。因为模型过于复杂,它可以拟合数据集中的任何细节和噪声,从而导致模型对数据集中的噪声产生过度敏感,无法很好地泛化到新数据集上。这种情况下,可以通过减少模型的复杂度或者增加正则化项来解决过拟合问题。

当模型的复杂度过低时,模型容易欠拟合,即在训练数据和测试数据上表现都较差。因为模型太简单,无法很好地拟合数据集中的规律和特征,从而导致无法很好地泛化到新数据集上。这种情况下,可以通过增加模型的复杂度或者增加特征数量来解决欠拟合问题。

3.3 解决方法

过拟合的解决方法,后面几节我们会讲解其具体实现:

  1. 数据增强(Data Augmentation):通过一些数据增强的手段,如旋转、翻转、裁剪等方式,增加数据集的多样性,减少过拟合。
  2. 正则化(Regularization):在损失函数中加入正则化项,如L1正则化、L2正则化等方式,惩罚权重过大的情况,限制模型复杂度。
  3. 提前停止(Early Stopping):在训练过程中,通过监测验证集的表现,及时停止训练,避免过拟合。
  4. Dropout:在神经网络中随机关闭一些神经元,减少过拟合。

欠拟合的解决方法:

  1. 增加模型复杂度:通过增加模型的层数或者每层的神经元数量等方式,增加模型的学习能力。
  2. 减少正则化:减少正则化的强度,放宽对模型复杂度的限制。
  3. 增加特征量:对输入数据进行特征工程,增加更多的特征量,提高模型的学习能力。
  4. 调整超参数:例如学习率、batch size等超参数的调整,可以影响模型的学习能力和学习速度。

指路第二节

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

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

相关文章

机器学习算法原理之k近邻 / KNN

文章目录k近邻 / KNN主要思想模型要素距离度量分类决策规则kd树主要思想kd树的构建kd树的搜索总结归纳k近邻 / KNN 主要思想 假定给定一个训练数据集,其中实例标签已定,当输入新的实例时,可以根据其最近的 kkk 个训练实例的标签&#xff0c…

5.5 配置路由反射器

5.3.2配置路由反射器 1. 实验目的 熟悉路由反射器的应用场景掌握路由反射器的配置方法2. 实验拓扑 实验拓扑如图5-5所示: 图5-5:配置路由反射器 3. 实验步骤 (1) 配置IP地址 R1的配置 <Huawei>sy…

JVM学习笔记三:运行时数据区之程序计数器

目录 概述 字节码取指令举例 CPU时间片 经典问题 使用PC寄存器存储字节码指令地址有什么用呢&#xff1f; 为什么使用PC寄存器记录当前线程的执行地址呢&#xff1f; 概述 运行时数据区中运行速度最快的存储区域&#xff0c;并且是线程私有的&#xff0c;每一个线程都具…

在线教育有什么优势?

AI 1、便捷性&#xff1a;在线教育可以让学生在家里或者其他任何地方学习&#xff0c;不受时间和地点的限制&#xff0c;可以随时随地学习&#xff0c;极大的方便了学习者。 2、节约成本&#xff1a;在线教育可以节约学习者的时间和金钱&#xff0c;学习者可以节省出去上学的…

【MFC】数据库操作——ODBC(20)

ODBC:开放式数据库连接&#xff0c;是为解决异构数据库&#xff08;不同数据库采用的数据存储方法不同&#xff09;共享而产生的。ODBC API相对来说非常复杂&#xff0c;这里介绍MFC的ODBC类。 添加ODBC用户DSN 首先&#xff0c;在计算机中添加用户DSN&#xff1a;(WIN10下&a…

详解js在事件中,如何传递复杂数据类型(数组,对象,函数)

文章目录 前言一、何谓预编译&#xff0c;变量提升&#xff1f;二、复杂数据类型的传递 1.数组2.对象3.函数总结前言 在JavaScript这门编程语言学习中&#xff0c;如何传参&#xff0c;什么是变量提升&#xff0c;js代码预编译等等。要想成为一名优秀的js高手&#xff0c;这些内…

一个页面分成几块展示

每一项占用一个div,里面展示的是具体的图文内容,页面底部展示的是当前页码和总数,实现效果如下: 代码如下: <div class"header"></div><div class"main-content"><divclass"equipment-item"v-for"item in equipmentL…

OpenCV-PyQT项目实战(8)项目案例03:鼠标定位

欢迎关注『OpenCV-PyQT项目实战 Youcans』系列&#xff0c;持续更新中 OpenCV-PyQT项目实战&#xff08;1&#xff09;安装与环境配置 OpenCV-PyQT项目实战&#xff08;2&#xff09;QtDesigner 和 PyUIC 快速入门 OpenCV-PyQT项目实战&#xff08;3&#xff09;信号与槽机制 …

信创引领丨呼叫中心加速适配国产化

随着信创产业的高速发展&#xff0c;企业服务软件高度适配国产操作系统成为大势所趋。早在2020年&#xff0c;佳信客服平台就正式通过“华为云鲲鹏云服务”平台系统的兼容性测试与认证&#xff0c;成为鲲鹏凌云伙伴&#xff0c;也意味着佳信客服平台正式与国产硬件平台及操作系…

【Kubernetes 企业项目实战】07、最新一代微服务网格 Istio 入门到企业实战(下)

目录 一、istio 核心资源解读 1.1 Gateway 总结&#xff1a; 1.2 VirtualService 1.2.1 VirtualService 主要由以下部分组成 1.2.2 virtualservice 配置路由规则 1.2.3 路由规则优先级 1.2.4 多路由规则解读 1.3 DestinationRule 二、istio 核心功能演示 2.1 断路器…

【离散数学】1. 数理逻辑

1.数理逻辑 2. 集合论 3. 代数系统 4. 图论 离散数学&#xff1a;研究离散量结构及相互关系的学科 数理逻辑集合论代数系统图论 逻辑&#xff1a;研究推理的科学 数学方法&#xff1a;引进一套符号系统的方法 数理逻辑是用数学方法研究形式逻辑的科学&#xff0c;即使用符号化…

vue环境总结

因将node.js升级后&#xff0c;打包运行出错了。后来加班重新改好。 一、用nvm管理可以用命令将node和npm对应安装 1.首先在控制台输入where node查看之前本地安装的node的路径 2.将node目录删除或者卸载 二、1.安装nvm 从官网下载安装包 https://github.com/coreybutler/nvm…

JDK定时器Timer原理

前言 前些时间想到利用redis实现延时队列&#xff0c;但是底层的定时器不止如何实现好些&#xff0c;故此研究了一下jdk的Timer。 Timer是一个用于执行定时任务的类&#xff0c;可以单次执行或按指定时间间隔循环执行&#xff08;直到主动cancel或线程被杀掉&#xff09;。Ti…

大数据之---Nifi-Nifi模板_具体使用方法---大数据之Nifi工作笔记0009

然后我们来看看,如果好不容易设计了一个流程,那么是可以通过 使用模板来让流程复用的 可以看到可以创建模板,一会说怎么用具体,上面已经 写清楚了,如何创建模板 我们看一下左侧的operate,这里可以看到这里就可以创建模板 可以看到小手那个地方,点击就可以创建模板了 可以看到…

python k8s库,read_namespaced_config_map:maximum recursion depth exceeded

使用背景 在python中&#xff0c;调用了gevent库&#xff0c;同时引用了官方的k8s库接口&#xff1a; GitHub - kubernetes-client/python: Official Python client library for kubernetesOfficial Python client library for kubernetes. Contribute to kubernetes-client/…

Node.js安装配置及Angular CLI的安装

NodeJS的安装node.js官网下载地址: https://nodejs.org/en/download/在node.js的官网上面下载适合自己机型的&#xff0c;如果是Windows系统的话&#xff0c;建议下载对应的 Windows Installer (.msi) 。下载完成后&#xff0c;双击打开安装&#xff0c;安装路径最好自定义&…

Melis4.0[D1s]:1.启动流程(与adc按键初始化相关部分)跟踪笔记

文章目录1.启动流程1.1 最先进入的文件&#xff1a;head_s.S1.2 start_kernel()函数所在的文件&#xff1a;init.c1.3 input_init()函数所在文件&#xff1a;sys_input.c1.4 INPUT_LKeyDevInit()所在文件&#xff1a;keyboarddev.c1.5 esINPUT_RegLdev()所在文件&#xff1a;in…

LVS负载均衡

文章目录前言一、LVS模式-DR二、ipvsadm配置参数三、DR模式的部署server1:调度器&#xff08;VS&#xff09;server2:真实服务器&#xff08;RS&#xff09;server3:真实服务器&#xff08;RS&#xff09;真实服务器(server2和server3)屏蔽客户端测试&#xff1a;纯代码步骤演示…

SpringCloud保姆级搭建教程六---ElasticSearch

es下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 最新版本或者 https://github.com/elastic/elasticsearch 7.17.9kibana下载地址&#xff1a;https://github.com/elastic/kibana 各个版本jdk8 对应的es应该是7.*版本&#xff0c;最新的es应该对应的…

【论文及代码详解】BEIT: BERT Pre-Training of Image Transformers

记录下论文《BEIT: BERT Pre-Training of Image Transformers》&#xff0c;这是一篇将Transformer应用于图像领域&#xff0c;并使用自监督方法进行参数初始化的文章。 论文链接 整体概要 由于网络整体流程图没有标注好模型的运行过程&#xff0c;结合论文的描述&#xff1a…