文章目录

  • 1. 梯度下降算法【回顾】
  • 2. 反向传播算法(BP算法)
    • 2.1 前向传播与反向传播
    • 2.2 链式法则
    • 2.3 反向传播算法
  • 3. 梯度下降优化方法
    • 3.1 动量算法(Momentum)
    • 3.2 AdaGrad
    • 3.3 RMSprop
    • 3.4 Adam
  • 4. 学习率退火
    • 4.1 分段常数衰减
    • 4.2 指数衰减
    • 4.3 1/t衰减
  • 总结

1. 梯度下降算法【回顾】

梯度下降法简单来说就是一种寻找使损失函数最小化的方法。大家在机器学习阶段已经学过该算法,所以我们在这里就简单的回顾下,从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向,所以有:

其中,η是学习率,如果学习率太小,那么每次训练之后得到的效果都太小,增大训练的时间成本。如果,学习率太大,那就有可能直接跳过最优解,进入无限的训练中。解决的方法就是,学习率也需要随着训练的进行而变化。

在上图中我们展示了一维和多维的损失函数,损失函数呈碗状。在训练过程中损失函数对权重的偏导数就是损失函数在该位置点的梯度。我们可以看到,沿着负梯度方向移动,就可以到达损失函数底部,从而使损失函数最小化。这种利用损失函数的梯度迭代地寻找局部最小值的过程就是梯度下降的过程。

根据在进行迭代时使用的样本量,将梯度下降算法分为以下三类:

实际中使用较多的是小批量的梯度下降算法,在tf.keras中通过以下方法实现:

tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.0, nesterov=False, name='SGD', **kwargs
)

例子:

# 导入相应的工具包
import tensorflow as tf
# 实例化优化方法:SGD
opt = tf.keras.optimizers.SGD(learning_rate=0.1)
# 定义要调整的参数
var = tf.Variable(1.0)
# 定义损失函数:无参但有返回值
loss = lambda: (var ** 2)/2.0
# 计算梯度,并对参数进行更新,步长为 `- learning_rate * grad`
opt.minimize(loss, [var]).numpy()
# 展示参数更新结果
var.numpy()

更新结果为:

# 1-0.1*1=0.9
0.9

在进行模型训练时,有三个基础的概念:

实际上,梯度下降的几种方式的根本区别就在于 Batch Size不同,,如下表所示:

注:上表中 Mini-Batch 的 Batch 个数为 N / B + 1 是针对未整除的情况。整除则是 N / B。

假设数据集有 50000 个训练样本,现在选择 Batch Size = 256 对模型进行训练。

  • 每个 Epoch 要训练的图片数量:50000
  • 训练集具有的 Batch 个数:50000/256+1=196
  • 每个 Epoch 具有的 Iteration 个数:196
  • 10个 Epoch 具有的 Iteration 个数:1960

2. 反向传播算法(BP算法)

利用反向传播算法对神经网络进行训练。该方法与梯度下降算法相结合,对网络中所有权重计算损失函数的梯度,并利用梯度值来更新权值以最小化损失函数。在介绍BP算法前,我们先看下前向传播与链式法则的内容。

2.1 前向传播与反向传播

前向传播指的是数据输入的神经网络中,逐层向前传输,一直到运算到输出层为止。

在网络的训练过程中经过前向传播后得到的最终结果跟训练样本的真实值总是存在一定误差,这个误差便是损失函数。想要减小这个误差,就用损失函数ERROR,从后往前,依次求各个参数的偏导,这就是反向传播(Back Propagation)。

2.2 链式法则

反向传播算法是利用链式法则进行梯度求解及权重更新的。对于复杂的复合函数,我们将其拆分为一系列的加减乘除或指数,对数,三角函数等初等函数,通过链式法则完成复合函数的求导。为简单起见,这里以一个神经网络中常见的复合函数的例子来说明 这个过程. 令复合函数

