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

目录

梯度

梯度下降

常用的梯度下降算法(BGD,SGD,MBGD)

梯度下降的详细算法

算法过程

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

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

小批量梯度下降法(Mini-batch Gradient Descent)

 梯度下降的优化算法

存在的问题

梯度下降优化的方法

 机器学习中具体梯度下降的优化算法

基于陷入局部最优的问题的优化

Momentum算法

基于学习率方面进行的梯度优化

Adam算法(Adaptive Moment Estimation)


参考:梯度下降(Gradient Descent)小结

梯度

概念:在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。

 意义:梯度是函数在当前位置变化最快的方向,因此可以使得损失函数很快地找到极值,损失一般是找极小值,进而用于指导训练模型中参数的更新。 

梯度下降

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

具体实施:从整体来看,当点下降最快的方向不是由某一个维度的偏导决定的1,而是由所有维度的偏导共同决定的,这也符合“梯度是变化最快的方向”和“梯度是函数对所有参数求偏导后的值的向量”这两个说法。在实际实施中,我们一般是通过偏导来指导不同参数的更新,以此来做到函数值下降得最快(梯度方向)。这就是梯度下降的本质。

        从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

常用的梯度下降算法(BGD,SGD,MBGD)

梯度下降的详细算法

算法过程

一般有两种方法,一种迭代,一种矩阵运算,具体见:梯度下降(Gradient Descent)小结

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

 优点:对于准确率来说,因为使用了全部样本的梯度,所以准确率会更高

缺点:但是使用了全部样本,导致在训练速度和收敛速度上都比较慢

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

 优点:随机梯度下降就是BGD的极端,只是随机选择一个样本的梯度来指导梯度的下降,因为使用了一个样本,因此其训练速度会很快

缺点:但是非常依赖于初始值和步长的影响,有可能会陷入局部最优中,导致收敛速度慢

小批量梯度下降法(Mini-batch Gradient Descent)

在深度学习中,SGD和MBGD统称为SGD

这个梯度下降算法其实就是结合了BGD和SGD两者,采用了小批次的梯度来进行计算。

优点:分担了训练压力(小批量)、加快收敛

缺点:初始学习率难以确定、容易陷入局部最优

 梯度下降的优化算法

存在的问题

BGD、SGD以及MBGD都是比较常见的梯度算法,但是都存在以下问题:

1)学习步长(学习率)难以确定,是超参数,太大导致跳过最优解,太小收敛速度慢,可能会导致陷入局部最优;

2)参数初始值的确定,不同初始值有可能会产生不同的最优解,比如初始值分别在两座山的山顶,那得到的山脚位置自然是可能不一样的;

3)样本特征值的差异性大,变化范围大

梯度下降优化的方法

 机器学习中具体梯度下降的优化算法

基于陷入局部最优的问题的优化

Momentum算法

Momentum算法是在MBGD的基础上进行了修改,即在梯度方向上增加动量(Momentum),意思指在更新梯度时,会保留之前更新的梯度方向,然后利用当前批次的梯度进行微调

优点:

1)能够抑制梯度的震荡,在梯度与上次相同的时候梯度下降多一点,反之少一点

2)有可能跳出局部极值

基于学习率方面进行的梯度优化

Adam算法(Adaptive Moment Estimation)

优点:

1)每一次迭代的学习率都在依次确定的范围内 ,使得参数更新更加地稳定

2)使模型更加地收敛,适用于深层网络和较为复杂的场景

参考文献

https://blog.csdn.net/liuy9803/article/details/81780543

https://www.cnblogs.com/pinard/p/5970503.html

物体检测书籍

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript隐式转换

乱想 javascript为什么需要隐式转换?如果没有会出现什么情况? 找了一圈没有看到关于这个的讨论,只好自己研究了,可能不一定正确,自行辨知。 郁闷就是郁闷在好好的,为什么要搞个隐式转换,一般来讲…

双工位机器人 焊接夹具注意事项 o(╯□╰)o

焊接夹具设计注意事项 一套完美的夹具,需要机械设计人员正确的设计思想,良好的配件质量,钳工负责认真的装配质量,卡具在使用中不断的修磨和改进,才会达到好的效果。 本人非机械设计,只是在使用焊接卡具过程中遇到了很多卡具设计上…

【公共类库】加密解密

