收藏 | 各种 Optimizer 梯度下降优化算法回顾和总结

梯度下降优化算法总结 本次介绍梯度下降优化算法。主要参考资料为一篇综述《An overview of gradient descent optimization algorithms》 阅读详情
不管是使用PyTorch还是TensorFlow,用多了Optimizer优化器封装好的函数,对其内部使用的优化算法却没有仔细研究过,也很难对其优点和缺点进行实用的解释。所以打算以这一篇论文为主线并结合多篇优秀博文,回顾和总结目前主流的优化算法,对于没有深入了解过的算法,正好借这个机会学习一下。

写在前面

当前使用的许多优化算法,是对梯度下降法的衍生和优化。在微积分中,对多元函数的参数求  偏导数,把求得的各个参数的导数以向量的形式写出来就是梯度。梯度就是函数变化最快的地方。梯度下降是迭代法的一种,在求解机器学习算法的模型参数  时,即无约束问题时,梯度下降是最常采用的方法之一。

这里定义一个通用的思路框架,方便我们后面理解各算法之间的关系和改进。首先定义待优化参数  ,目标函数  ,学习率为  ,然后我们进行迭代优化,假设当前的epoch为  ,则有:

  • 计算目标函数关于当前参数的梯度: 

  • 根据历史梯度计算一阶动量和二阶动量:  ,

  • 计算当前时刻的下降梯度: 

  • 根据下降梯度进行更新: 

其中,  为下一个时刻的参数,  为当前时刻  参数,后面的描述我们都将结合这个框架来进行。

这里提一下一些概念:

  • 鞍点:一个光滑函数的鞍点邻域的曲线,曲面,或超曲面,都位于这点的切线的不同边。例如这个二维图形,像个马鞍:在x-轴方向往上曲,在y-轴方向往下曲,鞍点就是(0,0)。

  • 指数加权平均、偏差修正:可参见这篇文章

什么是指数加权平均、偏差修正?- 郭耀华 - 博客园

https://www.cnblogs.com/guoyaohua/p/8544835.html

Gradient Descent(GD)

在GD中没有动量的概念,也就是说在上述框架中: ; ,则我们在当前时刻需要下降的梯度就是  ,则使用梯度下降法更新参数为(假设当前样本为  ,每当样本输入时,参数即进行更新):

梯度下降算法中,模型参数的更新调整,与代价函数关于模型参数的梯度有关,即沿着梯度的方向不断减小模型参数,从而最小化代价函数。基本策略可以理解为”在有限视距内寻找最快路径下山“,因此每走一步,参考当前位置最陡的方向(即梯度)进而迈出下一步,更形象的如下图:

标准的梯度下降主要有两个缺点:

  • 训练速度慢:在应用于大型数据集中,每输入一个样本都要更新一次参数,且每次迭代都要遍历所有的样本,会使得训练过程及其缓慢,需要花费很长时间才能得到收敛解。

  • 容易陷入局部最优解:由于是在有限视距内寻找下山的反向,当陷入平坦的洼地,会误以为到达了山地的最低点,从而不会继续往下走。所谓的局部最优解就是鞍点,落入鞍点,梯度为0,使得模型参数不在继续更新。

Batch Gradient Descent(BGD)

BGD相对于标准GD进行了改进,改进的地方通过它的名字应该也能看出来,也就是不再是想标准GD一样,对每个样本输入都进行参数更新,而是针对一个批量的数据输入进行参数更新。我们假设批量训练样本总数为  ,样本为  ,则在第  对样本  上损失函数关于参数的梯度为  , 则使用BGD更新参数为:

从上面的公式我们可以看到,BGD其实是在一个批量的样本数据中,求取该批量样本梯度的均值来更新参数,即每次权值调整发生在批量样本输入之后,而不是每输入一个样本就更新一次模型参数,这样就会大大加快训练速度,但是还是不够,我们接着往下看。

Stochastic Gradient Descent(SGD)

