Backpropagation vs Algoritmo genético para el entrenamiento de redes neuronales

34

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.

sashkello
fuente

Respuestas:

23

Si observa detenidamente la literatura científica, encontrará resultados contrastantes. Obviamente, en algunos casos, GA (y más en general, Algoritmos evolutivos) puede ayudarlo a encontrar un diseño NN óptimo, pero normalmente tienen tantos inconvenientes (ajuste de parámetros de algoritmos, complejidad computacional, etc.) y su uso no es factible para aplicaciones mundiales. Por supuesto, puede encontrar un conjunto de problemas en los que GA / EA siempre está mejor que la propagación hacia atrás. Dado que encontrar un diseño NN óptimo es un problema complejo de optimización multimodal, los GA / EA pueden ayudar (como metaheurística) a mejorar los resultados obtenidos con algoritmos "tradicionales", por ejemplo, usar GA / EA para encontrar solo la configuración de pesos inicial o ayudar a los algoritmos tradicionales a escapar de los mínimos locales (si está interesado, escribí un artículo sobre este tema).

Trabajé mucho en este campo y puedo decirles que hay muchos trabajos científicos sobre GA / EA aplicados a NN porque son (o mejor, solían ser) un campo de investigación emergente.

Matteo De Felice
fuente
2
Esto es algo que también se me ocurrió recientemente: primero encuentre la solución 'buena' y luego la mejore aún más con GA. No solo aplicable a las NN, sino a la optimización en general ...
sashkello
1
Estoy confundido por qué son mutuamente excluyentes. Pensé que GA debía aprender la estructura; La propagación hacia atrás solo puede aprender los pesos
pete
8

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.

Dikran Marsupial
fuente
Dikran, aunque GA realiza una selección natural pero no ignora la información como mencionó, solo se asegura de que si la solución seleccionada resuelve su problema, si no, descubre por qué y actualiza el agoritmo que forma la base de su dinamismo hasta la red. convergen en una o dos mejores soluciones. Espero que tengas ese rigor?
converger a la mejor solución evaluada sobre una muestra finita de datos es exactamente lo que causa el sobreajuste. Para evitar el sobreajuste, desea converger en una solución que no sea la mejor (por ejemplo, detenerse temprano en el entrenamiento de redes neuronales). Los GA no son mejores que cualquier otra forma de optimización en el ajuste de redes neuronales, debe evitar la optimización excesiva del criterio de entrenamiento.
Dikran Marsupial
5

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.

Schreon
fuente
Entiendo que GA está diseñado para abordar problemas que son más difíciles de resolver con enfoques estándar. ¿No debería funcionar mejor exactamente en una situación que describiste?
sashkello
2
Pensé que se suponía que GA se usaría para descubrir qué estructura es, por ejemplo, cuántas capas ocultas y cómo están conectadas. La retropropagación solo puede determinar los pesos
pete
2

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).

Houshalter
fuente
1
No estoy de acuerdo con tu primer párrafo. El sobreajuste se evita principalmente a través de enfoques de regularización en el problema de capacitación . Si comienza a realizar una metaoptimización, es decir, resolver muchos problemas de capacitación (por ejemplo, ajustar los parámetros del kernel, las arquitecturas de red, ...), cuidar el sobreajuste se vuelve mucho más difícil y ciertamente ya no está garantizado implícitamente.
Marc Claesen
Si el sobreajuste no fuera causado por la optimización, la detención temprana no sería un remedio efectivo para el sobreajuste.
Dikran Marsupial
1

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

usuario4433437
fuente
Solo comentando, también usamos init aleatorio. para los pesos en respaldo. Si usamos la misma semilla durante la inicialización, dará lugar a la misma solución, pero si no lo hace, probablemente no lo hará. Entonces, el back-prop también depende de una entrada aleatoria. Cuando arregle la semilla, también tendrá el mismo resultado en el algoritmo genético, ya que usará la misma secuencia. de números de nuevo.
Gunes