Pregunta

¿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 puedes mezclar ambos métodos, pero estoy buscando una comparación de alto nivel entre los dos métodos.

¿Fue útil?

Solución

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:

  

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, encuentre la ruta más corta entre dos puntos)

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

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

Otros consejos

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 tenga una serie de variables y desee encontrar la mejor combinación de valores para estas variables. Simplemente toma 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 ponderaciones entre ellos, intentan predecir resultados basados ??en entradas.

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

Las GA generan nuevos patrones en una estructura que definas.

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

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

Los NN pueden aprender a reconocer patrones (a través de la capacitación), pero es muy difícil entender lo que han aprendido, es decir, extraer el conocimiento de ellos una vez entrenado y reutilizarlo en algún otro (no NN).

Estás 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 la y desconocida para una 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).

Hay muchas similitudes entre ellos, así que solo trataré de 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 y debe ser comparada y predicha.

Ejemplos :

  • Extrapolación de gráficos
  • reconocimiento facial

Algoritmos genéticos

Se utiliza cuando puede codificar atributos que cree que pueden contribuir a un problema específico que no cambia. El énfasis está en ser capaz de codificar estos atributos (a veces se sabe lo que son) y el problema es, en gran medida, invariable (de lo contrario, las evoluciones no convergen).

Ejemplos :

  • Aviones / envío de horarios
  • Horarios.
  • Encontrar las mejores características para un agente simple en un entorno artificial
  • Renderizar una aproximación de una imagen con polígonos aleatorios

Puede usar algoritmos genéticos como alternativa al algoritmo de propagación hacia atrás para actualizar las ponderaciones en las redes neuronales. Para un ejemplo de esto refiérase a: http://www.ai-junkie.com/ann/evolved/nnt1. html .

Los algoritmos genéticos (por lo general) funcionan en datos discretos (enumeraciones, rangos enteros, etc.). Una aplicación típica para GA es buscar en un espacio discreto para " suficientemente bueno " Solución cuando la única alternativa disponible es una búsqueda de fuerza bruta (evaluando todas las combinaciones).

Las redes neuronales, por otro lado, (generalmente) funcionan en datos continuos (flotadores, etc.). Una aplicación típica para NNs 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 un tanto borrosa.

No hay 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 cuyo modelo de aprendizaje puede ser discutible.

Los GA toman los lenguajes sexy de la evolución, pero estás esperando que tu computadora se tope con una solución a través de 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 opción da malos resultados, sepa por qué fue así y mejore el algoritmo en sí mismo o elija uno mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top