首页 > 其他分享 >神经网络中的超参数调整

神经网络中的超参数调整

时间:2024-04-07 16:30:22浏览次数:17  
标签:迭代 训练 模型 学习 神经网络 参数 调整

背景

        在深度神经网络学习和优化中,超参数调整一项必备技能,通过观察在训练过程中的监测指标如损失loss和准确率来判断当前模型处于什么样的训练状态,及时调整超参数以更科学地训练模型能够提高资源利用率。在本研究中使用了以下超参数,下面将分别介绍并总结了不同超参数的调整规则。

神经网络常用参数 

神经网络中常用的参数有以下几种:

1.权重(Weights):用于调整输入特征与神经元之间的连接强度,影响神经元对不同输入的响应程度。

2.偏置(Biases):用于调整神经元的激活阈值,影响神经元的激活状态。

3.学习率(Learning Rate):用于控制权重和偏置在每次迭代中的更新幅度,影响神经网络的训练速度和收敛性。

4.批量大小(Batch Size):指每次迭代更新时参与计算的样本数量,影响训练的速度和稳定性。

5.激活函数(Activation Function):用于引入非线性变换,增加神经网络的表达能力,常用的激活函数包括ReLU、Sigmoid、Tanh等。

6.优化器(Optimizer):用于更新神经网络的参数,常用的优化器包括SGD、Adam、RMSprop等。

7.正则化参数(Regularization Parameters):用于控制神经网络的复杂度,防止过拟合,包括L1正则化、L2正则化等。

        这些参数在神经网络的训练和优化过程中起着重要作用,通过调整这些参数可以影响神经网络的性能和泛化能力。

介绍 

(1)学习率

         学习率是一个比较重要的参数,控制我们要多大程度调整网络的权重,以符合梯度损失。 值越低,沿着梯度下降越慢。 虽然使用较小学习率可能是一个 好主意,以确保我们不会错过任何局部最低点,但也可能意味着我们将花费很长的时间来收敛——特别是当我们卡在平稳区域(plateau region)的时候。

以下公式显示了这种关系。

new_weight = existing_weight — learning_rate * gradient

通常,学习率是由用户随意配置的。 用户最多也只能通过之前的经验来配置最佳的学习率。

因此,很难得到好的学习率。 下图演示了配置学习速率时可能遇到的不同情况。

与此同时,学习率会影响我们的模型能够以多快的速度收敛到局部最小值(也就是达到最好的精度)。 因此,从正确的方向做出正确的选择意味着我们能用更少的时间来训练模型。 较少的训练时间,花在GPU计算上的花费较少。在“Cyclical Learning Rates for Training Neural Networks.”的第3.3节[4]中,Leslie N. Smith认为,可以在模型初始化的时候设置一个非常小的学习率,通过每次迭代地增加它(线性或指数级地 )。

如果我们记录每次迭代的学习,并绘制学习率(对数)与损失; 我们会看到,随着学习率的提高,会有一个损失停止下降并开始增加的点。 在实践中,我们的学习率理想情况下应该是从图的左边到某处最低点(如下图所示)。 在下图中,0.001到0.01。

使用

        目前,它是fast.ai包的一个API,它是由Jeremy Howard开发的一种基于Pytorch的包(很像Keras和Tensorflow的关系)。在训练神经网络之前,只需输入以下命令即可开始找到最佳学习率。

▌更近一步

我们已经介绍了什么是学习速度,接下来有一点是很重要的,即当我们开始训练我们的模型时,我们怎样才能系统地达到最佳的使用价值。

接下来,我们将介绍如何利用学习率来改善模型的性能。

▌传统方法

通常,当设定他们的学习率并训练模型时,只有等待学习速率随着时间的推移而下降,并且模型才能最终收敛。

然而,随着梯度达到稳定水平(plateau),训练损失变得更难以改善。 在[3]中,Dauphin等人认为,减少损失的难度来自鞍点(saddle points),而不是局部最低点。

▌那么我们怎么避免呢?

有几个选项我们可以考虑。 一般来说,从文章[1]引用一句:

...而不是使用一个固定值的学习速度,并随着时间的推移而降低,如果训练不会改善我们的损失,我们将根据一些循环函数f来改变每次迭代的学习速率。 每个周期的迭代次数都是固定的。 这种方法让学习率在合理的边界值之间循环变化。 这是有帮助的,因为如果我们卡在鞍点上,提高学习速度可以更快速地穿越鞍点高原。

学习率(learning rate或作lr)是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的,基于动量的或者是自适应的。不同的优化算法决定不同的学习率。当学习率过大则可能导致模型不收敛,损失loss不断上下震荡;学习率过小则导致模型收敛速度偏慢,需要更长的时间训练。通常lr取值为[0.01,0.001,0.0001]

(2)批次大小batch_size

批次大小是每一次训练神经网络送入模型的样本数,在卷积神经网络中,大批次通常可使网络更快收敛,但由于内存资源的限制,批次过大可能会导致内存不够用或程序内核崩溃。bath_size通常取值为[16,32,64,128]

