Curso
Las redes neuronales más profundas deberían rendir mejor. Pero, en la práctica, no siempre es así.
A partir de cierta profundidad, la precisión puede incluso empeorar. No porque el modelo esté sobreajustando, sino porque el propio entrenamiento se rompe. Los gradientes tienden a desvanecerse antes de llegar a las capas iniciales y esas capas dejan de aprender. Podrías pensar que añadir más capas lo arreglaría, pero a menudo lo empeora.
ResNet solucionó esto con una idea central: las conexiones de salto. En lugar de obligar a cada capa a aprender desde cero, permite que la red se salte capas y sume la entrada directamente a la salida.
En este artículo, te cuento cómo funciona ResNet, cómo es su arquitectura y por qué sigue siendo un algoritmo imprescindible en el deep learning moderno.
¿Quieres ver ResNet en acción? Resuelve nuestro ejercicio de clasificación de imágenes con ResNet dentro del curso Deep Learning for Images with PyTorch.
¿Qué es la arquitectura ResNet?
ResNet, abreviatura de Residual Network, es una arquitectura de red neuronal diseñada para hacer viable el entrenamiento de redes profundas.
La idea la presentó Microsoft Research en 2015. El algoritmo usa conexiones residuales para sortear los problemas de entrenamiento que limitaban las redes profundas en aquel momento. La idea era sencilla, pero a partir de su descubrimiento se pudieron entrenar con fiabilidad redes de 50, 101 e incluso 152 capas por primera vez, sin que el rendimiento se degradara.
Antes de ResNet, llegar tan profundo no era realmente una opción.
Por qué las redes profundas son difíciles de entrenar
Más capas deberían dar más oportunidades para aprender. En la práctica, a partir de cierta profundidad, todo empieza a romperse.
Aquí intervienen dos problemas.
El primero es el problema del desvanecimiento del gradiente. Las redes neuronales aprenden enviando señales de error hacia atrás por la red, un proceso llamado backpropagation. Cada capa ajusta sus pesos según esa señal. Pero a medida que la señal retrocede por muchas capas, se multiplica por números pequeños una y otra vez y se reduce. Cuando llega a las primeras capas, casi no queda nada. Esas capas dejan de actualizarse y, por tanto, de aprender.
El segundo es el problema de degradación. Es contraintuitivo. Esperarías que una red de 56 capas rindiera al menos tan bien como una de 20, ya que tiene más capacidad. Pero los investigadores encontraron lo contrario. La red más profunda rendía peor, incluso en los datos de entrenamiento. Eso descarta el sobreajuste como causa. El modelo no está memorizando en exceso. En realidad, le cuesta optimizar.
Esta es la clave. No son problemas de generalización que puedas arreglar con dropout o regularización. Son problemas de optimización: la red no logra encontrar buenos pesos de partida.
Las ResNet se diseñaron para resolver estos dos problemas. Te muestro cómo.
La idea central: aprendizaje residual
Las redes neuronales tradicionales intentan aprender una correspondencia directa de entrada a salida. Cada capa mira lo que entra e intenta averiguar qué debería salir. Eso funciona bien en redes poco profundas. Pero al profundizar aparecen los dos problemas que ya comentamos.
Con ResNet, en lugar de pedir a cada bloque que aprenda la transformación completa, se plantea una pregunta más sencilla: ¿qué necesito sumar a la entrada para obtener la salida correcta?
Esa diferencia se llama residuo.
Así que en lugar de aprender:

Residual learning (1)
La red aprende:

Residual learning (2)
Donde F(input) es el residuo: la pequeña corrección que la red necesita aplicar. Si la capa no tiene que cambiar nada, puede forzar F(input) hacia cero y dejar pasar la entrada sin modificar.
Puede parecer un ajuste menor, pero cambia lo que la red tiene que aprender. Aprender una pequeña corrección es un problema de optimización mucho más sencillo que aprender una transformación completa desde cero, y eso es lo que hace entrenables las redes más profundas.
¿Qué son las conexiones de salto en ResNet?
Una conexión de salto es exactamente eso: un camino directo que evita una o más capas y lleva la entrada a un punto posterior de la red.
En una red tradicional, los datos fluyen capa a capa en secuencia. Cada capa transforma la entrada y pasa el resultado a la siguiente. Las conexiones de salto toman la entrada original y la suman directamente a la salida de una capa más adelante en el bloque.
Puedes imaginarlo así:

