深度学习(12)之模型训练[训练集、验证集、过拟合、欠拟合]

news2025/1/16 11:12:34

模型训练[训练集、验证集、过拟合、欠拟合]

  • 在不断补充训练数据集的过程中,发现纯粹增加数据集并不会使得模型效果单向地变好,如果是多目标检测模型的话,常会出现精度变低的现象
  • 本文想总结在模型训练时的一些注意事项,比如训练集与验证机+测试集的数量分割占比,模型如果出现过拟合或者欠拟合时该采取什么措施改善,还有就是多目标检测时样本标签数量的不平衡性?
  • 后边再有问题慢慢补充吧

1. 数据集分割

  • 一般情况下,我们会在模型训练前将数据集分为训练集,验证集和测试集三部分:
    在这里插入图片描述
#-------各自作用------------
训练集:用于训练模型,找出最佳的w 和b 。
验证集:用以确定模型超参数,选出最优模型。
测试集:仅用于对训练好的最优函数进行性能评估。
  • 训练集,顾名思义,用于模型来进行特征提取与分析训练,然后验证集Val与测试集test的区别如下:
    在这里插入图片描述
  • 我们将上述3个概念贯穿于机器学习的全过程,从而加深理解:
#--------------------训练过程-------------------------
1.确定模型的一组超参数
2.用训练集训练该模型,找到使损失函数最小的最优函数。
3.在验证集上对最优函数的性能进行度量。
4.重复1、2、3步,直到搜索完指定的超参数组合。
5.选择在验证集上误差最小的模型,并合并训练集和验证集作为整体训练模型,找到最优函数。
6.在测试集上对最优函数的泛化性能进行度量。
  • 在实际训练中,这3个部分占比该是多少呢?对训练结果的影响如何?

      1. 测试集只用一次,可以不用单独分割数据,有没有均可。
      1. 如果数据集数量较少,比如几百张或者几千张(数据场景比较复杂),需在保证在训练集足够的基础上,尽量分配给验证集一些比重,以便对调整合适的超参数。此时,训练集:验证机可以是[6:4]或者[7:3]等。
      1. 如果数据集达到万张或者几万张,那两个比重可以[8:2]或者[9:1]来分
      1. 测试集可有可无,验证集必须要有,且数据划分应随机划分,需要正验证集中的数据种类肯定要包含训练集中的数据种类或者场景变化情况
    • 后续补充…

2. 过拟合与欠拟合

  • 过拟合
      是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测得很差的现象。这种情况下模型可能只是记住了训练集数据,而不是学习到了数据特征。
  • 欠拟合
      模型描述能力太弱,以至于不能很好地学习到数据中的规律。产生欠拟合的原因通常是模型过于简单。

我们要知道机器学习的根本问题是解决优化和泛化的问题。

  • 优化:
      是指调节模型以在训练数据上得到最佳性能。
  • 泛化:
      是指训练好的模型在前所未见的数据(测试集)上的性能好坏。
    在这里插入图片描述

2.1 如何应对过拟合?

  • 最优方案:

      1. 增加源头数据数量
      1. 数据增强
  • 次优方案:
    调节模型允许存储的信息量或者对模型允许存储的信息加以约束,该类方法也称为正则化。即:

      1. 调节模型大小
      1. 约束模型权重,即权重正则化(在机器学习中一般使用 L2正则化)
      1. 随机失活(Dropout)
  • L2正则化:在这里插入图片描述
    L2正则损失对于大数值的权值向量进行严厉惩罚,鼓励更加分散的权重向量,使模型倾向于使用所有输入特征做决策,此时的模型泛化性能好!

  • Dropout 随机失活
    随机失活使得每次更新梯度时参与计算的网络参数减少了,降低了模型容量,所以能防止过拟合。

2.2 应对欠拟合?

    1. 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间。
    1. 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。
    1. 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数。
    1. 使用非线性模型,比如核SVM 、决策树、深度学习等模型 。
    1. 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力。
    1. 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging。

3. 目标检测中的数据类别不均衡问题

  • 在进行模型训练时,不同需求下的数据集可能标注的标签类别数量不平衡

  • 由于某些类别数量较少,模型预测结果可能会偏向数量多的类别,从而导致数量低的类别识别率低,召回率低

  • 改善方法:

      1. 自造数据,彩图时尽量保证类别数量差不多
      1. 程序优化:重采样

参考:

1.机器学习系列(五)——训练集、测试集、验证集与模型选择
2.深度学习相关概念:过拟合与欠拟合

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

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

相关文章

云务器迁移(腾讯云>华为云)

自己平时除了写些bug外还喜欢玩玩服务器,这不前几年买了一个域名,当时服务器买的是阿里云的,想着域名备案挺麻烦的就一直用着,只是在服务器到期后会重新购买其他运营商的(关键是续不起🤫) 这不最…

华为eNSP配置专题-VRRP的配置

文章目录 华为eNSP配置专题-VRRP的配置0、参考文档1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接 2.VRRP的配置2.1、PC1的配置2.2、接入交换机acsw的配置2.3、核心交换机coresw1的配置2.4、核心交换机coresw2的配置2.5、配置VRRP2.6、配置出口…

基于Java的企业门户管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

linux性能分析(三)查看系统的性能指标

