什么是模型鲁棒性和泛化能力
目录
1、鲁棒性
2、泛化能力
1、鲁棒性
定义:在统计学领域和机器学习领域,对异常值也能保持稳定、可靠的性质,称为鲁棒性。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。有一个与鲁棒性很相似的概念叫模型的泛化能力。
鲁棒是Robust的音译,也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,也是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。
鲁棒性包括稳定鲁棒性和品质鲁棒性。一个控制系统是否具有鲁棒性,是它能否真正实际应用的关键。因此,现代控制系统的设计已将鲁棒性作为一种最重要的设计指标。
AI模型的鲁棒可以理解为模型对数据变化的容忍度。假设数据出现较小偏差,只对模型输出产生较小的影响,则称模型是鲁棒的。 Huber从稳健统计的角度给出了鲁棒性的3个要求:
- 模型具有较高的精度或有效性。
- 对于模型假设出现的较小偏差(noise),只能对算法性能产生较小的影响。
- 对于模型假设出现的较大偏差(outlier),不能对算法性能产生“灾难性”的影响。
我们先来看一组例子理解鲁棒性的表现:

如上图,生成的对抗样本中的扰动对人类视觉来说不敏感,但是对于模型来说,原本以57.7%的概率被判成熊猫的图片在修改后以99.3%的概率被判成了长臂猿。则该系统的抗干扰性差,鲁棒性低。
提升鲁棒性的方法:
- 从数据上提升性能
收集更多的数据、产生更多的数据、对数据做缩放、对数据做变换、特征选择、重新定义问题
- 从算法上提升性能
算法的筛选、从文献中学习、重采样的方法
- 从算法调优上提升性能
注意力机制(给与每个像素权重,来衡量像素间的相关性SPNet)、模型可诊断性、权重的初始化、学习率、激活函数、网络结构、batch和epoch、正则项、优化目标、提早结束训练
- 用融合方法提升效果
模型融合、视角融合、stacking、多尺度融合(使用不同尺度的卷积核,增加模型的感受野,典型代表金字塔Deeplab系列)
- 增加模型宽度
将通道分成多组,每组单独进行卷积,然后再将通道合成可以减少模型的参数,提高模型准确率,增加鲁棒性(ResNext)。
2、泛化能力
(generalization ability)是指机器学习算法对新鲜样本的适应能力,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。
根据泛化能力好的网络设计的神经网络控制器的鲁棒性也会有所改善。泛化能力指对未知数据的预测能力。例如小样本。
提升模型泛化能力的方法:
- 从数据角度上来说。可以通过数据增强、扩充训练集等方法提高泛化能力。
- 在训练策略上,可以增加每个batch size的大小,进而让模型每次迭代时见到更多数据,防止过拟合。
- 调整数据分布,做训练数据集的类别均衡。
- 调整网络结构。如果数据集较小,可以降低模型复杂度防止过拟合。如果数据集较大,可以尝试更加复杂的模型。
- 减少过拟合的方法也可以提升模型的泛化能力。
模型泛化能力的评估:用测试集对模型进行评估。
通常有下列方法:
- 留出法
hold-out。 K折交叉验证法cross validation。- 留一法
Leave-One-Out:LOO。 - 自助法
bootstrapping。