Skip connection graph example
La entrada x recorre dos caminos a la vez. Uno pasa por las capas convolucionales, que aprenden el residuo F(x). El otro se salta esas capas y conecta con el paso de suma. La salida final es F(x) + x.
Este atajo es clave para el entrenamiento. Durante la backpropagation, los gradientes pueden retroceder por la conexión de salto sin pasar por las capas intermedias. Eso da a las capas iniciales una señal más clara y fuerte para aprender, justo lo que faltaba en las redes profundas antes de ResNet.
Estructura de un bloque ResNet
Un bloque residual es la unidad repetitiva que compone una ResNet. Si entiendes un bloque, entiendes toda la red.
Esto es lo que ocurre dentro de un bloque:
-
La entrada
xentra en el bloque y se divide en dos caminos -
Un camino pasa por dos capas convolucionales, cada una seguida de normalización por lotes y una activación ReLU
-
El otro camino se salta esas capas: es la conexión de salto
-
Ambos caminos se unen en un paso de suma, donde la entrada original se añade a la salida de las capas convolucionales
-
Se aplica una activación ReLU final al resultado
En diagrama sería así:

ResNet block diagram
Aquí, la conexión de salto se llama mapeo identidad: la entrada pasa sin cambios y se suma directamente a la salida aprendida. Es el atajo más simple, sin transformación ni parámetros extra.
Pero para que la suma funcione, ambos caminos deben producir tensores con la misma forma. Si las capas convolucionales cambian las dimensiones espaciales o el número de canales, no se puede sumar la x de entrada. En esos casos, ResNet aplica un atajo de proyección: una convolución 1×1 en la ruta de salto que reajusta x para que coincida.
La mayoría de bloques en una ResNet usan atajos identidad. Los de proyección aparecen cuando cambian las dimensiones, normalmente al pasar de una etapa a otra.
Tipos de arquitecturas ResNet
ResNet tiene varias variantes estándar, nombradas por su número total de capas. La elección depende de lo que busques optimizar: velocidad, precisión o un punto intermedio.

ResNet architecture comparison
ResNet-18 y ResNet-34 usan el bloque básico estándar: dos capas convolucionales 3×3 con una conexión de salto. Son rápidas y baratas de ejecutar, una buena opción para prototipos o cuando el hardware es limitado.
ResNet-50 y superiores cambian a un diseño distinto llamado bloque cuello de botella (bottleneck), que usa tres capas en lugar de dos. Este cambio facilita entrenar redes más profundas sin un aumento proporcional del coste computacional. En la siguiente sección verás cómo funciona.
ResNet-101 y ResNet-152 van un paso más allá, a costa de tiempos de entrenamiento más largos y mayor uso de memoria. Son habituales en investigación y en producción cuando la precisión pesa más que la velocidad.
Para la mayoría de casos prácticos, ResNet-50 es el punto de partida por defecto. Equilibra bien profundidad y coste, y está muy soportada en todos los frameworks de deep learning.
Arquitectura bottleneck de ResNet
Las ResNet más profundas no usan el mismo diseño de bloque que las poco profundas. A partir de ResNet-50, la arquitectura cambia a un bloque cuello de botella, un diseño de tres capas que mantiene el cómputo a raya a medida que aumenta la profundidad.
El bloque usa tres convoluciones en secuencia:
- Convolución 1×1: reduce el número de canales y hace más pequeña la entrada
- Convolución 3×3: realiza el aprendizaje de características sobre esa representación más pequeña
- Convolución 1×1: expande de nuevo los canales al tamaño original
Las convoluciones 1×1 del principio y del final actúan como cuello de botella, de ahí el nombre. Comprimen los datos antes de la costosa convolución 3×3 y los restauran después.
Una convolución 3×3 sobre una entrada con muchos canales es computacionalmente pesada. Al reducir canales primero, el bloque cuello de botella permite que la capa 3×3 trabaje sobre una entrada mucho menor. El resultado es un bloque más profundo sin un salto proporcional en coste de cómputo.
La conexión de salto funciona igual que en el bloque básico: se suma la entrada a la salida antes de la activación final. La única diferencia es que aquí casi siempre hace falta un atajo de proyección, ya que las dimensiones de canal cambian dentro del bloque.
Cómo ResNet resuelve el desvanecimiento del gradiente
El problema del desvanecimiento del gradiente es, en el fondo, un problema de distancia. Cuanto más tiene que viajar un gradiente por una red, más se reduce; cuando llega a las primeras capas, apenas queda señal para aprender.
Las conexiones de salto evitan esto dándole a los gradientes un camino más corto.
Durante la backpropagation, los gradientes no tienen que pasar por cada capa en secuencia. Pueden retroceder directamente por la conexión de salto, saltándose por completo las capas convolucionales. Ese atajo mantiene el gradiente lo bastante grande como para actualizar las capas iniciales.
Esto también cambia lo que cada bloque debe aprender. En lugar de encontrar una transformación completa desde cero, la red solo necesita aprender una pequeña corrección sobre la entrada. Es un problema de optimización mucho más fácil y permite profundizar sin que el entrenamiento se vuelva inestable.
En resumen, redes que antes eran demasiado profundas para entrenarse con fiabilidad pasan a ser entrenables.
ResNet frente a arquitecturas CNN tradicionales
Las CNN tradicionales y las ResNet aprenden características de imágenes, pero lo hacen de forma distinta.
En una CNN tradicional, los datos fluyen por capas en línea recta. Cada capa toma la salida de la anterior, aplica una transformación y pasa el resultado. Eso funciona bien hasta cierto punto. Más allá de cierta profundidad, la estructura secuencial se vuelve poco fiable durante la backpropagation: los gradientes se reducen, las capas iniciales dejan de aprender y la precisión empieza a caer.
ResNet no avanza en línea recta. Las conexiones de salto permiten que la entrada se salte una o más capas y se sume directamente a la salida más adelante en el bloque. La red sigue aprendiendo transformaciones, pero también tiene un camino directo para que viajen tanto los datos como los gradientes.
Así se comparan ambos enfoques:

