Redes residuales (ResNet) y su importancia en la visión artificial
La visión artificial es una rama de la inteligencia artificial que busca enseñar a las máquinas a "ver" e interpretar imágenes y videos, emulando la capacidad visual humana.
Esta disciplina tiene aplicaciones multitud de áreas como la medicina, seguridad, automoción o e-commerce. Sin embargo, procesar y analizar imágenes de manera eficiente requiere modelos complejos que puedan captar detalles sutiles y patrones avanzados.
Teniendo esto en cuenta, las redes neuronales profundas son fundamentales a la hora de cambiar la forma en que se procesan y entienden las imágenes para tareas como la clasificación de imágenes, el reconocimiento facial y la detección de objetos. No obstante, a medida que las redes neuronales se hacen más profundas, surgen desafíos técnicos como la dificultad para entrenar el modelo y la pérdida de precisión.
Aquí es donde entra ResNet, una arquitectura que introdujo un cambio de paradigma en la visión artificial que ha permitido entrenar redes mucho más profundas sin sacrificar eficiencia o precisión, marcando un antes y un después en el aprendizaje profundo.
ResNet: Transformación de la visión artificial
La introducción de ResNet (Residual Networks o Redes residuales en español) marcó un antes y un después en el campo de la visión artificial, resolviendo las limitaciones que existían hasta el momento gracias a la innovadora incorporación de conexiones de salto.
Diseñada en 2015 por Kaiming He y su equipo, ResNet permitió construir redes neuronales más profundas y efectivas. Este avance no solo mejoró el rendimiento en tareas de clasificación de imágenes, sino que también impactó en aplicaciones avanzadas como el reconocimiento de objetos y la segmentación semántica.
La arquitectura de ResNet introduce el concepto de bloques residuales, una innovación clave para superar los problemas asociados con redes neuronales profundas.
En lugar de simplemente apilar capas, como ocurre en arquitecturas tradicionales, ResNet emplea conexiones de salto (skip connections) que permiten que la entrada de una capa sea sumada directamente a su salida tras pasar por dos o más capas.
Un bloque residual puede ser representado matemáticamente como:
y= F(x,{Wi})+x
Donde:
- x es la entrada del bloque.
- F(x,{Wi}) representa la transformación no lineal aprendida (por ejemplo, convoluciones, Batch Normalization y ReLU).
- y es la salida del bloque.
Esta estructura permite que la red aprenda ajustes residuales en lugar de transformaciones completas, facilitando la propagación del gradiente durante el entrenamiento.
Estructura de ResNet
ResNet se presenta en diferentes variantes, como ResNet-18, ResNet-34, ResNet-50 y ResNet-152, donde el número indica la cantidad total de capas en cada red. Estas variantes se diferencian principalmente en la cantidad y disposición de los bloques residuales dentro de la arquitectura:
- ResNet-18: contiene 2 bloques residuales en cada uno de los 4 niveles principales, totalizando 8 bloques residuales.
- ResNet-34: amplía esta estructura a 3 bloques residuales en dos niveles y 4 bloques en los otros dos, sumando 16 bloques residuales.
- ResNet-50: introduce bloques residuales con capas más profundas, llamados bloques residuales de tipo bottleneck, organizados como 3, 4, 6 y 3 bloques en los respectivos niveles, con un total de 50 capas.
- ResNet-152: escala significativamente la profundidad con 3, 8, 36 y 3 bloques residuales en los niveles, alcanzando un total de 152 capas.
Estos bloques residuales están intercalados con operaciones de convolución y pooling, permitiendo que la información fluya eficientemente a través de la red, incluso en las arquitecturas más profundas, donde el número indica la cantidad de capas totales en la red. A medida que aumenta la profundidad, el uso de bloques residuales y conexiones de salto asegura que las redes sean más fáciles de entrenar, incluso con cientos de capas.
Algunos elementos destacables de su arquitectura son:
- Convoluciones iniciales: una capa convolucional con un kernel de tamaño 7x7 y un stride de 2, seguida de Batch Normalization y ReLU. Este gran tamaño del kernel permite capturar características espaciales generales desde el inicio, mientras que el stride reduce la resolución de la imagen, disminuyendo así la carga computacional en las capas subsiguientes.
- Bloques residuales: diseñados para mantener una eficiente propagación del gradiente. Cada bloque se organiza en capas de convolución que aplican filtros 3x3 o, en variantes más profundas como ResNet-50 y superiores, un diseño tipo bottleneck que utiliza convoluciones 1x1 para reducir la dimensionalidad antes de aplicar filtros 3x3 y luego la restaura con otra convolución 1x1. Estas configuraciones aseguran un equilibrio entre eficiencia computacional y capacidad de aprendizaje.
- Pooling global: reduce la dimensionalidad de la salida antes de la clasificación final. Este proceso de reducción se realiza aplicando un promedio (o a veces una operación de máximo) sobre toda la dimensión espacial de las características extraídas por las capas anteriores. Esto no solo disminuye el número de parámetros en la capa final, sino que también actúa como una regularización efectiva, mejorando la generalización del modelo. Además, permite que la red sea más eficiente en términos de cálculo, ya que minimiza la cantidad de datos procesados en las etapas finales.
- Clasificador: la salida del último bloque residual pasa por un paso de pooling global, seguido de una capa totalmente conectada que reduce las características a la cantidad de clases del problema. Finalmente, se aplica una función softmax para generar probabilidades normalizadas, permitiendo la clasificación de imágenes. Este diseño asegura una transición fluida desde las características aprendidas hasta la predicción final.
La revolución en redes neuronales profundas con conexiones de salto
Antes de ResNet, arquitecturas profundas como VGG enfrentaban dificultades para escalar debido a la vanishing gradient problem (problema de desvanecimiento del gradiente). Las conexiones de salto introducidas por ResNet abordan este problema al crear rutas alternativas para el flujo de información, reduciendo la dependencia de capas intermedias.
Este diseño ha demostrado ser particularmente útil en tareas “for image”, como:
- Clasificación de imágenes: mejorando significativamente las tasas de precisión en conjuntos de datos como ImageNet.
- Reconocimiento de objetos: utilizando ResNet como base para arquitecturas como Faster R-CNN.
- Segmentación semántica: aplicada en contextos médicos y de conducción autónoma.
El uso de las conexiones de salto tiene una serie de ventajas:
- Propagación sin pérdidas: facilitan que la información fluya hacia las capas más profundas.
- Mejora del entrenamiento: reducen la probabilidad de saturación en redes profundas.
- Eficiencia computacional: permiten entrenar el modelo con menos recursos.
¿Cómo mejora ResNet la precisión en redes neuronales profundas?
En esencia, ResNet es una red residual diseñada para abordar los problemas críticos asociados con redes neuronales profundas tradicionales. La clave de su éxito radica en su capacidad para:
- Alcanzar mayor profundidad: redes como ResNet-152 lograron nuevos hitos, como una precisión superior al 93% en ImageNet.
- Simplificar la optimización: al aprender ajustes residuales en lugar de funciones completas, se reduce el esfuerzo computacional.
- Generalizar mejor: su estructura permite obtener modelos robustos para diversas aplicaciones.
Desde su introducción, ResNet ha sido adoptada ampliamente en dominios como la salud, el comercio y la investigación científica. Por ejemplo:
- En el diagnóstico médico, permite la detección automática de patologías en imágenes de rayos X.
- En comercio electrónico, optimiza sistemas de recomendación basados en imágenes.
Además, su estructura ha inspirado nuevas arquitecturas como DenseNet, que expande el concepto de conexiones de salto al conectar todas las capas entre sí.
Revolución con bloques residuales y conexiones de salto
ResNet ha revolucionado las redes neuronales profundas al introducir bloques residuales y conexiones de salto, superando limitaciones clave en el entrenamiento de modelos profundos. Su impacto trasciende la visión artificial, sentando las bases para innovaciones en diversas áreas de la inteligencia artificial.
Gracias a su capacidad para entrenar modelos profundos y su versatilidad, ResNet sigue siendo una referencia fundamental en el diseño de arquitecturas modernas de redes neuronales.
Si quieres aprender a programar redes neuronales como ResNet y otras arquitecturas te recomiendo nuestro Curso de Redes Neuronales con Python.
Artículos relacionados
¿Qué es doxear y cómo protegerte de esta práctica?
Ya sabemos que en la red existen numerosos peligros y multitud de formas de ser atacado. La intención de los hackers o ciberdelincuentes puede variar.
La inteligencia artificial, influyendo en la ingeniería mecatrónica
La mecatrónica ha transformado el mundo moderno combinando disciplinas como la mecánica, la electrónica y la informática para crear soluciones innovadoras que impactan nuestra vida
Analítica prescriptiva: toma de decisiones basada en datos
La analítica prescriptiva está en pleno auge, ya que se trata de una de las herramientas o maneras más avanzadas para la toma de decisiones basadas en datos dentro de los campos de