神经网络训练不起来怎么办(零)| General Guidance

news2025/1/8 4:53:10

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。
关键词:模型性能,Model Bias, Optimization, Overfitting。

零,领域背景

如果我们的模型表现较差,那么我们往往需要根据 Training loss 以及 Testing loss 判断、推理成因,以此来制定策略,优化我们的模型。

图1:模型表现不佳的分析思路


Ⅰ,训练损失

训练损失往往被大部分人忽略,但对模型性能的分析与优化,最首先需要分析的就是 training loss 的情况。如果 training loss 比较小,那么万事大吉,如果 training loss 比较大,那么主要由以下两个方面导致。

  • Model Bias:模型拟合训练数据的性能瓶颈。Function Set 中没有最优解,可以理解为大海捞针,针却不在海里。
  • Optimization:模型参数更新的瓶颈。Function Set 中存在最优解,可以理解为大海捞针,没捞到针就停下了。
图2:训练损失不佳的两种原因(模型弹性,优化器)


Ⅱ,模型弹性

成因分析:理解模型的弹性便是判断 training loss 不理想成因的关键:

模型弹性小:出现 Model Bias 问题,但Optimization 过程容易,往往得到 global minimal。

模型弹性大:解决 Model Bias 问题,但Optimization 过程困难,往往陷入 local minimal。

弹性越大的模型,其 Function Set 一定包含弹性较小模型对应的 Function Set。因此 Model Bias 的问题可以通过增大弹性的方式解决,当然也容易带来 Optimization 的问题。引入模型弹性概念之后,我们也发现 Model Bias 和 Optimization 实际是一个矛盾体。机器学习的本质工作,也可以形象地理解为在特定任务上的矛盾体中找到一个平衡点。

训练策略:因此,我们不需要从一开始就设计一个弹性很大的模型,可以采用循序渐进的策略。

先使用较为浅层的模型 or 机器学习的精确模型,此时 training loss 基本排除 optimization 的情况。我们以此作为 baseline,观察此时的 loss。

随后再增大模型的弹性,在尽力达到 baseline 的基础上,提升性能。

弹性控制:本质是控制模型的可学参数数量,可以从输入特征数量 & 模型架构(比如结点数,层数)两个方面,即数据和模型两个维度,增加模型的可学参数。此处的模型弹性都是从定性的角度理解,定量的分析思路将在之后的课程介绍。


Ⅲ,测试损失

testing loss:如果 training loss 理想,那么说明当前参数下的模型能够很好地学习到训练集的特征。此时就需要转向关注 testing loss。主要有以下两种情况:

  • testing loss 理想,万事大吉
  • testing loss 较高,可能是 overfitting or mismatch。

Overfitting:模型弹性较大,模型在满足样本空间外,自我发挥的空间很大。可以通过数据(增加训练样本数量) & 模型(减小模型弹性)的方式避免问题。注意:机器学习研究者的核心工作不是搜集资料,以后学习应该尽可能避免资料的收集工作,将精力放在模型研究上。比如,CNN网络架构实质就是 Fully-Connection Network 的子集,是根据图片的特性,设计为带有限制的、弹性更小的一个FCN。

Mismatch:训练数据 & 测试数据的分布不一致。本质上需要建立在你对训练、测试资料的产生方式的理解。遇到的情况较少,一般测试集都是从训练集划分。

图3:过拟合与数据分布不一致


Ⅳ,其他策略

Valid Set:用于模拟 Private Testing Set。

N-fold Cross Validation:划分数据集,用于评估多个模型的泛化性能好坏。

以上两种方法本质都是为了用训练集数据,得到一个更加鲁棒的模型,使其能够经受住未知的测试数据的考验。


思考总结

成因推理:我们能否知道一个完整的分析思路,用于判断我们模型表现不理想的成因。

模型弹性:这里提到的模型弹性”是一个很新的角度,无论是 Model Bias, Optimization 还是 Overfitting 的问题都能够通过这个概念直观地进行成因分析。

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

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

相关文章

SnapGene 2.3.2软件下载安装教程百度网盘分享链接地址

SnapGene简介:SnapGene 2.3.2软件下载安装教程百度网盘分享链接地址,SnapGene 是一款超厉害的分子生物学软件。它最初由美国公司开发,后来换了东家。 这款软件功能多样,在序列编辑分析方面表现出色,能轻松搞定 DNA 序列…

Android Dialog:Dialog和DialogFragment的区别?DialogFragment如何使用?源码解析

目录 一、Dialog和DialogFragment的区别 Android在DialogFragment推出后,就已经不推荐继续使用Dialog,可替换为DialogFragment: 更好的生命周期管理:DialogFragment能够自动处理Activity的生命周期事件,确保对话框在…

Python 从入门到实战9(集合)

我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了python 中字典的定义及相关操作。今天…

模型训练套路(一)

一、训练完整使用网络模型 import torch import torchvision from torch import nn from torch.utils.data import DataLoaderfrom model1 import* # 此处的引用为此文在实现过程中所解决的问题 train_data torchvision.datasets.CIFAR10(root "../data", trainT…

63、Python之函数高级:装饰器缓存实战,优化递归函数的性能

