Si bien el diseño del modelo y los datos de entrenamiento son ingredientes clave para el éxito de una red neuronal profunda (DNN), el método de optimización específico utilizado para actualizar los parámetros del modelo (pesos) se discute con menos frecuencia. El entrenamiento de DNN implica minimizar una función de pérdida que mide la discrepancia entre las etiquetas de verdad del terreno y las predicciones del modelo. El entrenamiento se realiza mediante retropropagación, que ajusta los pesos del modelo a través de pasos de descenso de gradiente. El descenso de gradiente, a su vez, actualiza los pesos utilizando el gradiente (es decir, la derivada) de la pérdida con respecto a los pesos.
La actualización de peso más simple corresponde al descenso de gradiente estocástico, que mueve los pesos en dirección negativa con respecto a los gradientes en cada paso (con un tamaño de paso apropiado, también conocido como tasa de aprendizaje). Los métodos de optimización más avanzados modifican la dirección del gradiente negativo antes de actualizar los pesos, usando información de los pasos anteriores y/o las propiedades locales (por ejemplo, la información de curvatura) de la función de pérdida alrededor de los pesos actuales. Por ejemplo, un optimizador Momentum fomenta el movimiento a lo largo de la dirección promedio de las actualizaciones anteriores, y el optimizador AdaGrad escala cada coordenada en función de los gradientes anteriores. Estos optimizadores se conocen comúnmente como métodos de primer orden ya que generalmente solo modifican la dirección de actualización utilizando información de la derivada de primer orden (es decir, el gradiente). Más importante aún, los componentes de los parámetros de peso se tratan de forma independiente.
Las optimizaciones más avanzadas, como Shampoo y K-FAC, capturan las correlaciones entre los gradientes de los parámetros y se ha demostrado que mejoran la convergencia, reducen el número de iteraciones y mejoran la calidad de la solución. Estos métodos recopilan información sobre los cambios locales en las derivadas de la pérdida, es decir, cambios en los gradientes. Usando esta información adicional, los optimizadores de orden superior pueden descubrir direcciones de actualización mucho más eficientes para entrenar modelos al considerar las correlaciones entre diferentes grupos de parámetros. Por otro lado, calcular las direcciones de actualización de orden superior es más intensivo desde el punto de vista computacional que las actualizaciones de primer orden. La operación utiliza más memoria para almacenar estadísticas e implica la inversión de la matriz, lo que dificulta la aplicabilidad de los optimizadores de orden superior en la práctica.
En LocoProp: Enhancing BackProp via Local Loss Optimization, presentamos un nuevo marco para entrenar modelos DNN. Nuestro nuevo marco LocoProp, conceptualiza las redes neuronales como una estructura modular de capas. En general, cada capa de una red neuronal aplica una transformación lineal a sus entradas, seguida de una función de activación no lineal. En el nuevo diseño, a cada capa se le asigna su propio regulador de peso, objetivo de salida y función de pérdida. La función de pérdida de cada capa está diseñada para esto. adaptar la función de activación de la capa. Usando esta formulación, el entrenamiento minimiza las pérdidas locales para un mini-lote de ejemplos dado, iterativamente y en paralelo a través de las capas. Nuestro método realiza múltiples actualizaciones locales por lote de muestras utilizando un optimizador de primer orden (como RMSProp), evitando operaciones computacionalmente intensivas como las inversiones de matriz requeridas para optimizadores de orden superior. Sin embargo, mostramos que las actualizaciones locales combinadas se parecen más a una actualización de orden superior. Empíricamente, mostramos que LocoProp supera a los métodos de primer orden en un punto de referencia de codificador automático profundo y es comparable a los optimizadores de orden superior como Shampoo y K-FAC sin los altos requisitos de memoria y computación.
método
Las redes neuronales generalmente se ven como funciones compuestas que transforman las entradas del modelo en representaciones de salida capa por capa. LocoProp adopta esta vista al descomponer la red en capas. En particular, en lugar de actualizar los pesos de las capas para minimizar la función de pérdida de salida, LocoProp aplica funciones de pérdida local predefinidas específicas para cada capa. Para una capa determinada, la función de pérdida se elige para que coincida con la función de activación, p. Licenciado en Letras Tanh La pérdida se seleccionaría para una capa con una Tanh Activación. Cada pérdida capa por capa mide la discrepancia entre la salida de la capa (para un mini-stack de ejemplo dado) y algún término de una salida objetivo para esta capa. Además, un término de regularización garantiza que los pesos actualizados no se desvíen demasiado de los valores actuales. La función de pérdida capa por capa combinada (con un objetivo local) más el regularizador se utiliza como la nueva función objetivo para cada capa.
![]() |
Similar a la retropropagación, LocoProp aplica un pase hacia adelante para calcular las activaciones. Al atravesar hacia atrás, LocoProp establece «objetivos» por neurona para cada capa. Finalmente, LocoProp divide el entrenamiento del modelo en problemas independientes entre capas, lo que permite aplicar múltiples actualizaciones locales en paralelo a los pesos de cada capa. |
Quizás la función de pérdida más simple imaginable para una capa es la pérdida al cuadrado. Si bien la pérdida al cuadrado es una elección válida de una función de pérdida, LocoProp tiene en cuenta la posible no linealidad de las funciones de activación de las capas y aplica pérdidas capa por capa adaptadas a la función de activación de cada capa. Esto permite que el modelo enfatice las regiones de la entrada que son más importantes para la predicción del modelo, al mismo tiempo que resta énfasis a las regiones que no afectan tanto la salida. A continuación, mostramos ejemplos de pérdidas personalizadas para las funciones de activación de tanh y ReLU.
![]() |
Funciones de pérdida dadas por (Izquierda) tanh y (A la derecha) Funciones de activación de ReLU. Cualquier pérdida es más sensible a las regiones que afectan la predicción de salida. Por ejemplo, la pérdida de ReLU es cero siempre que tanto la predicción (â) como el objetivo (a) sean negativos. Esto se debe a que la función ReLU aplicada a cualquier número negativo es igual a cero. |
Después de formar el objetivo en cada sector, LocoProp actualiza los pesos de los sectores aplicando repetidamente pasos de descenso de gradiente a su objetivo. La actualización suele utilizar un optimizador de primer orden (como RMSProp). Sin embargo, mostramos que el comportamiento general de las actualizaciones combinadas es muy similar al de las actualizaciones de orden superior (que se muestra a continuación). Por lo tanto, LocoProp proporciona un rendimiento de entrenamiento cercano al de los optimizadores de orden superior, sin la alta memoria o la sobrecarga computacional asociada con los métodos de orden superior como B. se requieren operaciones de matriz inversa. Mostramos que LocoProp es un marco flexible que permite la recuperación de algoritmos conocidos y permite la construcción de nuevos algoritmos mediante diferentes opciones de pérdidas, objetivos y regularizadores. La vista de red neuronal capa por capa de LocoProp también permite la actualización paralela de pesos entre capas.
experimentos
En nuestro artículo, describimos experimentos sobre el modelo de codificador automático profundo, que es una línea de base comúnmente utilizada para evaluar el rendimiento de los algoritmos de optimización. Realizamos ajustes extensos en varios optimizadores de primer orden de uso común, incluidos SGD, SGD con Momentum, AdaGrad, RMSProp y Adam, así como los optimizadores de orden superior Shampoo y K-FAC, y comparamos los resultados con LocoProp. Nuestros resultados muestran que el método LocoProp funciona significativamente mejor que los optimizadores de primer orden y es comparable a los de orden superior, mientras que es significativamente más rápido cuando se ejecuta en una sola GPU.
![]() |
Pérdida de tren vs. número de épocas (Izquierda) y la hora del reloj de pared, es decir, el tiempo real que transcurre durante el entrenamiento, (A la derecha) para RMSProp, Shampoo, K-FAC y LocoProp en el modelo Deep Autoencoder. |
Resumen y direcciones futuras
Presentamos un nuevo marco llamado LocoProp para optimizar las redes neuronales profundas de manera más eficiente. LocoProp descompone las redes neuronales en capas separadas con su propio regularizador, objetivo de salida y función de pérdida, y aplica actualizaciones locales en paralelo para minimizar los objetivos locales. Si bien las actualizaciones de primer orden se utilizan para los problemas de optimización locales, las actualizaciones combinadas se parecen mucho a las direcciones de actualización de orden superior, tanto teórica como empíricamente.
LocoProp ofrece flexibilidad en la elección de los regularizadores, objetivos y funciones de pérdida capa por capa. Por lo tanto, permite que se desarrollen nuevas reglas de actualización basadas en estas elecciones. Nuestro código para LocoProp está disponible en línea en GitHub. Actualmente estamos trabajando en la transferencia de ideas inducidas por LocoProp a modelos a una escala mucho mayor. ¡Manténganse al tanto!
Gracias
Agradecemos a nuestro coautor Manfred K. Warmuth por sus contribuciones críticas y visiones inspiradoras. Nos gustaría agradecer a Sameer Agarwal por las discusiones sobre este trabajo desde una perspectiva de función compuesta, a Vineet Gupta por las discusiones y el desarrollo de Shampoo, a Zachary Nado en K-FAC, a Tom Small por desarrollar la animación utilizada en esta publicación de blog y, finalmente, a Yonghui Wu. y Zoubin Ghahramani por proporcionar un entorno de investigación enriquecedor en el equipo de Google Brain.