【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?

        在之前的文章中,我主要介绍了学习率 η正则化强度 λ 这两个超参数。这篇文章中我就主要拿这两个超参数来进行举例说明。如果想在开始阅读本文之前了解这两个超参数的有关内容可以参考我之前的文章,文章链接为你放在了这里:

【机器学习300问】10、学习率设置过大或过小对训练有何影响?icon-default.png?t=N7T8http://t.csdnimg.cn/ZvFiw【机器学习300问】18、正则化是如何解决过拟合问题的?icon-default.png?t=N7T8http://t.csdnimg.cn/Pmn6E

一、什么是机器学习中的参数和超参数

        机器学习中的参数与超参数在训练模型时扮演着不同的角色,一句话说明两者的关系:“参数是机器学习算法自己学习到的,超参数是人工设定的。”

(1)参数(parameters)的定义和作用

        参数是模型在训练过程中学习到的变量,通常代表模型对输入数据的内在表示或模型的内在结构特征,他是模型的一部分;在神经网络中,每个神经元的权重和偏置都是参数。

(2)超参数(hyperparameters)的定义和作用

        超参数是在开始训练模型之前由人设置的变量,它们不是通过训练数据学习得到的,而是指导模型训练过程和结构的关键设定。

二、什么是超参数优化?

(1)看个例子        

        设想一个回归任务,如下图所示,用不同次数的多项式(多项式的次数就是这个回归任务的超参数)进行拟合,可以得到不同的模型。正确的设置模型多项式的次数,就可以让模型的拟合效果最佳且泛化能力最好。

        但绝大多数情况下无法想这个图中显示的直观感受出超参数该怎么设置。

(2)超参数优化的定义

        超参数优化是指在训练机器学习模型时,通过自动调整模型中的超参数来寻求最优模型性能的过程。

(3)为什么要进行超参数优化

  • 最优超参数组合可能并不直观,不同数据集、模型结构可能需要不同的超参数设置。手动设置超参数可能无法挖掘出模型的最佳性能。
  • 手动尝试不同的超参数组合需要花费大量时间和计算资源,尤其是对于大型模型和复杂任务,可能需要尝试几十甚至上百种不同的超参数组合。

(4)超参数优化的目的是什么?

        超参数优化的目的是在多维空间(每个维度就是某一个超参数的可能取值)中找到使模型性能(如在验证集上的精度或AUC等指标)达到最优的超参数组合

(5)为什么是对超参数组合作为整体进行优化而不是先优化其中一个再优化另一个?

① 超参数组合是什么

        超参数组合,拿学习率、正则化强度举例,是指特定的某个学习率和正则化强度比如(0.01, 0.1)这意味着学习率被设置为0.01,而正则化强度被设置为0.01。

② 超参数之间相互影响

        在机器学习和深度学习中,超参数之间的关系往往是相互耦合和相互影响的。例如,学习率和正则化强度共同决定了模型的训练过程和最终的泛化性能。它们之间并非独立作用,而是彼此交织影响模型的表现。

三、常见的超参数优化方法有哪些?

(1)网格搜索(Grid Search)

        网格搜索是一种系统性的超参数搜索方法,它通过在预先定义好的超参数网格上遍历所有可能的超参数组合,并在验证集上评估每个组合下的模型性能。最后,选择验证性能最佳的超参数组合。虽然网格搜索方法简单易行,但它在超参数空间很大的情况下会变得非常耗时和资源密集。

(2)随机搜索(Random Search)

        随机搜索同样在预定义的超参数空间里进行搜索,但它不像网格搜索那样穷举所有组合,而是随机抽样一些超参数组合进行评估。这种方法相对于网格搜索更高效,尤其在高维超参数空间时,随机搜索可能更快地找到较好的超参数设置。但由于其随机性,有可能会错过最优参数。

