Gradient descent
First order of business
October 4, 2014 — August 24, 2023
Gradient descent, a classic first-order optimisation, with many variants, and many things one might wish to understand.
There are only a few things I wish to understand for the moment.
Very tidy introduction in Anupam Gupta’s notes for 15-850: CMU Advanced Algorithms, Fall 2020, in particular Lectures 18 and 19.
1 Coordinate descent
Descent each coordinate individually.
Small clever hack for certain domains: log gradient descent.
2 Momentum
Polyak momentum (that’s the heavy ball one, right?), Nesterov momentum.
How and when does it work? And how well? Moritz Hardt, The zen of gradient descent explains it through Chebychev polynomials. Cheng-Soon Ong recommends d’Aspremont, Scieur, and Taylor (2021) as an overview. Gabriel Goh, Why Momentum Really Works (Goh 2017) is an incredible illustrated guide.
Sebastian Bubeck explains it from a different angle, Revisiting Nesterov’s Acceleration to expand upon the rather magical introduction given in his lecture Wibisono et al explain it in terms of variational approximation. See also Accelerated gradient descent 1 and 2.
Trung Vu’s Convergence of Heavy-Ball Method and Nesterov’s Accelerated Gradient on Quadratic Optimisation differentiates Nesterov momentum from heavy ball momentum.
3 Continuous approximations of iterations
Recent papers (Wibisono and Wilson 2015; Wibisono, Wilson, and Jordan 2016) argue that the discrete time steps can be viewed as a discrete approximation to a continuous time ODE which approaches the optimum (which in itself is trivial), but moreover that many algorithms fit into the same families of ODEs, that these ODEs explain Nesterov acceleration and generate new, improved optimisation methods. (which is not trivial.)
🏗
4 Online versus stochastic
Technically, “online” optimisation in, say, bandit/RL problems might imply that you have to “minimise regret online”, which has a slightly different meaning and, e.g. involves seeing each training only as it arrives along some notional arrow of time, yet wishing to make the “best” decision at the next time, and possibly choosing your next experiment in order to trade-off exploration versus exploitation etc.
In SGD you can see your data as often as you want and in whatever order, but you only look at a bit at a time. Usually the data is given and predictions make no difference to what information is available to you.
Some of the same technology pops up in each of these notions of online optimisation, but I am really thinking about SGD here.
There are many more permutations and variations used in practice.
5 Conditional Gradient
a.k.a. Frank-Wolfe algorithm: Don’t know much about this.
6 Mirror descent
See mirror descent.
7 Conjugate Gradient Descent
TBD. Is CGD even a 1st order method? 1.5th order? 🏗
Worth explaining it here, since it deserves a sensible explanation for the SGD generation.