A while ago I was experimenting with evolving virtual creatures using neural network + genetic algorithm, but that didnt go well (simulation speed was too slow, mainly because bad programming habbits of creatures, not neural network).
I used Feedforward neural network and now I can see it isnt exactly right choice for this kind of application (creatures have no memory, etc.)
I would like to try again, start from scratch, and I would like to perform better than before. However, I dont know what neural network architecture to select.
What I need:
- Possibility of memory: Should I study more about memory cells, or is using correct NN architecture (like Reccurent NN) enough? What will be main differencies?
- Possibility of mutations: I would like to not only mutate weihts in network, but also possibility of adding weights / neurons into “black box”. I plan to use genetic algorithm, so cross mutations + random mutations.
- Easy programming: I plan on not using any assets and to write my NN from ground in order to learn. I would preffer more easy neural networks than others. (While Im writing this, I realize there might not be difference)
What I dont need:
- Quick computation: I think that 90% of CPU time will be used on other things of controling my creatures, than on computing NN. (as I am terrible programmer)
- Training: I will use genetic algorithm to train, so I dont need typical training methods to train NN. I can use types of NN where training part is very CPU intense, as I will drop this part out.
I am looking at possible types of NN and I think some type of Recurrent network would be suitable, but cant really pick a winner, since I only ever worked with Feedforward type, and I will need to learn about the type you will reccomend before I start writing it. I would like to learn just the one you will suggest instead of learn pros/cons of all, since I think It would set me back for too long.
The task for is to surive. I dont have any objective aside than observing interesting patterns of behaviour that can evolve. Basically I would like to “seed” the world with some properties with creatures that can exploit those (food, temperature, danger) and such. Everything very basically modeled, in flat 2D.
Question is:
What is the type of NN that you think would suit this best?
7
What you are looking for is Neuro Evolution
. According to this paper you could be in a position to create a trainable feed forward Neural Network (some extra information might also be found here).
My recommendation would be to start small, maybe first start by making your character move and stop in the presence of danger. Neural networks can be rather difficult to debug, so start slowly to make sure that you have a solid base.
7