Poda de redes neuronales con optimización combinatoria – Google Research Blog

Las redes neuronales modernas han logrado un rendimiento impresionante en una variedad de aplicaciones, como lenguaje, razonamiento matemáticoy visión. Sin embargo, estas redes a menudo usan arquitecturas grandes que requieren muchos recursos computacionales. Esto puede hacer que sea poco práctico ofrecer dichos modelos a los usuarios, especialmente en entornos con recursos limitados, como dispositivos portátiles y teléfonos inteligentes. A enfoque ampliamente utilizado mitigar los costos de inferencia de las redes preentrenadas es podarlas eliminando algunos de sus pesos, de una manera que no afecte significativamente la utilidad. En las redes neuronales estándar, cada peso define una conexión entre dos neuronas. Entonces, después de que se eliminen los pesos, la entrada se propagará a través de un conjunto más pequeño de conexiones y, por lo tanto, requiere menos recursos computacionales.

Red original frente a una red podada.

Los métodos de poda se pueden aplicar en diferentes etapas del proceso de entrenamiento de la red: después, durante o antes del entrenamiento (es decir, inmediatamente después de la inicialización del peso). En esta publicación, nos enfocamos en la configuración posterior al entrenamiento: dada una red preentrenada, ¿cómo podemos determinar qué pesos deben eliminarse? Un método popular es poda de magnitud, que elimina pesos con la magnitud más pequeña. Si bien es eficiente, este método no considera directamente el efecto de eliminar pesos en el rendimiento de la red. Otro paradigma popular es poda basada en optimización, que elimina pesos en función de cuánto afecta su eliminación a la función de pérdida. Aunque conceptualmente atractivos, la mayoría de los enfoques existentes basados ​​en la optimización parecen enfrentar una seria compensación entre el rendimiento y los requisitos computacionales. Métodos que hacen aproximaciones crudas (p. ej., asumiendo una diagonal matriz Hessiana) puede escalar bien, pero tiene un rendimiento relativamente bajo. Por otro lado, mientras que los métodos que hacen menos aproximaciones tienden a funcionar mejor, parecen ser mucho menos escalables.

En “Rápido como CHITA: poda de redes neuronales con optimización combinatoria”, presentado en ICML 2023, describimos cómo desarrollamos un enfoque basado en la optimización para podar redes neuronales previamente entrenadas a escala. CHITA (que significa “Algoritmo de umbral iterativo sin hessiana combinatoria”) supera los métodos de poda existentes en términos de escalabilidad y compensaciones de rendimiento, y lo hace aprovechando los avances de varios campos, que incluyen estadísticas de alta dimensión, optimización combinatoriay poda de redes neuronales. Por ejemplo, CHITA puede ser de 20 a 1000 veces más rápido que los métodos de poda más modernos. ResNet y mejora la precisión en más de un 10 % en muchos entornos.

Resumen de contribuciones

CHITA tiene dos mejoras técnicas notables sobre los métodos populares:

  • Uso eficiente de la información de segundo orden: Métodos de poda que utilizan información de segundo orden (es decir, relativa a segundas derivadas) lograr el estado del arte en muchos entornos. En la literatura, esta información se suele utilizar calculando la matriz hessiana o su inversa, operación que es muy difícil de escalar porque el tamaño de la hessiana es cuadrático con respecto al número de pesos. A través de una reformulación cuidadosa, CHITA utiliza información de segundo orden sin tener que calcular o almacenar la matriz hessiana explícitamente, lo que permite una mayor escalabilidad.
  • optimización combinatoria: Los métodos populares basados ​​en la optimización utilizan una técnica de optimización simple que elimina los pesos de forma aislada, es decir, cuando deciden eliminar un determinado peso, no tienen en cuenta si se han eliminado otros pesos. Esto podría conducir a la poda de pesos importantes porque los pesos considerados sin importancia de forma aislada pueden volverse importantes cuando se recortan otros pesos. CHITA evita este problema mediante el uso de un algoritmo de optimización combinatoria más avanzado que tiene en cuenta cómo la poda de un peso afecta a los demás.

En las secciones a continuación, discutimos la formulación y los algoritmos de poda de CHITA.

Una formulación de poda fácil de calcular

Hay muchos posibles candidatos de poda, que se obtienen conservando solo un subconjunto de los pesos de la red original. Dejar k ser un parámetro especificado por el usuario que denota el número de pesos a retener. La poda se puede formular naturalmente como una selección del mejor subconjunto (BSS): entre todos los posibles candidatos de poda (es decir, subconjuntos de pesos) con solo k pesos retenidos, se selecciona el candidato que tiene la menor pérdida.

La poda como problema BSS: entre todos los posibles candidatos a la poda con el mismo número total de pesos, el mejor candidato se define como el que tiene la menor pérdida. Esta ilustración muestra cuatro candidatos, pero este número suele ser mucho mayor.

Resolver el problema de poda de BSS en la función de pérdida original es generalmente intratable desde el punto de vista computacional. Así, al igual que en trabajos anteriores, como DAB y OBSaproximamos la pérdida con un función cuadrática mediante el uso de un segundo orden Serie Taylordonde la arpillera se estima con la empírica Matriz de información de Fisher. Si bien los gradientes se pueden calcular normalmente de manera eficiente, calcular y almacenar la matriz hessiana es prohibitivamente costoso debido a su gran tamaño. En la literatura, es común lidiar con este desafío haciendo suposiciones restrictivas sobre el hessiano (p. ej., matriz diagonal) y también sobre el algoritmo (p. ej., poda de pesos de forma aislada).