public static class MyEncryption{#region Md5加密/// <summary>/// 使用MD5加密/// </summary>/// <param name"str">需要加密的数据。</param>/// <param name"kind">加密类型&#xff1a;1-普通加密&#xff1b;2-密码加…

使用JOTM实现分布式事务管理(多数据源)

使用spring和hibernate可以很方便的实现一个数据源的事务管理,但是如果需要同时对多个数据源进行事务控制,并且不想使用重量级容器提供的机制的话,可以使用JOTM达到目的. JOTM的配置十分简单,spring已经内置了对JOTM的支持,一.<bean id"jotm" class"org.spri…

【机器学习】——《机器学习实战》面试复习

目录 一、机器学习概念 二、机器学习步骤 三、有监督学习 1、k-近邻算法 核心思想 实例&#xff1a;手写数字的识别 优缺点&#xff1a; 2、决策树 相关概念 核心思想 一些小技巧 优缺点 3、神经网络 4、SVM——支持向量机 核心思想 SVM和SVR的区别 ​ 优缺点…

一键分享代码

文章出处&#xff1a;http://share.baidu.com/code/advance 一、概述 百度分享代码已升级到2.0&#xff0c;本页将介绍新版百度分享的安装配置方法&#xff0c;请点击左侧列表查看相关章节。 二、代码结构 分享代码可以分为三个部分&#xff1a;HTML、设置和js加载&#xff0c;…

ubuntu安装LDAP

参考文献&#xff1a; https://help.ubuntu.com/12.04/serverguide/openldap-server.html&#xff08;最主要的&#xff09; http://www.linuxidc.com/Linux/2011-08/40020.htm http://blog.chinaunix.net/uid-24276740-id-3360306.html 前言 在网上搜索ldap的安装配置&#xf…

58.贪心算法练习:  最小新整数

总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个十进制正整数n(0 < n < 1000000000)&#xff0c;每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0< m)&#xff0c;求生成的新整数最小为多少&#xff1f;例如: n 9128456, k 2, 则生成的新整数最小…

ABB机器人之LOADDATA

ABB机器人之LOADDATA loaddata是用来描述连接到机器人机械接口的负载&#xff08;机器人的安装法兰&#xff09;。loaddata数据通常定义有效载荷或负荷&#xff08;通过指令gripload设置机器人抓手负载 或mechunitload指令设置变位机负载。loaddata通常也作为tooldata的一部分&…

【深度学习】——性能指标(ROC、MAP、AUC等)

目录 一、分类任务性能指标 1、混淆矩阵 2、精确度ACCURACY 正确数/总数 3、查全率&#xff08;RECALL&#xff09;——真正正样本中预测正确的比例 4、查准率&#xff08;precision&#xff09;——预测为正样本中的预测正确的比例 5、F-score——对查准率和查全率进行结…

【深度学习】——过拟合的处理方法

目录 一、什么是过拟合&#xff1f;&#xff08;overfitting&#xff09; 二、过拟合的表现&#xff08;判定方法&#xff09; 训练集、测试集、验证集区别 测试集与验证集的区别 三、产生过拟合的原因 1、样本方面 2、模型方面 四、避免过拟合的方法 1、样本方面 1&…

ASP.NET页面的字符编码设置

在用ASP.NET写网上支付的接口程序时&#xff0c;遇到一个奇怪问题&#xff0c;通过表单提交过去的中文全是乱码&#xff0c;英文正常。而用asp程序进行测试&#xff0c;可以正常提交中文&#xff0c;asp页面中有这样的HTML代码&#xff1a; <meta http-equiv"Content-T…

帝人製机--适合的机遇--遇到恰到好处的产品--工业机器人减速机造就一个百年企业

持之以恒是成功的必要条件&#xff0c;但是也要有恰当的土壤。日本Nabtesco(纳博特斯克)旧名&#xff1a;帝人製机(TEIJINSEIKI)高性能日本RV减速机纳博特斯克(Nabtesco)公司是一家居世界领先地位的精密传动控制系统及组件製造商。目前全世界已有超过两百万件由Nabtesco製造的精…

Python个人项目--豆瓣图书个性化推荐

项目名称: 豆瓣图书个性化推荐 需求简述&#xff1a;从给定的豆瓣用户名中&#xff0c;获取该用户所有豆瓣好友列表&#xff0c;从豆瓣好友中找出他们读过的且评分5星的图书&#xff0c;如果同一本书被不同的好友评5星&#xff0c;评分人数越多推荐度越高。 输入&#xff1a;豆…

#define宏定义形式的函数导致的bug

定义了一个宏定义形式的"函数": #define SUM8(YY)\ {\ int Y YY>>2;\ ...\ } 然后使用的时候&#xff0c;传入了一个同名的变量Y: int Y Ywin[x]; SUM8(Y) 本意是想展开成int Y Ywin[x]>>2; 但实际上#define只是把参数名(YY)替换&#xff0c;与函数…

【深度学习】——BN层(batch normalization)

目录 一、“Internal Covariate Shift”问题 二、BatchNorm的本质思想 两个参数r和β的意义——精髓所在 三、训练阶段如何做BatchNorm 四、BatchNorm的推理(Inference)过程 五、BatchNorm的好处 一般使用在卷积层后、激活层前 Batch Normalization作为最近一年来DL的重要…

打印池

餐饮行业&#xff0c;打印池是必要的部件。 实现原理&#xff1a;每一台打印机都有自己的任务队列和处理任务队列的线程。 unit untPrintTask; interface uses System.SysUtils, System.Classes, Datasnap.DBClient, frxclass, System.Generics.Collections; type TBillContent…

JAXB vs XStream

2019独角兽企业重金招聘Python工程师标准>>> JAXB vs XStream 博客分类&#xff1a; java JAXB vs XStream 这两东东本质上是有差别的&#xff0c;JAXB称为OX binding工具&#xff0c;XStream应该算序列化工具&#xff0c;但OX binding工具也会marshall和unmarsha…

ABB 机器人 DRVIO_1通信报警

ABB 机器人DRVIO_1通信报警 2014.06.13 ABB1600弧焊机器人&#xff0c;从A地搬运到B地&#xff0c;到达B地后&#xff0c;机器人上电&#xff0c;报DRVIO_1通信故障&#xff0c;机器人进入故障停止模式。 DRVIO_1为LOCAL_GENERIC类型的ABB内部LOCAL总线类型的单元实例。 故障…

S2SH CRUD 整合

S2SH CRUD 整合 采用的框架 Struts2Spring4Hbiernate4. 目录结构 &#xff1a; EmployeeAction: 1 package com.xx.ssh.actions;2 3 import java.io.ByteArrayInputStream;4 import java.io.InputStream;5 import java.io.UnsupportedEncodingException;6 import java.util.…