当前位置: 首页 > news >正文

深度学习中超参数

      深度学习中的超参数(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)短路运算:逻辑运算符的返回值&#xf…...

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 模块通过其硬件和软件的结合&#xff0c…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...