I have recently learned about artificial neural networks (very interesting) and genetic algorithms (also very interesting). I have read some suggestions concerning how to crossover two parent neural networks to produce a child. For example, randomly selecting weights and biases from either one parent or the other, or selecting the first L layers from one parent and the rest from the other. I was wondering if taking the average weights and biases (such that wij(L) of the child networks equals the average wij(L) of the parents, and similarly for bi(L)) would be a proper crossover operation.

Which of these operations would be best suited for most genetic algorithms involving neural networks? Note that I want to limit the scope of this question only to topologically identical parents producing a child with that same topology.

  • $\begingroup$ None of them - backpropagation is better than genetic algorithms for this. See also cs.stackexchange.com/q/79903/755. $\endgroup$ – D.W. Jan 31 at 0:37
  • $\begingroup$ I know backprop is good, but I was asking about genetic algorithms. You can't use backpropagation in every case, anyway. Backprop requires a dataset. What do you think about the method of averaging weights and biases? Does it allow a population to evolve properly? Or is there a better method? $\endgroup$ – nc404 Jan 31 at 0:42
  • $\begingroup$ I appreciate that you weren't asking about backpropagation, and you're certainly entitled to ask the question that you did. I'm sharing my opinion that the question seems poorly motivated and genetic algorithms don't seem like a useful direction for this. Of course, you're free to ignore that if you like. I'm not sure why you think you can't always use backpropagation, but if you think you've found a case where backpropagation doesn't apply, I suspect it might be more useful to ask a question about how to deal with that specific case (without assuming genetic programming is the answer). $\endgroup$ – D.W. Jan 31 at 19:26
  • $\begingroup$ Consider a neural network that is supposed to play a game, taking as input the state of the game, and as output the proper (best) move. Say that game has an astronomical number of states. You couldn't possibly build a dataset from that could you? And even if the number of states was more reasonable, how could you possibly know what the best move is for every state. That is a case i think genetic algorithms could solve, making a population of networks play the game among themselves, and selecting the winners. Or do you not think so? $\endgroup$ – nc404 Jan 31 at 21:43
  • $\begingroup$ As I think I mentioned before, if that's the specific situation you want to resolve, I suggest asking a new question about that particular situation, without assuming that genetic algorithms will be the right answer. I think there are techniques in the literature for that kind of situation. $\endgroup$ – D.W. Jan 31 at 22:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.