stringtranslate.com

Red neuronal residual

Un bloque residual en una red residual profunda. Aquí la conexión residual omite dos capas.

Una red neuronal residual (también denominada red residual o ResNet ) [1] es una arquitectura de aprendizaje profundo en la que las capas de peso aprenden funciones residuales con referencia a las entradas de capa. Se desarrolló en 2015 para el reconocimiento de imágenes y ganó el Desafío de reconocimiento visual a gran escala ImageNet (ILSVRC) de ese año . [2] [3]

Como punto de terminología, "conexión residual" se refiere al motivo arquitectónico específico de,donde es un módulo de red neuronal arbitrario. El motivo ya se había utilizado anteriormente (consulte §Historia para obtener más detalles). Sin embargo, la publicación de ResNet lo hizo muy popular para las redes de propagación hacia adelante, apareciendo en redes neuronales que de otro modo no estarían relacionadas con ResNet.

La conexión residual estabiliza el entrenamiento y la convergencia de redes neuronales profundas con cientos de capas, y es un motivo común en redes neuronales profundas, como los modelos Transformer (por ejemplo, los modelos BERT y GPT como ChatGPT ), el sistema AlphaGo Zero , el sistema AlphaStar y el sistema AlphaFold .

Matemáticas

Conexión residual

En un modelo de red neuronal multicapa, considere una subred con una cierta cantidad de capas apiladas (por ejemplo, 2 o 3). Denote la función subyacente realizada por esta subred como , donde es la entrada a la subred. El aprendizaje residual vuelve a parametrizar esta subred y permite que las capas de parámetros representen una "función residual" . La salida de esta subred se representa entonces como:

La operación de " " se implementa a través de una "conexión de salto" que realiza un mapeo de identidad para conectar la entrada de la subred con su salida. Esta conexión se denomina "conexión residual" en trabajos posteriores. La función se representa a menudo mediante la multiplicación de matrices entrelazadas con funciones de activación y operaciones de normalización (por ejemplo, normalización por lotes o normalización por capas). En conjunto, una de estas subredes se denomina "bloque residual". [1] Una red residual profunda se construye simplemente apilando estos bloques juntos.

Es importante destacar que el principio subyacente de los bloques residuales es también el principio de la célula LSTM original, [4] una red neuronal recurrente que predice una salida en el tiempo como , que se convierte durante la retropropagación a través del tiempo en . [5]

Conexión de proyección

Si la función es del tipo where , entonces no está definida. Para manejar este caso especial, se utiliza una conexión de proyección: where es típicamente una proyección lineal, definida por where es una matriz. La matriz se entrena por retropropagación como cualquier otro parámetro del modelo.

Propagación de señales

La introducción de asignaciones de identidad facilita la propagación de señales tanto en trayectorias hacia adelante como hacia atrás, como se describe a continuación. [6]

Propagación hacia adelante

Si la salida del -ésimo bloque residual es la entrada del -ésimo bloque residual (asumiendo que no hay función de activación entre bloques), entonces la -ésima entrada es:

Aplicando esta formulación de forma recursiva, por ejemplo,

produce la relación general:

donde es el índice de un bloque residual y es el índice de algún 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 de aprendizaje residual proporciona el beneficio adicional de abordar el problema del gradiente evanescente hasta cierto punto. Sin embargo, es fundamental reconocer que el problema del gradiente evanescente no es la causa raíz del problema de degradación, que se aborda mediante el uso de capas de normalización. Para observar el efecto de los bloques residuales en la retropropagación , considere la derivada parcial de una función de pérdida con respecto a alguna entrada de bloque residual . Usando la ecuación anterior de la propagación hacia adelante para un bloque residual posterior : [6]

Esta formulación sugiere que el cálculo del gradiente de una capa menos profunda, , siempre tiene un término posterior que se agrega directamente. Incluso si los gradientes de los términos son pequeños, el gradiente total resiste la desaparición gracias al término agregado .

Variantes de bloques residuales

Dos variantes de bloques residuales convolucionales. [1] Izquierda : un bloque básico que tiene dos capas convolucionales de 3x3. Derecha : un bloque de cuello de botella que tiene una capa convolucional de 1x1 para reducción de dimensión (por ejemplo, 1/4), una capa convolucional de 3x3 y otra capa convolucional de 1x1 para restauración de dimensión.

Bloque básico

Un bloque básico es el bloque de construcción más simple estudiado en la ResNet original. [1] 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.

Diagrama de bloques de ResNet (2015). Muestra un bloque de ResNet con y sin la convolución 1x1. La convolución 1x1 (con paso) se puede utilizar para cambiar la forma de la matriz, lo que es necesario para la conexión residual a través de una capa de muestreo ascendente/descendente.

Bloque de cuello de botella

