Answers.Body: <p>The main evolutionary algorithm used to train neural networks is <em>Neuro-Evolution of Augmenting Topoloigies</em>, or <a href="https://neat-python.readthedocs.io/en/latest/neat_overview.html" rel="noreferrer">NEAT</a>. NEAT has seen fairly widespread use. There are <a href="https://scholar.google.com/scholar?hl=en&amp;as_sdt=0%2C33&amp;q=%22NeuroEvolution%20of%20Augmenting%20Topologies%22&amp;btnG=" rel="noreferrer">thousands of academic papers</a> building on or using the algorithm.</p>
  
  <p>NEAT is not widely used in commercial applications because if you have a clean objective function, a topology that is optimized for gradient decent via backpropogation, and an implementation that is highly optimized for a GPU, you are almost certainly going to see better, faster, results from a conventional training process. Where NEAT is really useful is if you want to do something weird, like train to <a href="https://www.researchgate.net/profile/Joel_Lehman/publication/221008669_Improving_evolvability_through_novelty_search_and_self-adaptation/links/0deec51dfe82216608000000.pdf" rel="noreferrer">maximize novelty</a>, or if you want to try to train neurons that don't have cleanly decomposable gradients. Basically, you need to have any of the usual reasons you might prefer an evolutionary algorithm to hill-climbing approaches:</p>
  
  <ol>
  <li>You don't have a clean mapping from loss function to individual model components.</li>
  <li>Your loss function has many local maximia.</li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-09-20T07:34:17.243Z
Answers.Text: Worth mentioning scaling by number of parameters. Gradient descent scales up to millions of weights. NEAT, relying on search through testing small subsets of weight changes, cannot scale that way and is much better with relatively small neural networks. NEAT can be a good alternative to Reinforcement Learning for learning control systems (when the task only needs a simple function)
Answers.UserDisplayName: Neil Slater
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-09-20T14:34:30.953Z
Answers.Text: I think there's not a strong reason that NEAT cannot be scaled up, in principle, and there are approaches like Tangled Program Graphs (https://link.springer.com/chapter/10.1007/978-3-319-77553-1_9) that are capable of training things _similar to_ a neural network using evolutionary methods, so I don't think that's a limiting factor for evolutionary methods in general. I agree that it _is_ a limit for the standard NEAT algorithm though, which is the most widely used one.
Answers.UserDisplayName: John Doucette
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-09-19T23:45:29.787Z
Answers.LastActivityDate: 2019-09-19T23:45:29.787Z
Answers.UserDisplayName: John Doucette
Body: <p>Evolutionary algorithms are mentioned in some sources as a method to train a neural network (finding weights, not hyperparameters). However, I have not heard about one practical application of such an idea yet.</p>
  <p>My question is, why is that? What are the issues or limitations with such a solution that prevented it from practical use?</p>
  <p>I am asking because I am planning on developing such an algorithm and want to know what to expect and where to put most attention.</p>
  
Tags: <neural-networks><training><gradient-descent><evolutionary-algorithms><neuroevolution>
Title: Why evolutionary training of neural networks is not popular?
UserDisplayName: GKozinski
ThreadText: # Why evolutionary training of neural networks is not popular?
  
  (Asked by: username_0 on 2019-09-19)
  
  Evolutionary algorithms are mentioned in some sources as a method to train a neural network (finding weights, not hyperparameters). However, I have not heard about one practical application of such an idea yet.
  
  My question is, why is that? What are the issues or limitations with such a solution that prevented it from practical use?
  
  I am asking because I am planning on developing such an algorithm and want to know what to expect and where to put most attention.
  
  **Tags:** neural-networks, training, gradient-descent, evolutionary-algorithms, neuroevolution
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-09-19. Score: 6 | Accepted answer
  
  The main evolutionary algorithm used to train neural networks is *Neuro-Evolution of Augmenting Topoloigies*, or [NEAT](https://neat-python.readthedocs.io/en/latest/neat_overview.html). NEAT has seen fairly widespread use. There are [thousands of academic papers](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C33&q=%22NeuroEvolution%20of%20Augmenting%20Topologies%22&btnG=) building on or using the algorithm.
  
  NEAT is not widely used in commercial applications because if you have a clean objective function, a topology that is optimized for gradient decent via backpropogation, and an implementation that is highly optimized for a GPU, you are almost certainly going to see better, faster, results from a conventional training process. Where NEAT is really useful is if you want to do something weird, like train to [maximize novelty](https://www.researchgate.net/profile/Joel_Lehman/publication/221008669_Improving_evolvability_through_novelty_search_and_self-adaptation/links/0deec51dfe82216608000000.pdf), or if you want to try to train neurons that don't have cleanly decomposable gradients. Basically, you need to have any of the usual reasons you might prefer an evolutionary algorithm to hill-climbing approaches:
  
  1. You don't have a clean mapping from loss function to individual model components.
  2. Your loss function has many local maximia.
  
  > **Comments:**
  > **username_2**: Worth mentioning scaling by number of parameters. Gradient descent scales up to millions of weights. NEAT, relying on search through testing small subsets of weight changes, cannot scale that way and is much better with relatively small neural networks. NEAT can be a good alternative to Reinforcement Learning for learning control systems (when the task only needs a simple function)  
  > **username_1**: I think there's not a strong reason that NEAT cannot be scaled up, in principle, and there are approaches like Tangled Program Graphs (https://link.springer.com/chapter/10.1007/978-3-319-77553-1_9) that are capable of training things _similar to_ a neural network using evolutionary methods, so I don't think that's a limiting factor for evolutionary methods in general. I agree that it _is_ a limit for the standard NEAT algorithm though, which is the most widely used one.  
  
  ---
  
  