112

¿Existe una regla empírica o un conjunto de ejemplos para determinar cuándo usar Algoritmos genéticos y cuándo utilizar redes neuronales para resolver un problema?Cuándo usar Algoritmos genéticos vs. cuándo usar redes neuronales?

Sé que hay casos en los que puede tener ambos métodos mezclados, pero estoy buscando un razonamiento de alto nivel entre los dos métodos.

+3

Vale la pena señalar que hay dos tipos de redes neuronales, supervisadas y no supervisadas. Los supervisados ​​obtienen los datos de capacitación de un feedback humano no supervisado en ellos mismos y se parecen más a GA en ese aspecto. –

+1

¿Podemos trabajar para sacar los bits no constructivos en la pregunta? Es mucho en torno al "conjunto de ejemplos", ya que es muy simple y no queremos alentar eso. Las respuestas son bastante buenas, y nos gustaría mantenerlo así. Estaremos encantados de volver a abrirlo una vez que ese poco se haya solucionado. – casperOne

+2

No creo que sea "list-y" en absoluto. Las respuestas comparan dos métodos y aclaran cuándo usar uno frente al otro. –

Respuesta

106

de Wikipedia:

Un genetic algorithm (GA) es una técnica de búsqueda utilizado en informática para encontrar exactas o aproximadas soluciones a problemas de optimización y búsqueda.

y:

Neural networks son herramientas de modelado de datos estadísticos no lineales. Se pueden usar para modelar relaciones complejas entre entradas y salidas o para encontrar patrones en los datos.

Si usted tiene un problema donde se puede cuantificar el valor de una solución, una algoritmo genético puede realizar una búsqueda dirigida del espacio de soluciones. (P.ej.encontrar el camino más corto entre dos puntos)

Cuando se tiene un número de elementos de diferentes clases, una red neuronal puede "aprender" a clasifican artículos que no ha "visto" antes. (Por ejemplo, reconocimiento facial, reconocimiento de voz)

También se deben tener en cuenta los tiempos de ejecución. Un algoritmo genético toma mucho tiempo para encontrar una solución aceptable. Una red neuronal tarda mucho tiempo en "aprender", pero luego puede clasificar casi de manera inmediata nuevas entradas.

+9

Solo quiero agregar un poco a la definición de GA. A veces las personas piensan en el espacio de solución de un problema de GA como un conjunto de estados o valores. Tales como "Encuentra todas las formas en que un conjunto de cuatro piezas de ajedrez podría organizarse en un tablero de ajedrez para crear un jaque mate". Sin embargo, el espacio de la solución también puede ser un conjunto de algoritmos. Aquí es donde entra en juego el poder real de los algoritmos genéticos. Te ayudan a responder una pregunta como "Encuentra una secuencia de movimientos con un conjunto determinado de piezas de ajedrez que darán como resultado un jaque mate". – lfalin

30

AGs generar nuevos patrones en una estructura que defina

NN clasifican/reconocer patrones existentes sobre la base de la formación que proporcione

AGs un buen desempeño en la búsqueda de manera eficiente un gran espacio de estado de soluciones y convergente en una o más soluciones buenas, pero no necesariamente la "mejor" solución

NN pueden aprender a reconocer patrones (a través del entrenamiento), pero es notoriamente difícil descubrir lo que han aprendido, es decir, extraer el conocimiento de ellos una vez entrenado, y reutilizar el conocimiento en algún otro (no NN)

+4

realmente no puedo entender por qué esto fue downvoted ... –

19

Hay muchas similitudes entre ellos, por lo que solo trataré de delinear sus diferencias.

redes neuronales

son capaces de analizar los patrones de línea (las que cambian con el tiempo). En general, esta es una muestra variable en el tiempo que necesita ser igualada y predicha.

Ejemplos: Extrapolación de gráficos. Reconocimiento facial.

algoritmos genéticos

Se utiliza cuando se puede código de atributos que cree que puede contribuir a un problema específico, que no cambian. El énfasis está en poder codificar estos atributos (a veces uno sabe cuáles son) y que el problema es en gran medida inmutable (de lo contrario las evoluciones no convergen).

Ejemplos: Programación de aviones/envío. Horarios Encontrar las mejores características para un agente simple en un entorno artificial. Representación de una imagen con polígonos aleatorios.

33

Un algoritmo genético, a pesar de su nombre sexy, es para la mayoría de los propósitos solo una técnica de optimización. Principalmente se reduce a que tengas una serie de variables y desees encontrar la mejor combinación de valores para estas variables. Simplemente toma prestadas técnicas de la evolución natural para llegar allí.

Las redes neuronales son útiles para reconocer patrones. Siguen un modelo simplista del cerebro y, al cambiar una cantidad de pesos entre ellos, intentan predecir los resultados en función de las entradas.

Son dos entidades fundamentalmente diferentes, pero a veces los problemas que son capaces de resolver se superponen.

+3

.. "solo una técnica de optimización" ... ¿Eso es todo? –

+4

'solo una técnica de optimización' no pretendía minimizar el poder de la optimización. El objetivo era mostrar que las AG realizan la misma función que muchas otras técnicas de optimización, como el alpinismo. – zenna

+17

Las redes neuronales son solo una técnica de interpolación, en realidad. :) –

6

Algoritmos genéticos (generalmente) trabajan en datos discretos (enumeraciones, rangos enteros, etc.). Una aplicación típica para GA es buscar un espacio discreto para una solución "suficientemente buena" cuando la única alternativa disponible es una búsqueda de fuerza bruta (evaluando todas las combinaciones).

Redes neuronales, por otro lado (generalmente) trabajan en datos continuos (flotadores, etc.). Una aplicación típica para NN es la aproximación de función donde tienes un conjunto X de entradas y un conjunto Y de salidas relacionadas, pero la función analítica f: X → Y.

Por supuesto, hay miles de variantes de ambos, por lo que línea entre ellos es algo borrosa.

12

De hecho, puede utilizar Algoritmos genéticos como una alternativa al algoritmo Backpropagation para actualizar los pesos en Redes neuronales. Para un ejemplo de esto, consulte:
http://www.ai-junkie.com/ann/evolved/nnt1.html

+1

Y también NEAT (http://www.cs.ucf.edu/~kstanley/neat.html). Con una implementación de C# en (http://sharpneat.sourceforge.net) – redcalx

+0

Para javascript, consulte https://github.com/wagenaartje/neataptic. Implementa NEAT también. –

21

Está comparando dos cosas totalmente diferentes aquí.

Las redes neuronales se utilizan para la regresión/clasificación: dado un conjunto de (x, y) ejemplos, desea retroceder el desconocido y para alguna x dada.

Los algoritmos genéticos son una técnica de optimización. Dada una función f (x), quiere determinar la x que minimiza/maximiza f (x).

+5

De hecho. Son realmente técnicas "ortogonales". Puede usar un GA para encontrar pesos netos neuronales y/o arquitectura. – redcalx

4

No hay una regla de oro. En muchos casos, puede formular su problema para hacer uso de cualquiera de ellos. El aprendizaje automático sigue siendo un área activa de investigación y qué modelo de aprendizaje utilizar puede ser discutible.

Los GA toman los lenguajes atractivos de la evolución pero estás esperando que tu computadora tropiece con una solución mediante un proceso aleatorio. Estudie sus datos, haga buenas suposiciones, intente saber lo que quiere y elija un enfoque que pueda hacer un buen uso de estos. Si su primera elección da resultados pobres, sepa por qué fue así, y mejore el algoritmo en sí mismo o elija uno mejor.

Cuestiones relacionadas