随机梯度下降法,不像BGD每一次参数更新,需要计算整个数据样本集的梯度,而是每次参数更新时,仅仅选取一个样本  计算其梯度,参数更新公式为:

公式看起来和上面标准GD一样,但是注意了,这里的样本是从批量中随机选取一个,而标准GD是所有的输入样本都进行计算。可以看到BGD和SGD是两个极端,SGD由于每次参数更新仅仅需要计算一个样本的梯度,训练速度很快,即使在样本量很大的情况下,可能只需要其中一部分样本就能迭代到最优解,由于每次迭代并不是都向着整体最优化方向,导致梯度下降的波动非常大(如下图),更容易从一个局部最优跳到另一个局部最优,准确度下降。

论文中提到,当缓慢降低学习率时,SGD会显示与BGD相同的收敛行为,几乎一定会收敛到局部(非凸优化)或全局最小值(凸优化)。

SGD的优点:

  • 虽然看起来SGD波动非常大,会走很多弯路,但是对梯度的要求很低(计算梯度快),而且对于引入噪声,大量的理论和实践工作证明,只要噪声不是特别大,SGD都能很好地收敛。

  • 应用大型数据集时,训练速度很快。比如每次从百万数据样本中,取几百个数据点,算一个SGD梯度,更新一下模型参数。相比于标准梯度下降法的遍历全部样本,每输入一个样本更新一次参数,要快得多。

SGD的缺点:

  • SGD在随机选择梯度的同时会引入噪声,使得权值更新的方向不一定正确(次要)。

  • SGD也没能单独克服局部最优解的问题(主要)。

Mini-batch Gradient Descent(MBGD,也叫作SGD)

小批量梯度下降法就是结合BGD和SGD的折中,对于含有  个训练样本的数据集,每次参数更新,选择一个大小为 $m(m<n)$ 的mini-batch数据样本计算其梯度,其参数更新公式如下:< p>

小批量梯度下降法即保证了训练的速度,又能保证最后收敛的准确率,目前的SGD默认是小批量梯度下降算法。常用的小批量尺寸范围在50到256之间,但可能因不同的应用而异。

MBGD的缺点:

  • Mini-batch gradient descent 不能保证很好的收敛性,learning rate 如果选择的太小,收敛速度会很慢,如果太大,loss function 就会在极小值处不停地震荡甚至偏离(有一种措施是先设定大一点的学习率,当两次迭代之间的变化低于某个阈值后,就减小 learning rate,不过这个阈值的设定需要提前写好,这样的话就不能够适应数据集的特点)。对于非凸函数,还要避免陷于局部极小值处,或者鞍点处,因为鞍点所有维度的梯度都接近于0,SGD 很容易被困在这里(会在鞍点或者局部最小点震荡跳动,因为在此点处,如果是BGD的训练集全集带入,则优化会停止不动,如果是mini-batch或者SGD,每次找到的梯度都是不同的,就会发生震荡,来回跳动)。

  • SGD对所有参数更新时应用同样的 learning rate,如果我们的数据是稀疏的,我们更希望对出现频率低的特征进行大一点的更新, 且learning rate会随着更新的次数逐渐变小。

Momentum

momentum算法思想:参数更新时在一定程度上保留之前更新的方向,同时又利用当前batch的梯度微调最终的更新方向,简言之就是通过积累之前的动量来加速当前的梯度。从这里开始,我们引入一阶动量的概念(在mini-batch SGD的基础之上),也就是说,在最开始说的框架中,  ,而  不变,参数更新公式如下:

一阶动量是各个时刻梯度方向的指数移动平均值,约等于最近  个时刻的梯度向量和的平均值(移动平均是啥看最上面的文章)。也就是说,  时刻的下降方向,不仅由当前点的梯度方向决定,而且由此前累积的下降方向决定。  的经验值为0.9,这就意味着下降方向主要是此前累积的下降方向,并略微偏向当前时刻的下降方向。在梯度方向改变时,momentum能够降低参数更新速度,从而减少震荡,在梯度方向相同时,momentum可以加速参数更新, 从而加速收敛,如下图:

