So, this is the first blog post for FSADB.org. What is this place, and why does it exist? I first built the Mutable Encoding Genetic Algorithm (MEGA) as a pet project to test some ideas I had been toying with for years. I expected it to work but didn’t realize it might provide new insights into the field of AI/ML. I don’t want to bore you to death with a long, detailed story.
To put it plainly, I’m not an academic, and I got excited and started spamming MEGA everywhere I could. To my detriment, I sounded like a crank. However, one person, Tom Barbalet, took the time to look at my code and interact with my explanations. He introduced me to people who helped me understand how I was failing at communicating my ideas. Over the last couple of years, I have had literally hundreds of conversations with various people who have each helped me digest and further refine my understanding and explanations. Some were dismissive, others incredibly interested. All were helpful.
After slowing down and taking time to formalize and better understand the system I built (which, believe it or not, is a lot harder than it sounds), I decided to really work on documenting and exploring MEGA. I got the repo organized and started my own “research” program. While trying to find prior work that would help me connect MEGA to existing knowledge, I came across the Free Energy Principle (FEP). I realized that while trying to build a GA that is more biologically aligned, I might also be building something that probes at more fundamental questions, such as:
How does life self-organize?
Can strong emergence spontaneously emerge without being explicitly designed for?
Can we build a universal constructor?
The rabbit hole seems to get deeper the closer you look, but we can look deeper at those kinds of questions later. Let’s get back on track.
So, what exactly is MEGA?
MEGA, at its core, is a Genetic Algorithm, and yet couldn’t be further from a Standard GA (SGA). SGAs are an optimization heuristic designed to apply evolution and natural selection to search the space of solutions and find a good enough or maximal solution. MEGA, on the other hand, introduces several new mutation types, which creates a second evolutionary layer where the representational space of the algorithm can evolve along with the solutions it constructs.
On the surface, this might seem like a trivial extension to GA, not too different from things like HyperNEAT or other developmental encoding approaches. But this isn’t the case with MEGA, and here’s the difference. The rules that drive MEGA’s evolving representation are a stochastic process, which allows for the representational hierarchy to emerge through the dynamics of its functioning as opposed to being hand-designed prior to runtime. Along with this come mechanisms to manage the complexity that arises from those dynamics without exploding runtime complexity. This happens through a caching system that forces each representation to continually justify its own existence or lose its distinction from the rest of the information contained within the cache.
It’s the difference between writing a book in English and writing a book with English letters, where the language and its semantics define themselves.
I know that’s a lot to digest at once, and I’m sorry for going on, but I want to return to my previous mention of FEP.
FEP is a theoretical framework by Karl Friston. It states that all self-organizing systems that persist over time must minimize free energy to remain distinguishable from their environment.
To make the above digestible, you can think of it like this: any process that is random and uniform is indistinguishable from background noise. If a stochastic system can be distinguished from random noise, then it is self-organizing and resisting the natural pull toward disorder. The process through which a system self-organizes tends to correlate with the minimization of free energy. This process is commonly described in terms of Variational Free Energy (VFE) minimization, where FEP is the theoretical framework and VFE is the process through which low free energy is realized. Currently in AI/ML, VFE is approached through integrating it as a designed goal of the system.
This works-ish in practice, but nature doesn’t have anything designed into it that says, “minimize free energy.” When I designed MEGA, I wasn’t aware of the FEP or VFE. When I later found out about it, I was curious if it could be applied as a passive metric to observe whether MEGA functions in such a way that it appears to be minimizing VFE without being explicitly enforced to do so.
To be fair, my initial metric was an approximation, but the results were convincing enough for me to rethink my handling of this project—hence FSADB. I now have a much more rigorously defined and true-to-VFE metric, which will be discussed and released in detail down the line. For now, though, this first blog post serves to establish and justify why my work regarding MEGA went from tinkering, to exploratory, to serious research.
If you would like to further explore FEP and VFE, you should watch Karl Friston: Neuroscience and the Free Energy Principle. Note that the FEP applies not only to brains but to any self-organizing system that maintains itself against a changing environment. However, brains have become the center of attention because they are more accessible to study than a whole organism’s relationship to its evolutionary history. With brains and NNs, we can simply provide a novel signal and observe how they adapt in real-time. Additionally, the framework’s focus on the brain is natural given that Dr. Friston himself is a neuroscientist.