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

目录

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

二、优化函数原理详解

总结:


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

优化函数的发展主要经历了下面的过程: 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,随机梯度下降。每遍历一个数据就算一次损失函数,然后求取梯度更新参数。速度较快,但收敛性不好,容易在最优点附近振荡,陷入局部最优点。

实现:

每步迭代过程,从训练集中的随机抽取一批容量为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

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

  1. 【深度学习基础】02梯度下降算法改进:SGD、Momentum、NAG、RMSProp、Adam等

    目录 1. 优化算法背景 1.1 常见优化问题 1.1.1 梯度消失或梯度爆炸 1.1.2 局部最小值 1.2 常用解决办法 1.2.1 参数初始化策略 1.2.2 小批量梯度下降 1.2.3 梯度下 ...

  2. 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降

    一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...

  3. (十四)从零开始学人工智能-深度学习基础及CNN

    文章目录 一.深度学习基础 1.1 深度学习及其发展历史 1.1.1 什么是学习? 1.1.2 什么是机器学习? 1.1.3 什么是深度学习? 1.1.4 深度学习发展历史 1.1.5 小结 1.2 ...

  4. 深度估计相关原理(计算机视觉和深度学习基础)

    今天来和大家介绍一下深度估计涉及到的理论知识点,包括计算机视觉基础和深度学习基础. 一.计算机视觉基础 1.1. 针孔相机模型 相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面 ...

  5. 人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐

    人工智能 - paddlepaddle飞桨 - 深度学习基础教程 - 个性化推荐 本教程源代码目录在book/recommender_system,初次使用请您参考Book文档使用说明. 说明: 硬件 ...

  6. 第三章_深度学习基础

    文章目录 第三章 深度学习基础 3.1 基本概念 3.1.1 神经网络组成? 3.1.2神经网络有哪些常用模型结构? 3.1.3如何选择深度学习开发平台? 3.1.4为什么使用深层表示? 3.1.5为 ...

  7. 【零基础深度学习教程第一课:深度学习基础】

    深度学习基础 目录 *深度学习基础* <第一节 深度学习简介> 一.深度学习与机器学习区别 二.神经网络简介 2.1 单神经元网络 2.2 多神经元网络 <第二节 神经网络基础> ...

  8. 五万字总结,深度学习基础。

    文章目录 1 基本概念 1.1 神经网络组成? 1.2 神经网络有哪些常用模型结构? 1.3 如何选择深度学习开发平台? 1.4 为什么深层神经网络难以训练? 1.5 深度学习和机器学习的异同? 2 ...

  9. 日月光华深度学习(一、二)深度学习基础和tf.keras

    日月光华深度学习(一.二)深度学习基础和tf.keras [2.2]--tf.keras实现线性回归 [2.5]--多层感知器(神经网络)的代码实现 [2.6]--逻辑回归与交叉熵 [2.7]--逻辑 ...

  10. Python深度学习(一)深度学习基础

    翻译自Deep Learning With Python(2018) 第一章 深度学习基础:https://www.jianshu.com/p/6c08f4ceab4c 第二章 深度学习的数学构建模块 ...

最新文章

  1. EventBus-再也不用什么Handler了
  2. Go 语言编程 — encoding/json 库
  3. Java 时断时续之————Java事件
  4. python getostime_python转换在os.utime中使用的datetime
  5. 起步15万年薪 这些名校高材生争当卷烟工
  6. matlab之中文字体乱码处理
  7. Leetcode 385.字典序排序
  8. 多功能工具箱微信小程序源码
  9. EasyUI仓库管理系统
  10. IDEA 中 Lombok 编译报错 Java 找不到符号问题
  11. vue脚手架开发 + element-UI组件 实现 增删改查
  12. 2021维修电工证(中级)考试题库2021职业技能鉴定
  13. 二十八宿距星位置计算
  14. C语言源代码系列-管理系统之车票管理系统
  15. 2014年中南大学上机复试
  16. python中的values函数_Pandas之排序函数sort_values()的实现
  17. C#基于开源地图GMap的开发示例
  18. 【转载】面试题:面向对象的特征和基本特征有哪些 之抽象
  19. “兼职发明家召集令”
  20. java的幂运算_java中幂指数值的运算

热门文章

  1. 结合file和iconv命令转换文件的字符编码类型
  2. mysql 主主复制的配置流程
  3. zookeeper watch笔记
  4. Java:控制台输入车辆信息,将信息保存至数据库中
  5. At least one JPA metamodel must be present!
  6. 自己整理的openresty安装步骤
  7. excel SUBTOTAL函数使用详解
  8. 系统带你学习 WebAPIs —— 动画篇(第六讲)
  9. [pytorch、学习] - 5.4 池化层
  10. javascript --- [小练习]变量提升、优先级综合