深度学习中超参数
深度学习中的超参数(hyperparameters)是决定网络结构的变量(例如隐藏层数量)和决定网络训练方式的变量(例如学习率)。超参数的选择会显著影响训练模型所需的时间,也会影响模型的性能。超参数是在训练开始之前设置的,而不是从数据中学习的参数。超参数是模型训练期间无法学习的参数,需要事先设置。
在深度学习中,模型由模型参数(如神经网络的权重和偏置)定义或表示。然而,训练模型的过程涉及选择最佳超参数,学习算法将使用这些超参数来学习最佳参数。这些参数正确地将输入特征映射到标签或目标,从而实现某种形式的智能。
超参数是一些参数,它们控制着学习过程,并决定学习算法最终学习的模型参数的值。超参数在模型学习/训练期间无法更改其值。学习算法在学习时使用超参数,但超参数不是结果模型的一部分。在学习过程结束时,我们得到了经过训练的模型参数,实际上这就是我们所说的模型。训练期间使用的超参数不是该模型的一部分。
基本上,在深度学习中,你在训练开始前决定它们的值或选择它们的配置,并且在训练结束时其值或配置将保持不变的任何内容都是超参数。
深度学习中的参数是学习算法在学习过程中可以独立更改的值,这些值受你提供的超参数选择的影响。因此,你在训练开始之前设置超参数,学习算法使用它们来学习参数。在训练过程中,参数不断更新,训练结束时的最终参数构成了你的模型。
超参数可以分为两类:与网络结构相关的超参数和与训练算法相关的超参数
1.与网络结构相关的超参数:
(1).隐藏层数量:隐藏层是输入层和输出层之间的层,决定模型的深度。层数较少可能会导致欠拟合,而层数过多可能会导致过拟合。
(2).每层的神经元数量(或节点数):决定模型的宽度,影响其表示数据中复杂关系的能力,神经元数量较少可能会导致拟合不足。
(3).dropout率:Dropout是一种正则化技术,用于防止过拟合(提高验证准确率),从而提高泛化能力。通常,dropout率使用20%-50%的小dropout值,其中20%是一个很好的起点。概率太低,效果微乎其微,而值太高会导致网络学习不足。在更大的网络上使用dropout可能会获得更好的性能,从而为模型提供更多机会来学习独立的表示。
(4).网络权重初始化:理想情况下,根据每层使用的激活函数,使用不同的权重初始化方案可能会更好。大多采用均匀分布,如Xavier、Kaimiing等。每次的随机初始化,有时对结果影响很大。
(5).激活函数:神经网络层中激活函数的选择,将非线性引入模型,使其能够学习复杂的决策边界,如ReLU、Sigmoid等。
(6).损失函数:模型将使用的成本函数或损失函数的选择,如HuberLoss、CrossEntropyLoss等。
(7).优化器(Optimizer):优化算法的选择,如Adam、SGD等算法用于在训练阶段更新权重。
(8).卷积层中kernels或filters size:kernel是一个小的二维矩阵,通过简单的矩阵乘法和加法映射到输入图像上,获得的输出维度较低,因此更易于处理。kernel的形状在很大程度上取决于图像的输入形状和整个网络的架构,kernel的size多为(MxM),即方阵,如1x1, 3x3, 5x5等。kernel的移动始终是从左到右、从上到下。
(9).pooling size:pooling操作涉及在feature map的每个channel上滑动二维filter,用于减少feature map的尺寸。pooling层的类型包括:max pooling、average pooling、global pooling。pooling size的选择对模型的性能和结果有着重要影响,通常是一个正方形,例如2x2、3x3等,但也可以是矩形或其他形状,不过正方形最为常见。
2.与训练算法相关的超参数:
(1).梯度下降中的学习率(Learning rate):控制优化器在每次训练迭代中采用的步长,定义网络更新参数的速度。学习率低会减慢学习过程,但会平稳收敛。学习率高会加快学习速度,但可能不会收敛。典型的值设置小于1但大于10^-6。默认值通常设置为0.01。
(2).学习率衰减(Learning rate decay):设定了网络学习率随时间下降的速率,可以帮助模型在训练过程中逐渐减小学习率,从而使得模型在训练后期更加稳定,避免在最优解附近震荡。PyTorch的torch.optim.lr_scheduler模块提供了多种学习率调度器。
(3).动量(Momentum):有助于根据前几步的了解来了解下一步的方向。它有助于减少震荡。动量的典型选择在0.5到0.9之间,一般开始时使用较低的动量值。
(4).训练周期数(Number of epochs):训练期间将整个训练集通过神经网络进行前向传播和反向传播的次数。增加周期数,直到验证准确率开始下降,即使训练准确率在增加(过拟合)。
(5).批量大小(Batch size):最小批量大小是提供给网络的子样本数量,超过该数量后将进行参数更新。批量大小的选择会显著影响优化算法的性能。批量大小的默认设置可能为32,也可以尝试64、128、256等。通常,它在1到几百之间。
(6).训练集--测试集拆分比率(Train-test split ratio):直接影响模型的训练效果和泛化能力。数据集规模在万级别时,常见的拆分比率是训练集和测试集的比例为7:3或8:2。当数据集规模达到百万级时,由于即使取1%的数据作为测试集也足够多,因此可以划分更多的数据用于训练。
超参数调优(Hyperparameter tuning)的方法:超参数调优也称为超参数优化,超参数调优是选择深度学习模型超参数的最优值的过程。超参数调优的目标是找到在给定任务上获得最佳性能的超参数集,这可以提高模型在未知数据上的性能,防止过拟合,并减少训练时间。调优超参数的顺序取决于具体模型和数据集。不过,一个好的经验法则是从最重要的超参数(例如学习率)开始,然后再调优不太重要的超参数。
(1).手动搜索:手动试验不同的超参数集。
(2).网格搜索(Grid search):被视为超参数优化的"蛮力"方法。在创建潜在离散超参数值网格后,我们使用所有可能的组合来拟合模型。我们记录每组模型的性能,然后选择产生最佳结果的组合。
(3).随机搜索(Random search):随机选择值,而网格搜索方法则使用一组预定的数字。每次迭代,随机搜索都会尝试一组不同的超参数并记录模型的性能。经过几次迭代后,它会返回提供最佳结果的组合。
(4).贝叶斯优化(Bayesian optimization):将寻找最佳超参数视为优化问题。它在选择下一个超参数组合时会考虑之前的评估结果,并应用概率函数来选择可能产生最佳结果的组合。
注:以上整理的内容主要来自:
1. https://towardsdatascience.com
2. https://towardsdatascience.com
3. https://www.geeksforgeeks.org
GitHub:https://github.com/fengbingchun/NN_Test
相关文章:
深度学习中超参数
深度学习中的超参数(hyperparameters)是决定网络结构的变量(例如隐藏层数量)和决定网络训练方式的变量(例如学习率)。超参数的选择会显著影响训练模型所需的时间,也会影响模型的性能。超参数是在训练开始之前设置的,而不是从数据中学习的参数。超参数是模…...

