Create software that can evolve?

Wencao Yang
2 min readJun 4, 2021

Just some random thought.

We know people or any living things can respond to the outside environment when there is a change or stimulus. Life started billions of years ago when there was DNA, protein, and some other stuff and then there was cell and finally, it evolved to some complicated stuff.

so how to create this transition in a virtual world?

I did a little research and found it may be meta-programming, automatic programming, cellular programming, cellular automata. But they are not exactly what I want. Anyone can help?

naively, it should be like input/output training, but it’s hard to specify the purpose, for NLP, we do have some nice models like BERT, but it’s not intelligent for sure. The purpose of life is easy, just to survive, food, reproduction, and death.

update 1.

I just learned there is a similar idea called program by example/documentation or Inductive Program Synthesis (IPS)

update 2.

Today I learned something called a dynamic neural network, the traditional IPS has already changed a lot with the advance of deep learning (here it is neural network), a neural network itself can be considered a program, which unfortunately doesn’t have an explicit source code (instead of a set of parameters) and control flow

update 3.

today I learned DRL, very similar but may not be the final answer.

update 4.

although some RL methods include evolutionary methods like genetic programming, where there is no value function, usually people focus on the value function and policy since it’s arguably more efficient

update 5.

reinforce learning seems the right way to do it.

Reference:

[1] Alexander L. Gaunt, et al, TerpreT: A Probabilistic Programming Language for Program Induction

[2] Richard S. Sutton and Andrew G. Barto, Reinforcement Learning: An Introduction.

--

--