深度学习 神经网络的优化方法相关推荐

  1. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  2. 深度学习 | 训练及优化方法

    ---------------------------- 原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文. ---------------------------- 深度学习 ...

  3. 深度学习中的优化方法总结

    转载自:https://blog.csdn.net/u012151283/article/details/78154917 梯度下降沿着整个训练集的梯度方向下降.可以使用随机梯度下降很大程度地加速,沿 ...

  4. 【显存优化】深度学习显存优化方法

    深度学习gpu的显存至关重要,显存过小的话,模型根本无法跑起来,本文介绍几种显存不足时的优化方法,能够降低深度学习模型的显存要求. 目录 一.梯度累加 二.混合精度 1.权重备份 2.损失缩放 3.精 ...

  5. introduction to deep learning--week1简单线性回归、梯度下降、模型正则化、和深度学习中的优化方法

    进阶课程需要一些基础知识: 1.机器学习基础知识 2.概率论知识 3.线性代数和微积分 4.python编程 我们需要知道的机器学习基础知识: 1.线性回归:均方误差(MSE).解析解 2.逻辑回归: ...

  6. 深度学习之optimizer 优化方法

    BGD batch gradient descent,batch梯度下降.在训练中,每一步迭代都使用训练集的所有内容.用全量数据集去计算梯度,迭代参数. 优点:  由于每一步都利用了训练集中的所有数据 ...

  7. 深度学习常见的优化方法(Optimizer)总结:Adam,SGD,Momentum,AdaGard等

    机器学习的常见优化方法在最近的学习中经常遇到,但是还是不够精通.将自己的学习记录下来,以备不时之需 https://www.cnblogs.com/GeekDanny/p/9655597.html

  8. 深度学习之常用优化方法篇

    写在前面,此文记录常用的优化算法包括:随机梯度下降(SGD),Momentum算法,AdaGrad算法,RMSProp算法,Adam算法,牛顿法和拟牛顿法(包括L-BFGS 参考1:https://w ...

  9. 深度学习中的优化方法-AdaGrad

    码字不易,转载请注明出处~ tags: optimizer;AdaGrad 本文来源于下面博客: https://medium.com/konvergen/an-introduction-to-ada ...

最新文章

  1. InfoWorld的日志管理系统评测
  2. 4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(
  3. C语言学习之猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。
  4. 低至4.7折起!戴尔OptiPlex商用台式机限时特惠,重磅来袭!
  5. java excel row遍历空_Java poi读取,写入Excel,处理row和cell可能为空的情况
  6. html笔记(一)html4+css2.0、css基础和属性、盒模型
  7. java jar包示例_Java包isCompatibleWith()方法与示例
  8. 【LeetCode笔记】剑指 Offer 60. n个骰子的点数(Java、动态规划)
  9. ShadeGraph教程之节点详解6:Procedural Nodes
  10. web前端基础入门教程(非常详细)HTML+CSS+JavaScript
  11. 怎么查python题答案_超星尔雅Python语言应用查题教程
  12. adb 如何提高到最高权限
  13. BufferedImage类、Image类、Graphics类
  14. 人人网、7K7K、178等各网站迅雷地址。最新得到的各种URL。
  15. 2021-2025年中国冷链跟踪和监测系统行业市场供需与战略研究报告
  16. ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[16,77,3072]
  17. stalk词组_let.stalk是什么意思
  18. 分享免费的主流电商平台商品图片批量下载方法
  19. creo2.0+VS2010采用protoolkit二次开发环境配置(64位win7)
  20. 打喷嚏 打嗝 打饱嗝 打鼾 打哈切 用日语都怎么说?

热门文章

  1. 手把手教你实操部署FISCO BCOS联盟链(附每一步代码)
  2. 5个PPT素材、模板网站,免费下载,赶紧马住了~
  3. 解决Linux虚拟机无法打开,报无法打开虚拟机“Kylin” (D:\javaToil\linux\Kylin\Kylin.vmx): 虚拟机似乎正在使用中
  4. 国内外ERP软件对于会计事项处理差异的举例
  5. 网页直接访问链接不让安全中心拦截
  6. 计算机教育 专业知识,专业人才需要的计算机基础教育知识结构
  7. 基础乐理--配置和弦
  8. 深入理解拉普拉斯特征映射
  9. 手写文字怎么识别转换?有哪些练字的方法?
  10. B2B企业的网络营销日常工作内容有哪些?