[JavaScript] 运算符详解
文章目录 算术运算符(Arithmetic Operators)注意事项: 比较运算符(Comparison Operators)注意事项: 逻辑运算符(Logical Operators)短路运算:逻辑运算符的返回值…...
Hooks 使用规则
Hooks 使用规则 命名规则 Hook 必须 useXxx 格式来命名。 PS:这种命名规则也很易读,简单粗暴 调用位置 Hook 或自定义 Hook ,只能在两个地方被调用 组件内部其他 Hook 内部 组件外部,或一个普通函数中,不能调用…...

Ubuntu 24.04 LTS 安装 Docker Desktop
Docker 简介 Docker 简介和安装Ubuntu上学习使用Docker的详细入门教程Docker 快速入门Ubuntu版(1h速通) Docker 安装 参考 How to Install Docker on Ubuntu 24.04: Step-by-Step Guide。 更新系统和安装依赖 在终端中运行以下命令以确保系统更新并…...

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来
文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册:算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《AI智能化办公&am…...
从 JIRA 数据到可视化洞察:使用 Python 创建自定义图表
引言 在项目管理和软件开发中,JIRA 是最广泛使用的工具之一,尤其是在追踪问题、任务和团队进度方面。对于开发者和团队来说,能够从 JIRA 中提取并分析数据,以便更好地理解项目状态和趋势,至关重要。虽然 JIRA 本身提供…...

