【小笔记】当一个算法性能不满意,可能是这几方面的原因

news2024/10/11 0:29:27

【学而不思则罔,思而不学则殆】
2023.9.9

原因一:数据质量有问题

数据决定了算法的上限,在大模型时代,这句话仍然管用(比如open AI对数据的标注要求就非常高)数据的问题主要有这几方面:

  • 1. 不同类别的样本数量很不平衡
    这是一个非常常见的问题,可能不同类型之间的样本数量差异就和现实世界贫富差异一样大。,虽然有很多算法可以适应这种情况,但最好还是要做一下处理,理想情况下,我们希望不同类别的样本数量比较接近,此时可以进行上采样或下采样,或更改损失函数(如对少样本进行加权)。
  • 2. 原始数据有很多低质量数据
    当样本比较均衡,模型训练性能还是比较差时,可能就是训练数据中有很多bad case。要找出这部分数据进行分析,看能否进行修正(有些bad case是自然形成的,不是错误生成的,此时就不能修正)
    对于文本,bad case就是有很多错别字,多字,少字等错误情形;对于图像,bad case就是有很多目标模糊,不完整,像素太小等情形。这些数据就算你标注的很好,但是因为噪音太多,也会导致模型训练效果不好,所以数据预处理是很有必要的,对这些低质量数据进行修正能够有效提高算法性能。
  • 3. 有很多数据的标注质量不高
    一是标错,二是标对了,但标的不好。
    在分类问题中,标错就是进行了错误的打标;标的不好,比如图像标注没有按贴近目标边缘进行标注,边缘留出了很多空间,甚至还把其它目标的内容给框选了。
  • 4. 打标的标准不清晰,有很多标注混淆的样本
    举个例,比如命名实体识别任务中,“刹车”这个词被标注了两次,一次标注为“部件”,一次标注为“状态”,你自己都分不清它应该为什么类别,算法怎么做呢?
    要有一个清洗的标注规范,不要有模棱两可的数据,否则这部分数据会成为模型性能的瓶颈,从混淆矩阵中来看,他们就是容易互相混淆的数据。

💡留一个问题:
若是一个样本你也实在分不清如何打标怎么办?这部分数据要不要去掉,要不要打标?
/

原因二:模型参数没设置好

网上很多开源模型,用默认参数跑一遍,基本都能得到不错的效果,但很多时候我们还是要结合自己的数据和硬件配置,进行调整,一些常见的参数如下:

  • batch_size:
    这个呢主要影响的是训练的速度,一般不会影响性能。在GPU显存允许下,尽量设置更大的batch_size
  • epoch:
    这个参数若设置的太小,会导致模型训练欠拟合;若设置的太大,会导致模型过拟合,前者是训练阶段的性能都很差,后者是模型训练阶段很优秀,但预测阶段很垃圾(这就是模型把数据中的噪声都学到了)
    如何判断过拟合or欠拟合?用学习曲线。
  • 损失函数:
    (待补充)
  • 激活函数:
    (待补充)

💡留一个问题:
若预测数据中也有和训练阶段类似的噪声,那么过拟合模型会不会预测得很好,相当于对有数据有噪声也没有问题?
/

原因三:选的模型不厉害

很多时候,我们都会产生这样的疑问:

  • 这个模型性能这么差,是不是我选的模型不够高大上?要不要用牛逼的模型试一下?
  • 哇,这个不是最新的,XXX年的模型性能都这么好,要不要用更牛逼的模型试一下?

有没有共鸣?😂
目前各个任务方向都有很多模型可供选择,从规则方法到统计学习,到深度学习,甚至到大模型。模型实现本身不再是一个问题,如何选择场景合适的才是问题,这需要你仔细分析自己的应用场景特点。
就比如在NLP领域,大模型有大模型的牛逼,word2vec也还有它的适合场景,bert类算法在NLU领域仍有一席之地一样,很多时候杀鸡不需要牛刀。

