miniaturadeimagen|240px|Un Bloque Residual en una Red Residual profunda. Aquí la conexión residual se salta dos capas. Una red neuronal residual (también conocida como red residual, ResNet) es un modelo de aprendizaje profundo en el que las capas de pesos aprenden funciones residuales con referencia a las entradas de las capas. Una red residual es una red con conexiones de salto que realizan mapeos de identidad, fusionadas con las salidas de las capas por adición. Se comporta como una Highway Network (Autopista de la información) cuyas puertas se abren mediante pesos de sesgo fuertemente positivo. Esto permite que los modelos de aprendizaje profundo con decenas o cientos de capas se entrenen fácilmente y se aproximen a una mayor precisión al profundizar. Las conexiones de salto de identidad, a menudo denominadas "conexiones residuales", también se utilizan en las redes LSTM (memoria a corto-largo plazo) de 1997, los modelos de transformador (por ejemplo, BERT, modelos GPT como ChatGPT), el sistema AlphaGo Zero, el sistema AlphaStar y el sistema AlphaFold.
Las redes residuales fueron desarrolladas por Kaiming He, Xiangyu Zhang, Shaoqing Ren y Jian Sun, que ganaron el concurso ImageNet 2015.
Formulación
Antecedentes El modelo AlexNet desarrollado en 2012 para ImageNet era una red neuronal convolucional de 8 capas. Las redes neuronales desarrolladas en 2014 por el Visual Geometry Group (VGG) de la Universidad de Oxford se aproximaron a una profundidad de 19 capas apilando capas convolucionales de 3 en 3. Pero apilar más capas provocó una rápida reducción de la precisión del entrenamiento, lo que se conoce como el problema de la "degradación".
Una red más profunda no debería producir una mayor pérdida de entrenamiento que su homóloga menos profunda, si esta red más profunda puede construirse mediante su homóloga menos profunda apilada con capas adicionales. Si las capas adicionales pueden establecerse como mapeos de identidad, la red más profunda representaría la misma función que la homóloga menos profunda. La hipótesis es que el optimizador no es capaz de aproximarse a los mapeos de identidad para las capas parametrizadas.
Aprendizaje residual En un modelo de red neuronal multicapa, considere una subred con un número determinado (por ejemplo, 2 o 3) de capas apiladas. Denotemos la función subyacente realizada por esta subred como , donde es la entrada a esta subred. La idea de "aprendizaje residual" re-parametriza esta subred y deja que las capas de parámetros representen una función residual . El resultado de esta subred se representa como:
Este es también el principio de la computación celular LSTM de 1997 , que se convierte en durante la retropropagación en el tiempo.
La función suele representarse mediante multiplicación de matrices entrelazada con la función de activación y operaciones de normalización (por ejemplo, normalización por lotes o normalización por capas).
Esta subred se denomina "bloque residual". Una red residual profunda se construye apilando una serie de bloques residuales.
El funcionamiento de "" en "" se aborda mediante una conexión de salto que realiza el mapeo de identidad y conecta la entrada de un bloque residual con su salida. Esta conexión suele denominarse "conexión residual" en trabajos posteriores.
Propagación de la señal La introducción de mapeos de identidad facilita la propagación de la señal tanto en los trayectos hacia delante como hacia atrás.
Propagación hacia delante Si la salida del bloque residual -ésimo es la entrada al bloque residual -ésimo (es decir, suponiendo que no hay función de activación entre bloques), tenemos:
Aplicando esta formulación de forma recursiva, por ejemplo:
, tenemos:
Donde es el índice de cualquier bloque residual posterior (por ejemplo, el último bloque) y es el índice de cualquier bloque anterior. Esta formulación sugiere que siempre hay una señal que se envía directamente desde un bloque menos profundo a un bloque más profundo .
Propagación hacia atrás La formulación del aprendizaje residual ofrece la ventaja añadida de resolver en cierta medida el problema del gradiente de fuga. Sin embargo, es crucial reconocer que el problema del gradiente de fuga no es la causa principal del problema de degradación, puesto que ya se ha abordado mediante el uso de capas de normalización. Tomando la derivada con respecto a de acuerdo con la propagación hacia adelante anterior, tenemos:
Aquí es la función de pérdida que debe minimizarse.
Esta formulación sugiere que el cálculo del gradiente de una capa menos profunda siempre tiene un término que se añade directamente. Aunque los gradientes del son pequeños, el gradiente total no desaparece gracias al término añadido .
Relación con las ecuaciones diferenciales
La actualización de una red residual puede expresarse esquemáticamente como
donde representa el estado de la red en la capa y es la transformación residual parametrizada. Reordenando la expresión,
se obtiene una forma equivalente a una discretización mediante el método de Euler de la ecuación diferencial ordinaria
Esta interpretación relaciona las redes residuales con los sistemas dinámicos y dio lugar a arquitecturas de profundidad continua, como las ecuaciones diferenciales neuronales. En estos modelos, la sucesión finita de bloques residuales se sustituye por la integración numérica de una dinámica continua parametrizada por una red neuronal.
La correspondencia es una interpretación matemática y no implica que cualquier red residual sea exactamente equivalente a una ecuación diferencial: una ResNet mantiene una arquitectura discreta, mientras que una neural ODE define explícitamente una evolución continua que debe resolverse mediante un integrador numérico.
Variantes de bloques residuales miniaturadeimagen|Dos variantes de bloques convolucionales residuales Izquierda: un bloque básico con dos capas convolucionales de 3x3. Derecha: un bloque de cuello de botella que tiene una capa convolucional 1x1 para reducir la dimensión (por ejemplo, 1/4), una capa convolucional 3x3 y otra capa convolucional 1x1 para restaurar la dimensión.
Bloque básico Un bloque básico es el bloque de construcción más simple estudiado en la ResNet original. Este bloque consta de dos capas convolucionales secuenciales de 3x3 y una conexión residual. Las dimensiones de entrada y salida de ambas capas son iguales.
Bloque cuello de botella Un bloque cuello de botella consta de tres capas convolucionales secuenciales y una conexión residual. La primera capa de este bloque es una convolución 1x1 para reducir la dimensión, por ejemplo, a 1/4 de la dimensión de entrada; la segunda capa realiza una convolución 3x3; la última capa es otra convolución 1x1 para restaurar la dimensión. Los modelos de ResNet-50, ResNet-101 y ResNet-152 se basan todos en bloques de cuello de botella.
Bloque de preactivación El bloque residual de preactivación aplica las funciones de activación (por ejemplo, no linealidad y normalización) antes de aplicar la función residual . Formalmente, el cálculo de un bloque residual de preactivación puede escribirse como:
Donde puede ser cualquier operación de activación no lineal (por ejemplo, ReLU) o de normalización (por ejemplo, LayerNorm). Este diseño reduce el número de mapeos no identitarios entre bloques residuales. Este diseño se utilizó para entrenar modelos con 200 a más de 1000 capas.
Desde GPT-2, los bloques transformadores se han implementado dominantemente como bloques de pre-activación. Esto se denomina a menudo "prenormalización" en la literatura de los modelos transformador.
Bloque transformador miniaturadeimagen|La arquitectura de Transformador utilizada en el modelo GPT original. Un Bloque Transformador consta de dos Bloques Residuales: un Bloque de Atención Multicabezal y un Bloque Perceptrón Multicapa (MLP) feed-forward. Un bloque transformador es una pila de dos bloques residuales. Cada bloque residual tiene una conexión residual.
El primer bloque residual es un bloque de atención multicabeza, que realiza un cálculo de (auto)atención seguido de una proyección lineal.
El segundo bloque residual es un bloque de perceptrón multicapa (MLP) feed-forward (alimentación anticipada). Este bloque es análogo a un bloque de cuello de botella "inverso": tiene una capa de proyección lineal (que equivale a una convolución 1x1 en el contexto de las redes neuronales convolucionales) que aumenta la dimensión, y otra proyección lineal que reduce la dimensión.
Un bloque transformador tiene una profundidad de 4 capas (proyecciones lineales). El modelo GPT-3 tiene 96 Bloques transformadores (en la literatura sobre transformadores, un bloque de transformador se denomina a menudo "Transformer Layer" (capa de transformador)). Este modelo tiene una profundidad de unas 400 capas de proyección, incluidas 96x4 capas en bloques transformadores y algunas capas adicionales para la incrustación de entrada y la predicción de salida.
Los modelos transformador muy profundos no pueden entrenarse con éxito sin conexiones residuales.
Trabajos relacionados En el libro escrito por Frank Rosenblatt, publicado en 1961, se presentaba un modelo de perceptrón multicapa (MLP) de tres capas con conexiones de salto (Capítulo 15, p313 en). El modelo se denominaba "sistema de acoplamiento cruzado", y las conexiones de salto eran formas de conexiones de acoplamiento cruzado.
En dos libros publicados en 1994 y 1996, se presentaron las conexiones "skip-layer" (salto de capa) en los modelos MLP feed-forward: "La definición general [de MLP] permite más de una capa oculta, y también permite conexiones skip-layer desde la entrada a la salida" (p261 en, p144 en), "... lo que permite a las unidades no lineales perturbar una forma funcional lineal" (p262 en). Esta descripción sugiere que el MLP no lineal funciona como una función residual (perturbación) añadida a una función lineal.
Sepp Hochreiter analizó el problema del gradiente evanescente en 1991 y le atribuyó la razón por la que el aprendizaje profundo no funcionaba bien. Para superar este problema, las redes neuronales recurrentes de memoria a largo plazo (LSTM) tenían conexiones de salto o conexiones residuales con un peso de 1,0 en cada celda LSTM (llamado carrusel de error constante) para calcular .Durante la retropropagación a través del tiempo, esto se convierte en la fórmula residual antes mencionada para redes neuronales feedforward. Esto permite entrenar redes neuronales recurrentes muy profundas con un intervalo de tiempo t muy largo. Una versión posterior de LSTM publicada en 2000 modula las conexiones LSTM de identidad mediante las llamadas puertas de olvido, de forma que sus pesos no están fijados a 1,0, sino que pueden aprenderse. En los experimentos, las puertas de olvido se inicializaron con pesos de sesgo positivo, por lo que se abrieron, abordando el problema del gradiente de fuga.
La red Highway Network de mayo de 2015 aplica estos principios a las redes neuronales feedforward. Se dice que es "la primera red feedforward muy profunda con cientos de capas". Es como una LSTM con puertas de olvido desplegadas en el tiempo, mientras que las redes residuales posteriores no tienen puertas de olvido equivalentes y son como la LSTM original desplegada. Si las conexiones de salto en las ighway network son "sin puertas", o si sus puertas se mantienen abiertas (activación 1,0) a través de fuertes pesos de sesgo positivo, se convierten en las conexiones de salto de identidad en las redes residuales.