一文总结深度学习的优化算法

从代码学习深度学习 - 优化算法 PyTorch 版 优化算法是深度学习的核心,它们决定了模型训练的效率和结果的质量。在这篇博客中,我们将通过 PyTorch 代码实例,深入理解各种优化算法的原理和实现。我们将使用一个简单的线性回归任务,在数据集上比较不同优化算法的表现。这个数据集包含了与翼型自噪声相关的特征和目标变量。该博客中仅仅介绍了不同的优化算法,利用这写算法实现特定任务的流程这里不再介绍,请参考从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版。通过代码学习,我们能够建立更直观的理解,看到优化算法在实际训练中的差异。 阅读详情

深度学习的一大特点是海量数据,若我们利用大量的数据训练神经网络,这一训练过程非常缓慢。因此,本文将要介绍深度学习的各种优化算法,若理解了本文介绍的优化算法,未介绍的优化算法的思想没有太大变化,也能很好的理解它。

神经网络都是使用梯度下降这一思想来进行多次迭代,直至满足终止迭代的条件。深度学习的优化算法也是基于梯度下降法这一基础进行发散的,下面一一介绍它们:

1. 批量梯度下降法(Batch Gradient Descent)

批量梯度下降法是计算所有样本的损失函数,然后利用梯度下降法更新模型参数。

优点:由于每一次迭代都用了全部样本,因此损失函数的收敛过程比较稳定。

缺点:当数据量很大时,每一次迭代计算都会计算全部数据的梯度,因此计算速度非常慢。

2. 随机梯度下降法(Stochastic Gradient Descent)

随机梯度下降法是每迭代一次,只计算一个样本的损失函数,然后利用梯度下降法更新参数。

优点:训练速度快

缺点:准确度下降

3. 小批量梯度下降法(mini-Batch Gradient Descent)

根据批量梯度下降法和随机梯度下降法的缺点,对所有样本分割成多个数据集,这些数据集被称为mini-Batch,每个数据集迭代一次都执行批量梯度下降算法更新参数。

4. 动量梯度下降法(Gradient Descent with Momentum)

动量梯度下降法要快于标准的梯度下降法,思想是通过指数加权上一次梯度值,来更新当前的梯度值,目的是使梯度迭代曲线变得平滑,加快了迭代速度。

假设损失函数曲线图:

标准梯度下降法的迭代过程图:

若我们只定性的画出梯度下降迭代曲线图,一个箭头代表迭代一次。

动量梯度下降法能够平滑梯度迭代的过程,原理是平均了前几次迭代的梯度,对于上图的梯度下降迭代曲线图,竖直方向由于平均而变得很小,由于梯度的水平分量都指向同一个方向,因此水平方向的值依然较大,所以动量梯度下降算法能够加快收敛速度。

根据上面的描述,定性的画出动量梯度下降迭代曲线图:

比较两图可知,动量梯度下降收敛的速度提高了,当然实际问题远比这个复杂,文中的例子只是定性的分析下动量梯度下降法收敛速度提高的原因。

动量梯度下降法的公式为:

其中等式右边的表示当前梯度的值,dW表示上一个梯度的值。由上面的公式可知,动量梯度下降算法参数的更新与两个超参数相关,学习率α和权重参数β。

5. RMSprop

RMSprop,全称是root mean square prop算法,也能加速梯度下降算法。

如下图的标准梯度下降算法:

模型包含了两个参数 w 和 b,若我们能够减小参数b方向的梯度,增加参数w方向的梯度,那么就能提高迭代速度,RMSprop算法能够实现。

由上图可知,b方向的梯度较大,w的方向梯度较小,RMSprop用到了动量梯度法的思想,利用加权平均保留了微分的平方。

RMSprop的公式:

参数W,b更新:

因为b方向的梯度较大,W方向的梯度较小,通过上面的等式可以定性的推断,W方向的梯度变化增大了,b方向的梯度较小了。如下图:

其中紫色方向表示标准梯度的迭代过程,绿色方向表示RMSprop方法的梯度迭代过程,由上图可知RMSprop方法加快了收敛过程。

6. Adam算法

Adam算法结合了动量梯度法和RMSprop法,实现过程:

首先初始化:

利用动量梯度下降法的思想更新梯度:

因为初始值的问题,需要梯度进行修正,修正后的梯度:

然后利用RMSprop法更新均方参数:

均方参数也需要修正:

因此,adam的参数更新:

Adam算法能够加速梯度下降过程的原理可参考RMSprop进行推导理解 。

7. 小结

动量梯度法、RMSProp和Adam算法能够适用不同的深度学习结构,我个人建议Adam算法和mini-Batch结合在一起用。

