37 votos

Backpropagation vs Algoritmo Genético para el entrenamiento de Redes Neuronales

He leído algunos artículos en los que se discuten los pros y los contras de cada método, algunos argumentan que el AG no ofrece ninguna mejora en la búsqueda de la solución óptima, mientras que otros muestran que es más eficaz. Parece que en la literatura se prefiere el AG (aunque la mayoría de las personas lo modifican de alguna manera para lograr los resultados que necesitan), entonces ¿por qué la mayoría de las soluciones de software parecen utilizar sólo la retropropagación?

¿Existe alguna regla general sobre cuándo utilizar uno u otro? ¿Tal vez depende del tipo de NN o existe alguna solución de vanguardia que generalmente supera a las demás?

Si es posible, busco respuestas generales: por ejemplo, "si la NN es enorme, el AG es mejor", o "el AG siempre es mejor pero tiene problemas de rendimiento computacional", etc.

0voto

Gediz GÜRSU Puntos 101

Para responder a tu pregunta, he intentado escribir algo selectivo para entrenar a mnist sin tensorflow o pytorch. Sólo usando numpy. Funciona pero es terriblemente lento. Así que trató de utilizar la gpu usando cupy. Optimicé mi código. Escribí un kernel personalizado para Cupy, etc...

Así que he inventado el minist binario :P . Muy pequeño conjunto de datos sólo con unos y ceros. Y probé el algoritmo GA con esto. Funcionó

La solución a la que he llegado es la matemática de retropropagación y la aplicación del código es mucho más fácil de entender y de seguir para ver lo que está pasando. Los algoritmos selectivos son más fáciles de codificar y más difíciles de rastrear (lo que sucede y cómo evoluciona).

Parte principal del código:

enter image description here

Mis resultados: enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X