深度学习常用优化算法笔记介绍,各种梯度下降法详细介绍

优化算法

mini-batch梯度下降法

  • 当一个数据集其数据量非常大的时候,比如上百万上千万的数据集,如果采用普通的梯度下降法,那么运算速度会非常慢,因为如果使用梯度下降法在每一次迭代的时候,都需要将这整个上百万的数据给执行一遍
  • 所以我们可以将我们的大的数据分成一个一个小一点的数据集,然后分批次处理,比如我们有100万个数据,那么我们可以将其分成1000份,每份1000个数据,这里的一份就是所谓的一个mini-batch
  • 然后我们用循环来遍历这1000个子集,针对每一次的子集做一次梯度下降,更新W和b的值。然后对下一个子集继续执行上述操作,这样在遍历完所有的mini-batch后,就相当于我们做了1000次迭代,将所有样本都遍历一遍的行为叫一个epoch
  • 在批量梯度下降法中,我们运行一次epoch就相当于运行了一次梯度下降迭代,但是在mini-batch中,我们运行一次epoch相当于运行了1000次迭代,速度当然迥然不同,很明显后者更快
  • 我们来看到mini- batch的代价曲线
  • image-20211220112546622
  • 左边的是批量梯度下降的代价曲线,右边则是mini batch代价曲线曲线
  • 可以很明显的看出,左边的代价曲线很顺滑的进行了下降,这表明每一次迭代我们的预测值的误差在一次次缩小
  • 而右边的代价曲线从整体而言也是呈下降趋势的,但是在细节之处可以看出多了很多噪声,因为mini batch梯度下降法是采用分批次下降的,每份mini batch的质量都可能不一样,所以在每次运行的时候,可能某段数据质量高,从而预测的特别好,所以在那一段是下降的,而某段数据质量低,预测的效果不好,所以在那段是上升的,但没关系,因为总体而言是呈下降趋势的
  • 在mini batch这有一个超参数,也就是每份的大小,在刚刚拿个例子当中,我们设定的每份大小为1000,也就是一份有1000个数据,当每份大小设置成样本总数m的时候,那么这就是一个批量梯度下降,因为一次运行所有的样本。
  • 而如果设置的每份大小是1,则就是随机梯度下降法了
  • 随机梯度下降法有一个缺点就是你失去了向量化的优势,因为每次迭代只会运行一个样本,所以效率会变低很多
  • 所以最好的办法就是让mini batch获得一个最合适的值
如何选择合适的mini batch值?
  • 数据集 < 2000:批量梯度下降法
    • 因为如果数据集小于2000的话,就没有使用的mini batch的必要了,因为数据量很少,可以直接使用批量下降,运行速度也很快,而且也可以避免噪声所带来的影响
  • 数据集 > 2000:mini batch选择一个2的幂数值
    • 因为和计算机的存储机制有关,采用2的幂数值会运行的更快一点,例如64,128,256等等
  • 应该选取能一次性存放进CPU或GPU的数值

指数加权平均

  • 指数加权平均是根据权重来计算近似平均值的
  • 举个例子
    • 比如我们现在有100天的温度值,要求这100天的平均温度值
    • 24,25,24,26,34,28,33,33,34,35…32
    • 我们可以使用平均值公式来计算, 24 + 25 + . . . + 32 100 \frac{24+25+...+32}{100} 10024+25+...+32
    • 但是这种方法对于非常大的数据量来说,需要的内存空间就比较大,因为你需要一次性将所有的数据都存入内存当中再计算平均值
    • 而指数加权平均就是一种求近似平均的方法
    • 公式为: v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t-1}+(1-\beta)\theta_t vt=βvt1+(1β)θt
    • 其中 v t v_t vt为到t时刻的平均值,在上面的例子来说就到第t天的温度平均值, θ t \theta_t θt为t时刻的温度,其中的 β \beta β为超参数
    • 本质就是以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权
    • 我们来如下计算步骤
    • img
    • 可以看出,指数加权平均的求解过程实际上是一个递推的过程,这样就会有一个优势
    • 在于每当我要求从0到某一时刻(n)的平均值的时候,我并不需要像普通求解平均值的作为,保留所有的时刻值,类和然后除以n
    • 而是只需要保留0-(n-1)时刻的平均值和n时刻的温度值即可。也就是每次只需要保留常数值,然后进行运算即可,这对于深度学习中的海量数据来说,是一个很好的减少内存和空间的做法
