Icone color1 05

Guía para arquitecturas de redes profundas

Autora: Joyce Xu

Tradutor: Paula Vidal

 

 

1

GoogLeNet, 2014

En los últimos años, gran parte del progreso realizado en el uso del aprendizaje profundo para la visión artificial se puede rastrear a un pequeño grupo de arquitecturas de redes neuronales. Dejando de lado las matemáticas, los códigos y los detalles de la implementación, en este artículo pretendemos analizar cómo funcionan estos modelos.

Por el momento, Keras domina con seis de estos modelos pre-entrenados que ya están incluidos en la biblioteca:

  • VGG16
  • VGG19
  • ResNet50
  • Inception v3
  • Xception
  • MobileNet

 

 

Las redes VGG, junto con la anterior AlexNet del 2012, siguen el esquema arquetípico de las redes convolucionales clásicas: una serie de convolucionces,max pooling, capas de activación y finalmente algunas capas de clasificación completamente conectadas. MobileNet es, esencialmente, una versión simplificada de la arquitectura Xception, optimizada para aplicaciones móviles. Sin embargo, los tres modelos restantes realmente han redefinido la forma en que actualmente observamos las redes neuronales. Este artículo se centrará en la intuición de las arquitecturas de ResNet, Inception y Xception, y en por qué se han convertido en el punto de referencia para los estudios posteriores de visión artificial.

ResNet

ResNet, nació de una simple observación: “¿por qué agregar más capas a las redes neuronales profundas no mejora la precisión, o incluso peor?”

Intuitivamente, las redes neuronales más profundas no deben funcionar peor que las superficiales, o al menos no durante el entrenamiento cuando no existe el riesgo de overfitting. Tomamos una red de ejemplo con n capas que alcanzan cierta precisión. Como mínimo, una red con n + 1 capas debería ser capaz de alcanzar el mismo grado de precisión copiando las primeras n capas y ejecutando un mapeo de identidad para la última capa. Del mismo modo, las redes de n + 2, n + 3 y n + 4 capas pueden, con el mismo método, obtener la misma precisión. Sin embargo, a medida que la profundidad de la red crece esto no siempre es cierto.

Los desarrolladores de ResNet han devuelto este problema a la hipótesis de que las asignaciones directas son difíciles de entrenar. Por lo tanto, propusieron un remedio: en lugar de tratar de aprender a partir de mapeos subyacentes de x y H (x), es posible aprender la diferencia entre los dos, que es el “residuo” y, posteriormente, ajustar el último a la entrada.

Supongamos que el residuo es F (x) = H (x) -x. Ahora nuestra red intenta aprender de F (x) + x.

Esto dio origen a los famosos bloques de ResNet (red residual):

2.jpg

ResNet block

 

ResNet block

Cada “bloque” ResNet consta de una serie de capas y un mapeo de identidad que agrega una entrada de bloque a la salida. Esta operación de “adición” se realiza elemento por elemento. Y si la entrada y la salida son de diferentes tamaños, se pueden utilizar técnicas de relleno cero o de proyección (a través de convoluciones de 1×1) para crear las dimensiones correspondientes.

Volviendo a nuestra red de ejemplo, este método puede simplificar enormemente la construcción de las capas de identidad de las que está compuesto. De hecho, es mucho más fácil aprender a presionar F (x) a 0 y dejar la salida como x. Por lo tanto, ResNet proporciona a las capas un punto de referencia x desde el cual aprender, en lugar de comenzar desde cero desde una transformación de identidad.

Esta idea es realmente efectiva en la práctica. Antes, en las redes neuronales profundas había un problema de cancelación del gradiente, cuyo descenso, dado por la minimización de la función de error, se reduce exponencialmente a través de la retropropagación de las capas anteriores. En esencia, el largo camino a través de las capas anteriores hizo que los signos de errores fueran tan pequeños que no permitieran que la red aprendiera. Sin embargo, gracias a la innovación introducida por ResNet, descrita anteriormente, ahora podemos construir redes de innumerables capas (potencialmente más de mil) que tienen un alto grado de precisión. Este fue un gran paso, considerando que el modelo más profundo creado hasta entonces fue de 22 capas (ganador de la competencia ILSVRC 2014).