(3)贝叶斯优化(Bayesian Optimization)

        贝叶斯优化是一种基于概率的优化方法,利用概率模型(如高斯过程)通过观测之前的超参数设置及其对应的验证性能,不断更新概率模型,来预测下一个最有希望的超参数组合。相较于网格搜索和随机搜索,贝叶斯优化通过构建概率模型来预测哪些参数可能会得到更好的结果,因此要比前面两种方法更高效。

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

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

相关文章

测试公众号配置,redirect_uri 域名与后台配置不一致 10003

微信公众号配置问题(测试公众号) 起因 公司部署新环境,需要用测试公众号进行测试外链效果,这个外链是用来获取用户授权,如下链接 解决办法 https://open.weixin.qq.com/connect/oauth2/authorize? appidYOUR_APPID& redirect_uriYOUR…

Linux应用开发---网络通信

Linux应用开发—网络通信 1 网络通信概述 Linux下的网络编程,我们一般称为 socket 编程,socket 是内核向应用层提供的一套网络编程接口,我们可以基于socket接口开发自己的网络相关应用程序。 1.1 socket 简介 套接字(socket&…

新数据不影响原来的数据

问题描述 新数据修改时,原来的数据也会受影响 const obj1 ref({ name: slx, age: 20 })const obj2 obj1obj2.value.name hhhhconsole.log(obj1, obj1.value)console.log(obj2, obj2.value)解决方法 (仅适用于对象 在这段代码中,obj1 和 obj2 指向同…

Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案

声明:原创文章,禁止转载! Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案 分析Android11 系统对于EMMC/UFS作为内部存储、SD卡被格式化为内部存储、SD卡/U盘被格式化为便携式存储的不同处理 一.现象描述 实测Android9 Android10 A…

【Qt】常见问题

1.存在未解析的标识符 将build文件夹删掉重新编译。 2.左侧项目目录栏无法删除已添加项目 打开目标项目上一级的pro文件,将目标文件名字注释或者删除掉,最后保存,qt就会自动更新,将该项目隐藏掉。 3.在qt creator下添加槽函数…

mmdetection使用自己的voc数据集训练模型实战

一.自己数据集整理 将labelimg格式数据集进行整理 1.1. 更换图片后缀为jpg import os import shutilroot_path/media/ai-developer/imgfileos.listdir(root_path)for img in file:if img.endswith(jpeg) or img.endswith(JPG) or img.endswith(png):img_pathos.path.join(root…

【PTA选择题/基础夯实/期末复习】链表文件操作

2-1 对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是()。 A.headNULL B.head→nextNULL C.head→nexthead D.head!NULL 2-2 链表不具有的特点是()。 A.可随机访问任一元素 B.插入、删除不需要移…

Express框架介绍—node.js

Express—Node.js 官网传送门(opens new window) 基于 Node.js 平台,快速、开放、极简的 Web 开发框架 Express 是用于快速创建服务器的第三方模块。 Express 初体验 基本使用 安装 Express: npm install express创建服务器,监听客户端请…

PyTorch 2.2 中文官方教程(十九)

使用 RPC 进行分布式管道并行 原文:pytorch.org/tutorials/intermediate/dist_pipeline_parallel_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者:Shen Li 注意 在github中查看并编辑本教程。 先决条件: PyTorc…

Java13常用类3:Date类

4. Date类1:jdk1.8 之前 jdk1.8 之前的API: System类的currentTimeMillis():获取当前系统时间两个Date类: SimpleDateFormate类:用于格式化、解析Calendar日历类的使用:抽象类 4.1 两个Date类 时间戳&…

《动手学深度学习(PyTorch版)》笔记6.1

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

Python循环语句——for循环的基础语法

一、引言 在Python编程的世界中,for循环无疑是一个强大的工具。它为我们提供了一种简洁、高效的方式来重复执行某段代码,从而实现各种复杂的功能。无论你是初学者还是资深开发者,掌握for循环的用法都是必不可少的。在本文中,我们…