从SGD到NadaMax,十种优化算法原理及实现

十三、机器学习进阶知识:神经网络之反向传播算法(自适应矩估计算法Adam变形形式之Adamax、Nadam) 本文主要介绍了反向传播算法中的自适应矩估计算法(Adam)的两种变形形式Adamax和Nadam,同时以神经网络数据预测为例对它的实现过程进行了说明,通俗易懂,适合新手学习,附源码及实验数据集。 阅读详情

来自 | 知乎  作者 | 永远在你身后

链接丨https://zhuanlan.zhihu.com/p/81020717

编辑丨极市平台

本文仅用于学术分享,若侵权,请联系后台作删文处理。

无论是什么优化算法,最后都可以用一个简单的公式抽象:

 是参数,而  是参数的增量,而各种优化算法的主要区别在于对  的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:

  1. SGD

  2. Momentum

  3. Nesterov Momentum

  4. AdaGrad

  5. RMSProp

  6. AdaDelta

  7. Adam

  8. AdaMax

  9. Nadam

  10. NadaMax

   SGD

虽然有凑数的嫌疑,不过还是把SGD也顺带说一下,就算做一个符号说明了。常规的随机梯度下降公式如下:

其中  是学习率,  是损失关于参数的梯度(有的资料中会写成  等形式),不过相比SGD,用的更多的还是小批量梯度下降(mBGD)算法,不同之处在于一次训练使用多个样本,然后取所有参与训练样本梯度的平均来更新参数,公式如下:

其中  是第  次训练中  个样本损失关于参数梯度的均值,如无特别声明,下文所出现  也遵循该定义。

另外  或者  在下面的优化算法中,只是作为一个传入的变量,其具体的计算是由其他模块负责,可以参考下面两个链接:

Numpy实现神经网络框架(3)——线性层反向传播推导及实现

https://zhuanlan.zhihu.com/p/67854272

卷积核梯度计算的推导及实现

https://zhuanlan.zhihu.com/p/64248652

   Momentum

Momentum,也就是动量的意思。该算法将梯度下降的过程视为一个物理系统,下图是在百度图片中找的(侵删)

图片来自网络

如上图所示,在该物理系统中有一个小球(质点),它所处的水平方向的位置对应为  的值,而垂直方向对应为损失。设其质量  ,在第  时刻,在单位时间内,该质点受外力而造成的动量改变为:

(1.1)到(1.2)是因为  ,所以约去了。另外受到的外力可以分为两个分量:重力沿斜面向下的力  和粘性阻尼力 

令

代入(1.2)式中:

然后对“位置”进行更新:

所以这里  ,另外  的方向与损失的梯度方向相反,并取系数为  ,得到:

代入(1.4),得到速度的更新公式:

进一步的,将(1.6)式展开,可以得到:

可以看出来是一个变相的等比数列之和,且公比小于1,所以存在极限,当  足够大时,  趋近于 

实现代码

import numpy as np

class Momentum(object):
    def __init__(self, alpha=0.9, lr=1e-3):
        self.alpha = alpha  # 动量系数
        self.lr = lr        # 学习率
        self.v = 0          # 初始速度为0

    def update(self, g: np.ndarray):    # g = J'(w) 为本轮训练参数的梯度
        self.v = self.alpha * self.v - self.lr * g  # 公式
        return self.v    # 返回的是参数的增量,下同

以上是基于指数衰减的实现方式,另外有的Momentum算法中会使用指数加权平均来实现,主要公式如下:

不过该方式因为  ,刚开始时  会比期望值要小,需要进行修正,下面的Adam等算法会使用该方式

   Nesterov Momentum

Nesterov Momentum是Momentum的改进版本,与Momentum唯一区别就是,Nesterov先用当前的速度  更新一遍参数,得到一个临时参数  ,然后使用这个临时参数计算本轮训练的梯度。相当于是小球预判了自己下一时刻的位置,并提前使用该位置的梯度更新 :

为了更加直观,还是上几个图吧,以下是Momentum算法  的更新过程:

假设下一个位置的梯度如下:

那么Nesterov Momentum就提前使用这个梯度进行更新:

整体来看Nesterov的表现要好于Momentum,至于代码实现的话因为主要变化的是  ,所以可以之前使用Momentum的代码

   AdaGrad

