¿Cuándo debo usar algoritmos genéticos en lugar de redes neuronales? [cerrado]

139

¿Existe una regla general (o conjunto de ejemplos) para determinar cuándo usar algoritmos genéticos en lugar de redes neuronales (y viceversa) para resolver un problema?

Sé que hay casos en los que puede mezclar ambos métodos, pero estoy buscando una comparación de alto nivel entre los dos métodos.

Neil N
fuente
3
Vale la pena señalar que hay dos tipos de redes neuronales: supervisadas y no supervisadas. Supervisados ​​obtienen datos de entrenamiento de un humano, retroalimentación no supervisada en sí mismos y son más como GA en ese sentido.
Chris S
3
No creo que sea "list-y" en absoluto. Las respuestas comparan dos métodos y aclaran cuándo usar uno frente al otro.
Neil N
Respuesta corta: use GA cuando la función para modelar no sea continua / discreta, o cuando el conjunto de datos sea astronómicamente de alta dimensión. Use redes neuronales o GA (u otro modelo) para el resto dependiendo de lo que le brinde los mejores resultados. Para obtener más información, vea mi respuesta aquí: stackoverflow.com/a/49684833/1121352
gaborous

Respuestas:

130

De wikipedia:

Un algoritmo genético (GA) es una técnica de búsqueda utilizada en la informática para encontrar soluciones exactas o aproximadas a los problemas de optimización y búsqueda.

y:

Las redes neuronales 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 tiene un problema en el que puede cuantificar el valor de una solución, un algoritmo genético puede realizar una búsqueda dirigida del espacio de la solución. (Por ejemplo, encontrar la ruta más corta entre dos puntos)

Cuando tiene varios elementos en diferentes clases, una red neuronal puede "aprender" a clasificar elementos que no ha "visto" antes. (Por ejemplo, reconocimiento facial, reconocimiento de voz)

Los tiempos de ejecución también deben ser considerados. Un algoritmo genético tarda mucho en encontrar una solución aceptable. Una red neuronal tarda mucho en "aprender", pero luego puede clasificar casi instantáneamente nuevas entradas.

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

Un algoritmo genético (a pesar de su nombre sexy) es, para la mayoría de los propósitos, una técnica de optimización . Principalmente se reduce a que tiene una serie de variables y desea encontrar la mejor combinación de valores para estas variables. Solo 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 varios pesos entre ellos, intentan predecir salidas basadas en entradas.

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

zenna
fuente
22
Las redes neuronales son solo una técnica de interpolación, en realidad. :)
Don Reba
3
+1 para algoritmos genéticos (optimización) y redes neuronales (aprendizaje supervisado) no tienen casi nada en común.
alfa
2
El único elemento común es que se reorganizan dinámicamente a medida que se acercan a un objetivo.
lfalin
1
No estoy seguro de que haya una superposición, de verdad. Las redes neuronales son un modelo con una función de costo, las GA son una técnica de optimización que puede usarse para minimizar esta función de costo, como dijo @zenna.
Matthieu Brucher
37

Los GA generan nuevos patrones en una estructura que usted define.

Las NN clasifican (o reconocen) los patrones existentes en función de los datos de capacitación que usted proporciona.

Los GA se desempeñan bien en la búsqueda eficiente de un gran espacio de soluciones y convergen en una o más soluciones buenas, pero no necesariamente la "mejor" solución.

Los 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 capacitados y reutilizar el conocimiento en otro (no NN).

Steven A. Lowe
fuente
26

Estás comparando dos cosas totalmente diferentes aquí.

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

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

bayer
fuente
10
En efecto. Son realmente técnicas 'ortogonales'. Puede usar un GA para encontrar pesos y / o arquitectura de redes neuronales.
redcalx
23

Hay muchas similitudes entre ellos, por lo que solo intentaré describir sus diferencias .

Redes neuronales

Son capaces de analizar patrones en línea (aquellos que cambian con el tiempo). En general, esta es una muestra que varía con el tiempo que necesita ser emparejada y predicha.

Ejemplos :

  • Extrapolación de grafos
  • Reconocimiento facial

Algoritmos genéticos

Se usa cuando puede codificar atributos que cree que pueden contribuir a un problema específico que no cambia. El énfasis está en poder codificar estos atributos (a veces se 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 aproximación de una imagen con polígonos aleatorios.
Desconocido
fuente
8

Los algoritmos genéticos (generalmente) funcionan en datos discretos (enumeraciones, rangos de 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 (evaluar todas las combinaciones).

Las redes neuronales, por otro lado, (generalmente) trabajan en datos continuos (flotantes, etc.). Una aplicación típica para NN es la aproximación de funciones, donde tiene 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 la línea entre ellos es algo borrosa.

nbro
fuente
5

No hay una regla general. En muchos casos, puede formular su problema para utilizar 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 lenguajes sexys de la evolución, pero estás esperando que tu computadora encuentre una solución a través de un proceso aleatorio. Estudie sus datos, haga buenas suposiciones, trate de saber lo que quiere y elija un enfoque que pueda hacer un buen uso de estos. Si su primera opción arroja malos resultados, sepa por qué fue así y mejore el algoritmo en sí mismo o elija uno mejor.

desvanecer
fuente