偏差修正
  • 由于一开始v0都是初始化为0,导致在初始计算时会计算差别很大,如上述每月温度,假设beta为0.9,则第一天的温度为: v 1 = 0.9 ∗ 0 + ( 1 − 0.9 ) 24 = 2.4 v_1=0.9*0+(1-0.9)24=2.4 v1=0.90+(10.9)24=2.4可以明显看出,这与第一天温度相差非常大,于是为了弥补这一误差,所以采用如下公式来更新 v t v_t vt的值 v t = v t 1 − β t = β v t − 1 + ( 1 − β ) θ t 1 − β t v_t=\frac{v_t}{1-\beta^t}=\frac{\beta v_{t-1}+(1-\beta)\theta_t}{1-\beta^t} vt=1βtvt=1βtβvt1+(1β)θt通过该公式重新计算 v 1 v_1 v1的值: v 1 = 0.9 ∗ 0 + ( 1 − 0.9 ) ∗ 24 1 − 0. 9 1 = 24 v_1=\frac{0.9*0+(1-0.9)*24}{1-0.9^1}=24 v1=10.910.90+(10.9)24=24
  • 可以看出,经过偏差修正后的数值回归到了一个正常的水平,并且随着 t t t的数值越大, β t \beta^t βt会越来越趋向于0,整个分母则会越来越趋向于1,于是偏差修正也会越来越无效。

动量梯度下降法

  • 动量梯度下降法就是采用了指数加权平均之后的梯度下降法
如何计算
  • image-20211220210656791

RMSprop

如何计算
  • image-20211227112010044

Adam

  • Adam是由动量梯度下降法和RMSprop组合而成
计算方法
  1. 对于所有的迭代下来说
  2. v d w = β 1 v d w + ( 1 − β 1 ) d w , v d b = β 1 v d b + ( 1 − β 1 ) d b v_{dw}=\beta_1v_{dw}+(1-\beta_1)dw,v_{db}=\beta_1v_{db}+(1-\beta_1)db vdw=β1vdw+(1β1)dw,vdb=β1vdb+(1β1)db
  3. s d w = β 2 s d w + ( 1 − β 2 ) d w 2 , s d b = β 2 s d b + ( 1 − β 2 ) d b 2 s_{dw}=\beta_2s_{dw}+(1-\beta_2)dw^2,s_{db}=\beta_2s_{db}+(1-\beta_2)db^2 sdw=β2sdw+(1β2)dw2,sdb=β2sdb+(1β2)db2
  4. v d w c o r r e n t e d = v d w 1 − β 1 t , v d b c o r r e n t e d = v d b 1 − β 1 t v_{dw}^{corrented}=\frac{v_{dw}}{1-\beta_1^t},v_{db}^{corrented}=\frac{v_{db}}{1-\beta_1^t} vdwcorrented=1β1tvdw,vdbcorrented=1β1tvdb
  5. s d w c o r r e n t e d = s d w 1 − β 2 t , s d b c o r r e n t e d = s d b 1 − β 2 t s_{dw}^{corrented}=\frac{s_{dw}}{1-\beta_2^t},s_{db}^{corrented}=\frac{s_{db}}{1-\beta_2^t} sdwcorrented=1β2tsdw,sdbcorrented=1β2tsdb
  6. w : = w − α v d w c o r r e n t e d s d w c o r r e n t e d + ε , b : = b − α v d b c o r r e n t e d s d b c o r r e n t e d + ε w:=w-\alpha\frac{v_{dw}^{corrented}}{\sqrt{s_{dw}^{corrented}+\varepsilon}},b:=b-\alpha\frac{v_{db}^{corrented}}{\sqrt{s_{db}^{corrented}+\varepsilon}} w:=wαsdwcorrented+ε vdwcorrented,b:=bαsdbcorrented+ε vdbcorrented
超参数建议
  • alpha:需要我们自己来确定
  • beta1:一般选做0.9,也可以自己尝试其他的值
  • beta2:论文作者所推荐的值为0.999,也可以自行调整
  • epsilon:论文作者推荐为10e-8,也可以自行调整

学习率衰减

为什么要使用学习率衰减?
  • 在使用mini-batch梯度下降法的时候,因为我们的小批量梯度下降法会产生噪声(小批量梯度下降法每个批次的质量都不一样,所以会产生噪声),所以当我们使用一个固定的学习率的时候,刚开始的时候可能会正常的梯度下降,但是一旦快靠近我们的极小值点的时候,由于学习率是固定的,一旦设大了,则会一直围绕着我们的极小值点周围转,而不会正真的靠近,如下图所示
  • image-20211227205445751
  • 而如果我们将学习率一开始就设置成一个固定小的一个值,那么需要迭代的次数就会非常多,大大降低了算法的效率,从而浪费资源。
  • 所以我们希望我们的学习率能够自动的根据梯度下降的情况,来衰减自己的大小,从而减少上述情况发生