动量主要解决SGD的两个问题:

  • 随机梯度的方法(引入的噪声)

  • Hessian矩阵病态问题(可以理解为SGD在收敛过程中和正确梯度相比来回摆动比较大的问题)。

Nesterov Accelerated Gradient

NAG(Nesterov accelerated gradient)算法,是Momentum动量算法的变种。momentum保留了上一时刻的梯度  ,对其没有进行任何改变,NAG是momentum的改进,在梯度更新时做一个矫正,具体做法就是在当前的梯度上添加上一时刻的动量  ,梯度改变为  ,参数更新公式如下:

加上nesterov项后,梯度在大的跳跃后,进行计算对当前梯度进行校正。下图是momentum和nesterrov的对比表述图如下:

Nesterov动量梯度的计算在模型参数施加当前速度之后,因此可以理解为往标准动量中添加了一个校正因子。在凸批量梯度的情况下,Nesterov动量将额外误差收敛率从  (k步后)改进到  ,然而,在随机梯度情况下,Nesterov动量对收敛率的作用却不是很大。

Momentum和Nexterov都是为了使梯度更新更灵活。但是人工设计的学习率总是有些生硬,下面介绍几种自适应学习率的方法。

Adagrad

Adagrad其实是对学习率进行了一个约束,对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。而该方法中开始使用二阶动量,才意味着“自适应学习率”优化算法时代的到来。

我们前面都没有好好的讨论二阶动量,二阶动量是个啥?它是用来度量历史更新频率的,二阶动量是迄今为止所有梯度值的平方和,即  ,在最上面的框架中  (在这里  ), 也就是说,我们的学习率现在是  (一般为了避免分母为0,会在分母上加一个小的平滑项  ),从这里我们就会发现  是恒大于0的,而且参数更新越频繁,二阶动量越大,学习率就越小,这一方法在稀疏数据场景下表现非常好,参数更新公式如下:

细心的小伙伴应该会发现Adagrad还是存在一个很明显的缺点:

  • 仍需要手工设置一个全局学习率  , 如果  设置过大的话,会使regularizer过于敏感,对梯度的调节太大

  • 中后期,分母上梯度累加的平方和会越来越大,使得参数更新量趋近于0,使得训练提前结束,无法学习

Adadelta

由于AdaGrad调整学习率变化过于激进,我们考虑一个改变二阶动量计算方法的策略:不累积全部历史梯度,而只关注过去一段时间窗口的下降梯度,即Adadelta只累加固定大小的项,并且也不直接存储这些项,仅仅是近似计算对应的平均值(指数移动平均值),这就避免了二阶动量持续累积、导致训练过程提前结束的问题了,参数更新公式如下:

观察上面的参数更新公式,我们发现还是依赖于全局学习率  ,但是原作者在此基础之上做出了一定的处理,上式经过牛顿迭代法之后,得到Adadelta最终迭代公式如下式,其中  :

此时可以看出Adadelta已经不依赖全局learning rate了,Adadelta有如下特点:

  • 训练初中期,加速效果不错,很快

  • 训练后期,反复在局部最小值附近抖动

RMSprop

RMSProp算法修改了AdaGrad的梯度平方和累加为指数加权的移动平均,使得其在非凸设定下效果更好。设定参数:全局初始率  , 默认设为0.001,decay rate  ,默认设置为0.9,一个极小的常量  ,通常为10e-6,参数更新公式如下,其中  :

  • 其实RMSprop依然依赖于全局学习率 

  • RMSprop算是Adagrad的一种发展,和Adadelta的变体,效果趋于二者之间

  • 适合处理非平稳目标(包括季节性和周期性)——对于RNN效果很好

Adaptive Moment Estimation(Adam)

