梯度下降算法概述

翻译 2016年08月31日 13:52:29

梯度下降算法概述

本文是翻译的 An overview of gradient descent optimization algorithms,翻译时并不一定遵照原文的表述,主要是以将问题表达清楚为主要目的。


在常见的神经网络优化算法中,梯度下降是最受欢迎的一种。同时,每一个 state-of-art 的深度学习库都包含了各种算法梯度下降的实现(如:lasagne,caffe和keras)。但是,这些算法经常是作为一个黑箱子优化器来使用,而对于它们的优缺点的解释却提及不多。

本文主要是提供不同优化梯度下降算法表现的直观解释,来帮助你使用它们。我们首先看看各个梯度下降算法的不同变形,然后简略的总结在训练过程中的挑战。然后我们介绍最常见的优化算法,阐述在解决这些挑战时它们的出发点和在更新时如何求导的问题。我们也将简要的介绍在并行与分布式中优化梯度下降的算法和结构。最后,我们考虑有助于优化梯度下降的条件策略。

梯度下降是一种最小化目标函数J(θ)的方法,其中θRd是模型的参数。梯度下降通过目标函数对参数的梯度方向的负方向更新参数。学习率η的大小就决定了我们走向局部最小值的步长。我们按照由目标函数生成的表面的斜坡的方向直到我们到达谷底。如果你对梯度下降不熟悉,你可以找到一个优化神经网络的入门教程

梯度下降的变形
依据我们所需计算的数据的梯度,梯度下降有三种不同变形。根据数据量,我们要在参数的正确率和计算时间上做一个协调。

批量梯度下降Batch gradient descent
批量梯度下降(简称BGD)计算的是损失函数对参数θ在整个训练数据集上的导数。

θ=θηθJ(θ)

因为在每一次更新中,需要在整个数据集上计算梯度,BGD非常慢而且在内存不够用时,它很难训练。BGD也不允许在线更新。

BGD的代码可能类似这样:

for i in range(nb_epochs):
  params_grad = evaluate_gradient(loss_function, data, params)
  params = params - learning_rate * params_grad

对于一个预定义的epoch,我们先计算损失函数对参数向量params在整个数据集上的梯度向量weights_grad。优秀的深度学习库都提供了高效的自动求导。如果你自己去计算导数,那么梯度检验是个不错的选择(这儿有些好的建议)

然后我们使用梯度更新参数,当然还有学习率,这决定了我们更新的力度。BGD保证了对于凸函数的全局最小和对于非凸的局部最小。

随机梯度下降 Stochastic gradient descent

机器学习—梯度下降算法

梯度下降算法     梯度下降算法是一个最优化算法,它是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值的一种方法。     众所周知,我们从山顶下山,想要求得到山脚路程最短的一条路...
  • Rabbitbubu
  • Rabbitbubu
  • 2016年10月28日 16:51
  • 713

梯度下降算法(Gradient descent)

梯度下降算法是一种求局部最优解的方法,在wikipedia上对它做了详细的说明,这里我只是把自己感兴趣的一些地方总结一下: 对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该...
  • whosemario
  • whosemario
  • 2012年05月09日 16:37
  • 11005

深入了解梯度下降算法

目标函数:      首先明确一下本文的符号使用:向量用粗体表示,标量用普通的字母表示,例如:x\textbf{x}表示一个向量,xx表示一个标量。梯度下降算法在优化理论中有着很重要的地位,凭借实现简...
  • wangjian1204
  • wangjian1204
  • 2015年12月13日 17:03
  • 2316

梯度下降算法比较

Batch gradient descentθ=θ−η⋅∇θJ(θ)θ=θ−η⋅∇_θJ(θ).例如在线性回归中,损失函数是: J(θ)=12∑mi=1(hθ(x(i))−y(i))2J(θ)=\f...
  • u013713117
  • u013713117
  • 2017年02月18日 11:51
  • 1196

批量梯度下降算法和随机梯度下降算法的代码实现

批量梯度下降算法和随机梯度下降算法的代码实现 随机梯度下降和批量梯度下降都是梯度下降方法的一种,都是通过求偏导的方式求参数的最优解。批量梯度下降算法:,。是通过对每一个样本求偏导,然后挨个更新。(...
  • qq_29828623
  • qq_29828623
  • 2016年03月07日 20:59
  • 1249

一文看懂常用的梯度下降算法

作者:叶    虎 编辑:祝鑫泉 一 概述 梯度下降算法(Gradient Descent Optimization)是神经网络模型训练最常用的优化算法。对于深度学习模型,...
  • u013709270
  • u013709270
  • 2017年11月29日 00:00
  • 2208

梯度下降优化算法综述(翻译)

原文链接:http://sebastianruder.com/optimizing-gradient-descent 博文地址: 梯度下降是最流行的优化算法之一并且目前为止是优化神经网络最常见的算...
  • hellonlp
  • hellonlp
  • 2016年03月24日 22:40
  • 4597

机器学习知识点(五)梯度下降法Java实现

梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代(步长)能使待优化的目标函数逐步减小。梯度下降法是2范数下的最速下降法,用来求解函数的最小值,无约束优化。 看数学定义都晦涩,...
  • fjssharpsword
  • fjssharpsword
  • 2017年01月17日 15:57
  • 3630

机器学习-梯度下降算法

1.引言虽然我们知道,代价函数Jθ的表达式,但是还不知道怎么去确定假设函数hθ(x)的所有参数θ0,θ1 ... θn,使得Jθ值最小。我们还是假设hθ(x)是一个线性函数,并且只有2个参数θ0,θ1...
  • cgl1079743846
  • cgl1079743846
  • 2016年07月31日 22:23
  • 5040

梯度下降算法的认知

梯度下降算法可以求极值,它将逼近极值的过程变成了一个可操作的step by step的过程。这是最重要的。本文不谈梯度下降算法的细节,这些随便百度,谷歌,知乎一下就知道了,最好的办法是看一本教科书。本...
  • dog250
  • dog250
  • 2018年01月21日 21:37
  • 1947
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:梯度下降算法概述
举报原因:
原因补充:

(最多只允许输入30个字)