学习率衰退方法
  • 这里有一个常用的公式: α = 1 1 + d e c a y R a t e ∗ e p o c h N u m α 0 \alpha=\frac{1}{1+decayRate * epochNum}\alpha_0 α=1+decayRateepochNum1α0
    • 参数意义如下:
      • decayRate:衰退率,一个超参数,可以自行调整
      • epochNum:当前迭代的第几次
      • alpha0:初始学习率值
    • 假如初始学习率为0.2,衰退率为1,则每轮迭代的值如下
      1. α = 1 1 + 1 ∗ 1 0.2 = 0.1 \alpha=\frac{1}{1+1 * 1}0.2=0.1 α=1+1110.2=0.1
      2. α = 1 1 + 1 ∗ 2 0.2 = 0.06 \alpha=\frac{1}{1+1 * 2}0.2=0.06 α=1+1210.2=0.06
      3. α = 1 1 + 1 ∗ 3 0.2 = 0.05 \alpha=\frac{1}{1+1 * 3}0.2=0.05 α=1+1310.2=0.05
  • 指数衰退学习率公式: α = 0.9 5 e p o c h N u m α 0 \alpha=0.95^{epochNum}\alpha0 α=0.95epochNumα0
    • 参数意义同上
  • 常用公式三: α = k e p o c h N u m α 0 \alpha=\frac{k}{\sqrt{epochNum}}\alpha0 α=epochNum kα0
    • 参数意义:
      • k:常数超参数,可自行调整

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/603544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于边缘智能网关的工业燃气管网监测应用

随着城市化和工业化的飞速发展&#xff0c;燃气的使用量和应用范围持续增加&#xff0c;燃气管网作为承载燃气输送的设施&#xff0c;安全问题至关重要。一旦燃气管网发生泄漏事故&#xff0c;极易引发起火、爆炸等&#xff0c;从而酿成人员伤亡及财产损失的恶性事故。 得益于物…

流量分析利器arkime的学习之路(三)---结合Suricata攻击检测

1、基础 Arkime安装部分参考《流量分析利器arkime的学习之路&#xff08;一&#xff09;—安装部署》 在此基础上安装suricata软件并配置。 2、安装suricata yum install suricate 可能依赖的文件包括libyaml&#xff0c;PyYAML&#xff0c;这些可能在之前安装arkime或者其他…

Vue接收后端POST、GET返回的zip文件流打开报异常

近期接到一个小任务是将内容导出为 Zip 文件流的行式给前端 Vue 供用户下载&#xff1b;过程中发现一个问题打开 zip 文件报异常&#xff0c;如下&#xff1a; 首先后端这块单独在服务端请求是落盘的文件是正常的&#xff1b;因此后端的这块的逻辑没有问题&#xff1b;但中间前…

微服务拆分

目录 前言&#xff1a; 逻辑视图架构风格 一、分层式架构风格 二、六边形架构 如何定义微服务架构 微服务的拆分 业务能力进行服务拆分 子域进行服务拆分 拆分的原则 单一职责 闭包原则 前言&#xff1a; 我们在软件开发的时候一直在谈论架构&#xff0c;那么什么是…

线程池复习

手写线程池 - C语言版 | 爱编程的大丙 (subingwen.cn) 1. 线程池原理 我们使用线程的时候就去创建一个线程&#xff0c;这样实现起来非常简便&#xff0c;但是就会有一个问题&#xff1a;如果并发的线程数量很多&#xff0c;并且每个线程都是执行一个时间很短的任务就结束了&…

8款好用的电脑监控软件分享丨好资源不私藏!

电脑已经成为我们日常生活和工作的重要工具。随之而来的是&#xff0c;电脑监控的需求也逐渐增加。为了帮助大家更好地管理和监控电脑使用情况&#xff0c;本文将为您推荐8款好用的电脑监控软件。这些软件功能强大&#xff0c;易于使用&#xff0c;适用于各种场景&#xff0c;让…

哪些博客类型是最受欢迎的?

在创建博客时&#xff0c;您可能会想到的最常见的问题之一是哪些是最受欢迎的博客类型&#xff1f;有许多不同类型的博客涉及广泛的主题&#xff0c;兴趣和受众。对于一个成功的博客&#xff0c;你需要提前计划并选择适合你的利基市场。在本文中&#xff0c;我们将分享您可以立…

数字工厂管理系统如何实现生产过程透明化

随着科技的飞速发展&#xff0c;数字化转型已成为制造业不可逆转的趋势。数字工厂管理系统作为实现生产自动化、智能化的重要工具&#xff0c;其在提升生产效率、降低运营成本、优化资源配置等方面的作用日益凸显。其中&#xff0c;实现生产过程的透明化是数字工厂管理系统的重…