Se han publicado muchos artículos posteriores sobre aprendizaje profundo, pero sin mayores mejoras. ResNet sigue siendo, fundamentalmente, el modelo que cambió nuestra comprensión de las redes neuronales y cómo aprenden

¡La red de 1000+ capas es de código abierto! Puedes encontrarlo aquí.

Inception

Si ResNet se concentra en la profundidad, Inception Family ™ se enfoca en la extensión. Entonces, los desarrolladores de Inception estaban interesados en la eficiencia computacional de entrenar redes más grandes. En otras palabras: ¿cómo podemos aumentar el ancho de las redes neuronales sin exceder la capacidad computacional de una computadora?

El trabajo original se refería a un componente conocido como el nombre de “Inception model”.  El corazón de este modelo contenía dos elementos innovadores.

  1. La primera intuición se refiere a las operaciones en las capas. En una CNN tradicional, cada capa extrae información de la capa anterior para transformar los datos de origen en un tipo diferente de información. La salida de una convolución de 5×5 extrae características diferentes de las de un 3×3 o un máximo de agrupación, y así sucesivamente. Para cada capa, ¿cómo podemos adivinar qué núcleo proporciona la información más relevante?

¿Por qué no dejar que el modelo elija?

Un módulo Inception elabora múltiples y diferentes transformaciones en los mismos datos de entrada, al mismo tiempo, vinculando los resultados en una sola salida. En otras palabras, cada  capa“Inception module”  consistira en una convolución de 5×5, una 3×3 y max-pool. La selección de las características más relevantes se deja a la siguiente capa.

3The increased

La mayor densidad de información de la arquitectura de este modelo tiene un problema relevante: el aumento drástico en la capacidad computacional requerida. No solo los filtros convolucionales más grandes (por ejemplo, 5×5) son exigentes y costosos de calcular, sino que la superposición de diferentes filtros aumenta el número de mapas de características para cada capa. Este es un verdadero impedimento para nuestro modelo.

Veámoslo de otra manera: para cada filtro que agreguemos, debemos realizar una convolución en todos los mapas de entrada para calcular una única salida. En la imagen a continuación vemos cómo la creación de un mapa de salida a partir de un solo filtro implica el cálculo en cada mapa de las capas anteriores.

4

Digamos que hay M mapas de entrada. Para cada filtro adicional, debemos hacer que se involocre a lo largo de todos los mapas de entrada M; de la misma manera, si tenemos más N filtros, deberíamos hacer que se convolucionen a lo largo de todos los mapas N * M. En otras palabras, “cualquier aumento uniforme en el número de [filtros] da como resultado un aumento al cuadrado en el cálculo”. Nuestro módulo Inception ha triplicado o cuadruplicado la cantidad de filtros. Desde un punto de vista computacional, es un problema real.

Esto lleva a la segunda intuición: use circunvoluciones 1×1 para una reducción en la dimensionalidad. Para resolver la dificultad computacional descrita anteriormente, los desarrolladores de Inception usaron convoluciones 1×1 para “filtrar” la profundidad de las salidas. Estas circunvoluciones tienen en cuenta un valor a la vez, pero a través de múltiples canales, y también pueden extraer información espacial y comprimirla en una dimensión más pequeña. Por ejemplo, con 2 x 1×1 filtros, una entrada de tamaño 64x64x100 (con 100 mapas de características) se puede comprimir a 64x64x20. Al reducir el número de mapas de entrada, los desarrolladores pudieron superponer las transformaciones de diferentes capas en paralelo, lo que generó redes que eran profundas (con numerosas capas) y amplias (con operaciones paralelas).

5

 

  1. a) modulo Inception,primera versión b) modulo Inception con reducción de dimensionalidad

la primera versión de Inception, llamada “GoogLeNet”, es la anteriormente mencionada que tiene 22 capas y que ganaron la competencia ILSVRC 2014. Inception v2 y v3, desarrolladas un año después, son mejores que la versión anterior por varios factores: el más relevante es el refactoring de circunvoluciones grandes en otras más pequeñas y consecutivas, que son más fáciles de aprender. Por ejemplo, en el Inception v3, la convolución 5×5 fue reemplazada por dos convulsiones consecutivas de 3×3.