AdaGrad全称为Adaptive Subgradient,其主要特点在于不断累加每次训练中梯度的平方,公式如下:

其中  是一个极小的正数,用来防止除0,而  ,  是矩阵的哈达玛积运算符,另外,本文中矩阵的平方或者两矩阵相乘都是计算哈达玛积,而不是计算矩阵乘法

从公式中可以看出,随着算法不断迭代,  会越来越大,整体的学习率会越来越小。所以,一般来说AdaGrad算法一开始是激励收敛,到了后面就慢慢变成惩罚收敛,速度越来越慢

对于代码实现,首先将  展开得到:

通常  ,所以在第一次训练时(2.2)式为:

因为每次训练  的值是不确定的,所以要防止处0,但是可以令  ,这样就可以在(2.2)式中去掉  

将  代入(2.3)式,可以得到:

可知  恒大于0,因此不必在计算  中额外加入  ,代码如下:

class AdaGrad(object):
    def __init__(self, eps=1e-8, lr=1e-3):
        self.r = eps    # r_0 = epsilon
        self.lr = lr

    def update(self, g: np.ndarray):
        r = r + np.square(g)
        return -self.lr * g / np.sqrt(r)

   RMSProp

RMSProp是AdaGrad的改进算法,其公式和AdaGrad的区别只有  的计算不同,先看公式

可以看出,与AdaGrad不同,RMSProp只会累积近期的梯度信息,对于“遥远的历史”会以指数衰减的形式放弃

并且AdaGrad算法虽然在凸函数(Convex Functions)上表现较好,但是当目标函数非凸时,算法梯度下降的轨迹所经历的结构会复杂的多,早期梯度对当前训练没有太多意义,此时RMSProp往往表现更好

以下是将  展开后的公式:

与AdaGrad一样,令  ,从而去掉计算  时的  ,实现代码:

class RMSProp(object):
    def __init__(self, lr=1e-3, beta=0.999, eps=1e-8):
        self.r = eps
        self.lr = lr
        self.beta = beta

    def update(self, g: np.ndarray):
        r = r * self.beta + (1-self.beta) * np.square(g)
        return -self.lr * g / np.sqrt(r)

   AdaDelta

AdaDelta是与RMSProp相同时间对立发展出来的一个算法,在实现上可以看作是RMSProp的一个变种,先看公式:

可以看到该算法不需要设置学习率  ,这是该算法的一大优势。除了同样以  来累积梯度的信息之外,该算法还多了一个  以指数衰减的形式来累积  的信息

与前面相同,令:

然后去掉(3.1)中的  ,得到:

这样的话可以减少一些计算,代码如下:

class AdaDelta(object):
    def __init__(self, beta=0.999, eps=1e-8):
        self.r = eps
        self.s = eps
        self.beta = beta

    def update(self, g: np.ndarray):
        g_square = (1-self.beta) * np.square(g)     # (1-beta)*g^2
        r = r * self.beta + g_square
        frac = s / r
        res = -np.sqrt(frac) * g
        s = s * self.beta + frac * g_squaretmp      # 少一次乘法。。。
        return res

关于以上几个算法的对比:

其中NAG是Nesterov Momentum

