超参数优化方法之网格优化

news2024/11/25 2:24:49

超参数优化方法之网格优化

超参数优化是机器学习中提升模型性能的关键步骤。在众多优化方法中,网格搜索(Grid Search)以其直观和系统性的特点脱颖而出。作为一种穷举搜索策略,网格搜索通过遍历给定参数网格中的所有可能组合,寻找最优的超参数设置。

文章目录

  • 超参数优化方法之网格优化
  • 一、枚举网格搜索(GridSearchCV)
  • 二、随机网格搜索(RandomizedSearchCV)
  • 三、对半网格搜索(HalvingSearchCV)
  • 总结


一、枚举网格搜索(GridSearchCV)

在所有超参数优化的算法当中,枚举网格搜索是最为基础和经典的方法。在搜索开始之前,需要人工将每个超参数的备选值一一列出,多个不同超参数的不同取值之间排列组合,最终将组成一个参数空间(parameter space)。枚举网格搜索算法会将这个参数空间当中所有的参数组合带入模型进行训练,最终选出泛化能力最强的组合作为模型的最终超参数。

对网格搜索而言,如果参数空间中的某一个点指向了损失函数真正的最小值,那枚举网格搜索时一定能够捕捉到该最小值以及对应的参数(相对的,假如参数空间中没有任意一点指向损失函数真正的最小值,那网格搜索就一定无法找到最小值对应的参数组合)。

参数空间越大、越密,参数空间中的组合刚好覆盖损失函数最小值点的可能性就会越大。这是说,极端情况下,当参数空间穷尽了所有可能的取值时,网格搜索一定能够找到损失函数的最小值所对应的最优参数组合,且该参数组合的泛化能力一定是强于人工调参(人工是不可能穷尽所有的取值的)的。

但是,参数空间越大,网格搜索所需的算力和时间也会越大,当参数维度上升时,网格搜索所需的计算量更是程指数级上升的。同时,参数优化的目标是找出令模型泛化能力最强的组合,因此需要交叉验证来体现模型的泛化能力,假设交叉验证次数为5,则三个参数可能就需要建模几百次。在面对超参数众多、且超参数取值可能无限的人工神经网络、融合模型、集成模型时,伴随着数据和模型的复杂度提升,网格搜索所需要的时间会急剧增加,完成一次枚举网格搜索可能需要耗费几天几夜。

二、随机网格搜索(RandomizedSearchCV)

根据上文所述,当所使用的算法确定时,决定枚举网格搜索运算速度的因子一共有两个:第一个是参数空间的大小,参数空间越大,需要建模的次数越多;第二个是数据量的大小,数据量越大,每次建模时需要的算力和时间越多。

因此,sklearn中的网格搜索优化方法主要包括两类,其一是调整搜索空间,其二是调整每次训练的数据。其中,调整参数空间的具体方法,是放弃原本的搜索中必须使用的全域超参数空间,改为挑选出部分参数组合,构造超参数子空间,并只在子空间中进行搜索。

在sklearn中,随机抽取参数子空间并在子空间中进行搜索的方法即为随机网格搜索RandomizedSearchCV。由于搜索空间的缩小,需要枚举和对比的参数组的数量也对应减少,整体搜索耗时也将随之减少,因此:

  • 当设置相同的全域空间时,随机搜索的运算速度比枚举网格搜索快很多。
  • 当设置相同的训练次数时,随机搜索可以覆盖的空间比枚举网格搜索大很多。
  • 随机网格搜索得出的最小损失与枚举网格搜索得出的最小损失(一般来说)很接近。