很多时候,只要你的数据处理的质量比较高,那么不同量级模型的差距并不会特别大,有时候模型参数提升了好几个数量级,但是算法性能确只是提升几个点,这中间,要评估一下成本和性能的平衡。
因此,个人认为,算法模型没有最牛逼的,只有最适合的,什么是最适合的:在性能能达到一定要求时,选择更轻量级。

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

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

相关文章

CSDN每日一练 |『括号上色』『严查枪火』『数组排序』2023-09-09

CSDN每日一练 |『括号上色』『严查枪火』『数组排序』2023-09-09 一、题目名称:括号上色二、题目名称:严查枪火三、题目名称:数组排序一、题目名称:括号上色 时间限制:1000ms内存限制:256M 题目描述: 小艺酱又得到了一堆括号。 括号是严格匹配的。 现在给括号进行上色。…

Springboot整合JWT完成验证登录

目录 一、引入依赖二、JwtUtil 代码解读三、LoginController 代码解读四、整体代码五、结果展示 一、引入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></depende…

趣解接口隔离原则之《做个Rapper咋这么难?》

〇、小故事 不知道大家是否看过这样一个短视频——“姐姐去找她的弟弟&#xff0c;因为她的弟弟想要当rapper而荒废了学业&#xff0c;姐姐多番劝导也没有用&#xff0c;最后一怒一下&#xff0c;把弟弟的rapper发型剃了。没有了帅气的rapper发型&#xff0c;弟弟也放弃了当ra…

数据结构与算法-选择冒泡快排计数

一&#xff1a;选择排序 场景&#xff1a;找出一个班上身高最高的人你会怎么找&#xff1f;A B C D A B 选择排序的思路和插入排序非常相似&#xff0c;也分已排序和未排序区间。但选择排序每次会从未排序区间中找到最小的元素&#xff0c;将其放到已排序区间的末尾。但是不像插…

SetWindowDisplayAffinity 函数设置窗体透明

#define WDA_NONE 0x00000000 #define WDA_MONITOR 0x00000001 #define WDA_EXCLUDEFROMCAPTURE 0x00000011 c#调用示例 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.L…

从金融史、司法体系与技术周期来看,RWA的万亿叙事经不起推敲?

加密市场走向低迷&#xff0c;但RWA&#xff08;Real World Assets&#xff0c;真实世界资产&#xff09;概念却不断升温&#xff0c;成为这个行业里为数不多各方都承认的宏大叙述&#xff0c;吸引了高盛、花旗等传统机构的兴趣。不过从金融史、司法体系与区块链技术周期等方面…

Linux基本指令及其使用

前言&#xff1a;前面我们学习了Linux环境的简单配置和XShell7的安装&#xff0c;并将云服务器部署连接到XShell本地来使用&#xff0c;今天&#xff0c;我们就一起来学习一些Linux的基本指令及其使用&#xff0c;为后续的Linux的学习打基础&#xff0c;下面&#xff0c;马上开…

openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间

文章目录 openGauss学习笔记-64 openGauss 数据库管理-创建和管理表空间64.1 背景信息64.2 注意事项64.3 操作步骤64.3.1 创建表空间64.3.2 在表空间中创建对象64.3.3 查询表空间64.3.4 查询表空间使用率64.3.5 修改表空间64.3.6 删除表空间 openGauss学习笔记-64 openGauss 数…

vite+vue3项目中集成ESLint与prettier

1. 集成eslint 1.1 安装eslint npm add -D eslint1.2 初始化ESLint配置 npx eslint --init1.3 配置初始化选择 我的选择如下&#xff1a; 安装完成后&#xff08;根目录会生成.eslintrc.js文件&#xff09; 这个配置文件是默认生成的 1.4 eslint不生效解决方案 检查vscode…

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION (论文解析)

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION 摘要1 介绍2 相关工作3 重新审视 Transformers 和 DETR4 方法4.1 用于端到端目标检测的可变形transformer4.2 Deformable Detr的其他改进和变型5 实验5.1 和DETR 比较5.2 消融实验5.3 与最先进方法的…

