Muchos libros y tutoriales de redes neuronales dedican mucho tiempo al algoritmo de retropropagación, que es esencialmente una herramienta para calcular el gradiente.
Supongamos que estamos construyendo un modelo con ~ 10K parámetros / pesos. ¿Es posible ejecutar la optimización usando algunos algoritmos de optimización sin gradiente?
Creo que calcular el gradiente numérico sería demasiado lento, pero ¿qué tal otros métodos como Nelder-Mead, recocido simulado o un algoritmo genético?
Todos los algoritmos sufrirían de mínimos locales, ¿por qué obsesionarse con el gradiente?
Respuestas:
Los dos primeros algoritmos que mencionas (Nelder-Mead y el recocido simulado) generalmente se consideran bastante obsoletos en los círculos de optimización, ya que existen alternativas mucho mejores que son más confiables y menos costosas. Los algoritmos genéticos cubren una amplia gama, y algunos de estos pueden ser razonables.
Sin embargo, en la clase más amplia de algoritmos de optimización sin derivación (DFO), hay muchos que son significativamente mejores que estos "clásicos", ya que este ha sido un área activa de investigación en las últimas décadas. Entonces, ¿podrían algunos de estos enfoques más nuevos ser razonables para el aprendizaje profundo?
Un artículo relativamente reciente que compara el estado de la técnica es el siguiente:
Este es un buen artículo que tiene muchas ideas interesantes sobre técnicas recientes. Por ejemplo, los resultados muestran claramente que los mejores optimizadores locales están "basados en modelos", utilizando diferentes formas de programación cuadrática secuencial (SQP).
Sin embargo, como se señala en su resumen "Encontramos que la capacidad de todos estos solucionadores para obtener buenas soluciones disminuye al aumentar el tamaño del problema". Para dar una idea de los números, para todos los problemas, los solucionadores recibieron un presupuesto de 2500 evaluaciones de funciones, y los tamaños de los problemas tenían un máximo de ~ 300 parámetros para optimizar. Más allá de los parámetros O [10], muy pocos de estos optimizadores funcionaron muy bien, e incluso los mejores mostraron una disminución notable en el rendimiento a medida que aumentaba el tamaño del problema.
Entonces, para problemas dimensionales muy altos, los algoritmos DFO simplemente no son competitivos con los derivados. Para dar alguna perspectiva, la optimización basada en PDE (ecuación diferencial parcial) es otra área con problemas dimensionales muy altos (por ejemplo, varios parámetros para cada celda de una gran cuadrícula de elementos finitos 3D). En este ámbito, el " método adjunto " es uno de los métodos más utilizados. Este también es un optimizador de descenso de gradiente basado en la diferenciación automática de un código de modelo directo.
El más cercano a un optimizador DFO de alta dimensión es quizás el filtro Ensemble Kalman , utilizado para asimilar datos en simulaciones PDE complejas, por ejemplo, modelos meteorológicos. Curiosamente, este es esencialmente un enfoque SQP, pero con una interpretación bayesiana-gaussiana (por lo que el modelo cuadrático es positivo definido, es decir, sin puntos de silla). Pero no creo que el número de parámetros u observaciones en estas aplicaciones sea comparable a lo que se ve en el aprendizaje profundo.
Nota al margen (mínimos locales): por lo poco que he leído sobre el aprendizaje profundo, creo que el consenso es que son los puntos de silla de montar en lugar de los mínimos locales, que son los más problemáticos para espacios de parámetros NN de alta dimensión.
Por ejemplo, la revisión reciente en Nature dice que "Los resultados teóricos y empíricos recientes sugieren fuertemente que los mínimos locales no son un problema serio en general. En cambio, el paisaje está repleto de un gran número de puntos de silla combinatoriamente donde el gradiente es cero, y el la superficie se curva hacia arriba en la mayoría de las dimensiones y las curvas hacia abajo en el resto ".
Una preocupación relacionada es la optimización local versus la optimización global (por ejemplo, esta pregunta señalada en los comentarios). Si bien no hago aprendizaje profundo, en mi experiencia, el sobreajuste es definitivamente una preocupación válida. En mi opinión, los métodos de optimización global son más adecuados para problemas de diseño de ingeniería que no dependen en gran medida de los datos "naturales". En problemas de asimilación de datos, cualquier mínimo global actual podría cambiar fácilmente al agregar nuevos datos (advertencia: Mi experiencia se concentra en problemas de geociencia, donde los datos son generalmente "escasos" en relación con la capacidad del modelo).
Una perspectiva interesante es quizás
que proporciona argumentos semi-teóricos sobre por qué y cuándo la optimización aproximada puede ser preferible en la práctica.
Nota final (metaoptimización): si bien las técnicas basadas en gradientes parecen ser dominantes para las redes de capacitación, puede haber un papel para DFO en las tareas de metaoptimización asociadas.
Un ejemplo sería el ajuste de hiperparámetros. (Curiosamente, los optimizadores de DFO basados en modelos exitosos de Rios & Sahinidis podrían considerarse esencialmente como la resolución de una secuencia de problemas de diseño de experimentos / superficie de respuesta ).
Otro ejemplo podría ser el diseño de arquitecturas, en términos de la configuración de capas (por ejemplo, número, tipo, secuencia, nodos / capa). En este contexto de optimización discreta, los algoritmos de estilo genético pueden ser más apropiados. Tenga en cuenta que aquí estoy pensando en el caso en el que la conectividad está determinada implícitamente por estos factores (por ejemplo, capas completamente conectadas, capas convolucionales, etc.). En otras palabras, la conectividad está meta-optimizada explícitamente. (La fuerza de conexión recaería en el entrenamiento, donde, por ejemplo, la dispersión podría ser promovida por la regularización y / o las activaciones de ReLU ... sin embargo, estas opciones podrían optimizarse).O[N2] not L1
fuente
Hay todo tipo de algoritmos de búsqueda local que podría usar, la propagación hacia atrás acaba de demostrar ser la más eficiente para tareas más complejas en general ; Hay circunstancias en las que otras búsquedas locales son mejores.
Puede usar la escalada de inicio aleatorio en una red neuronal para encontrar una solución correcta rápidamente, pero no sería factible encontrar una solución casi óptima.
Wikipedia (lo sé, no es la mejor fuente, pero aún así) dice
fuente
En cuanto a los algoritmos genéticos, vería Backpropagation vs Genetic Algorithm for Neural Network training
El caso principal que haría para backprop es que es muy utilizado y ha tenido muchas mejoras excelentes . Estas imágenes realmente muestran algunos de los increíbles avances en la propagación inversa de vainilla.
No pensaría en backprop como un algoritmo, sino como una clase de algoritmos.
También me gustaría agregar que para las redes neuronales, los parámetros de 10k son pequeños beans. Otra búsqueda funcionaría muy bien, pero en una red profunda con millones de parámetros, no es práctico.
fuente
Bueno, las redes neuronales originales, antes de la revolución de propagación hacia atrás en los años 70, fueron "entrenadas" a mano. :)
Habiendo dicho eso:
Hay una "escuela" de aprendizaje automático llamada máquina de aprendizaje extremo que no utiliza la propagación hacia atrás.
Lo que hacen es crear una red neuronal con muchos, muchos, muchos nodos, con pesos aleatorios, y luego entrenar la última capa usando cuadrados mínimos (como una regresión lineal). Luego, podan la red neuronal después o aplican regularización en el último paso (como lazo) para evitar el sobreajuste. He visto esto aplicado a redes neuronales con una sola capa oculta solamente. No hay entrenamiento, por lo que es súper rápido. Hice algunas pruebas y, sorprendentemente, estas redes neuronales "entrenadas" de esta manera son bastante precisas.
La mayoría de las personas, al menos con las que trabajo, tratan a esta "escuela" de aprendizaje automático con burla y son un grupo marginado con sus propias conferencias, etc., pero en realidad creo que es algo ingenuo.
Otro punto: dentro de la retropropagación, hay alternativas que rara vez se mencionan, como la retroprogación resistente , que se implementan en R en el
neuralnet
paquete y que solo utilizan la magnitud de la derivada. El algoritmo está hecho de condiciones if-else en lugar de álgebra lineal. Tienen algunas ventajas sobre la retropropagación tradicional, es decir, no necesita normalizar sus datos porque no sufren el problema del gradiente de fuga .fuente
Puede usar prácticamente cualquier algoritmo de optimización numérica para optimizar los pesos de una red neuronal. También puede utilizar algoritmos mixtos de optimización continua-discreta para optimizar no solo los pesos, sino también el diseño en sí (número de capas, número de neuronas en cada capa, incluso el tipo de neurona). Sin embargo, no existe un algoritmo de optimización que no sufra "maldición de dimensionalidad" y óptimas locales de alguna manera
fuente
También puede usar otra red para aconsejar cómo deben actualizarse los parámetros.
Hay las interfaces neuronales desacopladas (DNI) de Google Deepmind. En lugar de utilizar la propagación hacia atrás, utiliza otro conjunto de redes neuronales para predecir cómo actualizar los parámetros, lo que permite la actualización de parámetros paralelos y asíncronos.
El documento muestra que el DNI aumenta la velocidad de entrenamiento y la capacidad del modelo de los RNN, y ofrece resultados comparables tanto para RNN como para FFNN en diversas tareas.
El documento también enumeró y comparó muchos otros métodos de no propagación hacia atrás
fuente
Mientras esta sea una pregunta de la comunidad, pensé que agregaría otra respuesta. "Propagación hacia atrás" es simplemente el algoritmo de descenso de gradiente. Implica utilizar solo la primera derivada de la función para la que se está tratando de encontrar los mínimos o máximos locales. Hay otro método llamado método de Newton o Newton-Raphson que consiste en calcular el hessiano y, por lo tanto, utiliza segundas derivadas. Puede tener éxito en los casos en que falla el descenso de gradiente. Otros me dicen que tienen más conocimiento que yo, y sí, esta es una apelación de segunda mano a la autoridad, que no se usa en redes neuronales porque calcular todas las segundas derivadas es demasiado costoso en términos de cálculo.
fuente