Computer scientists discover limits of gradient descent (2021)
quantamagazine.org
quantamagazine.org
Wait. What if by stirring I shook the glass and at the end set it back down a foot away from its initial location. Is this author claiming that Brouwer’s theorem guarantees a particle floating somewhere where the glass used to be? Unchanged?
I can imagine an unlimited number of scenarios where I can guarantee the water particles are displaced.
This seems like a bad application of the theorem, right?
(I am not a professional mathematician, I might also be wrong.)
And of course, some functions/transformations are not continuous, and those may not have such an "axis of origin" at all.
The fact that the underlying space is contractible is very important here.
Shaking has to be continuous, the particles move quickly and erratically, but they trace continuous paths.
In an ideal system with points instead of particles, shaking would be continuous.
Think of the 1D variant. If you shuffle a deck of cards, but require that to be ‘continuous’, few shuffles remain (I think only the identity mapping and ‘flipping the deck upside down’). I doubt anybody would restricting the possible permutations that much stil call shuffling.
The space is continuous even if we can only measure down to the Planck length.
I'm only a mathematician, no physicist. But I think to remember, that the concept of a continuous physical space becomes quite muddled at this scale.
If you don't want to assume continuity, then you get it back by rephrasing your theorems as "within a margin of error equal to the distance between discrete objects".
I think of it as a generalization of the intermediate value theorem - some things are going left, some things are going right, one thing must be sitting still in between.
*off course, quantum mechanics and all that suggesting that it would be impossible to label the individual molecules.
It's not exactly the same because the assumptions about differentiability are different.
As others have said, it's meant for mappings of the space to itself. So stirring the water, but not moving the glass.
But anyway, the theorem works only for continiuous mappings. The moment they started mentioning "water particles", instead of some hypothetical fluid that is a continuous block, the theorem no longer applied. You could break it by mirroring the position of every particle. There's still a fixed point (the line of mirroring), but there's no obligation that there's a particle on that line.
EDIT: If you need a continuous function, wouldnt expanding the space to a line from -Inf to +Inf and then using x2 = x1 + 0.1 do the trick?
Infinite lines don't work, as they are not compact.
Similarly a circle would not work as it is not convex (you're close with your example, you just need to glue together the endpoints to turn it into a circle and make the map continuous).
That's actually the one that helped me visualize the theorem. If you look at your scalp from above, you can divide all the hairs into "points left" or "points right" and draw a boundary between them of hairs that point neither left or right. Then you can do the same thing with "points up" and "points down." Where the two kinds of boundaries cross, you have a hair that doesn't point up, down, left, or right - it points straight out of your scalp.
Edit: Actually it's obviously just that this set is not convex, or even continuous.
So that's why they gave the glass stirring example, the domain here is the whole volume of water. So as long as it ends up in the same volume of water, the process of stirring is assumed to be continuous and therefore this theorem applies. Your example changes where it ends up (ie not back to the same domain) and so it cannot be applied.
Wait what? If you stir a glass long enough, any configuration of particles should be possible. For instance you can imagine "cutting" the water like a deck of cards.
And here are the complexity classes that are mentioned in the abstract: https://complexityzoo.net/Complexity_Zoo:P#ppad and https://complexityzoo.net/Complexity_Zoo:P#pls.
This setup is not a good prior for anything that requires more precise solution.
Because that's just an iterative/recursive version of binary/ternary search.
A modified binary search called ternary search is well known used to find when derivative = 0, numerically.
More generally, for binary search to find a value x such that f(x)=0, we need to have f(any value less than x)<0 and f(any value greater than x)>0. We can't guarantee these properties for general derivatives.
I imagine you could search until the incremental change between your current and last result is below some threshold epsilon, as a kind of stopping criterion.
The recent ones haven’t remained in the same pathway unfortunately.
> ... elevation of the land is equal to the value of the function (the “profit”) at that particular spot. Gradient descent searches for the function’s local minimum ...
It is a theoretically interesting result about the PPAD complexity class itself. Not sure if it should be STOC best paper though, if it was nominated as best paper because of the weak link to machine learning I'd be a bit disappointed.
A colleague and myself experimented with some alternatives and passed notes once in a while... For certain modelling problems you can save literal gpu days by going against the grain and get better results.
Oh well...
Sometimes I wonder if people in machine learning ever look at literature.
Basic iteration schemes like the secant method (ok, 1-dimensional) have been known well over 3000 years.
Newton's method is over 300 years old.
Quasi-Newton methods (the secant method being an example) became popular in the early 1960s.
I'm somewhat seasoned on optimization methods personally, but yea it seems once people go ML they tend to um stop studying the fundamental literature that ML came from. "Online masters program learn AI in 12 weeks from nothing!". Oh okay so calculus won't be included in that... Or statistics... Or... Yep it's going to be scikit learn notebooks ...
> Baseless empirical result that probably was p hacked
This to me seems like the biggest regression in science. It's all heresy which is very hard to re-produce or learn general lessons from. It feels like disparate social science methodologies are being used to study math.
Nobody is going to look back and benefit from these papers. I often bring up to ML folks limitations proven in the book Perceptrons and wonder how their models differ. I have never gotten a response.
What field did you move to?
I float between a few technical fields. Some in natural science, computer science, data science hybrid roles, data bases/engineering, etc. Not a jack of all trades, nor a master of none. What I do have mastered isn't something people hire for, so basically I am an averagely smart person who will take any job and figure it out to pay the bills.
At home though I play with all of the areas of creation I can get my hands on. I guess I am just in the field of discovering new things and making things.
They don't.
A few other things they seem completely unaware of:
- other ways to represent functions besides neural networks (harmonic analysis, polynomials, etc)
- other models exist besides neural networks. ie. if you can model the problem with a simple equation you can just optimize that.
- polynomial regression.
Someone who has read "numerical recipies" is probably more capable in solving ML problems than an "ML software engineer".
f(x) = f(x_n) + Df(x_n)(x - x_n) + O(||x - x_n||^2)
Drop the quadratic term, equate to 0, and you get an approximate solution for x for the next iteration x_{n+1}: x_{n+1} = x_n - Df(x_n)^{-1} * f(x_n)
Like this it's the Newton method. The problem is that the Jacobian Df(x_n) is a matrix of size k x k, and inverting it may require O(k^3) work.So, pretty much all schemes are based on approximations of the Jacobian.
Gradient descent for example replaces Df(x_n)^{-1} with a scalar a, so it's O(1) work to "compute" it:
x_{n+1} = x_n - a * f(x_n)
A method like L-BFGS tries to build a relatively cheap approximation to the inverse of the Jacobian during iteration, resulting in O(k) work to compute: x_{n+1} = x_n - P * f(x_n)
Other methods may exploit sparsity of the Jacobian, or solve the linear system Df(x_n)z = f(x_n) only approximately for z using e.g. iterative methods.Note: in optimization problems, the function f is typically a gradient of a cost function, and the jacobian is then the hessian of that cost function.
Gradient descent is great because it is first order, thus cheap to compute since you don’t need a Hessian, points to a descent direction, works with anything that is differentiable or piece-wise differentiable without caveats, and given the millions of parameters in today’s there is always a descent direction.
If you do population methods, you suffer in terms of memory because you need to keep all those candidates, evaluate them individually, and then update them. This bounds the memory you can use.
More memory means more parameters, means you enter the interpolation scheme means your model behaves well in real world.
If you try to go with second order optimisation methods then you need to go for Hessian free methods as computing the Hessian is computationally intractable for large NNs.
You can attempt to build a local model of the loss landscape but that is expensive and has many caveats.
Nocedal et al is a recommended read for numerical optimisation theory.
The surprising thing about large neural networks is that the difference in quality between the local minima goes down and makes it less and less relevant which one you end up in. The global minimum may also lead to overfitting so you probably don't even want to go there.
Is there something to gain by trying to eliminate or exploit such symmetries?
Re the example; yes that is correct; a permutation is simply a row-wise shuffled identity matrix, it doesn’t affect the gradients or performance.
Second its often (not always) a lot more work to test scalability with benchmarks than it is to theoretically analyze.
Especially because people are often worried about both average case and worst case. The input that takes down your site is not the one you expect, and simulating realistic load is difficult.
It can also be pretty hard to compare benchmarks. You probably dont want to test every algorithm known to man yourself, but two separate benchmarks on diff hardware and diff conditions cannot be reasonably compared. More abstract analysis can (to an extent anyways)
to a screen that
Sampling theorem is also case in point. Also compressed sensing. Information theory will tell you there is no point trying any harder at compression when you reached epsilon closer to the theoretical limit.
What was that game that took forever to start up because the code for parsing the config files was accidentally quadratic or exponential?
Edit: also, the standard library of any programming language tends to have quite a bit of theoretical computer science inside.
Anything requiring extremely optimized algorithms will generally start in academia and work its way outward as the techniques are adopted in commercial software. Sorting and compression algorithms are two examples that come to mind. Even games development which has a history of non-academic roots now borrows heavily from academic research to refine things like culling algorithms or optimized computational methods for specialized physics calculations.