Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When should I use genetic algorithms as opposed to neural networks? [closed]

People also ask

When should genetic algorithms be used?

Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover and selection.

When should you not use neural networks?

Example: Banks generally will not use Neural Networks to predict whether a person is creditworthy because they need to explain to their customers why they denied them a loan. Long story short, when you need to provide an explanation to why something happened, Neural networks might not be your best bet.

Why are genetic algorithms better?

Genetic algorithms employ the concept of genetics and natural selection to provide solutions to problems. These algorithms have better intelligence than random search algorithms because they use historical data to take the search to the best performing region within the solution space.

What are the advantages of genetic algorithm for solving NP problems?

It has ability to locate the neighborhood of the optimal solution quicker than other conventional search strategies. Genetic algorithms (GA) are good at taking large, potentially huge search spaces and navigating them, looking for optimal combinations of things, solutions you would find difficult to accomplish.


From wikipedia:

A genetic algorithm (GA) is a search technique used in computing to find exact or approximate solutions to optimization and search problems.

and:

Neural networks are non-linear statistical data modeling tools. They can be used to model complex relationships between inputs and outputs or to find patterns in data.

If you have a problem where you can quantify the worth of a solution, a genetic algorithm can perform a directed search of the solution space. (E.g. find the shortest route between two points)

When you have a number of items in different classes, a neural network can "learn" to classify items it has not "seen" before. (E.g. face recognition, voice recognition)

Execution times must also be considered. A genetic algorithm takes a long time to find an acceptable solution. A neural network takes a long time to "learn", but then it can almost instantly classify new inputs.


A genetic algorithm (despite its sexy name) is, for most purposes, an optimization technique. It primarily boils down to you having a number of variables and wanting to find the best combination of values for these variables. It just borrows techniques from natural evolution to get there.

Neural networks are useful for recognizing patterns. They follow a simplistic model of the brain, and by changing a number of weights between them, attempt to predict outputs based on inputs.

They are two fundamentally different entities, but sometimes the problems they are capable of solving overlap.


GAs generate new patterns in a structure that you define.

NNs classify (or recognize) existing patterns based on training data that you provide.

GAs perform well at efficiently searching a large state-space of solutions, and converging on one or more good solutions, but not necessarily the 'best' solution.

NNs can learn to recognize patterns (via training), but it is notoriously difficult to figure out what they have learned, i.e. to extract the knowledge from them once trained, and reuse the knowledge in some other (non-NN).


You are comparing two totally different things here.

Neural Networks are used for regression/classification - given a set of (x, y) examples, you want regress the unknown y for some given x.

Genetic algorithms are an optimization technique. Given a function f(x), you want to determine the x which minimizes/maximizes f(x).


There are many similarities between them, so I will only try to outline their differences.

Neural networks

Are able to analyze online patterns (those that change over time). Generally, this is a time-varying sample that needs to be matched and predicted.

Examples:

  • Graph extrapolation
  • Facial recognition

Genetic algorithms

Used when you can code attributes that you think may contribute to a specific, non-changing problem. The emphasis is on being able to code these attributes (sometimes you know what they are) and that the problem is to a large degree unchanging (otherwise evolutions don't converge).

Examples:

  • Scheduling airplanes/shipping
  • Timetables.
  • Finding the best characteristics for a simple agent in an artificial environment
  • Rendering an approximation of a picture with random polygons

You can use genetic algorithms as an alternative to the backpropagation algorithm to update weights in neural networks. For an example of this refer to: http://www.ai-junkie.com/ann/evolved/nnt1.html.