深度学习基础(四)优化函数(梯度下降函数)

梯度下降函数也就是优化函数,在神经网络训练过程最重要的函数。重要程度类似于调校对于汽车的重要性,搭建模型和参数设置等操作=“造好了一辆汽车”,优化函数=“调校”。因为汽车最终的操控性和加速性能等指标很大程度取决于调校,调校的好的汽车操控性非常好,而调校不好的汽车开起来很难受。而优化函数也是一样,很多情况下学习模型是正确的,但是最终训练结果不如人意,往往是因为优化函数的选择错误。

目录

一、优化函数的发展历程。

二、优化函数原理详解

总结:


一、优化函数的发展历程。

优化函数的发展主要经历了下面的过程: BGD->SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam。

今天我们主要介绍其中的6种优化函数,其中包括几乎“万能”的Adam,以及被大神们用的出神入化的SGD及其变种。此外,Adam算法对新手最友好了,几乎能解决所有的由优化函数引起的训练问题。

二、优化函数原理详解

1.BGD

BGD,全称是Batch gradient descent,批量梯度下降。其计算损失函数是遍历全部数据集,然后算函数对各个参数的梯度和更新梯度,所以其计算速度慢并且不支持在线学习。

实现:利用现有参数对训练集中的每一个输入生成一个估计输出Y_pred,然后跟实际输出Y统计所有误差,求平均以后得到平均误差,以此来作为更新参数的依据。

2.SGD

SGD,全程是stochastic gradient descent,随机梯度下降。每遍历一个数据就算一次损失函数,然后求取梯度更新参数。速度较快,但收敛性不好,容易在最优点附近振荡,陷入局部最优点。

实现:X_{t+1}=X_{T}-\sigma *\Delta f(X_{T})

每步迭代过程,从训练集中的随机抽取一批容量为m的样本{x1,…,xm},以及相关的输出y,计算梯度和误差并更新参数.

3.SGD +Momentum

SGD加入了惯性,是为了抑制SGD的振荡,即即将陷入局部最优点时,利用其惯性继续往前计算,避免陷入局部最优点。

 

4.Adagrad

Adagrad加入了二阶动量,即“自适应学习率”优化算法。在训练过程中经常更新的参数A,应该降低其学习速率;而对于偶尔更新的参数B,在针对特定出现的样本数据训练时应增大其学习速率。

Ghis主要代表的是历史数据的梯度,1e-7是一个很小的常量。

5.RMSprop

RMSprop是由AdaGrad改进而来的,因为在遭遇数据量非常大的数据集进行训练时,AdaGrad函数的Ghis项会越来越庞大,导致训练速度变慢以及其他的问题,所以加入decay的存在,该decay是历史数据对Ghis的权重。

6.Adam

Adam可以说是上述4项优化函数的优点的集大成者,存在2个超参数,分别控制一阶动量和二阶动量。

上图中first momentum和second momentum分别是一阶动量和二阶动量。

总结:

Adam对新手最友好,几乎“万能”;但是很多大神仍然用SGD及其变种来就能解决问题,大神些还是牛逼啊

参考文献:

1.深度学习之tensorflow

2.https://mp.weixin.qq.com/s/xm4MuZm-6nKTn2eE3eNOlg

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

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

相关文章

js 实现 复制 功能 (zeroclipboard)

#复制功能因访问权限和安全问题, 被浏览器禁了# 我要实现的功能:点击复制按钮,复制浏览器的当前页面地址,加上用户选择的参数(用户查找过滤),直接将该链接发给别人,点击打开就是对应…

深度学习基础(二)激活函数

激活函数(也被称为激励函数)的意义就是加入非线性因素,使得神经网络具有非线性表达的能力。其必要条件是激活函数的输入和输出都是可微的,因为神经网络要求处处可微。(可微是指函数的各个方向可导,可微大于等于可导) …

Please ensure that adb is correctly located at……问题解决方案

启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有adb.exe关闭掉.重启eclipse.但试过不管用.所以在外国网站上找到一种可行的方法:1.先把eclipse关闭.2.在管理器转到你的android SDK 的platfor…

2016.8.23

1 贴吧里看到一个关于因为游戏闹翻的故事,大致情况是这样的:某女初中的时候有个闺蜜。后来此人因为抑郁之类的精神问题被送到医院,这让女主很苦闷且脆弱又孤单,这时候她的闺蜜去医院看望她,然后女主就喜欢上了这位闺蜜…

[Spring]01_环境配置

