He leído algunos documentos que discuten los pros y los contras de cada método, algunos argumentan que GA no mejora en encontrar la solución óptima, mientras que otros muestran que es más eficaz. Parece que GA generalmente se prefiere en la literatura (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 usar solo la propagación hacia atrás?
¿Hay alguna regla general cuando usar uno u otro? ¿Tal vez depende del tipo de NN o existe alguna solución de vanguardia que generalmente supera a otras?
Si es posible, estoy buscando respuestas generales: es decir, "si el NN es enorme, GA es mejor" o "GA siempre es mejor pero tiene problemas de rendimiento computacional", etc.
Uno de los problemas clave con las redes neuronales es el sobreajuste, lo que significa que los algoritmos que se esfuerzan mucho por encontrar una red que minimice algunos criterios basados en una muestra finita de datos terminarán con una red que funciona muy bien para esa muestra en particular. de datos, pero que tendrán poca generalización. Soy bastante cauteloso de usar GA para diseñar redes neuronales por este motivo, especialmente si optimizan la arquitectura al mismo tiempo que optimizan los pesos. En general, he descubierto que las redes de entrenamiento (con regularización) a partir de un número (digamos 20) de vectores de peso iniciales aleatorios y luego formar un conjunto de todas las redes resultantes es generalmente un enfoque tan bueno como cualquier otro.
Esencialmente, la optimización es la raíz de todo mal en el aprendizaje automático, cuanto más lo hagas, más probabilidades tendrás de terminar ajustando demasiado los datos.
fuente
Cada vez que maneja grandes cantidades de datos y desea resolver una tarea de aprendizaje supervisada con una red neuronal de retroalimentación, las soluciones basadas en la propagación hacia atrás son mucho más factibles. La razón de esto es que, para una red neuronal compleja, el número de parámetros libres es muy alto. Un proyecto de la industria en el que estoy trabajando actualmente involucra una red neuronal de retroalimentación con aproximadamente 1000 entradas, dos capas ocultas @ 384 neuronas cada una y 60 salidas. Esto lleva a 1000 * 384 + 384 * 384 + 384 * 60 = 554496 parámetros de peso que deben optimizarse. Usar un enfoque de GA aquí sería terriblemente lento.
fuente
La segunda respuesta es incorrecta. El sobreajuste no es causado por la optimización. El sobreajuste ocurre cuando su modelo es demasiado complicado y puede ajustarse a todos los puntos de datos sin conocer la regla real que los creó (es decir, simplemente memorizarlos, en el caso extremo). Hay muchas formas de evitar el sobreajuste, como elegir modelos más simples, deserción, dropconnect, pérdida de peso y simplemente usando más datos. El objetivo debe ser optimizar su red y hacerla lo más precisa posible, teniendo en cuenta esas restricciones.
Para responder a la pregunta, se supone que el backprop es mucho más rápido que la optimización estocástica (algoritmos genéticos y similares). Supongo que esto se debe a que aprovecha lo que se suponía que era la salida real , ajusta los pesos en la dirección correcta en función de eso , donde la optimización estocástica intenta cambios completamente aleatorios e ignora esa información.
Sin embargo, al explorar un área más grande, a los GA probablemente les irá mejor a largo plazo al evitar las opciones locales, solo tomará más tiempo entrenar.
Tengo curiosidad por saber cuánto más lento son los GA que el backprop, y si alguien sabe de algoritmos híbridos (la búsqueda de dispersión parece ser ideal para esto).
fuente
En mi opinión, la diferencia entre GA y retropropagación es que GA se basa en números aleatorios y que la retropropagación se basa en un algoritmo estático como el descenso de gradiente estocástico. El hecho de que GA se base en números aleatorios y se sume a esa mutación significa que probablemente evitará quedar atrapado en un mínimo local. Pero luego, el hecho de que GA se base en números aleatorios significa que es bastante probable que durante 2 veces diferentes ejecutes el aprendizaje en la misma red, puede llegar a una conclusión diferente, es decir, un conjunto diferente de pesos
fuente