相关文章:
什么是模型鲁棒性和泛化能力
目录 1、鲁棒性 2、泛化能力 1、鲁棒性 定义:在统计学领域和机器学习领域,对异常值也能保持稳定、可靠的性质,称为鲁棒性。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃&a…...
AI翻译工具分享
LanguageX简介 冠军翻译引擎交互式翻译,为专业译者而生的新一代译者工具 自2017年神经网络机器翻译流行以来,“机器翻译替代人工翻译”的观点屡见不鲜。作为一个技术和语言背景结合的团队,LanguageX认为语言服务是高度复杂、需要创意的智力活动,并肩负着人类沟通的重要使命。La…...
选男友最好的方式就是爬山
爬山,作为一种户外运动,一直备受青睐,拥有着许多的好处。而对于现代人来说,选择一位合适的伴侣,也是一件非常重要的事情。 那么,为什么不将两者结合起来,用爬山来寻找最合适的男友呢?…...
C++面经:初始化全局变量和未初始化全局变量有什么区别
全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。 考点: 考察C/C语言内存模型,.data,.bss段存放的内容。 …...
vue-2 指令:
指令 什么是html属性:就是用来扩展html标签的功能,属性是写在html的开发标签中:属性“属性值”, 指令就是用来扩展在vue中标签的功能 {{}} :模板语法,文本插值 不可解析html标签 {{ 可以写变量&#x…...
非常提效的7款原型工具推荐
原型图工具允许在开发前进行测试和迭代过程,可以帮助节省大量的开发时间和成本。在本文中,我们盘点了7个易于使用的原型图工具,以提高您的生产力! 1.即时设计 即时设计是一款免费的在线 UI 设计工具,无系统限制&…...
最新Kafka和RabbitMQ消息队列经典面试题汇总(含答案)
最新Kafka和RabbitMQ消息队列经典面试题汇总 1.消息队列的应用场景有哪些?2.RabbitMQ 有哪些优点?3.RabbitMQ 有哪些重要的角色?4.RabbitMQ 有哪些重要的组件?它们有什么作用?5.什么是消息持久化?6.RabbitMQ 要实现消息持久化,需要满足哪些条件?7.消息持久化有哪些缺点…...
软件测试行业对新人友好吗?
软件测试真的算是对新人小白非常友好的学科了,但是你也千万不要抱有幻想,觉得轻轻松松就能掌握真正的技能,然后如愿找到高薪工作。从0到1还是需要一个过程的,也是需要你付出相当大的努力去学习的 随着人工智能时代的到来…...
Python requests 模块
Python中的requests模块是一个HTTP客户端库,它允许您向任何Web服务器发送HTTP请求并获取响应。 下面是一个简单的示例,向某个网站发送一个HTTP GET请求: python import requests response requests.get("http://www.example.com&quo…...
IOC理论推导
1.UserDao接口 package com.kuang.dao;public interface UserDao {void getUser(); }2.UserDaoImpl业务接口 package com.kuang.dao;public class UserDaoImpl implements UserDao{Overridepublic void getUser() {System.out.println("默认获取用户数据");} }3.Us…...
我的一些感悟
记录一些感悟,不定时更新 当面临稍微突发的情况时,感到慌乱;遭遇一点挫折时,情绪低落;面对问题,不是首先思考解决办法,而是抱怨不已。这种心态基本上无法取得成功 做事雷厉风行,需要…...
NC 人力薪酬管理怎么结账?
NC 人力薪酬管理结账流程 1、先在【薪资发放】节点选择相应的薪资方案进行查询操作,然后进行计算操作; 2、计算操作完后,再进行审核操作; 3、如果薪资方案勾选了“发放数据需要审批”属性,则需要在【发放申请】节点…...
JavaWeb编程面试题——Spring Boot
目录 引言一、面试题导航二、面试题目1.什么是SpringBoot?2.谈谈你对SpringBoot的理解?3.为什么需要SpringBoot?4.SpringBoot的配置文件有哪几种格式?5.SpringBoot支持哪些日志框架?推荐和默认的日志框架是哪个&#x…...
Educational Codeforces Round 148 (Rated for Div. 2) A,B,C
A. New Palindrome 要求:对于一个回文串,判断是否可以转换为其他回文串 思路:如果回文串的前一半存在不相同的字符,就可以转换 #include<bits/stdc.h> using namespace std;int n; string s;void solve(){cin>>s;boo…...
C#串口通信从入门到精通(15)——流量控制(XON/XOFF协议实现)
文章目录 前言1、XON/XOFF流控原理介绍2、XON/XOFF发送端C#代码实现3、XON/XOFF接收端C#代码实现前言 通信双方在一个发送能力大于接收处理能力时若不限制发方的数据流量则最终会“淹没”接收方而导致数据丢失,针对这个问题常规的有硬件流控和软件流控方法,本文介绍的就是软…...
基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装
这里我们为gitlab服务器准备一台虚拟机:192.168.19.6-gitlab服务器 在code阶段,我们需要将不同版本的代码存储到一个仓库中,常见的版本控制工具就是SVN或者Git,这里我们采用Git作为版本控制工具,GitLab作为远程仓库。…...
数字化转型浪潮下,如何选择适合企业的低代码平台
近日,艾瑞咨询发布了《数字新生态:中国低代码厂商发展白皮书》(以下简称“报告”),在该报告中,艾瑞咨询对中国当前的低代码市场进行了非常细致的解构,并针对当前企业数字化转型,对低…...
利用 Amazon API Gateway 和 Amazon Lambda 处理 Cloudfront 的内容请求
概述 国内 Amazon Cloudfront 目前不支持 Lambdaedge 功能,不能实现基于 CDN 的 A/B 测试、rewrite、redirect、token 认证和产生 response 等功能,本文介绍如何利用 API Gateway 和 Lambda 实现 Lambdaedge 的功能。下面实验介绍通过 request header 参…...
Parasoft和TASKING联手提供卓越的汽车软件开发和自动化测试
Parasoft与TASKING宣布建立合作 2023年4月26日,全球嵌入式软件测试解决方案领导者Parasoft宣布与汽车嵌入式软件开发工具行业领导者TASKING建立合作伙伴关系。Parasoft和TASKING的合作为汽车行业提供了一套完整的软件全生命周期解决方案,通过CI/CD工…...
java读取word文档内容
首先在pom文件引入依赖: <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version> </dependency> <dependency><groupId>org.apache.poi</groupId&g…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
