about
An overview of gradient descent optimization algorithms (arxiv.org)
78 points by azuajef on Jul 9, 2017 | hide | past | pdf | 8 comments on HN

In plain words: A plain-language tour of gradient descent, the trick that nudges a model's settings downhill to cut its errors, comparing the main variants and when each helps or fails. It also covers common pitfalls, training across many machines, and extra tricks for faster, steadier learning.

Abstract

Gradient descent optimization algorithms, while increasingly popular, are often used as black-box optimizers, as practical explanations of their strengths and weaknesses are hard to come by. This article aims to provide the reader with intuitions with regard to the behaviour of different algorithms that will allow her to put them to use. In the course of this overview, we look at different variants of gradient descent, summarize challenges, introduce the most common optimization algorithms, review architectures in a parallel and distributed setting, and investigate additional strategies for optimizing gradient descent.

Sebastian Ruder
arXiv:1609.04747 · cs.LG · submitted Sep 15, 2016 · updated Jun 15, 2017
abstract · pdf · html · Added derivations of AdaMax and Nadam

add comment on HN
Also discussed: Mar 2024 (1 point, 0 comments)

It isn't mentioned in the abstract, but this seems to be more of an overview of ML-specific notions of gradient descent, where batch processing is possible due to needing to leverage gradients of a fixed prediction architecture over a large set of training data, with respect to tunable weights.

So each of those training points represents a sort of separable or parallelizable piece of the whole processes, giving you a ton of freedom in how you actually execute the gradient stepping (with one training point, several of them, or all of them). As I understand it, stochasticity in this process interestingly seems to add enough "noise" that local minima seem to be avoided in many cases.

In more general applications of non-linear gradient-based optimization (say for optimizing parametric models in physical engineering), this doesn't necessarily come into play.

Do you have any sense of whether tricks like momentum which afaik came out of improving SGD for neural network training have found application in other arenas where batching is less reasonable?
I think there is room to exchange ideas between the nonlinear programming and ML communities for sure.

Specifically for momentum, if I understand it right it's a particular way of perturbing step size and gradient steps to prevent oscillation. There are some other good examples of this used by many gradient-descent optimizers. For example:

https://www.cs.cmu.edu/~ggordon/10725-F12/scribes/10725_Lect...

There's part of me that wonders if one interesting way forward for deep learning is a minibatch form of BFGS or SNOPT.

One does not need to invoke SGD or NN for the momentum term.

Its there in conjugate gradients method, its just not called momentum. Its there in heavy-ball methods much more overtly.

In fact if the cost function is convex and has smooth gradients one can show that optimal momentum equipped methods would converge faster than gradient methods.

These methods achieve the best possible (black box) convergence rate bound for minimizing an arbitrary convex function using local information, gradient descent methods do not. The old references to consult are Nemirovskii, Nesterov and Polyak.

One has to be careful about the claim though. The optimal convergence rate result mentioned above applies to arbitrary convex functions. For specific convex functions where you can exploit problem specific structure you may be able to do better.

The other caveat is that these (batch) momentum methods tend to be quite sensitive to the convexity and smoothness parameters. Gradient descent is a lot more robust and you can get away with a lot. However if you are sure that the you can evaluate the exact gradient, then momentum based methods are arguably the better choice. Dont panic if the cost function goes up and down (that's expected), they do not reduce the cost function monotonically.

> Do you have any sense of whether tricks like momentum which afaik came out of improving SGD for neural network training have found application in other arenas where batching is less reasonable?

I thought Yurii Nesterov came up with momentum (or at least proved certain classes of momentum strategies optimal)?

Here[1] is an article describing the same, written by the author himself.

[1]: http://ruder.io/optimizing-gradient-descent/index.html

Stupid Q: Assuming "gradient descent" is roughly similar to the classical "steepest descent" optimization algorithm (???), why aren't deep learning researchers looking into other more advanced algorithms from classical non-linear optimization theory. Like, say, (preconditioned) conjugate gradient, or quasi-Newton methods such as BFGS?