Un bloque de cuello de botella [1] consta de tres capas convolucionales secuenciales y una conexión residual. La primera capa de este bloque es una convolución 1x1 para la reducción de 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 la restauración de la dimensión. Los modelos de ResNet-50, ResNet-101 y ResNet-152 en [1] se basan en bloques de cuello de botella.

Bloque de preactivación

El bloque residual de preactivación [6] 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 se puede escribir como:

donde puede ser cualquier operación de activación de no linealidad (por ejemplo, ReLU ) o de normalización (por ejemplo, LayerNorm ). Este diseño reduce la cantidad de asignaciones de no identidad entre bloques residuales. Este diseño se utilizó para entrenar modelos con 200 a más de 1000 capas. [6]

Desde GPT-2 , los bloques de Transformador se han implementado predominantemente como bloques de preactivación . Esto se conoce a menudo como "prenormalización" en la literatura de modelos de Transformador. [7]

La arquitectura original de Resnet-18. En la publicación original (con el nombre de "ResNet-152") se entrenaron hasta 152 capas. [8]

Aplicaciones

Originalmente, ResNet fue diseñado para visión por computadora. [1] [8]

La arquitectura del transformador incluye conexiones residuales.

Todas las arquitecturas de Transformer incluyen conexiones residuales. De hecho, los modelos de Transformer muy profundos no pueden entrenarse con éxito sin conexiones residuales. [9]

El artículo original sobre Residual Network no afirmaba estar inspirado en sistemas biológicos, pero investigaciones posteriores relacionaron ResNet con algoritmos biológicamente plausibles. [10] [11]

Un estudio publicado en Science en 2023 [12] reveló el conectoma completo del cerebro de un insecto (de una larva de mosca de la fruta). Este estudio descubrió " atajos multicapa " que se asemejan a las conexiones de salto en las redes neuronales artificiales, incluidas las ResNets.

Historia

Trabajos previos

Se observaron conexiones residuales en neuroanatomía , como Lorente de No (1938). [13] : Fig 3  McCulloch y Pitts (1943) propusieron redes neuronales artificiales y consideraron aquellas con conexiones residuales. [14] : Fig 1.h 

En 1961, Frank Rosenblatt describió un modelo de perceptrón multicapa (MLP) de tres capas con conexiones salteadas. [15] : 313, Capítulo 15  El modelo fue denominado "sistema de acoplamiento cruzado", y las conexiones salteadas eran formas de conexiones de acoplamiento cruzado.

A finales de los años 1980, las conexiones de "capa salteada" se usaban a veces en redes neuronales. Algunos ejemplos incluyen. [16] [17] Lang y Witbrock (1988) [18] entrenaron una red de propagación hacia adelante completamente conectada donde cada capa se conecta por salto a todas las capas subsiguientes, como la posterior DenseNet (2016). En este trabajo, la conexión residual tenía la forma,donde es una conexión de proyección inicializada aleatoriamente. La llamaron "conexión de acceso directo".

La célula de memoria de corto plazo a largo plazo (LSTM) puede procesar datos de forma secuencial y mantener su estado oculto a lo largo del tiempo. El estado de la célula funciona como una conexión residual generalizada.

Problema de degradación

Sepp Hochreiter descubrió el problema del gradiente evanescente en 1991 [19] y argumentó que explicaba por qué las formas entonces prevalecientes de redes neuronales recurrentes no funcionaban para secuencias largas. Él y Schmidhuber diseñaron más tarde la memoria a corto plazo larga (LSTM, 1997) [4] [20] para resolver este problema, que tiene un "estado de celda" que puede funcionar como una conexión residual generalizada. La red de autopistas (2015) [21] [22] aplicó la idea de una LSTM desplegada en el tiempo a redes neuronales de retroalimentación , lo que dio como resultado la red de autopistas.

Red neuronal recurrente básica estándar (izquierda) y desplegada (derecha)

Durante los primeros días del aprendizaje profundo, hubo intentos de entrenar modelos cada vez más profundos. Algunos ejemplos notables incluyeron AlexNet ( 2012) que tenía 8 capas y VGG-19 (2014) que tenía 19 capas. [23] Sin embargo, apilar demasiadas capas condujo a una reducción pronunciada en la precisión del entrenamiento , [24] conocido como el problema de "degradación". [1] En teoría, agregar capas adicionales para profundizar una red no debería resultar en una mayor pérdida de entrenamiento , pero esto es lo que sucedió con VGGNet . [1] Sin embargo, si las capas adicionales se pueden configurar como asignaciones de identidad , entonces la red más profunda representaría la misma función que su contraparte menos profunda. Existe cierta evidencia de que el optimizador no puede abordar las asignaciones de identidad para las capas parametrizadas, y el beneficio de las conexiones residuales fue permitir asignaciones de identidad de forma predeterminada. [25]