东莞厂家环保水空调的应用场所

环保水空调&#xff08;也被称为蒸发式冷风机、水冷式环保空调等&#xff09;由于其独特的节能环保特性&#xff0c;适用于多种需要降温和通风的场所。以下是一些常见的应用场所&#xff1a; 工业厂房&#xff1a;工业厂房通常对温度、湿度和空气质量有较高要求。环保水空调不…

【C++】匿名对象超详细详解(什么是匿名对象?对象可以是哪些类型呢?)

目录 一、前言 二、匿名对象的概念详解 &#x1f95d; 语法结构 &#x1f34d;概念理解 三、匿名对象的对象类型 四、匿名对象的使用 &#x1f347;简单场景的使用 &#x1f349;复杂场景的使用 五、总结 六、共勉 一、前言 在C中&#xff0c;匿名对象&#xff08;Ano…

如何提高日语听力?日语学习日语培训柯桥小语种学校

每次一说起练日语听力&#xff0c;总离不开一个词&#xff0c;那就是“磨耳朵”。 可是&#xff0c;“磨耳朵”真的有用吗&#xff1f; 在讨论这个问题之前&#xff0c;我们需要先知道&#xff1a;什么是“磨耳朵”&#xff1f; 所谓的“磨耳朵”&#xff0c;其实就是让我们的耳…

C语言(操作符)2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;关注收藏&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#x…

【JUC】并发编程 AQS,ReentryLock,CyclicBarrier,CountDownLatch 原理总结

AQS AQS是什么&#xff1f;重写AQS就能实现锁的效果&#xff1f; AQS是一个抽象类&#xff0c;是一个并发包的基础组件&#xff0c;用来实现各种锁&#xff0c;同步组件的工具&#xff08;通过volatile cas进行实现&#xff09;。它包含了共享成员变量state、等待队列、条件…

6层板学习笔记1

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 目的:掌握各类接口的布局思路和布线,掌握DDR高速存储设计 1、网表的导入是原理图的元件电气连接关系,位号,封装,名称等参数信息的总和 2、原理图文件包含(历史版本记录,功能总框图,电源树,GPIO分配,DDR功能,CPU,US…

【跨境商家必读】TikTok Shop商城运营全指南

随着社交媒体和电子商务之间界限的日益模糊&#xff0c;一种全新的购物平台——TikTok商城&#xff0c;正在迅速成为全球跨境商家们关注的焦点。在这个竞争激烈的TikTok跨境电商领域中&#xff0c;了解如何有效利用TikTok Shop的各项功能&#xff0c;理解其独特的运营模式&…

OpenAI 高管:一年后,你会觉得现在的 ChatGPT 像笑话一样糟糕|TodayAI

OpenAI 的首席运营官 Brad Lightcap 表示&#xff0c;一年后&#xff0c;你会觉得现在的 ChatGPT 像笑话一样糟糕。未来的 ChatGPT 版本将会有重大升级。他还讨论了 AI 取代人类工作和对电网的压力的可能性。 虽然我们不知道 OpenAI 何时会推出 GPT-5&#xff0c;但公司高管已…

视频怎么去水印?这三款工具助你轻松搞定

在视频处理的过程中&#xff0c;水印常常成为我们的一大难题。它不仅影响了视频的美观度&#xff0c;还可能涉及版权问题。那么&#xff0c;如何高效去除视频中的水印呢&#xff1f;接下来&#xff0c;我将为大家推荐三款国内外备受好评的视频去水印工具&#xff1a;水印云、In…

【Linux】基础命令:进程、网络

systemctl命令 控制内置服务 systemctl start | stop | status | enable | disable 服务名 start | stop开启关闭&#xff0c;status状态&#xff0c;enable | disable开启关闭开机自启 date命令 查看系统时间 date [-d] [格式化字符串] date -d “1 day” %Y-%m-%d 修改时区…

数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行!

2024年4月25日&#xff0c;数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行。此次仪式不仅标志着德商锋巢与天府新区信息技术职业学院的紧密合作正式启动&#xff0c;更意味着双方在数字电商领域的人才培养和产业发展上迈出了坚实的步伐。 仪式现场&#xff0c;德…

中国家装水管十大品牌排行榜:联塑、日丰、金牛、美尔固、弗锐德等品牌上榜

水管作为家居装修中至关重要的一环&#xff0c;其质量直接关系到我们日常生活的安全和舒适。面对市场上琳琅满目的家装水管品牌&#xff0c;选择一款质量可靠、性能优越的产品成为了许多家庭装修的重要课题。为了助你选购时不踩坑&#xff0c;下面就为大家介绍一下中国家装水管…