更多关于AdaDelta的信息,可以参考这篇文章:自适应学习率调整:AdaDelta(https://www.cnblogs.com/neopenx/p/4768388.html)

   Adam

Adam的名称来自Adaptive Momentum,可以看作是Momentum与RMSProp的一个结合体,该算法通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率,公式如下:

(4.1)和(4.2)在Momentum和RMSProp中已经介绍过了,而不直接使用  计算  却先经过(4.3)和(4.4)式是因为通常会设  ,所以此时梯度的一阶矩估计和二阶矩估是有偏的,需要进行修正

虽然没办法避免修正计算,但是还是可以省去一些计算过程,初始化时令:

然后(4.5)式变为:

因为  ,可知当  足够大时修正将不起作用(也不需要修正了):

代码如下:

class Adam(object):
    def __init__(self, lr=1e-3, alpha=0.9, beta=0.999, eps=1e-8):
        self.s = 0
        self.r = eps
        self.lr = lr
        self.alpha = alpha
        self.beta = beta
        self.alpha_i = 1
        self.beta_i = 1

    def update(self, g: np.ndarray):
        self.s = self.s * self.alpha + (1-self.alpha) * g
        self.r = self.r * self.beta + (1-self.beta) * np.square(g)
        self.alpha_i *= self.alpha
        self.beta_i *= self.beta_i
        lr = -self.lr * (1-self.beta_i)**0.5 / (1-self.alpha_i)
        return lr * self.s / np.sqrt(self.r)

   AdaMax

首先回顾RSMSProp中  的展开式并且令  ,得到:

可以看到这相当于是一个  的  范数,也就是说  的各维度的增量是根据该维度上梯度的  范数的累积量进行缩放的。如果用  范数替代就得到了Adam的不同变种,不过其中  范数对应的变种算法简单且稳定

对于  范数,第  轮训练时梯度的累积为:

然后求无穷范数:

由此再来递推  :

需要注意,这个max比较的是梯度各个维度上的当前值和历史最大值,具体可以结合代码来看,最后其公式总结如下:

另外,因为  是累积的梯度各个分量的绝对值最大值,所以直接用做分母且不需要修正,代码如下:

class AdaMax(object):
    def __init__(self, lr=1e-3, alpha=0.9, beta=0.999):
        self.s = 0
        self.r = 0
        self.lr = lr
        self.alpha = alpha
        self.alpha_i = 1
        self.beta = beta

    def update(self, g: np.ndarray):
        self.s = self.s * self.alpha + (1-self.alpha) * g
        self.r = np.maximum(self.r*self.beta, np.abs(g))
        self.alpha_i *= self.alpha
        lr = -self.lr / (1-self.alpha_i)
        return lr * self.s / self.r

   Nadam

Adam可以看作是Momentum与RMSProp的结合,既然Nesterov的表现较Momentum更优,那么自然也就可以把Nesterov Momentum与RMSProp组合到一起了,首先来看Nesterov的主要公式:

为了令其更加接近Momentum,将(5.1)和(5.2)修改为:

然后列出Adam中Momentum的部分:

将(5.5)和(5.6)式代入到(5.7)式中:

将上式中标红部分进行近似:

代入原式,得到:

接着,按照(5.4)式的套路,将  替换成  ,得到:

整理一下公式:

同样令  ,消去(5.8)式种的  :

代码

class Nadam(object):
    def __init__(self, lr=1e-3, alpha=0.9, beta=0.999, eps=1e-8):
        self.s = 0
        self.r = eps
        self.lr = lr
        self.alpha = alpha
        self.beta = beta
        self.alpha_i = 1
        self.beta_i = 1

    def update(self, g: np.ndarray):
        self.s = self.s * self.alpha + (1-self.alpha) * g
        self.r = self.r * self.beta + (1-self.beta) * np.square(g)
        self.alpha_i *= self.alpha
        self.beta_i *= self.beta_i
        lr = -self.lr * (1-self.beta_i)**0.5 / (1-self.alpha_i)
        return lr * (self.s * self.alpha + (1-self.alpha) * g) / np.sqrt(self.r)

   NadaMax

按照同样的思路,可以将Nesterov与AdaMax结合变成NadaMax,回顾以下(5.8)式:

然后是AdaMax的二阶矩估计部分:

用(6.2)式替换掉(6.1)式中标红部分,得到:

最后,整理公式:

代码实现:

class NadaMax(object):
    def __init__(self, lr=1e-3, alpha=0.9, beta=0.999):
        self.s = 0
        self.r = 0
        self.lr = lr
        self.alpha = alpha
        self.alpha_i = 1
        self.beta = beta

    def update(self, g: np.ndarray):
        self.s = self.s * self.alpha + (1-self.alpha) * g
        self.r = np.maximum(self.r*self.beta, np.abs(g))
        self.alpha_i *= self.alpha
        lr = -self.lr / (1-self.alpha_i)
        return lr * (self.s * self.alpha + (1-self.alpha) * g) / self.r

参考资料

[1]: 《机器学习算法背后的理论与优化》 ISBN 978-7-302-51718-4

[2]: Adam: A Method for Stochastic Optimization(https://arxiv.org/abs/1412.6980)

[3]: Incorporating Nesterov Momentum into Adam(https://openreview.net/forum?id=OM0jvwB8jIp57ZJjtNEZ&noteId=OM0jvwB8jIp57ZJjtNEZ)

[4]: An overview of gradient descent optimization algorithms(https://ruder.io/optimizing-gradient-descent/index.html)

若干新型智能优化算法对比分析研究 智能优化算法(IOA)指的是一类以自然界的生物生存进化过程或物理现象为算法原理,用于解决最优化问题的算法,较为知名的智能优化算法有遗传算法、粒子群算法、模拟退火算法等。选取了近几年国内外提出的几种新型智能优化算法:蝴蝶优化算法(BOA)、飞蛾扑火算法(MFO)、正弦余弦优化算法(SCA)、蝗虫优化算法(GOA)、哈里斯鹰优化算法(HHO)、麻雀搜索算法(SSA)。仿植物生长类算法指的是模拟花草树木等植物在生长过程中表现出来的向光性、根的吸水性、种子繁殖、花朵授粉等特性而构造出的优化算法。 阅读详情

相关推荐

算法|2025最强优化算法

根据2025年的最新研究进展,以下是被广泛认可的几种“最强优化算法”,它们在理论创新、性能表现和应用范围上均有显著突破:1、- 核心原理:完全基于强化学习(RL)训练,无需监督数据或人类反馈,通过自我学习优化模型性能。其非Transformer架构(如LFM模型)支持低参数量本地化部署。 2、- 优势: - 算力利用率提升显著,内存占用降低,适合终端设备实时优化。 - 在AI超级应用中实现2161万日活用户(DAU),验证其实际场景的高效性。 3、- 应用场景:AI模型训练优化、具身智能决策、边缘计算等

尘世冰封的专栏 3171

深度学习总结(一)各种优化算法

参考博文: 码农王小呆:https://blog.youkuaiyun.com/manong_wxd/article/details/78735439 深度学习最全优化方法总结: https://blog.youkuaiyun.com/u012759136/article/details/52302426 超级详细每个算法的讲解,可参考: https://blog.youkuaiyun.com/tsyccnh/articl...

qq_23269761的博客 5万+

搭建深度学习框架(八):激活函数和参数优化算法实现

1.实现了Relu,Leakrelu,Elu,Tanh激活函数。 参考:一文搞懂激活函数(Sigmoid/ReLU/LeakyReLU/PReLU/ELU) 常见的激活函数(activation function)总结 ReLu、LeakReLu、PReLu、ELU、SELU激活函数 2.实现了总共实现了以下10种优化算法 SUW SGD Momentum AdaGrad RMSProp AdaDelta 不需要设置学习率 Adam AdaMax Nadam NadaMax 参考:10种优化算法汇总实现(从

qq_43790749的博客 311

深度学习中的优化算法之AdaMax

之前在https://blog.youkuaiyun.com/fengbingchun/article/details/125018001 介绍过深度学习中的优化算法Adam,这里介绍下深度学习的另一种优化算法AdaMax。AdaMax与Adam来自于同一篇论文。论文名字为《ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION》,论文地址:https://arxiv.org/pdf/1412.6980.pdf AdaMax:是梯度优化算法的扩展,基于无穷范数的A...

网络资源是无限的 5867

ComfyUI中一个超好用的变量管理类节点-KJNodes

在AI绘图中,ComfyUI的热度开始慢慢起来一些,但是这个软件在使用的过程中,需要很多连线,仅仅一个最简单的动画生成,就需要连接这么多线条,而且有些线会飞的很远,看起来就很不美观,尤其是一些复杂工作流,连接到最后自己可能已经分不太清楚到底连接好了没有。今天在研究C站的大佬们的工作流的时候,发现一个有意思的工作流,看起来大概是这种感觉:干净整洁。他用到了KJNodes这么个节点来管理变量,git上星标也不算很多,所以我想很多朋友可能还不知道,所以这里简单介绍下用法。

聚梦小课堂 7524

《Long-CLIP: Unlocking the Long-Text Capability of CLIP》

总的来说,Long-CLIP是一个改进的视觉-语言预训练模型,它通过知识保留的位置上插值和主要成分匹配策略,有效解决了原始CLIP模型在处理长文本输入时的限制。这一模型不仅在长文本图像检索任务中表现出色,而且在零样本图像分类任务中保持了与原始CLIP相当的性能,同时还能以即插即用的方式增强图像生成任务中的长文本处理能力。

Angelina_Jolie的博客 1380

【深度学习】从SGD到NadaMax,十种优化算法原理及实现

作者丨永远在你身后@知乎来源丨https://zhuanlan.zhihu.com/p/81020717导读本文总结了SGD、MomentumNesterov、Momentum、AdaGrad...等十种优化算法,每一种算法的讲解都附有详细的公式过程以及代码实现。无论是什么优化算法,最后都可以用一个简单的公式抽象:是参数,而是参数的增量,而各种优化算法的主要区别在于对的计算不同,本文总...

fengdu78的博客 194

用VINS-Fusion跑通EuRoC数据集:Ubuntu22.04+ROS2环境下的保姆级评测指南

本文详细介绍了在Ubuntu22.04和ROS2 Humble环境下使用VINS-Fusion处理EuRoC数据集的完整流程。从环境配置、数据集转换到参数调优和性能评估,提供了一套全面的多传感器融合分析方案,帮助开发者在无人机精准定位场景中实现高效部署与优化。

weixin_29212867的博客 518

【最全干货】从SGD到NadaMax,十种机器学习优化算法原理及实现

点击上方,选择星标或置顶,不定期资源大放送!阅读大概需要15分钟Follow小博主,每天更新前沿干货作者丨永远在你身后@知乎来源丨https://zhuanlan.zhihu.com/p...

深度学习技术前沿 772

微生物16S数据上传NCBI的SRA库

本篇内容仅包括:俺自己的实验收集了淡水、淡水沉积物、海水、海草附着微生物样品,测序所得的Fastq格式数据,在文章投稿发表时被要求数据需上传NCBI的SRA库,得到一个PRJNA2347899这样子的IDs。仅解决了这个上传过程!

Xf_Niu的博客 7436

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3561

adadelta算法_从SGD到NadaMax,十种优化算法原理及实现

无论是什么优化算法,最后都可以用一个简单的公式抽象: 是参数,而 是参数的增量,而各种优化算法的主要区别在于对 的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:SGDMomentumNesterov MomentumAdaGradRMSPropAdaDeltaAdamAdaMaxNadamNadaMaxSGD虽然有凑数的嫌疑,不过还是把SGD也顺带说一下,就算做一个...

weixin_28733651的博客 571

Python连接高斯数据库踩坑实录:从SASL报错到SSL安全连接的完整指南

本文详细记录了Python连接高斯数据库时遇到的SASL authentication报错及其解决方法。通过剖析SASL认证机制,对比了修改数据库配置、使用官方驱动等方案的利弊,并重点提供了通过自动化脚本生成SSL证书,实现安全、免密连接的完整指南,帮助开发者彻底解决连接难题。

weixin_28340315的博客 441

收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达无论是什么优化算法,最后都可以用一个简单的公式抽象:是参数,而是参数的增量,而各种优化算法的主要区别在于对的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:SGDMomentumNesterov MomentumAdaGradRMSPropAdaDeltaAdamAda...

小白学视觉 310

别再死记硬背公式了!用Multisim仿真软件,5分钟搞懂三极管放大电路的工作原理

本文介绍如何利用Multisim仿真软件快速掌握三极管放大电路的工作原理,避免死记硬背公式。通过动态实验和参数调整,直观理解三极管的工作状态和放大效果,提升学习效率和实践能力。

weixin_30566063的博客 569

使用Simulink设计并实现一个可调谐的二阶IIR陷波滤波器,实时去除音频中的工频噪声

《基于Simulink的音频陷波滤波器设计与实现》摘要:本文详细介绍了使用Simulink设计陷波滤波器去除音频工频噪声(如50Hz)的方法。核心内容包括:1)二阶IIR陷波滤波器的原理与传递函数;2)Simulink实现步骤(音频系统搭建、滤波器设计、频率跟踪);3)性能分析(频谱对比、时域波形、听觉测试)。通过精准消除特定频率干扰,同时保留语音信号(200Hz-4kHz),有效提升信噪比(>20dB)。文章还探讨了多陷波级联、自适应算法等高级技巧,为音频处理、语音通信等应用提供实用解决方案。

amy_mhd的博客 157

lr分析器的设计与实现_从SGD到NadaMax,十种优化算法原理及实现

无论是什么优化算法,最后都可以用一个简单的公式抽象: 是参数,而 是参数的增量,而各种优化算法的主要区别在于对 的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:SGDMomentumNesterov MomentumAdaGradRMSPropAdaDeltaAdamAdaMaxNadamNadaMaxSGD虽然有凑数的嫌疑,不过还是把SGD也顺带说一下,就算做一个...

weixin_39773215的博客 152

pscad IEEE标准系统搭建说明

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

收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现(附代码)

来源:深度学习爱好者 知乎https://zhuanlan.zhihu.com/p/81020717本文约3700字,建议阅读10分钟本文为你总结十个优化算法的公式,并附上了简单的Python实现。无论是什么优化算法,最后都可以用一个简单的公式抽象:是参数,而是参数的增量,而各种优化算法的主要区别在于对的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:SGDMom...

数据派THU 380

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

10种优化算法汇总实现(从SGD到NadaMax)

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!作者丨永远在你身后@知乎来源丨https://zhuanlan.zhihu.com/p/8102...

idol24的博客 2595

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

adadelta算法_10种优化算法汇总实现(从SGD到NadaMax)

点击上方“机器学习与生成对抗网络”,关注"星标"获取有趣、好玩的前沿干货!作者丨永远在你身后@知乎来源丨https://zhuanlan.zhihu.com/p/81020717编辑丨极市平台文仅分享,侵删导读本文总结了SGD、MomentumNesterov、Momentum、AdaGrad...等十种优化算法,每一种算法的讲解都附有详细的公式过程以及代码实现。无论是什么优化算法,最...

weixin_42703843的博客 684

SGD,Momentum,优化算法原理及实现

优化算法原理及实现SGDMomentum 无论是什么优化算法,最后都可以用一个简单的公式抽象: w 是参数,而△w是参数的增量,而各种优化算法的主要区别在于对△w的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现: SGD 虽然有凑数的嫌疑,不过还是把SGD也顺带说一下,就算做一个符号说明了。常规的随机梯度下降公式如下: 其中η是学习率,J’(w)是损失关于参数的梯度,不...

weixin_42535423的博客 4746

常见优化器SGD-NadaMax

常见优化器SGD-NadaMax 转载https://zhuanlan.zhihu.com/p/81020717 SGD Momentum Nesterov Momentum AdaGrad RMSProp AdaDelta Adam AdaMax Nadam NadaMax SGD 随机梯度下降算法,最常用地mSGD,小批量随机梯度下降求解参数。 Momentum 动量梯度下降算法 代码 import numpy as np class Mo...

wait_ButterFly的博客 552

深度学习优化器+公式推导

基础优化 1. GD — 梯度下降 1.1 BGD — 批量梯度下降 代码 1.2 SGD — 随机梯度下降 代码 1.3 MBGD — 小批量梯度下降 代码 2. Momentum 2.1 Simple momentum update 2.2 Nesterov momentum update (Nesterov Accelerated Gradient) (NAG) 3. Adaptive learning rate optimization algorithm 3.1.

curious_undergather的博客 1113

一文详解深度学习中的优化器

所谓的优化器,又叫神经网络优化算法,或者 梯度下降算法, 是通过改善训练方式,来最小化(或最大化)损失函数E(x)。 一文看懂各种神经网络优化算法:从梯度下降到Adam方法 - 知乎 https://zhuanlan.zhihu.com/p/27449596 从基本原理到梯度下降,小白都能看懂的神经网络教程 - 知乎 https://zhuanlan.zhihu.com/p/5...

TEDDY的博客 1050

深度学习CV岗位面试基础问题总结(基础篇)

序言 理论知识篇面试知识点总结,自问自答,学习、记录、分享和复习。

小菜的博客 6227
上一篇: 注意力机制是如何学习到模型所应注意的区域的?
下一篇: 吴恩达老师,45岁生日快乐!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值