El inicio se convirtió rápidamente en una referencia para la arquitectura de modelos posteriores. Su última versión, v4, también agrega conexiones residuales entre cada módulo, creando un híbrido entre Inception y ResNet. No obstante, el factor más importante es que este modelo demuestra la fortaleza de las arquitecturas red-red bien concebidas, que alcanzan un nuevo nivel en la legitimación del poder de las redes neuronales.

Vale la pena señalar que la investigación sobre las siguientes versiones v2 y v3 se publicó el día inmediatamente posterior a la fecha de renuncia en ResNet.

Xception

Xception, “extreme inception”, con diferencia de las arquitecturas anteriores, ha cambiado nuestra comprensión de las redes neuronales, particularmente las redes convolucionales.

La hipótesis fue: “las correlaciones espaciales y las que existen entre los canales son lo suficientemente libres para hacer que sea preferible no mapearlas juntas”.

Esto significa que en una CNN tradicional, los estados convolucionales identificaron correlaciones entre el espacio y la profundidad. En la siguiente imagen podemos revisar la operación.

4

El filtro considera simultáneamente una dimensión espacial (cada cuadrado de 2×2 colores) y un cross-channel o dimensión de “profundidad” (la pila de cuatro cuadrados). En la capa de entrada de una imagen, esto es el equivalente de un filtro convolucional que examina un grupo de píxeles de 2×2  que atraviesa los tres canales RGB. Entonces nos hacemos una pregunta: ¿qué razón tenemos para considerar la región de imagen y los canales simultáneamente?

6

Inception comienza a separar estos dos elementos: gracias a las convoluciones 1×1 proyecta la entrada original en múltiples espacios de entrada de menor tamaño, y de cada uno de estos utiliza diferentes filtros para transformar esos pequeños bloques de datos tridimensionales. Xception va aún más allá: en lugar de dividir los datos de entrada en múltiples grupos comprimidos, mapea  separadamente para realizar una convolución 1×1 en profundidad para capturar correlaciones cross-channel .

Esta operación se conoce como “depthwise separable convolution”  que consiste en una convolución espacial(depthwise convolution) realizada independientemente para cada canal, seguida de una convección 1×1 (pointwise convolution) entre los canales. Por lo tanto, es una búsqueda de correlaciones primero en un espacio bidimensional y luego en un espacio unidimensional. Esta asignación 2D + 1D es más fácil de aprender que una completamente 3D.

Xception supera el rendimiento de Inception v3 en los  dataset de ImageNet, y lo hace igualmente bien con los dataset para la clasificación de imágenes de 17,000 clases. Además, tiene la misma cantidad de parámetros del modelo Inception, lo que permite una eficienente. Aunque Xception es muy reciente, su arquitectura ya se ha convertido en parte de las aplicaciones de Google para visión móvil, a través de MobileNet.

Tenemos  que decir que el desarrollador de Xception, François Chollet, también es el autor de Keras.

 

 

 

Perspectivas y aplicaciones

 

El conocimiento de ResNet, Inception y Xception se ha vuelto más y más importante, tanto en investigación como en negocios. Una aplicación interesante es el aprendizaje por transferencia, una técnica de aprendizaje automático en la cual el conocimiento tomado de una fuente (por ejemplo, ResNet) se aplica a un dominio /o sector especifico que podria tener puntos de datos numéricamente mucho más pequeños. Esto generalmente incluye dos acciones: inicializar un modelo con pesos preinscritos por ResNet, Inception, etc., utilizándolo tanto para la extracción de características como para la optimización (fine-tuning) de las últimas capas en un nuevo dataset. A través del aprendizaje de transferencia, estos modelos pueden reutilizarse para cualquier operación relacionada con él, desde la detección de objetos para vehículos de conducción autónomos hasta la creación de etiquetas y subtítulos para grabaciones de video.

Puede encontrar una guía de Keras para a modelos de fine-tuning aquí.

 

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *