深度学习基础—超参数调试

1.超参数调试顺序


        在训练深度网络最难的事情之一是超参数的选择,如何选择合适的超参数取值?下面我将谈谈,如下是我所理解的超参数调试顺序:

重要性排序

超参数

Top1梯队

学习率a

Top2梯队

min-batch大小,隐层神经元个数,动量梯度下降法参数b

Top3梯队

隐层层数,学习衰减率,Adam优化的参数b1、b2

        实际上,Adam优化的参数b1、b2、ℇ通常不进行调试,选择默认值就能有很好的效果,即b1=0.9、b2=0.999、ℇ=10^(-8)。

2.核心思想


        如何选择合适超参数值?与其说是选择,不如说是实验。核心思想是:由粗到细,随机取值+精准搜索。

        以模型只含有两个参数为例:

        随机取值就是在上图这样的平面中,随机选择一定数量的点,这些点的值作为超参数的值进行训练,选择其中表现较好的几个参数值。

        为什么要随机,而不是均匀的取值?因为对于超参数,我们并不知道超参数之间相对的重要程度,比如学习率a和Adam算法的ℇ,经过试验发现的值实际对模型影响不大,也就是说均匀的选择了部分点,我们发现模型的效果差别都不大,这就影响到我们对其他参数选择的判断,从而错过最优的参数值选择。

        随机取值选择出来比较好的参数值后,我们需要进行精确搜索。假如我们发现右下角的点效果都比较好,那么我们需要对右下角进行方法,重新随机取值,进行更加精确的搜索。

        注意:上述我举的例子是两个参数的例子,实际上神经网络的参数有很多,那么随机取值的空间就是高维空间,比如3个参数就是正方体空间,4个参数就是4维空间......

3.搜索范围


        搜索参数的方法已经知道了,那搜索范围呢?也就是我们应该如何选择参数的范围进行随机取值?答案是根据不同的参数选择合适的标尺。

        上图是标准的数轴(刻度随便画的,能理解就行),比如现在这是学习率a的搜索范围,如果沿数轴随机取值,那么90%的数落在[0.1,1]之间,对于[0.001,0.1]之间只有10%的搜索范围,这显然是不合理的,因为经验主义告诉我们,学习率一般不会特别高,[0.1,1]的区间搜索结果不是最理想的学习率,反而最理想的在更小的区间。因此我们需要放大[0.001,0.1]这一区间的搜索,就需要采用对数标尺。

        上图是对数标尺的数轴,即log10(x),则在对数标尺的数轴上,前面我们讨论的学习率就会均匀分布,这样的话[0.001,0.1]区间的搜索概率就会大大增加,从而加快寻找合适参数的速度。

        在Python中,可以使用下面的方式生成[0.001,1]之间的数:

r=-3*np.random.rand()
a=10**(r)

        选择合理标尺的本质是因为超参数对不同区间的数值敏感度不一样。比如在指数加权移动平均值中的超参数b,b在[0.9,0.9005]和[0.9,0.999]的效果就有很大差别,在[0.9,0.9005]中b变化一点,实际平均值变化不大(0.9相当于大约10个数的平均值,0.9005相当于大约10.05个数的平均值),而在[0.9,0.999]中b变化一点,实际平均值就变化很大(0.999相当于大约1000个数的平均值)。因此对于区间的搜索,就需要加大[0.9,0.999]的搜索概率(范围)。

        注意:在运用指数加权移动平均值的优化算法中,对于b的常见取值0.9、0.999取对数不好求,因此可以计算(1-b),此时就转化成0.1、0.001了,方便运用对数标尺进行搜索。

        其实,即使不选择合理的标尺,在参数数量多的模型上利用随机取值+精准搜索,也可以达到不错的效果,因为精准搜索的过程也是放大了超参数敏感区间的范围,从而也能寻找到比较合理的超参数取值。