相比枚举网格搜索,随机网格搜索可以说是既提升了运算速度,又没有过多地伤害搜索的精度,不过,需要注意的是,随机网格搜索在实际运行时,并不是先抽样出子空间,再对子空间进行搜索,而是仿佛“循环迭代”一般,在这一次迭代中随机抽取1组参数进行建模,下一次迭代再随机抽取1组参数进行建模,由于这种随机抽样是不放回的,因此不会出现两次抽中同一组参数的问题。我们可以控制随机网格搜索的迭代次数,来控制整体被抽出的参数子空间的大小,这种做法往往被称为“赋予随机网格搜索固定的计算量,当全部计算量被消耗完毕之后,随机网格搜索就停止”实际执行代码的时候是用循环的方式执行的。

完整实现代码以及枚举网格搜索与随机网格搜索区别

三、对半网格搜索(HalvingSearchCV)

随机网格搜索时通过调整搜索空间来提高搜索速度,对半网格搜索就是通过调整每次训练的数据来提高搜索速度。
假设现在存在数据集 ,从数据集 中随机抽样出一个子集𝑑。如果一组参数在整个数据集𝐷 上表现较差,那大概率这组参数在数据集的子集𝑑上表现也不会太好。反之,如果一组参数在子集𝑑 上表现不好,也不会信任这组参数在全数据集𝐷 上的表现。参数在子集与全数据集上反馈出的表现一致,如果这一假设成立,那在网格搜索中,比起每次都使用全部数据来验证一组参数,或许可以考虑只带入训练数据的子集来对超参数进行筛选,这样可以极大程度地加速运算。

完整实现代码以及对半网格搜索与随机网格搜索区别

总结

欢迎关注我的公众号~

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

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

相关文章

从0构建一款appium-inspector工具

上一篇博客从源码层面解释了appium-inspector工具实现原理,这篇博客将介绍如何从0构建一款简单的类似appium-inspector的工具。如果要实现一款类似appium-inspector的demo工具,大致需要完成如下六个模块内容 启动 Appium 服务器连接到移动设备或模拟器启…

构建机部署之Azure DevOps添加代理机(Linux)

目录 一、权限检查二、添加代理机三、更换代理四、删除并重新配置代理 一、权限检查 确认用户具有权限 默认代理池的所有者有添加代理的权限 1)代理池所有者可以生成一个PAT,共享使用。代理不会在日常操作中使用此人凭据,但需要使用有权限的…

【机器学习】机器学习与图像识别的融合应用与性能优化新探索

文章目录 引言第一章:机器学习在图像识别中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 卷积神经网络1.2.2 迁移学习1.2.3 混合模型 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 Adam优化器 1.4 模型评估与性能优…

小学vr虚拟课堂教学课件开发打造信息化教学典范

在信息技术的浪潮中,VR技术正以其独特的魅力与课堂教学深度融合,引领着教育方式的创新与教学方法的变革。这一变革不仅推动了“以教促学”的传统模式向“自主探索”的新型学习方式转变,更为学生带来了全新的学习体验。 运用信息技术融合VR教学…

前端学习(五)CSS浮动与补白

目录&#xff1a; 内容&#xff1a; //设置左右浮动 .left{float:left; } .right{float:right; } /*必须设置不同浮动*/ //创建div <div> <dic class"left">左边</div> <div class"right">右边</div> </div> //设置浮…

[C/C++] -- gdb调试与coredump

1.gdb调试 GDB&#xff08;GNU 调试器&#xff09;是一个强大的工具&#xff0c;用于调试程序。 安装 1. wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.tar.gz 2. tar -zxvf gdb-8.1.1.tar.gz 3. cd gdb-8.1.1 4. ./configure 5. make 6. make install 基础用法 …

springboot的非物质文化遗产管理系统-计算机毕业设计源码16087

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

图书管理系统(持久化存储数据以及增添新功能)

目录 一、数据库表设计 二、引入MyBatis 和MySQL 驱动依赖 三、配置数据库 & 日志 四、Model创建 五、枚举类 常量类用户登录 六、用户登录 七、添加图书 八、图书列表 九、修改图书 十、删除图书 十一、批量删除 十二、强制登录 十三、前端代码 &#xff0…

【C语言】bool 关键字

