Diffusion models are evolutionary algorithms
gonzoml.substack.com
gonzoml.substack.com
In general, they are a great approach to solving any non-convex optimization problem where gradient descent is not a practical choice.
[1]: https://books.google.com/books/about/Evolutionary_Optimizati...
Words mean things and my goal is to enhance the discourse by clarifying the imprecise language used in the paper regarding the term "Evolutionary Algorithm".
I make no comment on any other issues with the paper.
CMA-ES is not suited for very large problems (more than a few hundred parameters), but there are several variants that can handle this, like sep-CMA-ES.
In an EA, each candidate in the population represents a complete potential solution. As the diversity & size of the population increases, the potential for convergence on high quality solutions also increases. I do not see the same concept in diffusion models.
I believe,
Population size = noise dimensionality
Population diversity = noise magnitude
I don't think this is the case for diffusion models.
Put more simply, run it like chess and use things like Elo rating to determine fitness at selection time.
Seems cool!
but are they not both fitness functions? couldn't an EA use something akin to denoising as its fitness function and still be an EA?
(genuine question, complete layman here).
I think I have seen research papers addressing the crossover of neural network optimization and EA, but I think direct optimization techniques have been preferred for managing the actual weights. Manipulating the input data is more along the lines of perturbation methods. If you look hard enough you can probably see whatever you want but it's a stretch.
To me, neural network training is a distinct task that draws from many areas of optimization and does not fit neatly under any one umbrella.
I've got an experiment using this exact technique running on a machine right now, but I wouldn't argue that it is a good alternative for an actual population.
The reason I attempted this is because snapshotting a candidate is an unbelievably cheap operation. You don't have to allocate memory once the snapshot buffer is in place. It's just a bunch of low-level memory block copy operations. I can achieve several million iterations per candidate per hour with this hack, but only at the expense of maintaining a large population.
My conclusions so far are that it is interesting to use a snapshot/restore approach, but it seems to only take you into local minima faster than everything else. Real population diversity is an information theory thing that will implicate memory bandwidth, et. al., and slow things down by 3-4 OOM from where we'd prefer to be.
1. A series of NN models with random weights.
2. A way to score how well each NN model works.
3. Iteratively mixing pieces of models with each other based on how well they scored.
I didn’t see that in articles about deep learning at all. It was like they were totally, different things. They were so different that I looked into using both GA’s and simulated annealing for optimization of NN’s.
I’d say that EA’s and NN-like methods are different and complementary.
(Note: I am not claiming support for the methodology in the paper, I just find the application of search/optimization algos is lovely)
That being said back before I understood how to program gradient descent I would often use Evolutionary Algorithms such as simulated annealing to optimize NNs! (never claimed it was state of the art, I just wanted to build and optimize some small networks by hand and my calculus was pretty weak at the time)
[1]: https://en.m.wikipedia.org/wiki/No_free_lunch_in_search_and_...