4.超参数训练模式


        超参数训练的两种模式:在训练模型的时候,一部分人会选择下图所示的训练模型,即只训练一个模型,对这个模型进行精细化管理,每天随时监督模型的训练情况,根据模型的效果随时调整超参数的值,以便让模型达到很好的效果。这种模式可以比喻成panda模式,即熊猫的孩子很少,且极难成活,于是一胎只养一个,悉心照顾,确保小熊猫的健康成长。这种模式适用于计算资源不多的情况下,没有多余的算力支撑同时训练其他模型。

        如下图是第二种模式,根据不同的超参数设置,同时训练多种模型,比较哪一种模型更加好,从而选择性能较好的模型。这种模式可以比喻成caviar模式,即鱼子酱模式,鱼类每次排除多个卵,对于每个卵进行相同的照顾方式,在相同的环境条件下进行生长,表现不良的逐渐淘汰,选择表现良好的幼苗。这种模式适用于计算资源富余的情况下,需要大量算力支撑同时训练多种模型。

        但是有时候,某些领域需要实验多种模型,但是数据量太大,同时训练多种模型计算机可能无法实现,那么就需要将两种方式结合起来,即一次训练一种模型,每种模型训练一段时间观察效果,表现差劲的模型就会淘汰,每隔一段时间选择其他超参数训练新的模型。就像熊猫虽然一胎的数量少,但是选择悉心照顾其中一只,如果无法成活,那就再生一胎,用一生的时间繁衍后代,从而哺育多只小熊猫。

        最后想说的一点是,对与超参数的值的设定,故步自封是不可取的,我们不应该局限于深度学习领域,而是应该跨专业、跨领域去寻找新的灵感。同时,对于训练的模型,应该每隔一段时间重新测试参数的值是否适用。

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

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

相关文章

QT-五子棋游戏

QT-五子棋游戏 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "GameModel.h" #include <time.h> #include <stdlib.h>GameModel::GameModel(){}void GameModel::startGame(GameType type){gameType type;//初始化棋盤game…

uniapp/vue如何实现一个子表单及子表单作用

子表单是一个辅助表单或一个表&#xff0c;它允许在主表单中添加多个行式项目&#xff0c;以处理与主记录相关联的多个辅助项目或数据。子表单在多种应用场景中发挥着重要作用&#xff0c;特别是在需要处理一对多关系的数据时。 以下是对子表单的详细解析&#xff1a; 定义与特…

90%的设计师都不知道的免抠图素材插件,水花免抠png素材轻松搞定!附保姆教程

你是否曾在设计中为绘制那些晶莹剔透的水花而苦恼&#xff1f;用PS太麻烦&#xff0c;细节根本抠不清楚&#xff1b;去素材网找&#xff0c;不是付费太高就是图案不满意&#xff01;可以试试千鹿设计助手的“AI免抠生成”插件&#xff0c;接下来我来分享一下我的一些使用过程和…

ardupilot开发 --- C嘎嘎 篇

长生不老&#xff1f;三界六道不就毁在这4个字上&#xff1f; 溜撒点一起上吧 cout和cin的使用&#xff0c;标准输入输出<< 和 >> 的使用数据类型&#xff08;函数&#xff09;模板的使用&#xff1a;命名空间的使用&#xff0c;std命名空间语句块new 的使用引用 &…

fiddler在软件测试中的使用(详细版)

1.抓包&#xff0c;辅助定位bug&#xff08;web中类似谷歌浏览器F12开发调试工具&#xff09; 合格的软件测试工程师&#xff0c;不仅仅需要能够发现bug&#xff0c;还需要能透过bug表象&#xff0c;分析出问题根本原因&#xff0c;从而提升bug的解决效率&#xff0c;通过fidd…

手机使用技巧:如何恢复Android手机不见的短信

在您的 Android 手机上丢失短信可能是一种令人沮丧的经历&#xff0c;尤其是在文本包含重要信息的情况下。幸运的是&#xff0c;有一些方法可以在Android上恢复已删除的短信。在这篇博文中&#xff0c;我们将讨论几种在Android手机上恢复已删除短信的方法。 为什么需要恢复Andr…

vue2版本空目录下创建新项目的方法2024

vue2版本空目录下创建新项目的方法2024 node -v npm -v vue -V 安装vue-cli 2.9版本的命令 npm install vue-cli -g 卸载vue2.x方法&#xff1a; npm uninstall vue-cli -g 设置 NPM 镜像 npm config set registry https://registry.npmmirror.com vue -V 报错时需设置环…

JVM的内存模型和垃圾回收

JVM内存区域 内存模型图&#xff1a; 堆 线程共享。所有的对象实例以及数组都要在堆上分配。回收器主要管理的对象。 它的目的是存放对象实例。同时它也是GC所管理的主要区域&#xff0c;因此常被称为GC堆&#xff0c;又由于现在收集器常使用分代算法&#xff0c;Java堆中还…

【Spring Cloud】Consul