python数据分析之Pandas库(一)

Pandas介绍 Pandas有两种常用的数据结构&#xff1a; Series &#xff08;一维数据&#xff09;与 DataFrame&#xff08;二维数据&#xff09;。 Series 是一种类似于一维数组的对象&#xff0c;能保存不同数据类型。 DataFrame 是一个二维的表格型的数据结构。 一、导入 i…

网络编程(一):服务器模型、Java I/O模型、Reactor事件处理模型、I/O复用

文章目录 一、Socket和TCP/IP协议族的关系二、服务器模型1.C/S模型&#xff08;Client/Server Model&#xff09;2.P2P模型&#xff08;Peer-to-Peer Model&#xff09; 三、Java的I/O演进1.BIO&#xff08;阻塞&#xff09;&#xff08;1&#xff09;工作流程&#xff08;2&am…

MATLAB实现函数拟合

目录 一.理论知识 1.拟合与插值的区别 2.几何意义 3.误差分析 二.操作实现 1.数据准备 2.使用cftool——拟合工具箱 三.函数拟合典例 四.代码扩展 一.理论知识 1.拟合与插值的区别 通俗的说&#xff0c;插值的本质是根据现有离散点的信息创建出更多的离散点&#xf…

HashMap解决哈希冲突

要了解 Hash冲突&#xff0c;那首先我们要先了解 Hash 算法和 Hash 表。 Hash算法 Hash 算法&#xff0c;就是把任意长度的输入&#xff0c;通过散列算法&#xff0c;变成固定长度的输出&#xff0c;这个输出结果是散列值。 Hash表 Hash 表又叫做“散列表”&#xff0c;它是通…

7.Xaml Image控件

1.运行图片 2.运行源码 a.xaml源码 <!--Source="/th.gif" 图像源--><!--Stretch="Fill" 填充模式--><Image x:Name

Qemu 架构 硬件模拟器

Qemu 架构 硬件模拟器 Qemu 是纯软件实现的虚拟化模拟器&#xff0c; 几乎可以模拟任何硬件设备&#xff0c; 我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机&#xff0c; 虚拟机认为自己和硬件打交道&#xff0c; 但其实是和 Qemu 模拟出来的硬件打交道&#xff…

单元测试界的高富帅,Pytest框架 (二) 前后置方法和 fixture 机制

前言 上一篇文章入门篇咱们介绍了pytest的基本使用&#xff0c;这一篇文章专门给大家讲解pytest中关于用例执行的前后置步骤处理,pytest中用例执行的前后置处理既可以通过测试夹具(fixtrue)来实现&#xff0c;也可以通过xunit 风格的前后置方法来实现。接下来我们一起看看如何…

利用procrank和lsof定位出客户软件内存OOM的问题

最近遇到一些事情&#xff0c;觉得挺憋屈的&#xff0c;可是再憋屈总得往前走吧&#xff01;打工人&#xff0c;不好办啊&#xff01;事情是这样的&#xff0c;笔者在芯片原厂负责SDK和行业解决方案输出的&#xff0c;可以理解成整体SDK turnkey方案。但是有些客户多少还要改一…

单例模式(饿汉式单例 VS 懒汉式单例)

所谓的单例模式就是保证某个类在程序中只有一个对象 一、如何控制只产生一个对象&#xff1f; 1.构造方法私有化&#xff08;保证对象的产生个数&#xff09; 创建类的对象&#xff0c;要通过构造方法产生对象 构造方法若是public权限&#xff0c;对于类的外部&#xff0c;可…

企业架构LNMP学习笔记31

负载均衡服务器的高可用备用服务器配置&#xff1a; 负载均衡服务器的配置比单台服务器的配置要高很多。硬件上要上一个台阶。 所有的请求流量都要经过负载均衡服务器&#xff0c;负载均衡服务器压力很大&#xff0c;防止她宕机&#xff0c;导致后端web服务器都不可用&#xf…