CHITA usa una reformulación eficiente del problema de poda (BSS usando la pérdida cuadrática) que evita calcular explícitamente la matriz hessiana, mientras sigue usando toda la información de esta matriz. Esto es posible gracias a la explotación de la bajarango estructura de la matriz de información empírica de Fisher. Esta reformulación puede verse como una escasa regresión lineal problema, donde cada coeficiente de regresión corresponde a un cierto peso en la red neuronal. Después de obtener una solución a este problema de regresión, los coeficientes puestos a cero corresponderán a pesos que deben ser podados. Nuestra matriz de datos de regresión es (norte X pag), dónde norte es el tamaño del lote (submuestra) y pag es el número de pesos en la red original. Típicamente norte << pagpor lo que almacenar y operar con esta matriz de datos es mucho más escalable que los enfoques de poda comunes que operan con (pag X pag) arpillera.

CHITA reformula la aproximación de pérdida cuadrática, que requiere una matriz hessiana costosa, como un problema de regresión lineal (LR). La matriz de datos del LR es lineal en paglo que hace que la reformulación sea más escalable que la aproximación cuadrática original.

Algoritmos de optimización escalables

CHITA reduce la poda a un problema de regresión lineal bajo la siguiente restricción de escasez: como máximo k los coeficientes de regresión pueden ser distintos de cero. Para obtener una solución a este problema, consideramos una modificación del conocido Umbral duro iterativo (IHT) algoritmo. IHT realiza descenso de gradiente donde después de cada actualización se realiza el siguiente paso de posprocesamiento: todos los coeficientes de regresión fuera del Top-k (es decir, el k coeficientes con la mayor magnitud) se fijan en cero. IHT generalmente brinda una buena solución al problema, y ​​lo hace de manera iterativa explorando diferentes candidatos de poda y optimizando conjuntamente los pesos.

Debido a la escala del problema, IHT estándar con constante tasa de aprendizaje puede sufrir una convergencia muy lenta. Para una convergencia más rápida, desarrollamos un nuevo búsqueda de línea método que explota la estructura del problema para encontrar una tasa de aprendizaje adecuada, es decir, una que conduce a una disminución suficientemente grande de la pérdida. También empleamos varios esquemas computacionales para mejorar la eficiencia de CHITA y la calidad de la aproximación de segundo orden, lo que llevó a una versión mejorada que llamamos CHITA++.

Experimentos

Comparamos el tiempo de ejecución y la precisión de CHITA con varios métodos de poda de última generación que utilizan diferentes arquitecturas, que incluyen ResNet y MobileNet.

tiempo de ejecución: CHITA es mucho más escalable que los métodos comparables que realizan la optimización conjunta (a diferencia de los pesos de poda de forma aislada). Por ejemplo, la aceleración de CHITA puede alcanzar más de 1000x al eliminar ResNet.

Precisión pospoda: A continuación, comparamos el desempeño de CHITA y CHITA++ con poda de magnitud (MP), pescador de madera (WF), y Cirujano Cerebral Combinatorio (CBS), para podar el 70% de los pesos del modelo. En general, vemos buenas mejoras de CHITA y CHITA++.

Precisión posterior a la poda de varios métodos en ResNet20. Los resultados se reportan para podar el 70% de los pesos del modelo.
Precisión posterior a la poda de varios métodos en MobileNet. Los resultados se reportan para podar el 70% de los pesos del modelo.

A continuación, informamos los resultados de la poda de una red más grande: ResNet50 (en esta red, algunos de los métodos enumerados en la figura de ResNet20 no se pudieron escalar). Aquí comparamos con la poda de magnitud y M-FAC. La siguiente figura muestra que CHITA logra una mejor precisión de prueba para una amplia gama de niveles de escasez.

Exactitud de las pruebas de redes podadas, obtenidas por diferentes métodos.

Conclusión, limitaciones y trabajo futuro

Presentamos CHITA, un enfoque basado en la optimización para podar redes neuronales preentrenadas. CHITA ofrece escalabilidad y rendimiento competitivo mediante el uso eficiente de información de segundo orden y aprovechando ideas de optimización combinatoria y estadísticas de alta dimensión.

CHITA está diseñado para poda no estructurada en el que se puede quitar cualquier peso. En teoría, la poda no estructurada puede reducir significativamente los requisitos computacionales. Sin embargo, realizar estas reducciones en la práctica requiere software especial (y posiblemente hardware) que admita cálculos escasos. A diferencia de, poda estructurada, que elimina estructuras completas como las neuronas, puede ofrecer mejoras que son más fáciles de lograr en software y hardware de propósito general. Sería interesante extender CHITA a la poda estructurada.

Agradecimientos

Este trabajo es parte de una colaboración de investigación entre Google y el MIT. Gracias a Rahul Mazumder, Natalia Ponomareva, Wenyu Chen, Xiang Meng, Zhe Zhao y Sergei Vassilvitskii por su ayuda en la preparación de esta publicación y el documento. También gracias a John Guiyard por crear los gráficos en esta publicación.