官网介绍: Spring Cloud Consul该项目为Spring Boot应用程序提供了与Consul的集成,通过自动配置和绑定到Spring环境以及其他Spring编程模型习语。通过几个简单的注解,您可以在应用程序内部快速启用和配置常见模式,并使用基于Consul的组件构建大型分布式系统。提供的模式包括…

【网络编程】第十一章 数据链路层 - 以太网(MAC+MTU+ARP+MSS+RARP)

文章目录 重点链路层以太网MAC帧格式碰撞域MAC地址MAC地址和IP地址 MTU-最大传输单元MTU 对 IP 的影响MTU 对 UDP 的影响MTU 对 TCP 的影响-MSS ARP协议ARP协议的工作流程ARP请求的过程ARP应答的过程 ARP 缓存中间人攻击 RARP协议 重点 数据链路层的作用&#xff1a;两个设备 …

虚幻5|AI视力系统,听力系统,预测系统(2)听力系统

虚幻5|AI视力系统&#xff0c;听力系统&#xff0c;预测系统&#xff08;1&#xff09;视力系统-CSDN博客 一&#xff0c;把之前的听力系统&#xff0c;折叠成函数&#xff0c;复制粘贴一份改名为听力系统 1.小个体修改如下&#xff0c;把之前的视力系统改成听力系统 2.整体修…

解决Jasper Studio预览无数据源的问题:在Dataset and Query里面预览数据为空,但是浏览器访问接口,是存在数据的。

目录 1.1、错误描述 1.2、解决方案 1.1、错误描述 最近接触Jasper Studio报表开发比较多一些&#xff0c;遇到了很多的问题&#xff0c;其中有一个问题就是&#xff1a;在Jasper Studio中的Dataset and query里面预览数据&#xff0c;发现是空的&#xff0c;如下图所示&…

数据仓库ETL开发

在企业数字化转型的过程中&#xff0c;数据仓库已经成为了企业管理和决策的重要工具。数据仓库ETL开发是构建数据仓库的关键步骤之一&#xff0c;它可以帮助企业从源系统中抽取、清洗、转换和整合数据&#xff0c;方便企业进行管理和分析。本文将介绍如何高效实现数据仓库ETL开…

Spring底层机制环境搭建

文章目录 1.模块创建和依赖引入1.聚合模块&#xff0c;下面有一个myspring2.查看父模块是否管理了子模块3.myspring模块引入基本包 2.进行环境搭建1.目录概览2.UserController.java3.UserService.java4.UserDao.java5.AppMain.java6.beans.xml7.测试8.配置UserController.java为…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代&#xff0c;电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络&#xff0c;还是订阅更新&#xff0c;我们几乎每天都在使用电子邮件。但随着账户数量的增加&#xff0c;管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验&#xff1f;Mailbird…

【PaperInFive-时间序列预测】TSMixer:用于时间序列预测的全MLP架构(谷歌)

全文总结&#xff1a;本文研究了线性模型用于时间序列预测的能力&#xff0c;提出了时间序列混合器(TSMixer)&#xff0c;一种通过堆叠多层感知器(mlp)设计的新架构。TSMixer在时间和特征维度上交替应用mlp&#xff0c;在概念上对应于时间混合和特征混合操作&#xff0c;有效地…

AI开发者大赛 | 6道算法赛题上新

2024 AI开发者大赛正在如火如荼地进行着&#xff0c;本届比赛吸引了全球范围内的众多优秀开发者参与其中&#xff0c;用代码书写未来&#xff0c;用算法改变世界。 如今&#xff0c;算法赛新一批赛题上线&#xff0c;无论是初学者还是资深开发者&#xff0c;你都可以在2024 AI…

ClickHouse集群的安装

目录 1.clickhouse中文文档地址 2.centos安装部署 2.1采用tgz的方式安装 2.2修改配置文件 2.3修改数据目录 2.4创建角色和目录 3 集群安装 3.1配置文件修改 3.2启动zookeeper 3.3启动clickhouse-server 3.4任意节点连接clickhouse 3.5查看集群 3.6建库 3.7查看数…

了解住宅代理和移动代理的工作原理:从基础到高级应用

在当今时代&#xff0c;代理技术已经成为了优化网络连接、提升数据安全和增强用户体验的重要工具。特别是住宅代理和移动代理&#xff0c;这两种代理类型在网络服务中扮演着越来越重要的角色。本文将从详细的为您介绍这两种代理服务的工作原理&#xff0c;帮助你更好地理解并应…

如何对 GitLab 中文版进行升级?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…