1.1 Spring jar包下载 (1)进入官网http://repo.spring.io (2)在资源库界面点击Artifacts标签,然后点击libs-release-local,展开后依次点击org -> springframework -> spring。 然后,就可…

深度学习基础(三)loss函数

loss函数,即损失函数,是决定网络学习质量的关键。若网络结构不变的前提下,损失函数选择不当会导致模型精度差等后果。若有错误,敬请指正,Thank you! 目录 一、loss函数定义 二、常见的loss算法种类 1.M…

Shift键关闭大小写

同事说他的大写开了之后无法关闭,我检查了下,的确是,非常奇怪,然后我不小心按了下下面的Shift键,大写指示灯灭了,我立即明白是怎么回事,原来是文字和语言设置里的Key setting改了,如…

深度学习之pytorch(一) 环境安装

快2周没更新博客了,别问为什么!我才不会告诉你忙的飞起!说心里话,个人更喜欢用tensorflow来做深度学习! 一、环境配置 1.win10 64位系统; 2.anaconda3; 3.不管是CPU还是GPU具有(…

CAD——将图形移动到指定点的方法(此处以捕捉坐标系原点为例)

1、在CAD中画一个正方形,没有任何角点在坐标原点上 2、点击修改工具栏的“移动命令”,选择刚刚画好的图形,选择一个点为第一个基点; 3、先输入#号(shift3),再输入0,0,用英文逗号隔开&#xff0c…

容器的综合应用:文本查询程序

需求 程序读取用户指定的任意文本文件,允许用户从该文件中查找单词。查询结果是该单词出现的次数,并列出每次出现所在行,如果某单词在同一行中多次出现,程序将只显示该行一次。行号按升序显示,即第 7 行应该在第 9 行之…

Anaconda 安装操作及遇到的坑

最近刚用Pytorch,编译开源代码的时候发现缺少n个package,原来是之前在Anaconda3 创建的虚拟环境各自是独立的,tensorflow下安装的不能在别的环境下使用,所以要重新安装。然而关键是国内各种屏蔽资源,无法FQ去直接下载安…

IE浏览器历史版本图标大全

上个月IE团队庆祝了IE的15周岁生日, 并晒了晒IE各个历史版本的图标: Internet Explorer 1.0 图标 Internet Explorer 2.0 图标 Internet Explorer 3.0 图标 Internet Explorer 4.0 图标 Internet Explorer 5.0 图标 Internet Explorer 6.0 图标 Internet…

7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

视频地址:http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现。不过这里不说,做关联查询的步骤可以简单的总结为以下的几步:…

ANSYS——查看某一截面的云图分布(也叫做切片图)

1.确定截面的位置 此处以图中红色处截面为例 2.将工作平面经过坐标变化移动到指定截面处(工作平面的XY平面与截面重合) 工作平面坐标系默认是与总体坐标系重合的,这里是先平移再进行旋转

深度学习之keras (一) 初探

之前一段时间里,学习过tensorflow和Pytorch也写了点心得,目前是因为项目原因用了一段时间Keras,觉得很不错啊,至少从入门来说对新手极度友好,由于keras是基于tensoflow的基础,相当于tensorflow的高级API吧&…

swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)...

swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算。 不同于C语言中的数值计算,Swift的数值计算默…

收集、报告或保存系统活动信息:sar命令

2019独角兽企业重金招聘Python工程师标准>>> 索引 sar命令的使用常用方法 查看网络设备(网卡)的状态信息查看socket使用情况查看cpu使用情况(默认)查看内存和交换空间使用情况查看内存的统计信息查看tty设备的活动状态查看等待运行的进程数和…

【GOF23设计模式】原型模式

【GOF23设计模式】原型模式 来源:http://www.bjsxt.com/ 一、【GOF23设计模式】_原型模式、prototype、浅复制、深复制、Cloneable接口 浅复制 1 package com.test.prototype;2 3 import java.util.Date;4 5 /**6 * 浅复制7 */8 public class Sheep implements C…

Deepfacelab 小白教程

不小心入了AI换脸的坑,但是感觉AI换脸很有意思,第一次感觉科研使我快乐。 目录 一、AI换脸软件简介 二、Deepfacelab下载安装 三、Deepfacelab Demo实现 四、Deepfacelab 填坑 五、总结 一、AI换脸软件简介 这个没有具体使用过,目前我…

Underscore.js 的模板功能

Underscore是一个非常实用的JavaScript库,提供许多编程时需要的功能的支持,他在不扩展任何JavaScript的原生对象的情况下提供很多实用的功能。 无论你写一段小的js代码,还是写一个大型的HTML5应用,underscore都能帮上忙。目前&…