在C语言中&#xff0c;bool类型用于表示布尔值&#xff0c;即真或假。C语言本身在标准库中并未提供布尔类型&#xff0c;直到C99标准引入了stdbool.h头文件。该头文件定义了bool类型&#xff0c;以及两个常量&#xff1a;true和false。在此之前&#xff0c;通常使用整数来表示布…

6.8应用进程跨网络通信

《计算机网络》第7版&#xff0c;谢希仁 理解socket通信

初入Node.js必备知识

Node.js因什么而生&#xff0c;作用是干什么&#xff1f; Node.js是一个用c和c打造的一个引擎&#xff0c;他能够读懂JavaScript&#xff0c;并且让JavaScript能够和操作系统打交道的能力 JavaScript 原本只能在浏览器中运行,但随着Web应用程序越来越复杂,仅靠客户端JavaScri…

35 智能指针

目录 为什么需要智能指针&#xff1f;内存泄露智能指针的使用及原理c11和boost中智能指针的关系RAII扩展学习 1. 为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内存方面的问题&#xff1f; int div() {int a, b;cin >> a >> b;if (…

AutoPSA的应力加强系数

GD2000里的直连三通的应力加强系数是错误的&#xff0c;建议用户删除再使用。 当应力加强系数为空的时候&#xff0c;psa是会自已计算应力加强系数&#xff1b;当用户填了加强系数&#xff0c;软件就优先用填了的加强系数&#xff1b; 直连三通和假三通的作用一样&#xff0c…

JAVA医院绩效考核系统源码:绩效考核的重要性、绩效管理分配实践具体实操,基于B/S架构开发的一套(公立医院绩效考核系统源码)

JAVA医院绩效考核系统源码&#xff1a;绩效考核的重要性、绩效管理分配实践具体实操&#xff0c;基于B/S架构开发的一套&#xff08;公立医院绩效考核系统源码&#xff09; 系统开发环境 开发语言&#xff1a;java 技术架构&#xff1a;B/S架构 开发工具&#xff1a;maven、…

C++基础(五):类和对象(上)

从今天开始&#xff0c;我们正式进入面向对象编程&#xff0c;这是C与C语言的重要区别&#xff0c;编程思想发生变化&#xff0c;那到底什么是面向对象编程呢&#xff1f;接下来&#xff0c;我们慢慢的深入学习。 目录 一、面向过程和面向对象初步认识 1.1 面向过程 1.2 面…

[激光原理与应用-97]:激光焊接焊中检测系统系列介绍 - 1 - 什么是焊接以及传统的焊接方法

目录 一、什么是焊接 1.1 概述 1.2 基本原理 二、传统的焊接技术与方法 2.1 手工电弧焊&#xff1a; 1、定义与原理 2、特点 3、焊条类型 4、应用领域 5、安全注意事项 2.2 气体保护焊&#xff1a; 1、原理与特点 2、应用领域 3、气体选择 4、注意事项 2.3 电阻…

Zabbix 配置PING监控

Zabbix PING监控介绍 如果需要判断机房的网络或者主机是否正常&#xff0c;这就需要使用zabbix ping&#xff0c;Zabbix使用外部命令fping处理ICMP ping的请求&#xff0c;在基于ubuntu APT方式安装zabbix后默认已存在fping程序。另外zabinx_server配置文件参数FpingLocation默…

layui中添加上下文提示弹窗

<p context-tip"自定义上下文提示信息">段落内容...</p> <div context-tip"自定义上下文提示信息">div内容...</div>// 悬浮提示 $("body").on("mouseenter", "*[context-tip]", function () {v…

清华 PowerPaint:多功能局部重绘模型

PowerPaint 是清华和上海人工智能实验室推出的一个开源高质量多功能的图像修补模型&#xff0c;同时支持插入物体、移除物体、图像扩展、形状可控的物体生成功能。 可以在 清华 PowerPaint&#xff1a;多功能局部重绘模型

【大语言模型系列之Transformer】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…