3 ms·
The DevoLab at Michigan State University is doing ongoing work in this area. At least one researcher (Jeff Clune) is looking at evolving generative encodings f
by acj 17y ago
The DevoLab at Michigan State University is doing ongoing work in this area. At least one researcher (Jeff Clune) is looking at evolving generative encodings for neural networks, using the gait of virtual creatures as a sample problem.
http://devolab.msu.edu http://devolab.msu.edu
- jal278 17y agoI have to say that generative encodings are the most exciting new development of genetic algorithms. Basically, the idea is this: Typically in GAs, the genotype (the bits that make up the genome, the ones that undergo selection and recombination) maps directly to a phenotype (one to one). So if you were going to evolve a brain, there would have to be one gene for each connection in the brain. The problem is, such a direct 1-1 encoding can't scale to huge brains. For example in the human brain there are trillions of connections (synapses), which would mean searching a trillion-dimensional space (unfathomably difficult). Nature's solution is to use development, where a brain grows over time, where the genes don't directly specify each connection, but the blueprint for how a brain should grow. So, in generative encodings in GAs, the principle is simlar. An indirect (or generative) encoding is where one gene can represent an aspect of a developmental process instead of directly specifying each component. In some ways it's similar to how in engineering you reuse components when making a building; if the manufacture of each nail had to be specified completely separately a project would be overwhelming.
- papaf 17y agoSo, in generative encodings in GAs, the principle is simlar. An indirect (or generative) encoding is where one gene can represent an aspect of a developmental process instead of directly specifying each component. I haven't heard of generative encoding before -- it sounds really cool. I could imagine something similar done with Genetic Programming. You could design a DSL (domain specific language) that is capable of building Neural Nets and then perform GP on programs written in the DSL. This could take the pressure off having to design a good development algorithm -- the GP would would do that for you.