ResNet versus traditional CNN
Las conexiones de salto ayudan con los gradientes y suavizan la optimización, de modo que la red encuentra buenos pesos antes y con más fiabilidad.
Aplicaciones de la arquitectura ResNet
La arquitectura ResNet aparece en una amplia variedad de tareas reales.
Clasificación de imágenes fue su punto de partida. Ganó el ImageNet Large Scale Visual Recognition Challenge en 2015 y sigue siendo una opción de referencia para clasificar imágenes en categorías, ya sean escáneres médicos, imágenes satelitales o fotos de producto.
Detección de objetos: muchos flujos de trabajo usan ResNet. Frameworks como Faster R-CNN y Mask R-CNN combinan ResNet con una cabeza de detección que identifica y localiza objetos en la imagen. ResNet extrae características y la cabeza de detección hace el resto.
Transfer learning es donde ResNet resulta especialmente útil para la mayoría de data scientists. En lugar de entrenar desde cero (días y muchos datos), cargas una ResNet preentrenada en ImageNet y la ajustas a tu dataset. Los pesos preentrenados ya codifican rasgos de bajo nivel como bordes, texturas y formas, así que partes con ventaja.
Extracción de características: enfoque similar. Pasas tus imágenes por una ResNet preentrenada y tomas la salida de una de las capas finales. Esas salidas son representaciones densas y útiles que puedes alimentar a un clasificador o algoritmo de clustering más simple.
En todos estos casos, ResNet funciona como punto de partida preentrenado. La mayoría de frameworks de deep learning traen pesos de ResNet preentrenados de serie, lo que la convierte en una de las arquitecturas más fáciles para empezar.
Ventajas y limitaciones de ResNet
ResNet supuso un verdadero avance en deep learning, pero como toda arquitectura, tiene sus compromisos. Repasemos ventajas y desventajas.
Ventajas
La más evidente es la profundidad. Las conexiones de salto permiten entrenar redes con 50, 100 o incluso más de 150 capas sin tropezar con el problema de degradación. Antes de ResNet no era fiable hacerlo.
El entrenamiento también es más estable. Los atajos dan a los gradientes una ruta limpia de vuelta por la red, lo que implica menos ajuste fino, menos colapsos y resultados más predecibles en distintas tareas y datasets.
Y también destaca el rendimiento. Las variantes de ResNet se sitúan de forma consistente entre las mejores en benchmarks de imagen, y los modelos preentrenados se adaptan bien a nuevos dominios, motivo por el que siguen siendo el punto de partida por defecto en tantos proyectos de visión por computadora.
Limitaciones
ResNet es computacionalmente exigente. Las variantes más profundas, como ResNet-101 y ResNet-152, requieren mucha memoria y potencia de cómputo, lo que puede ser una limitación si trabajas con hardware ajustado o necesitas inferencia rápida.
Tampoco es la mejor opción para todo. Con datasets pequeños o problemas sencillos, una arquitectura más ligera suele rendir igual a una fracción del coste. Optar por ResNet-50 por defecto no siempre es lo adecuado.
Y en algunos ámbitos, ResNet ha sido superada. Arquitecturas como EfficientNet logran mejor precisión por parámetro en tareas de imagen, y los transformers dominan en otras. ResNet sigue muy extendida, pero ya no es la única opción seria.
ResNet en el deep learning moderno
Once años después de su presentación, la arquitectura ResNet sigue en plena forma. No es lo habitual en deep learning.
La mayoría de profesionales sigue recurriendo a ResNet cuando necesita una base sólida para una tarea de visión por computadora. Se entiende bien, está soportada en todos los frameworks principales y hay pesos preentrenados en todas las bibliotecas grandes. Así que, cuando necesitas algo que funcione sin mucha experimentación, ResNet suele ser la primera opción.
Pero su influencia va más allá de sus propias variantes.
La idea central de ResNet —añadir un atajo alrededor de capas para facilitar el flujo de información y gradientes— resultó ser muy útil en general. DenseNet la llevó más lejos conectando cada capa con todas las demás, no solo saltándose una o dos. Y aunque los transformers tienen otra arquitectura, las conexiones residuales dentro de cada bloque siguen el mismo principio que introdujo ResNet.
Arquitecturas más recientes como EfficientNet, ConvNeXt y los vision transformers han empujado el rendimiento en áreas concretas. Pero no reemplazaron a ResNet tanto como construyeron sobre lo que estableció.
Conclusión
La arquitectura ResNet gira en torno a una idea: las conexiones de salto. Esa idea resolvió dos problemas que frenaban a las redes profundas —el desvanecimiento del gradiente y la degradación— y hizo viable entrenar redes a profundidades que antes no eran posibles.
Añadir atajos entre capas es ahora un bloque de construcción estándar en el deep learning moderno: aparece en DenseNet, en los transformers y en la mayoría de arquitecturas posteriores a 2015.
Si hoy trabajas en un problema de visión por computadora, ResNet sigue siendo un punto de partida sólido. No es lo más nuevo, pero sí de lo más fiable. Tómala como baseline: te sorprenderá cómo aún puede superar a la competencia en 2026.
Si eres nuevo en deep learning pero ya controlas los fundamentos de Python, explora nuestro curso Introduction to TensorFlow in Python: te pondrá en marcha con temas como ResNet en un fin de semana.
FAQs
What is ResNet and why was it important?
ResNet, abreviatura de Residual Network, es una arquitectura de deep learning presentada por Microsoft Research en 2015. Solucionó dos problemas que dificultaban el entrenamiento de redes profundas: el desvanecimiento del gradiente y la degradación. El mecanismo de conexiones de salto hizo posible entrenar con fiabilidad redes con 50, 100 o incluso más de 150 capas por primera vez.
What are skip connections in a neural network?
Una conexión de salto es un camino directo que evita una o más capas y suma la entrada directamente a la salida de una capa posterior. Esto ofrece a los datos y a los gradientes un atajo por la red, manteniendo una señal de gradiente lo bastante fuerte como para actualizar las capas iniciales durante el entrenamiento.
What is the vanishing gradient problem?
El problema del desvanecimiento del gradiente ocurre cuando los gradientes se reducen al retroceder por una red profunda. Cuando la señal llega a las primeras capas, es demasiado pequeña para actualizarlas, por lo que dejan de aprender. ResNet lo aborda permitiendo que los gradientes fluyan hacia atrás por conexiones de salto, evitando las capas intermedias.
What's the difference between ResNet's basic block and bottleneck block?
El bloque básico utiliza dos capas convolucionales 3×3 y está en variantes menos profundas como ResNet-18 y ResNet-34. El bloque cuello de botella, usado en ResNet-50 y más profundas, emplea una secuencia de convoluciones 1×1 - 3×3 - 1×1 que reduce el cómputo comprimiendo los canales antes de la costosa 3×3.
How do I choose the right ResNet variant for my project?
Para la mayoría de trabajos prácticos, ResNet-50 es una buena opción por defecto: equilibra bien profundidad, precisión y coste computacional. ResNet-18 y ResNet-34 son opciones más rápidas cuando el hardware es limitado, mientras que ResNet-101 y ResNet-152 tienen sentido cuando la precisión es prioritaria y el cómputo no es una restricción.