参考:

吴恩达,深度学习公开课

欢迎扫码关注:

【优化算法】1. 深度学习优化算法介绍 文章目录概论优化的目标优化的挑战局部最小值鞍点梯度消失总结 概论 本文主要介绍深度学习与优化的关系,以及优化在深度学习使用中的问题和挑战。解决一个深度学习问题的基本步骤: 定义损失函数。 使用优化算法最小化损失。优化过程中,损失函数就是优化算法的目标函数。 通常我们优化的目标是最小化,当遇到最大化问题时,我们可以给目标函数加个负号。 优化的目标 虽然优化算法是深度学习中用来减少损失函数的方法,但是优化算法和深度学习的目标是不同的。 优化的目标是减少训练误差,最小化目标函数是基于训练集的损失函数。 深度 阅读详情

相关推荐

[深度学习] 优化算法

优化算法 优化算法的功能就是改善训练方式,来最小化(最大化)损失函数 模型内部有些参数,是用来计算测试集中目标值 Y 的真实值和预测值的偏差,基于这些参数,就形成了损失函数E(x)。 比如说,权重(ωωω)和偏差(b)就是这样的内部参数,一般用于计算输出值,在训练神经网络模型时起到主要作用。 在有效地训练模型并产生准确结果时,模型的内部参数起到了非常重要的作用。这也是为什么我们应该用各种优化策略和...

四月晴 2173

深度学习常用优化算法:SGD、Nesterov、Adagrad、AdaDelta、Adam

优化算法的功能,是通过改善训练方式,来最小化(或最大化)损失函数E(x)。模型内部有些参数,是用来计算测试集中目标值Y的真实值和预测值的偏差程度的,基于这些参数,就形成了损失函数E(x)。比如说,权重(W)和偏差(b)就是这样的内部参数,一般用于计算输出值,在训练神经网络模型时起到主要作用。在有效地训练模型并产生准确结果时,模型的内部参数起到了非常重要的作用。这也是为什么我们应该用各种优化策略和算法,来更新和计算影响模型训练和模型输出的网络参数,使其逼近或达到最优值。

绿色羽毛 1万+

一文读懂深度学习算法中的优化算法发展史

深度学习优化算法发展史优化算法的目的各种优化算法梯度下降法动量梯度法Adam优化算法 优化算法的目的 各种优化算法 所有梯度算法都是基于梯度下降法进行演进的。 主要分为三大阶段,第一阶段是梯度下降法,这个阶段的优化算法可以找到局部最优解,但是无法找到全局最优解,很容易陷入鞍点。 第二阶段为动量梯度法,这个阶段的优化算法考虑了权重的优化方向,借鉴了动量的原理,可以在某种程度上跳出局部最优解,但是很容...

weixin_38410551的博客 2161

深度学习常见的优化算法

深度学习中常见的优化算法

qq_41296039的博客 3836

核函数——原理剖析

(Kernel Function)是机器学习和统计学中的一个重要概念,特别是在支持向量机(SVM)和其他基于核方法的算法中。核函数的主要作用是通过一个隐式的方式将数据映射到一个高维空间,从而使得在该高维空间中线性不可分的问题变得线性可分。没关系,现在让我们抛开一切无关的事情,花20分钟来认真领会一下,核函数的原理到底是什么。然后我们来说什么什么样的函数有资格称为核函数,也就是上面说的一个函数的内积矩阵是半正定矩阵。中的分布如左图所示。中是不可实现的,那如果我们将原始空间中的所有样本点,通过一个映射关系。

m0_70254540的博客 1587

麒麟KylinV10系统yum源更换全攻略:从官方源到第三方仓库的保姆级教程

本文详细介绍了麒麟KylinV10系统yum源的更换与优化方法,包括官方源配置、第三方仓库集成及RPM包管理技巧。通过实战案例和命令示例,帮助用户快速解决软件依赖问题,提升系统管理效率。特别适合需要在国产操作系统上进行开发的工程师参考。

weixin_30752699的博客 649

深度学习之优化算法

​ 目录 一、优化算法与深度学习 二、深度学习中优化算法的常见算法 三、总结 四、常用优化算法的代码调库实现 一、优化算法与深度学习 1、优化算法对于深度学习的意义 深度学习中的优化问题通常指的是:寻找模型上的一组参数θ,它能显著地降低(最小化)代价函数J(θ),通常也有采取最大化问题转化为最小化问题再优化的方法。 优化算法直接影响模型的训练效率。 2、优化算法与深度学习的关系 优化算法的目的:降低训练误差;

tt丫的博客 5346

【git】git: ‘interpret-trailers’ is not a git command. See ‘git --help’