【网络原理】万字详解 HTTP 协议
🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. HTTP 前置知识1.1 HTTP 是什么1.2 HTPP 协议应用场景1.3 HTTP 协议工作过程 2. HTTP 协议格式2.1 fiddler…...

PHP企业IM客服系统
💬 企业IM客服系统——高效沟通,无缝连接的智慧桥梁 🚀 卓越性能,释放无限可能 在瞬息万变的商业环境中,我们深知沟通的力量。因此,基于先进的ThinkPHP5框架与高性能的Swoole扩展,我们匠心独运…...

Linux操作系统的灵魂,深度解析MMU内存管理
在计算机的奇妙世界里,我们每天使用的操作系统看似流畅自如地运行着各类程序,背后实则有着一位默默耕耘的 “幕后英雄”—— 内存管理单元(MMU)。它虽不常被大众所熟知,却掌控着计算机内存的关键命脉,是保障…...

PHP代码审计学习01
目录 两种思路 addslashes函数和magic_quotes_gpc配置: 今天来开php代码审计。 PHP无框架项目SQL注入挖掘技巧。 可以看看小迪老师的学习流程或者说是路线吧。 其中,最下面的代码审计工具推荐用下面两款,fortify,seay。 &…...

《数据思维》之数据可视化_读书笔记
文章目录 系列文章目录前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 数据之道,路漫漫其修远兮,吾将上下而求索。 一、数据可视化 最基础的数据可视化方法就是统计图。一个好的统计图应该满足四个标准:准确、有…...
深度学习常见术语解释
正例与负例: 在分类任务中,通常将目标类别称为正例(positive),非目标类别称为负例(negative)。 True Positives(TP): 被正确地划分为正例的个数,…...

重温STM32之环境安装
缩写 CMSIS:common microcontroller software interface standard 1,keil mdk安装 链接 Keil Product Downloads 安装好后,开始安装平台软件支持包(keil 5后不在默认支持所有的平台软件开发包,需要自行下载&#…...

使用Flask和Pydantic实现参数验证
使用Flask和Pydantic实现参数验证 1 简介 Pydantic是一个用于数据验证和解析的 Python 库,版本2的性能有较大提升,很多框架使用Pydantic做数据校验。 # 官方参考文档 https://docs.pydantic.dev/latest/# Github地址 https://github.com/pydantic/pyd…...

python_在钉钉群@人员发送消息
python_在钉钉群人员发送消息 1、第一种 企业内部机器人群聊实现人接入指南,适用于群机器人接收消息,处理完一系列的动作之后,将消息返回给发消息的人员,同时该人员。 需要在企微后台新建一个自建应用,在自建应用里…...

C语言之装甲车库车辆动态监控辅助记录系统
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 C语言之装甲车库车辆动态监控辅助记录系统 目录 一、前言 1.1 (一)…...

线性代数概述
矩阵与线性代数的关系 矩阵是线性代数的研究对象之一: 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是线性代数中的核心概念之一。矩阵的定义和性质构成了线性代数中矩阵理论的基础,而矩阵运算则简洁地表示和…...

使用 ChatGPT 生成和改进你的论文
文章目录 零、前言一、操作引导二、 生成段落或文章片段三、重写段落四、扩展内容五、生成大纲内容六、提高清晰度和精准度七、解决特定的写作挑战八、感受 零、前言 我是虚竹哥,目标是带十万人玩转ChatGPT。 ChatGPT 是一个非常有用的工具,可以帮助你…...

Linux命令行工具-使用方法
参考资料 Linux网络命令:网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…...

RV1126+FFMPEG推流项目(7)AI音频模块编码流程
一、AI 模块和外设麦克风的关系 AI 模块是 RV1126 芯片的一个重要组成部分。它的主要功能是将外部接入的麦克风采集到的模拟信号通过内置的驱动程序转换为数字信号。这意味着麦克风作为外设,提供音频输入信号,AI 模块通过其硬件和软件的结合,…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...