其实有了前面的方法,Adam和Nadam的出现就很理所当然的了,因为它们结合了前面方法的一阶动量和二阶动量。我们看到,SGD-M和NAG在SGD基础上增加了一阶动量,AdaGrad和AdaDelta在SGD基础上增加了二阶动量,参数更新公式如下(按照最开始总结的计算框架):

通常情况下,默认值为  、  和  ,Adam通常被认为对超参数的选择相当鲁棒,特点如下:

  • Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳。

  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点

  • 为不同的参数计算不同的自适应学习率

  • 也适用于大多非凸优化问题——适用于大数据集和高维空间。

AdaMax

Adamax是Adam的一种变体,此方法对学习率的上限提供了一个更简单的范围,即使用无穷范式,参数更新公式如下:

通常情况下,默认值为  、  和 

Nadam

其实如果说要集成所有方法的优点于一身的话,Nadam应该就是了,Adam遗漏了啥?没错,就是Nesterov项,我们在Adam的基础上,加上Nesterov项就是Nadam了,参数更新公式如下:

可以看出,Nadam对学习率有更强的约束,同时对梯度的更新也有更直接的影响。一般而言,在使用带动量的RMSprop或Adam的问题上,使用Nadam可以取得更好的结果。

来张直观的动态图展示上述优化算法的效果:

  • 下图描述了在一个曲面上,6种优化器的表现:

  • 下图在一个存在鞍点的曲面,比较6中优化器的性能表现:

  • 下图图比较了6种优化器收敛到目标点(五角星)的运行过程

总结

那种优化器最好?该选择哪种优化算法?目前还没能够达达成共识。Schaul et al (2014)展示了许多优化算法在大量学习任务上极具价值的比较。虽然结果表明,具有自适应学习率的优化器表现的很鲁棒,不分伯仲,但是没有哪种算法能够脱颖而出。

目前,最流行并且使用很高的优化器(算法)包括SGD、具有动量的SGD、RMSprop、具有动量的RMSProp、AdaDelta和Adam。在实际应用中,选择哪种优化器应结合具体问题;同时,也优化器的选择也取决于使用者对优化器的熟悉程度(比如参数的调节等等)。

  • 对于稀疏数据,尽量使用学习率可自适应的优化方法,不用手动调节,而且最好采用默认值

  • SGD通常训练时间更长,但是在好的初始化和学习率调度方案的情况下,结果更可靠

  • 如果在意更快的收敛,并且需要训练较深较复杂的网络时,推荐使用学习率自适应的优化方法。

  • Adadelta,RMSprop,Adam是比较相近的算法,在相似的情况下表现差不多。

  • 在想使用带动量的RMSprop,或者Adam的地方,大多可以使用Nadam取得更好的效果

  • 如果验证损失较长时间没有得到改善,可以停止训练。

  • 添加梯度噪声(高斯分布  )到参数更新,可使网络对不良初始化更加健壮,并有助于训练特别深而复杂的网络。

