Pregunta

Estoy tratando de tener una idea de la diferencia entre las diversas clases de algoritmos de aprendizaje automático.

Entiendo que las implementaciones de algoritmos evolutivos son bastante diferentes de las implementaciones de redes neuronales.

Sin embargo, ambos parecen estar orientados a determinar una correlación entre las entradas y las salidas de un conjunto potencialmente ruidoso de datos de capacitación / históricos.

Desde una perspectiva cualitativa, ¿existen dominios problemáticos que sean mejores objetivos para las redes neuronales en lugar de los algoritmos evolutivos?

He leído algunos artículos que sugieren usarlos de manera complementaria. ¿Hay un ejemplo decente de un caso de uso para eso?

¿Fue útil?

Solución

Aquí está el trato: en los problemas de aprendizaje automático, normalmente tiene dos componentes:

a) El modelo (clase de función, etc.)

b) Métodos de ajuste del modelo (algoritmos de optimización)

Las redes neuronales son un modelo: dada una disposición y una configuración de pesos, la red neuronal produce algo de salida. Existen algunos métodos canónicos para ajustar redes neuronales, como la propagación hacia atrás, la divergencia contrastante, etc. Sin embargo, el gran punto de las redes neuronales es que si alguien le diera los pesos 'correctos', le iría bien en el problema.

Los algoritmos evolutivos abordan la segunda parte, ajustando el modelo. Una vez más, hay algunos modelos canónicos que van con algoritmos evolutivos: por ejemplo, la programación evolutiva generalmente intenta optimizar todos los programas de un tipo en particular. Sin embargo, los EA son esencialmente una forma de encontrar los valores de parámetros correctos para un modelo en particular. Por lo general, escribe los parámetros de su modelo de tal manera que la operación de cruce es algo razonable y gira la manivela EA para obtener una configuración razonable de parámetros.

Ahora, podría, por ejemplo, usar algoritmos evolutivos para entrenar una red neuronal y estoy seguro de que se ha hecho. Sin embargo, la parte crítica que EA requiere para funcionar es que la operación de cruce debe ser algo razonable: al tomar parte de los parámetros de una configuración razonable y el resto de otra configuración razonable, a menudo terminará con un incluso mejor configuración de parámetros. La mayoría de las veces se usa EA, este no es el caso y termina siendo algo así como un recocido simulado, solo que más confuso e ineficiente.

Otros consejos

Problemas que requieren "intuición" son más adecuados para ANN, por ejemplo, reconocimiento de escritura a mano. Entrena una red neuronal con una gran cantidad de entrada y la califica hasta que haya terminado (esto lleva mucho tiempo), pero luego tiene un algoritmo / sistema de caja negra que puede `` adivinar '' la escritura a mano, para que conserve su pequeño cerebro y lo use como módulo durante muchos años o algo así. Porque entrenar a un ANN de calidad para un problema complejo puede llevar meses, es el peor de los casos, y suerte.

La mayoría de los otros algoritmos evolutivos " calcular " una solución ad hoc en el lugar, en una especie de patrón de escalada.

También como se indicó en otra respuesta, durante el tiempo de ejecución un ANN puede " adivinar " más rápido que la mayoría de los otros algoritmos evolutivos pueden " calcular " ;. Sin embargo, uno debe tener cuidado, ya que el ANN solo está " adivinando " y podría estar equivocado.

Mira Neuro Evolution. (NE)

Los mejores métodos actuales son NEAT y HyperNEAT de Kenneth Stanley.

Los algoritmos genéticos solo encuentran un genoma de algún tipo; Es genial crear el genoma de una red neuronal, porque obtienes la naturaleza reactiva de la red neuronal, en lugar de solo un montón de genes estáticos.

No hay muchos límites para lo que puede aprender. Pero lleva tiempo, por supuesto. La topología neuronal tiene que evolucionar a través de la mutación y el crossover habituales, así como de pesos actualizados. No puede haber propagación hacia atrás.

También puede entrenarlo con una función de condición física, que es superior a la propagación hacia atrás cuando no sabe cuál debería ser la salida. Perfecto para aprender comportamientos complejos para sistemas para los que no conoce estrategias óptimas. El único problema es que aprenderá comportamientos que no anticipó. A menudo, ese comportamiento puede ser muy extraño, aunque hace exactamente lo que recompensó en la función fitness. Por lo tanto, utilizará tanto tiempo derivando funciones de acondicionamiento físico como si hubiera creado conjuntos de salida para la propagación hacia atrás: P

Los algoritmos evolutivos, o genéticamente más genéricos, y las redes neuronales se pueden usar para objetivos similares, y otras respuestas describen bien la diferencia.

Sin embargo, hay un caso específico en el que los algoritmos evolutivos están más indicados que las redes neuronales: cuando el espacio de solución es no continuo / discreto .

De hecho, las redes neuronales usan el descenso de gradiente para aprender de la retropropagación (o algoritmo similar). El cálculo de un gradiente se basa en derivados, que necesitan un espacio continuo, en otras palabras, que puede cambiar gradualmente y progresivamente de una solución a la siguiente.

Si el espacio de su solución es discreto (es decir, puede elegir la solución A, B o C, pero nada en el medio como 0.5% A + 0.5% B), entonces está tratando de ajustar un no continuo función, y luego las redes neuronales no pueden funcionar.

