1、批量梯度下降算法

批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。在深度学习里,优化算法的目标函数通常是训练数据集中有关各个样本的损失函数的平均。设 f i ( x ) f_i(x) fi​(x)是有关索引为 i i i的训练数据样本的损失函数, n n n是训练数据样本数, x x x是模型的参数向量,那么目标函数定义为: f ( x ) = 1 n ∑ i = 1 n f i ( t ) f(x) = \frac 1n \sum_{i=1}^{n}{f_i(t)} f(x)=n1​i=1∑n​fi​(t)(1)目标函数在 x x x处的梯度计算为: ∇ f ( x ) = 1 n ∑ i = 1 n ∇ f i ( x ) \nabla f(x) = \frac 1n \sum_{i=1}^{n}{\nabla f_i(x)} ∇f(x)=n1​i=1∑n​∇fi​(x)(2)每次迭代对参数进行更新: x ← x − η 1 n ∑ i = 1 n ∇ f i ( x ) x\leftarrow x-\eta \frac 1n \sum_{i=1}^{n}{\nabla f_i(x)} x←x−ηn1​i=1∑n​∇fi​(x)
优点
由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。

缺点
如果使用批量梯度下降算法,每次自变量迭代的计算开销为 O ( n ) O(n) O(n),每迭代一步都需要对所有样本计算,训练过程会很慢

2、随机梯度下降

在随机梯度下降的每次迭代中,随机均匀采样一个样本索引 i ∈ { 1 , . . . n } i \in \{1,...n\} i∈{1,...n},并计算梯度 ∇ f i ( x ) \nabla f_i(x) ∇fi​(x)来迭代 x x x: x ← x − η ∇ f i ( x ) x\leftarrow x-\eta \nabla f_i(x) x←x−η∇fi​(x)
优点
(1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。
缺点
(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。

3、小批量梯度下降

在每次迭代中随机均匀采样多个样本来组成一个小批量,然后使用这个小批量来计算梯度。设迭代开始前的时间步是0,该时间步的自变量记为 x 0 ∈ R d x_0\in \R^d x0​∈Rd,在接下来的每个时间步 t > 0 t>0 t>0中
(1)小批量随机梯度下降随机均匀采样一个由训练数据样本索引组成的小批量 B t B_t Bt​,可以通过重复采样或不重复采样得到一个小批量中的各个样本。 g t ← ∇ f B t ( x t − 1 ) = 1 ∣ B ∣ ∑ i ∈ B t ∇ f i ( x t − 1 ) g_t\leftarrow \nabla f_{B_t}(x_{t-1})=\frac 1{\mid B\mid}\sum_{i\in B_t}{\nabla f_i(x_{t-1}}) gt​←∇fBt​​(xt−1​)=∣B∣1​i∈Bt​∑​∇fi​(xt−1​)
∣ B ∣ \mid B\mid ∣B∣为批量大小,即小批量中样本个数,是一个超参数。
(2)对 x x x进行迭代更新
x ← x − η t g t x\leftarrow x-\eta _t g_t x←x−ηt​gt​
优点
(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
缺点
(1)batch_size的不当选择可能会带来一些问题。

深度学习---梯度下降算法相关推荐

  1. 深度学习:梯度下降算法改进

    学习目标 目标 了解深度学习遇到的一些问题 知道批梯度下降与MiniBatch梯度下降的区别 知道指数加权平均的意义 知道动量梯度.RMSProp.Adam算法的公式意义 知道学习率衰减方式 知道参数 ...

  2. PyTorch深度学习——梯度下降算法

    目录 一.梯度下降算法(batch gradient descend) 二.随机梯度下降算法(stochastic gradient descend) 三. 小批量梯度下降算法(mini-batch ...

  3. PyTorch深度学习——梯度下降算法、随机梯度下降算法及实例(B站刘二大人P3学习笔记)

    梯度下降算法 以模型 为例,梯度下降算法就是一种训练参数  到最佳值的一种算法, 每次变化的趋势由 (学习率:一种超参数,由人手动设置调节),以及 的导数来决定,具体公式如下: 注: 此时函数是指所有 ...

  4. 抛物线的中点生成算法_零基础学习梯度下降算法

    零基础学习梯度下降算法 作者:Philipp Muens 翻译:老齐 与本文相关的图书推荐:<数据准备和特征工程> 梯度下降法是机器学习中最基本的优化技术之一.那么,什么是梯度? 下降的是 ...

  5. 笔记2深度学习 梯度和梯度法

    enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 函数实现 对于一个函数f(x0,x1)=x0的平 ...

  6. 深度学习——梯度消失、梯度爆炸

    本文参考:深度学习之3--梯度爆炸与梯度消失 梯度消失和梯度爆炸的根源:深度神经网络结构.反向传播算法 目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过反向传播的方式,指导深 ...

  7. 深度学习梯度下降优化算法(AdaGrad、RMSProp、AdaDelta、Adam)(MXNet)

    在深度学习优化算法之动量法[公式推导](MXNet)中,动量法因为使用了指数加权移动平均,解决了自变量更新方向不一致的问题.动量法由于每个元素都使用了相同的学习率来做迭代,这也导致另外一个问题:如果x ...

  8. VALSE学习(三):深度学习梯度讲解

    VALSE2019 梯度之谜 一.报告摘要 机器学习的传统方法强调具有问题理解与理论基础的模型构建与算法 设计,而现代机器学习更强调依赖于数据数量与质量的深度学习策略.两类方法 从机理上通常认为存在显 ...

  9. 李宏毅深度学习——梯度下降

     Loss function是function的function(function为自变量,线性回归中w.b为自变量) 一开始离目标远learning_rate的值要比较大,等到离目标近的时候调小le ...

最新文章

  1. python语言基础-Python语言基础与应用
  2. 使用OpenGL Shader实现放大镜效果
  3. ReactOS 0.4.11 发布,Windows 系统的开源替代方案
  4. TFS 2015 敏捷开发实践 – 看板的使用
  5. 用数据驱动思想来设计游戏-读《游戏编程精粹1》
  6. java8 内置函数(api)总结
  7. lambda函数 RUNOOB python练习题49
  8. Leetcode每日一题:203.remove-linked-list-elements(移除链表元素)
  9. 若依前端如何生成序号?
  10. SSH (Struts2+Spring3.0+Hibernate3)框架(二) 框架的配置
  11. 计算机打印指定测试页到文件夹中,上海计算机等级一级考试复习指导.pptx
  12. mysql表关联查询都有什么方式_Mysql数据库多表联合查询有几种方法?
  13. MacQQ消息防撤回
  14. Excel对比两个Sheet数据的异同
  15. Arango db 快速入门
  16. 留学回国人员申办上海常住户口实施细则
  17. bugku 杂项 QAQ
  18. php两段音频合成一个,使用PHP合并MP3文件的类,兼容php4、php5
  19. 视频浓缩中的轨迹组合技术
  20. Markdown中如何实现内容折叠操作

热门文章

  1. 原来Python真的能赚钱,一个月就靠兼职赚了5000
  2. PS平面设计:2020年最大胆的平面设计图,一起学起来
  3. vue面试H5适配快速搭建
  4. 海驾学车过程全揭秘——第四篇:正式练车第一段
  5. C#控制台圣诞树完整源码
  6. 给大家介绍一个方便,好用的网络收藏夹
  7. python人脸检测怎么弄_如何通过python实现人脸识别验证
  8. 树形结构—树和二叉树
  9. 破解google翻译接口
  10. 《动手学深度学习》笔记——深度学习简介