一 查看系统的性能指标 这里简略的将系统监控指标分为:cpu、memory、disk、network、os 五大类强调: 这五类命令的输出与/proc虚目录下的文件信息强相关说明: 后续专门讲解这五大类的系统命令,尽可能全面罗列每个工具的使用场景补充&#x…

智能水印相机微信小程序源码

相信大家日常在生活中或者工作中都有使用过水印相机来拍照记录吧,但是又要在手机上面多下载一个APP。 那么小编今天给大家带来一款智能水印相机,拍照自动添加时间、地点、经纬度等水印文字,可用于工作考勤、学习打卡、工作取证等&#xff0c…

深度学习 | Pytorch深度学习实践 (Chapter 1~9)

一、overview 基于pytorch的深度学习的四个步骤基本如下: 二、线性模型 - Linear Model 基本概念 数据集分为测试集和训练集(训练集、开发集)训练集(x,y)测试集只给(x)过拟合&#…

世界国家/地区行驶方向数据

Part1数据背景 道路通行方向规则是交通规则的重要部分之一。不同国家及地区通行方向并不一样,受风俗、习惯、风潮因素等影响。 最近也在学道路行驶,结果差强人意,继续努力吧。祝学车的小伙伴们一次过~ Part2数据详情 今天分享的国家/地区行…

二叉搜索树的详解及Map和Set的介绍

目录 1.二叉搜索树 1.1二叉搜索树的介绍 1.2.二叉搜索树的实现 1.2.1二叉搜索树的创建 1.2.2查找关键字 1.2.3插入 1.2.4删除 1.3二叉搜索树的性能分析 2.Map Map官方文档 2.1Map 的常用方法说明 2.2关于Map.Entry的说明,> 2.3注意事项 2.4reeMap和HashMap的区别 …

Django小白开发指南

文章目录 HTTP协议socket实现一个web服务器WSGI实现一个web服务器WSGI实现支持多URL的web服务器WSGI实现图片显示的web服务器MVC && MTV1.MVC2.MTV3.总结 一、创建Django项目1.创建项目2.创建app3.第一次django 请求 二、模板1.配置settings.py2.模板语法3.继承模板 三…

[云原生1.]Docker数据管理与Cgroups资源控制管理

文章目录 1. Docker的数据管理1.1 数据卷1.1.1 示例 1.2 数据卷容器 2. 容器互联3. Cgroups资源控制管理3.1 简介3.2 cgroups的主要功能3.3 cpu时间片的简单介绍3.4 对CPU使用的限制3.4.1 对CPU使用的限制(基于单个容器)3.4.2 对CPU使用的限制&#xff0…

MySQL高可用架构学习

MHA(Master HA)是一款开源的由Perl语言开发的MySQL高可用架构方案。它为MySQL 主从复制架构提供了 automating master failover 功能。MHA在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的 master 节点,在…

基于Java的农资采购销售管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

(转)STR 内核做了什么

参考这篇文章: Linux电源管理(6)_Generic PM之Suspend功能 写的很清晰

了解SUI质押和发行计划

SUI是Sui链上的原生资产,总供应量100亿个,并非所有SUI token在一开始就完全流通。相反,随着Sui生态的发展,新token将逐步解锁以奖励生态的早期支持者。质押补贴用于支持网络当前的运营,并由Sui基金会分发给Sui的构建者…

<C++> 模拟实现string

目录 前言 一、模拟实现string 1. 成员变量 2. 构造函数 2.1 构造函数 2.2 重载默认构造 2.3 合并 3. 析构函数 4. 拷贝构造函数 5. c_str 6. size 7. operator[ ] 7.1 普通版 7.2 const版本 8. 迭代器—iterator 8.1 普通版iterator 8.2 const版本iterator 9. 尾插 10. …

数学笔记——直角坐标方程转参数方程

目录 背景第一步,原式转换成参数方程第二步,将参数方程绕x轴旋转一周结果程序与图形注 背景 学习matlab三维作图时遇到的一道题,搞不懂为什么要将直角方程转换成参数方程,在经过多次直角作图失败后,还是决定老老实实学…

Redis入门到实战(四、原理篇)RESP协议

目录 2、Redis内存回收-过期key处理3、Redis内存回收-内存淘汰策略 Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(server)发送一条命令…

【LeetCode-数组】-- 寻找数组的中心索引

寻找数组的中心索引 class Solution {public int pivotIndex(int[] nums) {int n nums.length,sum 0;for(int i 0;i<n;i){ //计算所有元素之和sumnums[i];}int sum_l 0; //统计左边元素之和for(int i 0;i<n;i){sum - nums[i];if(sum_l sum){return i;}sum_l nums…

Django中ORM框架的各个操作

我们会好奇&#xff0c;python这么简洁的语言&#xff0c;数据查询是如何做的呢&#xff1f;我将进一步详细和深入地介绍Django中ORM框架的各个方面&#xff0c;包括MySQL的增删改查和复杂查询。让我们分步骤进行。 ORM框架介绍 Django的ORM框架是一个用于与数据库进行交互的工…

基于java的校园论坛系统,ssm+jsp,Mysql数据库,前台用户+后台管理,完美运行,有一万多字论文

目录 演示视频 基本介绍 论文目录 功能架构 系统截图 演示视频 基本介绍 基于java的校园论坛系统&#xff0c;Mysql数据库&#xff0c;系统整体采用ssmjsp设计&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万多字论文。 用户功能&#xff1a; 1.系统…