引言 通过前面的文章,我们已经掌握了Python中常用的装饰器的使用技巧,这篇文章中,我们通过一个装饰器的实战案例,来进一步加深对装饰器的适用场景的理解。 本文的主要内容有: 1、递归函数 2、递归实现斐波那契数列…

AWTK HTML View 控件更新

AWTK HTML View 控件基于 Lite HTML 实现,从最初的版本开始,3 年多过去了,Lite HTML 做了大量的更新,最近抽空将 AWTK HTML View 控件适配到最新版本的 Lite HTML,欢迎大家使用。 AWTK HTML View 控件。HTML View 控件…

SAP B1 基础实操 - 用户定义字段 (UDF)

目录 一、功能介绍 1. 使用场景 2. 操作逻辑 3. 常用定义部分 3.1 主数据 3.2 营销单据 4. 字段设置表单 4.1 字段基础信息 4.2 不同类详细设置 4.3 默认值/必填 二、案例 1 要求 2 操作步骤 一、功能介绍 1. 使用场景 在实施过程中,经常会碰见用户需…

Qt线程使用

嗨嗨嗨,今天又学到了新的知识——线程,这个玩意在项目中使用的频率是非常高的,毕竟电脑的主线程就那么一个,那么这也就是我们为啥要学习线程的原因。比如说,我们们的游戏,如果我们的游戏界面显示的同时我们…

【生日视频制作】奥迪A8提车交车仪式AE模板修改文字软件生成器教程特效素材【AE模板】

奥迪A8提车交车仪式AE模板制作过程软件生成器素材 AE模板套用改图文教程↓↓: 怎么如何做的【生日视频制作】奥迪A8提车交车仪式AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片…

PD快充协议方案 及应用场景

快充协议诱骗原理主要依赖于快充协议芯片与供电端(如PD充电器)之间的握手通信,以申请所需要的电压与电流,确保充电过程安全、快速且高效。这种芯片通过内置的通讯模块与供电端通信,根据设备的实际需求调整输出电压和电…

大路灯护眼灯有必要吗安全吗?性价比高落地护眼灯推荐

大路灯护眼灯有必要吗安全吗?近几年来,随着生活节奏的加快,目前青少年的近视率呈现一个直线上升的趋势,其中占比达到了70%以上,并且最令人意外的是小学生竟然也占着比较大的比重,这一系列的数据不仅表明着近…

苍穹外卖学习笔记(一)

文章目录 开发环境搭建一. 前端环境搭建二. 后端环境搭建1.进入idea项目2.提交git仓库(推送github远程仓库)3.数据库环境搭建4.前后端联调(在源代码中项目已经实现登录功能)nginx反向代理好处: 三. 完善登录功能(md5加密存储)1.首先打开pojo模块中实体类的employee,…

[STL --stack_queue详解]stack、queue,deque,priority_queue,容器适配器

stack stack介绍 1、stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2、stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供…

原理图库和PCB库的命名规范及创建封装、使用封装管理器

原理图库 命名规范 原理图中元件值标注规则 注:元件值(Component Value)就是元件最主要的特征对应的值。 Component value. Most analog components have a value that must be specified by this field (e.g., 2.7 kΩ). Additional disti…

c++数据结构之队列

目录 一、队列的含义 1.队列的使用 2.队列的结构 二、顺序队列的实现 1.队列的定义 2.队列的初始化 3.清空对列 4.队列是否为空 5.获取队列的长度 6.获取头元素的值 7.入队列 8.出队列 9.遍历队列中的值 10.总代码 11.打印结果 三、链表队列的实现 1.队列的…

【Hot100】LeetCode—347. 前 K 个高频元素

目录 1- 思路自定义Node结点 哈希表实现 2- 实现⭐347. 前 K 个高频元素——题解思路 3- ACM实现 原题连接:347. 前 K 个高频元素 1- 思路 自定义Node结点 哈希表实现 ① 自定义 Node 结点: 自定义 Node 结点中有 value 和 cnt 字段,其中…

力扣接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表…

html css网页制作

​ 大家好,我是程序员小羊! 前言: HTML 和 CSS 是制作网页的基础。HTML 用于定义网页的结构和内容,CSS 用于设计网页的样式和布局。以下是一个详细的网页制作成品教程,包括 HTML 和 CSS 的基础知识,及如何…

MySQL基础(7)- 多表查询

目录 一、笛卡尔积的错误与正确的多表查询 1.出现笛卡尔积错误 2.正确的多表查询:需要有连接条件 3.查询多个表中都存在的字段 4.SELECT和WHERE中使用表的别名 二、等值连接vs非等值连接、自连接vs非自连接 1.等值连接 vs 非等值连接 2.自连接 vs 非自连…

安卓逆向(之)真机root(红米手机)

概览: 1, 手机解锁 2, 下载官方系统包,推荐线刷包,取出镜像文件 3, magisk工具修补 官方系统包 4, adb:命令对手机刷 root 5, 完成 6, 小米手机解锁 点击 小米手机解锁OEM官方教程 记得数据线连接手机电脑 工具下载 点击 下载adb(电脑操作…