Do you have any idea why the authors chose Z80 as the program language? I have seen other studies in the same spirit that use simpler toy languages like Brainfuck (https://arxiv.org/abs/2406.19108) and I wonder if you could get higher execution speed if you didn't have to execute so much emulator code.
The programs/genomes are extremely tiny. I would be very interested to see what kind of hardware is needed to scale this approach up. How long until we can feed in giant corpuses of text and evolve these little organisms to predict the next letter?
In that previous paper you cite (by the same group) they tested several substrates for spontaneous replication (BFF, Forth, SUBLEQ, and emulated real CPUs. Z80 and 8080 CPU exps confirmed the rise of self-replicators, with the Z80 notably exhibiting multiple waves of increasingly capable self-replicators.
And the instruction set seems quite appropriate for the experiment: Z80 has native block-copying instructions, while it doesn't have MUL, so the task of evaluating polynomials is somewhat more challenging
second question is a good question :)
[0] https://tomray.me/tierra/whatis.html
[1] https://en.wikipedia.org/wiki/Thomas_S._Ray
https://www.goodreads.com/en/book/show/20821275-arrival-of-t...
https://en.wikipedia.org/wiki/Miller%E2%80%93Urey_experiment
Evolution also eventually gets frustrated and creates the brain, capable of in context learning.
Maybe we should take some notes from these massively parallel, shallow, and highly recurrent constructions.
Constrained evolutionary algorithms may have some promise.
https://arxiv.org/abs/2406.19108
> We show that when random, non self-replicating programs are placed in an environment lacking any explicit fitness landscape, self-replicators tend to arise. We demonstrate how this occurs due to random interactions and self-modification, and can happen with and without background random mutations. We also show how increasingly complex dynamics continue to emerge following the rise of self-replicators.
The major thing that's always stumped me is how to design a universal fitness function that can take you from soup to a brain. IRL there is "the environment" which contains resources that need to be consumed to survive, and the majority of evolution (senses, bodyforms, metabolic pathways, etc) is based on navigating this environment and extracting energy. Can we say that life or intelligence is a meaningful concept without this universal background reference plane and survival game?
One of the things I think is limiting about conventional systems is what I call the "brain-in-a-vat" problem. They don't "exist" in any meaningful sense, they don't "experience" anything, they don't have any "reason" or "motivation" to do or develop anything.
I think of something more like a video game. The world of World of Warcraft or Call of Duty is a mathematical construct that doesn't truly reflect how our world works, but, through a window we can interpret it in a way that we understand and relate to. Some kind of video game environment with more relaxed and "open-ended" parameters and a simulated survival mechanism would be an interesting experiment.
The abstract mentions metabolic constraints. Can you share more of your thoughts or conceptual approach to this?
I agree, for the same reasons you mentioned, resource constraints will need to be baked in (they are already, to some extent, if you consider the constrained resource to be z80-CPU-seconds the program has access to). something more akin to energy in our real world, which can be manipulated, aggregated, shared, pooled, stolen, etc feels more natural, however.
imo meaningful intelligence could conceivably developed in a soup (even in-silico), unclear on what timeline, but grounding it with human and/or real-world data is necessary to make it useful to us (bio-compatible, if you will?)
Obviously, you have to "cheat" biology somewhere, we don't have hundreds of millions of years. Neural networks cheat by essentially throwing out the whole evolutionary process and environment that led to the brain, attempting to make a model that works like the brain. IMO that is too much cheating.
Starting with a substrate of random bits of assembly code strikes me as a little too low-level (which is not to dismiss this research at all, I think it's valuable, I'm just spitballing big-picture ideas). Have you considered starting with something like the Unreal or Unity engine, or even Minecraft?
You would lose the elegant and unopinionated search space of all programs, and you would have to engineer a more structured system (kind of like Spore but more simulation than game), but I feel like you might be able to get some more readily relatable behaviors sooner?
it is of course entirely possible we are on the flip side and too low-level - this is something we're trying to find out.
Maybe there is the possibility of some kind of stack? Something that starts low level and somehow can be composed or integrated into higher levels of abstraction?
I once had an idea for a system that basically took in multiple video inputs and produced video output. Individuals would then run instances (that they could tweak) that were connected to a larger network. Somewhere between an MMO and Folding@home. Not only would it distribute the compute load but it would simulate the chaos of large numbers of individuals trying out different things.
Again I think it comes back to the fitness function and how things get nudged "upward." In any case it seems all you need to do is get fitness right and then let it rip...
Have you explored any distributed concepts like that?
https://distill.pub/2020/selforg/
I'd read through the whole site and all the papers there when they were published, and the questions they raise are, to me, some of the most interesting intellectual themes. Then I realized you're an author on most of the articles, as well as Michael Levin, whose research I've been deeply curious about, listening to his talks, reading his papers. It makes sense that there's a common thread and convergence, but also a pleasant surprise.
Just wanted to express my appreciation for the work you and your cohorts are doing, how it's pushing the boundary and depth of our collective understanding. I don't have a question per se, but I feel that this area of inquiry seems both underappreciated by the general public and at the same time fairly open to those outside of academia - what might be called experimental mathematics and exploratory computer science. Maybe there's room for "popular-science" type authors, to explain how cool (ha) these ideas are, to translate the technical material to more digestible language for a wider audience.