cents 7.6系统. yum源安装git最新版本是1.8.3 报错: git: 'interpret-trailers' is not a git command. See 'git --help'. cannot insert change-id line in .git/COMMIT_EDITMSG 解决: git add xxx git commit -m "xxx" 然后修改 vim .git/hooks/commit-msg #if test -n "${reviewurl}" ; th

machh的专栏 4758

一文搞懂深度学习中常用的优化算法

在深度学习训练模型的时候需要使用到优化算法,最终我们都是在求解代价函数的最小化问题来求解模型的参数。有的时候,训练一个神经网络模型可能需要几百上千台机器同时训练几个月,通过使用优化算法可以节省训练的时间加快模型的收敛。本篇文章主要介绍一下常用的优化算法 梯度下降算法 指数加权平均算法 动量梯度下降 RMSprop算法 Adam优化算法 常用的优化算法在面试的时候也会经常被问到。 一、梯度下降算...

修炼之路 1万+

白鲸优化算法(BWO)详解:从生物灵感 to 工程实践

白鲸优化算法(BWO)是一种新型的群体智能优化算法,模拟白鲸的游泳、捕食和鲸落行为。该算法通过平衡因子控制探索与开发阶段的转换:探索阶段采用正弦/余弦函数模拟白鲸的同步游泳,开发阶段引入莱维飞行增强局部搜索,鲸落阶段通过随机更新避免局部最优。BWO具有参数少、实现简单、收敛速度快等优点,已在多个优化问题上展现出优异性能。其数学模型将白鲸的三种核心行为抽象为位置更新公式,实现了全局搜索与局部开发的自然平衡。

qq_42212808的博客 290

【华为OD机试真题】439、精准核酸检测 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准圈定可能被感染的人群现在根据传染病流调以及大数据分析,得到了每个人之间在时间、空间上是否存在轨迹的交叉。现在给定一组确诊人品编号(X1 X2 X3.....n)在所有人当中,找出哪些人票要进行核酸检测,输出需要进行核酸检测的人数。(注意:确诊病例自身不需要再做核酸检) >  需要进行核酸检测的人,是病毒传播链条上的所有人员,即有可能通过确诊病例所能传播到的所有人   例如:A是确诊病例,A和B有接触、B和

KJ.JK 1434