En este caso, los algoritmos evolutivos son perfectos, incluso se podría decir un envío de Dios, ya que puede "saltar". de una solución a la siguiente sin ningún problema.

También vale la pena mencionar que los algoritmos evolutivos no están sujetos a la maldición de la dimensionalidad tanto como cualquier otro algoritmo de aprendizaje automático, incluidas las redes neuronales.

Esto hace que los algoritmos evolutivos sean una herramienta muy versátil y genérica para abordar ingenuamente cualquier problema, y ??una de las pocas herramientas para lidiar con funciones no continuas o con conjuntos de datos astronómicos de dimensiones elevadas.

En términos de dominios problemáticos, comparo redes neuronales artificiales entrenadas por retropropagación con un algoritmo evolutivo.

Un algoritmo evolutivo implementa una búsqueda aleatoria de haces, lo que significa que sus operadores evolutivos desarrollan candidatos para ser probados y comparados por su aptitud. Esos operadores generalmente no son deterministas y puede diseñarlos para que puedan encontrar candidatos cercanos y candidatos que estén más lejos en el espacio de parámetros para superar el problema de quedarse atascado en los óptimos locales.

Sin embargo, el éxito de un enfoque de EA depende en gran medida del modelo que desarrolle, lo cual es una compensación entre el alto potencial de expresión (puede sobreajustar) y la generalidad (el modelo podría no ser capaz de expresar la función objetivo).

Debido a que las redes neuronales generalmente son multicapa, el espacio de parámetros no es convexo y contiene óptimos locales, los algoritmos de descenso de gradiente pueden quedar atrapados. El descenso de gradiente es un algoritmo determinista que busca a través de la proximidad. Es por eso que las redes neuronales generalmente se inicializan aleatoriamente y por qué debería entrenar a muchos más de un modelo.

Además, sabe que cada nodo oculto en una red neuronal define un hiperplano; puede diseñar una red neuronal para que se adapte bien a su problema. Existen algunas técnicas para evitar el sobreajuste de las redes neuronales.

En general, las redes neuronales pueden entrenarse rápidamente y obtener resultados razonables con pocos esfuerzos (solo pruebe algunos parámetros). En teoría, una red neuronal que es lo suficientemente grande es capaz de aproximar cada función objetivo, lo que, por otro lado, la hace propensa a un sobreajuste. Los algoritmos evolutivos requieren que haga muchas elecciones de diseño para obtener buenos resultados, siendo el más difícil probablemente qué modelo optimizar. Pero EA puede buscar en espacios problemáticos muy complejos (de la manera que usted defina) y obtener buenos resultados rápidamente. Los EA incluso pueden seguir siendo exitosos cuando el problema (la función objetivo) está cambiando con el tiempo.

Libro de aprendizaje automático de Tom Mitchell: http://www.cs.cmu.edu/~tom/mlbook.html

Los algoritmos evolutivos (EA) son lentos porque dependen de un aprendizaje no supervisado: a los EA se les dice que algunas soluciones son mejores que otras, pero no cómo para mejorarlas. Las redes neuronales son generalmente más rápidas, siendo una instancia de aprendizaje supervisado: saben cómo mejorar una solución mediante el uso de la pendiente de gradiente dentro de un espacio de funciones sobre ciertos parámetros; Esto les permite llegar a una solución válida más rápido. Las redes neuronales a menudo se usan cuando no hay suficiente conocimiento sobre el problema para que otros métodos funcionen.

Los algoritmos evolutivos (EA) representan una forma de entrenar un modelo, donde las redes neuronales (NN) SON un modelo. Con mayor frecuencia en toda la literatura, encontrará que los NN se entrenan utilizando el algoritmo de retropropagación. Este método es muy atractivo para los matemáticos, PERO requiere que pueda expresar la tasa de error del modelo utilizando una fórmula matemática. Este es el caso para situaciones en las que conoce muchos valores de entrada y salida para la función que está tratando de aproximar. Este problema se puede modelar matemáticamente, como la minimización de una función de pérdida, que se puede lograr gracias al cálculo (y es por eso que los matemáticos lo aman).

Pero las redes neuronales también son útiles para modelar sistemas que intentan maximizar o minimizar algún resultado, cuya fórmula es muy difícil de modelar matemáticamente. Por ejemplo, una red neuronal podría controlar los músculos de un cyborg para lograr correr. En cada período de tiempo diferente, el modelo tendría que establecer cuánta tensión debería estar presente en cada músculo del cuerpo del cyborg, en función de la entrada de varios sensores. Es imposible proporcionar tales datos de capacitación. Los EA permiten la capacitación al proporcionar solo una forma de evaluación del modelo. Para nuestro ejemplo, castigaríamos las caídas y recompensaríamos la distancia recorrida a través de una superficie (en un marco de tiempo fijo). EA solo seleccionaría los modelos que hagan su mejor esfuerzo en este sentido. Las primeras generaciones apestan, pero, sorprendentemente, después de unos pocos cientos de generaciones, estos individuos logran resultados muy "naturales". movimientos y logran correr sin caerse. Dichos modelos también pueden ser capaces de lidiar con obstáculos y fuerzas físicas externas.

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