参考文献:

  • An overview of gradient descent optimization algorithms(https://ruder.io/optimizing-gradient-descent/)

  • 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)(https://zhuanlan.zhihu.com/p/22252270)

  • visualize_optimizers(https://github.com/snnclsr/visualize_optimizers)

  • lossfunctions(https://lossfunctions.tumblr.com/)

  • 优化算法Optimizer比较和总结(https://zhuanlan.zhihu.com/p/55150256)

  • 一个框架看懂优化算法之异同 SGD/AdaGrad/Adam(https://zhuanlan.zhihu.com/p/32230623)

  • 深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)(https://www.cnblogs.com/guoyaohua/p/8542554.html)

  • 机器学习:各种优化器Optimizer的总结与比较(https://blog.youkuaiyun.com/weixin_40170902/article/details/80092628)

  • optimizer优化算法总结(https://blog.youkuaiyun.com/muyu709287760/article/details/62531509#%E4%B8%89%E7%A7%8Dgradient-descent%E5%AF%B9%E6%AF%94)

—版权声明—

来源:深度学习这件小事,编辑:nhyilin

仅用于学术分享,版权属于原作者。

觉得还不错就给我一个小小的鼓励吧!

梯度下降优化算法 梯度下降优化算法 梯度下降是常用的优化方式,具体的算法有: • 梯度下降法 o 批梯度下降(Batch Gradient Descent, BGD) o 随机梯度下降(Stochastic Gradient Decent, SGD) o 小批量梯度下降(Mini-Batch Gradient Decent, MBGD) • 梯度下降优化 o 动量梯度下降(Gradient Descent with Momentum) o 均方根支(Root Mean Square Prop, RMSprop) o 自适应矩 阅读详情

相关推荐

【算法】梯度下降

梯度下降算法是一种优化方法,用于最小化损失函数并找到模型参数的最佳值。其核心思想是通过迭代更新参数,沿着损失函数梯度的反方向逐步逼近最优解。在每次迭代中,算法计算损失函数相对于参数的梯度,然后根据设定的学习率调整参数值。梯度下降有多种变体,包括批量梯度下降(使用整个数据集计算梯度)、随机梯度下降(每次迭代使用单个样本)和小批量梯度下降(使用数据的小批量)。此外,动量法和自适应学习率算法(如Adam)可以提高收敛速度和稳定性。选择合适的梯度下降方法和调整超参数对于模型训练的效率和效果至关重要。

wnm23的专栏 6222

【梯度下降法】详解优化算法之梯度下降法(原理、实现)

由于FG每迭代更新一次权重都需要计算所有样本误差,而实际问题中经常有上亿的训练样本,故效率偏低,且容易陷入局部最优解,因此提出了随机梯度下降算法。其每轮计算的目标函数不再是全体样本误差,而仅是单个样本误差,即每次只代入计算一个样本目标函数的梯度来更新权重,再取下一个样本重复此过程,直到损失函数值停止下降或损失函数值小于某个设定的阈值。若batch_size=n,则变成了FG。在当前位置求偏导,即梯度,正常的梯度方向类似于上山的方向,是使值函数增大的,下山最快需使最小,从负梯度求最小值,这就是梯度下降。

zl5186888的博客 1771

斯坦福CS229机器学习课程:中英双语字幕与课件资源全解析

机器学习作为人工智能的核心分支,其基础理论是理解现代智能系统的关键。其原理基于数据驱动,通过算法从数据中学习规律,从而实现对未知数据的预测或决策。掌握机器学习基础对于从事人工智能、数据分析等领域至关重要,它能帮助开发者构建更高效、更准确的模型。在实际工程中,扎实的理论知识是进行模型选择、调优和问题诊断的基石。无论是监督学习中的回归与分类,还是无监督学习中的聚类与降维,其核心概念都广泛应用于推荐系统、计算机视觉、自然语言处理等场景。本文聚焦于斯坦福大学经典的CS229《机器学习》课程资源,该资源提供了完整的视

weixin_30699955的博客 428

【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)

首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。

python_AI_fans的博客 4114

常用的optimizer优化器和优化函数::[梯度下降SGD,牛顿法,ada系列(adagrad, rmsprop,adadelta,adam)]+炼丹策略

逻辑回归本身是可以用公式求解的,但是因为需要求逆的复杂度太高,所以才引入了梯度下降算法。 一阶方法:梯度下降、随机梯度下降、mini 随机梯度下降降法。随机梯度下降不但速度上比原始梯度下降要快,局部最优化问题时可以一定程度上抑制局部最优解的发生。 二阶方法:牛顿法、拟牛顿法: 这里详细说一下牛顿法的基本原理和牛顿法的应用方式。牛顿法其实就是通过切线与x轴的交点不断更新切线的位置,直到达到曲线与x轴的交点得到方程解。在实际应用中我们因为常常要求解凸优化问题,也就是要求解函数一阶导数为0的位置,而.

weixin_36378508的博客 4238

梯度下降法及其优化算法(优化器Momentum,Adagrad,Adadelta,Adam)

1、动量 动量算法,目的是为了让SGD尽可能地跳出局部最优值。 vt=γvt−1+η∇θJ(θ)θ=θ−vt v_t = \gamma v_{t-1} + \eta \nabla_\theta J( \theta) \\ \theta = \theta - v_t vt​=γvt−1​+η∇θ​J(θ)θ=θ−vt​ 可以看出,和传统的SGD相比,增加了一个动量系数γ; 一般,动量系数γ设为0.9...

rosefun96的博客 1万+

构建高效深度学习笔记体系:从理论到实践的系统化方法

深度学习作为人工智能的核心技术,其学习过程往往涉及从理论理解到工程实践的系统性跨越。其基本原理是通过构建多层神经网络模型,利用反向传播算法优化参数,从而实现对复杂数据模式的识别与预测。这一技术的核心价值在于能够自动从数据中学习特征表示,显著提升了图像识别、自然语言处理等领域的性能上限。在实际应用场景中,如何将书本知识有效转化为解决实际问题的能力,是许多学习者和工程师面临的关键挑战。通过建立结构化的笔记体系,结合代码实践与概念连接,可以系统化地内化深度学习知识,有效提升学习效率与工程能力。本文以《动手学深度学

weixin_30521161的博客 386

Python实现支付宝转账接口

由于工作需要使用python开发一个自动转账接口,记录一下开发过程。 首先需要在蚂蚁金服上申请开通开发者账户,有了开发者账户就可以使用沙箱进行开发了。 在开发之前我们需要在沙箱应用中填写密钥,密钥的获取可以使用阿里提供的工具包自动生成。 前期准备工作完成了,接下来是编写代码部分。主要用到了python-alipay-sdk库,使用pip安装即可,如果安装的过程中遇到问题推荐使用Anaconda...

FanMLei的博客 8517

最优化方法一:梯度下降法

目录 1 梯度下降 1.1梯度下降的场景假设 1.2 梯度下降 1.2.1 微分: 1.2.2 梯度 1.3梯度下降算法的数学解释 1.3.1 α是什么含义 1.3.2为什么要梯度要乘以一个负号? 1.4梯度下降算法的实例 1.4.1单变量函数的梯度下降 1.4.2多变量函数的梯度下降 1.5python实现一个简单的梯度下降算法 1.5.1 原理 1.5...

weixin_39910711的博客 9794

Vivado时序违约小结

目录1. setup time违约1.1 逻辑级数太高1.2 Fanout太大2. hold time 违约2.1 异步信号处理导致hold time违约 1. setup time违约 建立时间是工程设计中最常遇到的问题了。一般说来,导致建立时间违例主要有两个原因:逻辑级数太大或者扇出太大,当然也可以尝试通过降频来解决建立时间违约。 1.1 逻辑级数太高 Levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能

mu_guang_的博客 7159

解决uc浏览器劫持video标签问题

解决uc视频悬浮播放 ,video标签被浏览器劫持 ,vide0适配

smile_y_y的博客 3453

优化算法之梯度下降(Gradient Descent)

一、梯度下降法 重申,机器学习三要素是:模型,学习准则,优化算法。这里讨论一下梯度下降法。 通常为了充分利用凸优化中的一些高效成熟的优化方法,像:共轭梯度、拟牛顿法等,所以呢很多的机器学习算法倾向于选择合适的模型和损失函数来构造一个凸函数作为优化的目标。但是呢,也有一些模型(例如神经网络)的优化目标是非凸的,以至于只能找到其局部最优解。 机器学习中,常用的优化算法就是梯度下降法,首先初始化参数θ0...

AIHUBEI的博客 2111

MATLAB Appdesigner开发独立桌面App全流程(一):以打开串口功能为例介绍Appdesigner的基本使用

本文详细介绍了Appdesigner的基本使用,以串口功能为例介绍按钮回调函数的实现以及控件之间通信的问题

Zhuwany的博客 3万+

常见 Optimizer 梯度下降优化算法总结

来源 | DengBoCong@知乎https://zhuanlan.zhihu.com/p/343564175编辑丨极市平台仅作学术分享,不代表本公众号立场,侵权联系删除论文标题:An ...

AI蜗牛车 880

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3034

【WorkBuddy专栏50】代码开发技术体系深度分析——前端、后端、全栈、移动端、数据工程,WB和CODEBUDDY谁更擅长?

【WorkBuddy专栏50】代码开发技术体系深度分析——前端、后端、全栈、移动端、数据工程,WB和CODEBUDDY谁更擅长?

AI人人懂 244

优化算法:梯度下降、Adam

梯度下降法:先求切线,然后在切线上进行移动,移动的距离就是每一步的步长,如果步长比较短,那么切线上的取值和曲线上的取值还是比较接近的,如果步长比较大,二者的距离偏差就会比较大。,参数的⽅差⼤⼤减少,但是,这是以未能收敛到最优解x = (0, 0)为代价的。新的梯度替换不再指向特定实例下降最陡的⽅向,⽽是指向过去梯度的加权平均值的⽅向。优化主要关注的是最⼩化⽬标函数,由于优化算法的⽬标函数通常是基于训练数据集的损失函数,因此优化的⽬标是减少训练误差。是关于索引i的训练样本的损失函数,其中x是参数向量。

weixin_52435934的博客 2434

灰度图像采集显示

灰度图像采集显示 在FPGA内部,采集到的视频数据线通过一个FIFO,将原本与25MHZ时钟同步的数据流转换到FPGA内部50MHZ的时钟。接着将这个数据再送入写DDR3缓存的异步FIFO中,这个FIFO中的数据一旦达到一定数量,就会被写入DDR3中。于此同时,使用另一异步FIFO缓存从DDR3读出的图像数据;LCD驱动模块不断地发出读图像数据请求给到这个FIFO,从中读取图像数据并送给VGA显示器进行实时图像的显示。 ...

小柚子的博客 484

批量梯度下降法

本文主要介绍随机梯度下降法

qq_16032927的博客 1860

零基础学习CANoe Panel(17)—— Panel CAPL Function

CANoe内置了几个CAPLFunction,允许我们在CAPL运行时动态的更改Panel控件的属性,比如打开某个panel,禁用某个控件,更改控件颜色等。

蚂蚁小兵 3520

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

梯度下降优化算法综述

本文翻译自Sebastian Ruder的“An overview of gradient descent optimization algoritms”,作者首先在其博客中发表了这篇文章,其博客地址为:An overview of gradient descent optimization algoritms,之后,作者将其整理完放在了arxiv中,其地址为:An overview of grad

null的专栏 5万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度学习-梯度优化方法

1.碰到平缓区域,梯度值较小,参数优化变慢2.碰到'鞍点',梯度为0,参数无法优化3.碰到局部最小值,参数不是最优。

m0_66672931的博客 2673

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

批梯度下降法(Batch Gradient Descent ),小批梯度下降 (Mini-Batch GD),随机梯度下降 (Stochastic GD)

Batch 的选择,首先决定的是下降的方向。随机梯度下降是通过每个样本来迭代更新一次,如果样本量很大的情况(例如几十万),那么可能只用其中几万条或者几千条的样本,就已经将theta迭代到最优解了,对比上面的批量梯度下降,迭代一次需要用到十几万训练样本,一次迭代不可能最优,如果迭代10次的话就需要遍历训练样本10次。(2)随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。

厚积薄发的博客 4198

搜索算法/最优化算法-梯度下降

搜索算法/最优化算法-梯度下降

weixin_74009895的博客 909
上一篇: 为何程序员们没事总爱戴个耳机,看完恍然大悟...
下一篇: 知乎 | 你在读博期间明白的最深刻的道理是什么?
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值