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

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

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

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.mzph.cn/news/111048.shtml

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

相关文章

07 创建型模式-单例模式

1.单例模式介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证 某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。 2.使用单例模式要做的两件事 保证一个类只有一个实例…

vue3后台管理系统之pinia及持久化集成使用

安装依赖 pnpm i pinia 在src目录下创建store 创建大仓库 //仓库大仓库 import { createPinia } from pinia //创建大仓库 const pinia createPinia() //对外暴露:入口文件需要安装仓库 export default pinia 全局注册pinia 配置用户仓库pinia管理数据 // 创建用…

linux环境下安装jdk1.8

一.下载linux版jdk安装包 可以在官网上下载,也可以自己找一个 官网地址:https://www.oracle.com/java/technologies/downloads/#java8 我这里用的是 jdk-8u291-linux-x64.tar.gz 二. 将jdk上传到Linux机器上 我这里用的是MobaXterm,直接拖拽就可以上传…

Python学习-----Day09

一、利用装饰器来获取函数运行的时间、 #导入time模块 import timedef decorated(fn):def inner():#time.time获取函数执行的时间a time.time() # func开始的时间fn()b time.time() # func结束的时间print(f"{fn.__name__}程序运行的总数时间:{b - a}秒")return…

Qt之自定义插件(单控件,Qt设计师中使用)

文章目录 步骤1.选择项目类型2.设置项目名称3.选择合适的构建套件4.根据实际情况选择插件控件列表6.控件类生成(默认勾选项)7.构建生成项目及生成库位置(默认)8.库文件拷贝9.重启Qt查看效果 步骤 1.选择项目类型 如图选择‘其他…

CleanMyMac苹果电脑清理软件是智商税吗?最全评测价格、清理效果一次说清

这是一篇CleanMyMac最全评测!价格、清理效果一次说清,告诉你它真不是智商税! 升级Ventura系统之前,我用的是CleanMyMac X绿色版(绝不提倡这个行为)。更新到Ventura之后,之前很多绿色软件失效,浪…

Linux安装MINIO

MINIO简介MINIO目录 mkdir -p /opt/minio/data && cd /opt/minio MINIO下载 wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio MINIO授权 chmod x minio MINIO端口 firewall-cmd --zonepublic --add-port7171/tcp --permanent && firewal…

Vue笔记_插件组件_lucky-canvas抽奖转盘

文章目录 官网使用(vue2.x)[1] 下载[2] 引入[3] 使用配置项-width/height配置项-blocks配置项-prizes配置项-buttons优化案例 lucky-canvas 是一个基于 Js Canvas 的抽奖 web 前端组件,提供 大转盘和 九宫格两种抽奖界面,UI 精美,功能强大…

C++实现AC自动机,剪枝、双数组压缩字典树!详解双数组前缀树(Double-Array Trie)剪枝字典树(Patricia Trie)

代码在:github.com/becomequantum 最近研究了一下字典树,什么AC自动机,双数组压缩字典树,剪枝字典树都自己写代码实现了一下。这本该是本科学数据结构时该玩明白的东西,我到现在才会玩。本视频主要介绍一下双数组和剪…

python 深度学习 解决遇到的报错问题7

目录 一、ValueError: unsupported pickle protocol: 5 二、报错protobuf 三、AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0 四、ModuleNotFoundError: No module named cartopy 五、ImportError: cannot import name COMMON_SAFE_A…

【C++】特殊类的设计(只在堆、栈创建对象,单例对象)

🌏博客主页: 主页 🔖系列专栏: C ❤️感谢大家点赞👍收藏⭐评论✍️ 😍期待与大家一起进步! 文章目录 一、请设计一个类,只能在堆上创建对象二、 请设计一个类,只能…

竞赛选题 深度学习YOLO安检管制物品识别与检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov55 模型训练6 实现效果7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLO安检管制误判识别与检测 ** 该项目较为新颖,适合作为竞赛课题方向&…

【C++中cin、cin.get()、cin.getline()、getline() 的区别】

文章目录 引入cin基本用法输入多个变量换行符存放在缓冲区中 cin.get()基本用法重载函数换行符残留在缓冲区中 cin.getline()基本使用重载函数换行符不会残留在缓冲区中 string 流中的 getline()总结用法总结几个输入实例输入格式输入格式输入格式输入格式 输出格式 写在最后 引…

大模型技术实践(五)|支持千亿参数模型训练的分布式并行框架

在上一期的大模型技术实践中,我们介绍了增加式方法、选择式方法和重新参数化式方法三种主流的参数高效微调技术(PEFT)。微调模型可以让模型更适合于我们当前的下游任务,但当模型过大或数据集规模很大时,单个加速器&…

Hadoop3教程(七):MapReduce概述

文章目录 (68) MR的概述&优缺点(69)MR的核心思想MapReduce进程 (70)官方WC源码&序列化类型(71)MR的编程规范MapperReducerDriver (72)WordCount案例需…

OpenCV16-图像连通域分析

OpenCV16-图像连通域分析 1.图像连通域分析2.connectedComponents3.connectedComponentsWithStatus 1.图像连通域分析 连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域。连通域分析是指在图像中寻找彼此互相独立的连通域并将其标记出来。 4邻域与8邻域的概念&am…

梯度下降算法(Gradient Descent)

GD 梯度下降法的含义是通过当前点的梯度(偏导数)的反方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解,梯度下降的目的,就是为了最小化损失函数。 1、给定待优化连续可微…

PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准“多模态”技术

近期,2023年中国模式识别与计算机视觉大会(PRCV)在厦门成功举行。大会由中国计算机学会(CCF)、中国自动化学会(CAA)、中国图象图形学学会(CSIG)和中国人工智能学会&#…

分享一个比对图片是否一致的小工具(来源: github)

运行效果图: 官网: GitHub - codingfishman/image-diff: 一个方便的图片对比工具一个方便的图片对比工具. Contribute to codingfishman/image-diff development by creating an account on GitHub.https://github.com/codingfishman/image-diff 优缺点: 1.采用比对各色块是…

Sqoop技术文档笔记

Sqoop是一个用于在Hadoop和关系型数据库之间传输数据的开源工具。它可以将结构化数据从关系型数据库(如MySQL、Oracle、SQL Server等)导入到Hadoop的分布式文件系统(HDFS)或hive中,并且可以将数据从HDFS、hive导出到关…