En 2014, el estado del arte era entrenar “redes neuronales muy profundas” con 20 a 30 capas. [26] El equipo de investigación de ResNet intentó entrenar redes más profundas probando empíricamente varios trucos para entrenar redes más profundas, hasta que dieron con la arquitectura ResNet. [27]

Trabajos posteriores

DenseNet (2016) [28] conecta la salida de cada capa con la entrada de cada capa subsiguiente: Stochastic Depth [29] es un método de regularización . Descarta aleatoriamente un subconjunto de capas y permite que la señal se propague a través de la conexión de omisión de identidad. También conocido como "DropPath", regulariza el entrenamiento para modelos grandes y profundos, como Vision Transformers . [30]

Diagrama de bloques de ResNeXt.

ResNeXt (2017) combina el módulo Inception con ResNet. [31] [8]

Squeeze-and-Excitation Networks (2018) agregó módulos de compresión y excitación (SE) a ResNet. [32] Se aplica un módulo SE después de una convolución y toma como entrada un tensor de forma (altura, ancho, canal). Se promedia cada canal, lo que da como resultado un vector de forma . Luego, este se pasa a través de un MLP lineal-ReLU-lineal-sigmoide antes de multiplicarlo por el tensor original.

Referencias

  1. ^ abcdefghi He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (10 de diciembre de 2015). Aprendizaje residual profundo para reconocimiento de imágenes . arXiv : 1512.03385 .
  2. ^ "Resultados ILSVRC2015". image-net.org .
  3. ^ Deng, Jia; Dong, Wei; Socher, Richard; Li, Li-Jia; Li, Kai; Fei-Fei, Li (2009). "ImageNet: una base de datos de imágenes jerárquica a gran escala". CVPR .
  4. ^ ab Sepp Hochreiter ; Jürgen Schmidhuber (1997). "Memoria larga a corto plazo". Computación neuronal . 9 (8): 1735–1780. doi :10.1162/neco.1997.9.8.1735. PMID  9377276. S2CID  1915014.
  5. ^ Szegedy, Christian; Ioffe, Sergey; Vanhoucke, Vincent; Alemi, Alex (2016). "Inception-v4, Inception-ResNet y el impacto de las conexiones residuales en el aprendizaje". arXiv : 1602.07261 [cs.CV].
  6. ^ abcd He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (2015). "Mapeos de identidad en redes residuales profundas". arXiv : 1603.05027 [cs.CV].
  7. ^ Radford, Alec; Wu, Jeffrey; Child, Rewon; Luan, David; Amodei, Dario; Sutskever, Ilya (14 de febrero de 2019). «Los modelos de lenguaje son aprendices multitarea no supervisados» (PDF) . Archivado (PDF) del original el 6 de febrero de 2021. Consultado el 19 de diciembre de 2020 .
  8. ^ abc Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "8.6. Redes Residuales (ResNet) y ResNeXt". Sumérjase en el aprendizaje profundo . Cambridge New York Port Melbourne New Delhi Singapore: Cambridge University Press. ISBN 978-1-009-38943-3.
  9. ^ Dong, Yihe; Cordonnier, Jean-Baptiste; Loukas, Andreas (2021). "La atención no es todo lo que necesitas: la atención pura pierde rango de manera exponencialmente doble con la profundidad". arXiv : 2103.03404 [cs.LG].
  10. ^ Liao, Qianli; Poggio, Tomaso (2016). Cerrando las brechas entre el aprendizaje residual, las redes neuronales recurrentes y la corteza visual . arXiv : 1604.03640 .
  11. ^ Xiao, Will; Chen, Honglin; Liao, Qianli; Poggio, Tomaso (2018). Los algoritmos de aprendizaje biológicamente plausibles pueden escalarse a grandes conjuntos de datos . arXiv : 1811.03567 .
  12. ^ Winding, Michael; Pedigo, Benjamin; Barnes, Christopher; Patsolic, Heather; Park, Youngser; Kazimiers, Tom; Fushiki, Akira; Andrade, Ingrid; Khandelwal, Avinash; Valdes-Aleman, Javier; Li, Feng; Randel, Nadine; Barsotti, Elizabeth; Correia, Ana; Fetter, Fetter; Hartenstein, Volker; Priebe, Carey; Vogelstein, Joshua; Cardona, Albert; Zlatic, Marta (10 de marzo de 2023). "El conectoma del cerebro de un insecto". Science . 379 (6636): eadd9330. bioRxiv 10.1101/2022.11.28.516756v1 . doi :10.1126/science.add9330. PMC 7614541 . Número de modelo: PMID  36893230. Número de modelo: S2CID  254070919.  
  13. ^ De N, Rafael Lorente (1938-05-01). "Análisis de la actividad de las cadenas de neuronas internunciales". Revista de neurofisiología . 1 (3): 207–244. doi :10.1152/jn.1938.1.3.207. ISSN  0022-3077.
  14. ^ McCulloch, Warren S.; Pitts, Walter (1943-12-01). "Un cálculo lógico de las ideas inmanentes en la actividad nerviosa". Boletín de biofísica matemática . 5 (4): 115–133. doi :10.1007/BF02478259. ISSN  1522-9602.
  15. ^ Rosenblatt, Frank (1961). Principios de la neurodinámica. Los perceptrones y la teoría de los mecanismos cerebrales (PDF) .
  16. ^ Rumelhart, David E., Geoffrey E. Hinton y Ronald J. Williams. "Aprendizaje de representaciones internas mediante propagación de errores", Procesamiento distribuido paralelo . Vol. 1. 1986.
  17. ^ Venables, WN; Ripley, Brain D. (1994). Estadística aplicada moderna con S-Plus. Springer. págs. 261–262. ISBN 9783540943501.
  18. ^ Lang, Kevin; Witbrock, Michael (1988). "Aprender a distinguir dos espirales" (PDF) . Actas de la Escuela de verano de modelos conexionistas de 1988 : 52–59.
  19. ^ Hochreiter, Sepp (1991). Untersuchungen zu dynamischen neuronalen Netzen (PDF) (tesis de diploma). Universidad Técnica de Múnich, Instituto de Informática, asesor: J. Schmidhuber.
  20. ^ Felix A. Gers; Jürgen Schmidhuber; Fred Cummins (2000). "Aprendiendo a olvidar: predicción continua con LSTM". Computación neuronal . 12 (10): 2451–2471. CiteSeerX 10.1.1.55.5709 . doi :10.1162/089976600300015015. PMID  11032042. S2CID  11598600. 
  21. ^ Srivastava, Rupesh Kumar; Greff, Klaus; Schmidhuber, Jürgen (3 de mayo de 2015). "Redes de Carreteras". arXiv : 1505.00387 [cs.LG].
  22. ^ Srivastava, Rupesh Kumar; Greff, Klaus; Schmidhuber, Jürgen (22 de julio de 2015). "Entrenamiento de redes muy profundas". arXiv : 1507.06228 [cs.LG].
  23. ^ Simonyan, Karen; Zisserman, Andrew (10 de abril de 2015). "Redes convolucionales muy profundas para el reconocimiento de imágenes a gran escala". arXiv : 1409.1556 [cs.CV].
  24. ^ He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (2016). "Profundizando en los rectificadores: superando el rendimiento a nivel humano en la clasificación de ImageNet". arXiv : 1502.01852 [cs.CV].
  25. ^ He, Kaiming; Zhang, Xiangyu; Ren, Shaoqing; Sun, Jian (2016). "Mapeos de identidad en redes residuales profundas". En Leibe, Bastian; Matas, Jiri; Sebe, Nicu; Welling, Max (eds.). Visión artificial – ECCV 2016. Vol. 9908. Cham: Springer International Publishing. págs. 630–645. doi :10.1007/978-3-319-46493-0_38. ISBN . 978-3-319-46492-3. Recuperado el 19 de septiembre de 2024 .
  26. ^ Simonyan, Karen; Zisserman, Andrew (10 de abril de 2015). "Redes convolucionales muy profundas para el reconocimiento de imágenes a gran escala". arXiv : 1409.1556 [cs.CV].
  27. ^ Linn, Allison (10 de diciembre de 2015). "Investigadores de Microsoft ganan el desafío de visión artificial de ImageNet". The AI ​​Blog . Consultado el 29 de junio de 2024 .
  28. ^ Huang, Gao; Liu, Zhuang; van der Maaten, Laurens; Weinberger, Kilian (2016). Redes convolucionales densamente conectadas . arXiv : 1608.06993 .
  29. ^ Huang, Gao; Sun, Yu; Liu, Zhuang; Weinberger, Kilian (2016). Redes profundas con profundidad estocástica . arXiv : 1603.09382 .
  30. ^ Lee, Youngwan; Kim, Jonghee; Willette, Jeffrey; Hwang, Sung Ju (2022). "MPViT: Transformador de visión de múltiples rutas para predicción densa": 7287–7296. arXiv : 2112.11010 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  31. ^ Xie, Saining; Girshick, Ross; Dollar, Piotr; Tu, Zhuowen; He, Kaiming (2017). "Transformaciones residuales agregadas para redes neuronales profundas": 1492–1500. arXiv : 1611.05431 . {{cite journal}}: Requiere citar revista |journal=( ayuda )
  32. ^ Hu, Jie; Shen, Li; Sun, Gang (2018). "Redes de compresión y excitación": 7132–7141. {{cite journal}}: Requiere citar revista |journal=( ayuda )