(3)优化器optimizer

目前Adam是快速收敛且常被使用的优化器。随机梯度下降(SGD)虽然收敛偏慢,但是加入动量Momentum可加快收敛,同时带动量的随机梯度下降算法有更好的最优解,即模型收敛后会有更高的准确性。通常若追求速度则用Adam更多。

(4)迭代次数

迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小时,可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。

(5)激活函数

在神经网络中,激活函数不是真的去激活什么,而是用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。比如有些问题是线性可分的,而现实场景中更多问题不是线性可分的,若不使用激活函数则难以拟合非线性问题,测试时会有低准确率。所以激活函数主要是非线性的,如sigmoid、tanh、relu。sigmoid函数通常用于二分类,但要防止梯度消失,故适合浅层神经网络且需要配备较小的初始化权重,tanh函数具有中心对称性,适合于有对称性的二分类。在深度学习中,relu是使用最多的激活函数,简单又避免了梯度消失。

标签:迭代,训练,模型,学习,神经网络,参数,调整
From: https://blog.csdn.net/mzl_18353516147/article/details/137467894

相关文章

  • 数仓调优实战:GUC参数调优
    本文分享自华为云社区《GaussDB(DWS)性能调优系列实战篇七:十八般武艺之GUC参数调优》,作者:黎明的风。1.前言适用版本:【8.1.1及以上】GaussDB(DWS)性能调优系列专题文章,介绍了数据库性能调优的思路和总体策略。在系统级调优中数据库全局的GUC参数对整体性能的提升至关重要,而......
  • php对接微信公众号h5时动态获取config配置参数
    获取配置参数方法functiongetWeixinConfigData($url){$appId="公众号appid";$secret="公众号secret";//获取access_token$token=S('WX_TOKEN');if(!$token){$getTokenUrl='https://api.weixin.qq.com/cgi-......
  • 最高法--招标工程量清单与后续施工图纸中工程量相差甚大,施工人以此为由主张重调整组价
     (2019)最高法民终379号  金义祥、株洲银泰房地产开发有限公司建设工程施工合同纠纷二审民事判决书上诉人主张:(一)一审判决采信以固定总价为基数进行造价鉴定属于认定事实错误。本案应按固定单价方式鉴定,工程款总额为216839234.6元,银泰公司欠东欣公司工程款108377634.6元,东欣公司......
  • MC14516BDR2G倒数计数器芯片中文资料PDF数据手册参数引脚图图片特性概述
    产品概述:MC14516B同步正数/倒数二进制计数器在一个单片结构中使用MOSP沟道和N沟道增强模式器件构造。此计数器可通过对预设输入(P0、P1、P2、P3)应用所需的二进制值,然后将预设启用(PE)置于高电平,来进行预设。计数方向通过向UP/DOWN输入应用高电平(用于正数)或低电平(用于......
  • 浪涌防护TVS二极管选型参数,结构原理,工艺与注意问题总结
      ......
  • 从零开始的自定义神经网络设计
    目录第一部分:深度学习基础——深度学习简介前言一、深度学习的历史和重要性二、什么是神经网络?三、神经网络的基本组成部分四、基本术语和概念五、深入理解总结第一部分:深度学习基础——深度学习简介前言欢迎来到我们的从零开始的自定义神经网络设计系列!在这......
  • 【MATLAB源码-第170期】基于matlab的BP神经网络股票价格预测GUI界面附带详细文档说明
    操作环境:MATLAB2022a1、算法描述基于BP神经网络的股票价格预测是一种利用人工神经网络中的反向传播(Backpropagation,简称BP)算法来预测股票市场价格变化的技术。这种方法通过模拟人脑的处理方式,尝试捕捉股票市场中的复杂非线性关系,以实现对未来股价的预测。本文将详细介绍BP......
  • 神奇!autoTrimCurve(curve,parameter1)中参数parameter1的意义
    autoTrimCurve命令解释使用python进行ABAQUS二次开发时,建立草图用到自动裁剪命令,rpy文件中记录的是s.autoTrimCurve(curve1=g[4],point1=(-12.5237464904785,0.153462409973145))关键词 point1需要输入曲线上某点的坐标值,即一对浮点数由于我的需求大量参数化建模,每次生......
  • lsblk命令参数详解
    lsblk命令用于列出块设备的信息,包括磁盘、分区和挂载点等。下面是lsblk命令的一些常用用法和示例讲解: lsblk:简单地运行lsblk命令会列出所有块设备的基本信息,包括设备名、大小和挂载点等。lsblk [设备名称]:显示指定设备的信息,可以是磁盘或分区的设备名称。lsblk -a:显示所......
  • CAT809JTBI-GT3中文资料规格书PDF数据手册引脚图产品参数特性概述
    产品概述:CAT809是一款µP监督电路,监控数字系统中的电源。CAT809可在基于工业温度范围运行的应用中直接替代MAX809。此器件会产生重置信号,当电源电压降至阈值阈值以下且电源升至该水平140ms之后发出该信号。安森美半导体使用的底层浮动门极技术AE²™可用于提供任......