深度学习优化算法总结

  本文基于目前深度学习中使用较多的优化学习算法进行总结。 1 深度学习中的优化算法   优化算法之前讨论两个问题:   (1) 局部最小值问题   在深度学习中,最优化问题其实并不容易困在局部最小值点。在高维度空间时(如20000维),局部最小值点需要在所有维度上都取得最小值,概率为2−200002−200002^{-20000},相反更容易困在鞍点处。   同时平稳端(plate...

王琨的博客 7096

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法

Windows报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件的解决方法 在Windows的搜索框中输入Windows安全中心,搜索到后将其打开 点击病毒和威胁防护将鼠标移动到Microsoft Defender防病毒选项处,将定期扫描打开 下滑找到管理设置 先关闭篡改防护,再点击添加或删除排除项 先点击添加排除项,再点击文件,选择报出异常的文件,将其添加到排除项中,过程中会存在跳框确认,皆点击确定,完成后就可以运行报无法成功完成操作,因为文件包含病毒或潜在的垃圾软件异常的文件

123 2万+

一文带你入门深度学习优化算法

一文带你入门深度学习优化算法  一般反向传播神经网络一个完整的训练过程就是由前向传播和反向传播组成。其中前向传播较为直观,只要学过了线性代数一般就很好理解,而反向传播没有前向传播这么直观,所涉及的方法也更加的灵活多变。所以,本文就反向传播的四个经典算法进行详细地讲解,希望能带新手入门深度学习。 0. 基础知识 看文章前你需要掌握什么知识? 线性代数 导数的意义和求导法则 清楚神经网络的前向传播过程,知道一般神经网络的参数主要分为:权重参数wiw_iwi​和偏置参数bib_ibi​两个部分。 从最优化的角

PyBigStar的博客 826

PHP 网页游戏开发入门教程

我们还链接了一个名为 “game.js” 的 JavaScript 文件,稍后将在其中编写游戏逻辑。这只是一个简单的示例,但它演示了如何使用 PHP 和 JavaScript 开发一个基本的网页游戏。以下是一个示例游戏的源代码和解释。现在,您可以在浏览器中打开 “game.php” 文件,即可看到一个带有红色游戏角色的游戏板。在上述代码中,我们使用 JavaScript 创建了一个游戏角色元素,并将其添加到游戏板容器中。最后,我们需要将游戏元素的样式设置为绝对定位,以便能够正确地控制它们的位置。

KkowServer的博客 678

C#【通用方法】字节数组添加、移除、获取的方法类(妙用List<byte>,开发中常用)

C#【通用方法】添加移除字节的方法类(妙用List,开发中常用)

星Yeah 的博客 3359

【深度学习】一文搞定面试中的优化算法

深度学习各类优化器 借用古代炼丹的一些名词,我们可以把训练模型中的数据比做炼丹药材,模型比做炼丹炉,火候比做优化器。那么我们知道,同样的药材同样的炼丹炉,但是火候不一样的话,炼出来的丹药...

fengdu78的博客 487

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【深度学习·命运-3】一文了解优化算法和正则化技术

Adam 优化算法是目前最常用的优化算法之一,具有计算效率高、内存占用小、收敛速度快等优点。它结合了。

m0_69378371的博客 1175

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

机器学习与深度学习数学基础(一文速通优化算法部分)

重点关注矩阵运算、范数与特征值、特征向量即可。

GHENYOUJIAN的博客 676

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【深度学习】从梯度下降到 Adam!一文看懂各种神经网络优化算法

王小新 编译自 Medium量子位 出品 | 公众号 QbitAI,编辑:AI有道在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降...

fengdu78的博客 494

【深度学习】Adam那么棒,为什么还对SGD念念不忘?一文看懂深度学习优化算法...

以下文章来源于:Juliuszh@知乎作者:Juliuszh原文链接:https://zhuanlan.zhihu.com/juliuszh本文仅用于学术分享,如有侵权,请联系后台作删文处理导读本文分析了Adam和SGD算法的优劣,深入的讲解了优化算法的选择与使用策略,希望能对读者们有所帮助。机器学习界有一群炼丹师,他们每天的日常是:拿来药材(数据),架起八卦炉(模型),点着六味真火(优化算法),...

fengdu78的博客 321

基础复习:梯度下降优化算法综述+一文看尽深度学习中的20种卷积+目标检测综述

1、An overview of gradient descent optimization algorithms 中文翻译:https://blog.youkuaiyun.com/u010398493/article/details/77996461 2、CS231n Convolutional Neural Networks for Visual Recognition 3、

wuling129的专栏 284

【深度学习】Java DL4J 2024年度技术总结

在当今数字化浪潮中,深度学习作为人工智能领域的核心驱动力,正以前所未有的速度改变着我们的生活和工作方式。从图像识别到自然语言处理,从医疗诊断到金融预测,深度学习的应用场景无处不在,展现出巨大的潜力和价值。Java作为一门广泛应用于企业级开发的编程语言,以其稳定性、可移植性和丰富的类库资源,在软件开发领域占据着重要地位。然而,传统的Java开发在面对深度学习复杂的模型构建和大规模数据处理时,往往显得力不从心。的出现,为Java开发者打开了一扇通往深度学习世界的大门。DL4J是一个专为Java和Scala。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1万+

【深度学习优化算法】02:凸性

本节讲解了凸函数,目的是帮助我们详细了解优化算法。凸函数的下水平集是凸的。这一性质不仅在数学上具有重要意义,而且在优化问题和机器学习领域也有广泛的应用。通过理解和利用这一性质,我们可以更好地解决实际问题并设计出更高效的算法。

Morse_Chen的博客 2563

深度学习优化算法比较

RMSprop(Root Mean Square Propagation)是一种用于训练神经网络的自适应学习率方法,旨在解决Adagrad方法在训练深层网络时学习率逐渐减小到无法进行有效学习的问题。RMSprop通过引入衰减系数,使得历史梯度的累积效应被限制,从而保持了一定的学习速率,这使得它成为深度学习中非常流行且有效的优化算法之一。选择合适的优化算法可以显著影响深度学习模型的性能和训练速度。虽然没有一种算法在所有情况下都是最优的,但理解它们的原理、优缺点和适用场景可以帮助研究者和开发者做出明智的选择。

码上飞扬的博客 2085

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

之前在https://blog.youkuaiyun.com/fengbingchun/article/details/75351323 介绍过梯度下降,常见的梯度下降有三种形式:BGD、SGD、MBGD,它们的不同之处在于我们使用多少数据来计算目标函数的梯度。 大多数深度学习算法都涉及某种形式的优化。优化指的是改变x以最小化或最大化某个函数f(x)的任务。我们通常以最小化f(x)指代大多数最优化问题。我们把要最小化或最大化的函数称为目标函数(objective function)或准则(cr...

网络资源是无限的 1万+
上一篇: 100道测试题,带你玩转Numpy模块!
下一篇: “深度学习”这十年:52篇顶级论文带你走完人工智能之路
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值