Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 10136|Respuesta: 0

La evolución de la arquitectura de redes neuronales: Una revisión exhaustiva de más de diez arquitecturas desde LeNet5 hasta ENet

[Copiar enlace]
Publicado en 24/4/2018 13:08:47 | | | |
LeNet5
LeNet5 nació en 1994 y es una de las primeras redes neuronales convolucionales, además de haber avanzado en el campo del aprendizaje profundo. Desde 1988, tras muchas iteraciones exitosas, este trabajo pionero de Yann LeCun se denomina LeNet5 (véase: Aprendizaje basado en gradientes aplicado al reconocimiento de documentos).


La arquitectura de LeNet5 se basa en la idea de que (especialmente) las características de una imagen están distribuidas a lo largo de toda la imagen, y que la convolución con parámetros aprendibles es una forma eficiente de extraer características similares en múltiples ubicaciones con un número reducido de parámetros. En ese momento, no había GPU para ayudar con el entrenamiento, e incluso la CPU era lenta. Por lo tanto, la capacidad de guardar parámetros así como el proceso de cálculo es un desarrollo clave. Esto es lo opuesto a usar cada píxel como una entrada separada para una red neuronal grande y multicapa. LeNet5 explica que esos píxeles no deberían usarse en la primera capa porque la imagen tiene fuertes correlaciones espaciales que no pueden aprovecharse usando píxeles independientes de la imagen como diferentes características de entrada.

Las características de LeNet5 pueden resumirse de la siguiente manera:

Las redes neuronales convolucionales usan 3 capas en secuencia: convolucional, agrupada, no lineal → ¡Probablemente esta sea una característica clave del aprendizaje profundo de imágenes desde este artículo!
Utiliza convoluciones para extraer características espaciales
Submuestra usando mapeo a media espacial
La no linealidad en forma de tangente hiperbólica (tanh) o en forma de S (sigmoide).
Las Redes Neuronales Multicapa (MLPs) sirven como clasificadores finales
Las matrices de conexión dispersas entre capas evitan grandes costes computacionales

En conjunto, esta red es el punto de partida de un gran número de arquitecturas recientes y ha inspirado a muchas en este ámbito.

Intervalo
De 1998 a 2010, la red neuronal estuvo en su fase de incubación. La mayoría de la gente desconoce su creciente poder, mientras que otros investigadores tardan en hacerlo. Gracias a la llegada de las cámaras de los teléfonos móviles y las cámaras digitales económicas, cada vez se explotan más datos. Y la potencia de cálculo también está creciendo, las CPUs son cada vez más rápidas y las GPUs se están convirtiendo en herramientas informáticas para múltiples propósitos. Estas tendencias han permitido que las redes neuronales avancen, aunque lentamente. Los datos y la potencia de cálculo hacen que las tareas que pueden realizar las redes neuronales sean cada vez más interesantes. Después de eso, todo se aclaró......

Red Dan Ciresan
En 2010, Dan Claudiu Ciresan y Jürgen Schmidhuber publicaron una implementación de la red neuronal GPU más temprana. Esta implementación es una red neuronal de 9 capas que se ejecuta en un procesador gráfico NVIDIA GTX 280, incluyendo propagación hacia adelante y hacia atrás.

AlexNet
En 2012, Alex Krizhevsky publicó Alexet (véase: ImageNet Classification with Deep Convolutional Neural Networks), una versión más profunda y amplia de LeNet que ganó la difícil competencia de ImageNet por un margen significativo.


AlexNet amplía las ideas de LeNet a redes neuronales más grandes que pueden aprender objetos y niveles de objeto mucho más complejos. Las contribuciones de este trabajo son:

Utiliza una unidad lineal modificada (ReLU) como no linealidad
Utiliza la técnica Dropout para ignorar selectivamente neuronas individuales durante el entrenamiento y evitar el sobreajuste del modelo
Anula un pool grande para evitar el efecto medio del pooling promedio
Reduce el tiempo de entrenamiento con la GPU NVIDIA GTX 580

En ese momento, las GPUs pueden proporcionar un mayor número de núcleos que las CPUs, y el tiempo de entrenamiento puede multiplicarse por 10, lo que a su vez permite conjuntos de datos y imágenes más grandes.

El éxito de AlexNet ha provocado una pequeña revolución. Las redes neuronales convolucionales son ahora la columna vertebral del aprendizaje profundo, y se han convertido en sinónimo de "grandes redes neuronales que ahora pueden resolver tareas útiles."

Hazaña
En diciembre de 2013, el laboratorio Yann LeCun de la Universidad de Nueva York propuso un derivado de AlexNet, Overfeat (véase: OverFeat: Reconocimiento, Localización y Detección Integrada usando Redes Convolucionales). Este artículo también propuso una caja delimitadora de aprendizaje, lo que llevó a muchos artículos sobre este mismo tema. Creo que es mejor aprender a dividir objetos que aprender a usar cajas delimitadoras artificiales.

VGG
La red VGG de la Universidad de Oxford (véase: Redes Convolucionales Muy Profundas para el Reconocimiento de Imágenes a Gran Escala) es la primera red que utiliza filtros 3×3 más pequeños en cada capa convolucional y los combina para procesarlos como una secuencia convolucional.

Esto parece ser lo opuesto al principio de LeNet, donde se utilizan grandes convoluciones para obtener características similares en una imagen. A diferencia de los filtros 9×9 o 11×11 de AlexNet, los filtros empiezan a hacerse más pequeños, acercándose a la infame anomalía de convolución 1×1 que LeNet intenta evitar, al menos en la primera capa de la red. Sin embargo, VGG ha avanzado mucho utilizando múltiples convoluciones 3×3 en sucesión para imitar los efectos de campos receptivos mayores, como 5×5 y 7×7. Estas ideas también se han utilizado en arquitecturas de red más recientes, como Inception y ResNet.


Las redes VGG utilizan múltiples capas convolucionales 3×3 para caracterizar características complejas. Cabe señalar que los bloques 3º, 4º y 5º de VGG-E: 256×256 y 512×512 3×3 se utilizan varias veces para extraer características más complejas y combinaciones de estas características. El efecto equivale a un gran clasificador 512×512 con 3 capas convolucionales. Esto obviamente significa que hay muchos parámetros y capacidades de aprendizaje. Pero estas redes son difíciles de entrenar y deben dividirse en redes más pequeñas y acumularse capa por capa. Esto se debe a la falta de una forma robusta de regularizar el modelo o a limitar más o menos una gran cantidad de espacio de búsqueda debido al gran número de parámetros.

VGG utiliza grandes tamaños de características en muchas capas porque la inferencia consume mucho tiempo en tiempo de ejecución. Al igual que con el cuello de botella de Inception, reducir el número de características ahorrará algunos costes computacionales.

Red en red
La idea de Red en Red (NiN, véase artículo: Red en Red) es simple y excelente: el uso de la convolución 1×1 para proporcionar más capacidades componibles para las características de la capa convolucional.

La arquitectura NiN utiliza capas MLP espaciales tras convoluciones individuales para combinar mejor características antes de otras capas. De nuevo, puedes pensar que las convoluciones 1×1 van en contra del principio original de LeNet, pero en realidad pueden combinar características convolucionales de una manera mejor de lo que no es posible simplemente apilando más características convolucionales. Esto es diferente de usar el píxel original como entrada de siguiente capa. Las convoluciones 1×1 se usan a menudo para combinar espatáticamente características en mapas de características tras la convolución, por lo que en realidad pueden usar muy pocos parámetros y compartirlos entre todos los píxeles de estas características.


La capacidad de MLP para aumentar considerablemente la efectividad de características convolucionales individuales combinándolas en grupos más complejos. Esta idea se ha utilizado desde entonces en algunas arquitecturas recientes, como ResNet, Inception y sus derivados.

NiN también utiliza una capa de pooling promedio como parte del clasificador final, otra práctica que se hará común. Esto se hace promediando las respuestas de la red a múltiples imágenes de entrada antes de la clasificación.

GoogLeNet y Origen
Christian Szegedy, de Google, comenzó su búsqueda para reducir la sobrecarga computacional de las redes neuronales profundas y diseñó GoogLeNet, la primera arquitectura de Inception (véase: Ir más a fondo con convoluciones).

Era en otoño de 2014, y los modelos de deep learning empezaban a ser útiles para clasificar fotogramas de imagen frente a vídeo. La mayoría de los escépticos ya no dudan de que el aprendizaje profundo y las redes neuronales han vuelto realmente esta vez, y seguirán evolucionando. Dada la utilidad de estas tecnologías, gigantes de internet como Google están muy interesados en desplegar estas arquitecturas de forma eficiente y a gran escala en sus servidores.

Christian reflexionó mucho sobre cómo las redes neuronales profundas pueden alcanzar altos niveles de rendimiento, como en ImageNet, mientras reducen su sobrecarga computacional. O se pueden hacer mejoras de rendimiento asegurando la misma sobrecarga computacional.

Él y su equipo idearon el módulo Inception:


A primera vista, básicamente es una combinación paralela de filtros convolucionales 1×1, 3×3, 5×5. Pero la gran idea de Inception es reducir el número de características antes de los costosos módulos paralelos con bloques convolucionales 1×1 (NiN). Esto se conoce comúnmente como un "cuello de botella". Esta sección se explicará en la sección de "capa de cuello de botella" más abajo.

GoogLeNet utiliza una columna vertebral sin módulo de inception como capa inicial, seguida de una capa media de pooling más un clasificador softmax similar a NiN. Este clasificador tiene un número mucho menor de operaciones que los clasificadores de AlexNet y VGG. Esto también condujo a un diseño de red muy eficaz, véase el artículo: Un análisis de modelos profundos de redes neuronales para aplicaciones prácticas.

Capa de cuello de botella
Inspirado en NiN, la capa de cuello de botella de Inception reduce el número de características en cada capa y, por tanto, el número de operaciones; Así que el tiempo de inferencia puede mantenerse bajo. El número de características se reduce 4 veces antes de que los datos pasen por costosos módulos convolucionales. Esto supone un ahorro significativo en términos de costes computacionales y un éxito de la arquitectura.

Vamos a verificarlo específicamente. Ahora que tienes 256 entradas de características y 256 salidas de características, supongamos que la capa Inception solo puede realizar 3×3 convoluciones, lo que significa un total de 256×256×3×3 convoluciones (casi 589.000 operaciones de multiplicación y acumulación (MAC)). Esto puede estar fuera de nuestro presupuesto de cálculo, por ejemplo, ejecutar la capa en 0,5 milisegundos en servidores de Google. En su lugar, decidimos reducir el número de características que necesitaban ser enrevesadas, que era 64 (es decir, 256/4). En este caso, comenzamos con una convolución de 256 -> 64 1×1, luego 64 convoluciones en todas las ramas de la Incepción, seguidas de una convolución 1×1 desde una característica de 64 -> 256, y ahora la operación es la siguiente:

256×64 × 1×1 = 16.000 s
64×64 × 3×3 = 36.000 s
64×256 × 1×1 = 16.000 s

En comparación con los 600.000 anteriores, ahora hay un total de 70.000 volúmenes computacionales, lo que es casi 10 veces menos.

Y aunque hicimos mejores operaciones, no perdimos su generalidad en este nivel. La capa de cuello de botella ha demostrado ser de primera en conjuntos de datos como ImageNet, y también se está utilizando en arquitecturas como ResNet, que presentaremos a continuación.

Tiene éxito porque las características de entrada están relacionadas, por lo que la redundancia puede reducirse combinándolas correctamente con la convolución 1×1. Luego, tras enrevesar un pequeño número de características, pueden expandirse de nuevo en combinaciones significativas en la siguiente capa.

Origen V3 (y V2)
Christian y su equipo son investigadores muy prolíficos. En febrero de 2015, se introdujo Inception normalizado por lotes como Inception V2 (véase el artículo: Normalización por lotes: Acelerando el entrenamiento profundo en redes reduciendo el desplazamiento interno de covariables). La normalización por lotes calcula la media y la desviación estándar de todos los mapas de características en la salida de una capa, y utiliza estos valores para normalizar sus respuestas. Esto equivale a "blanquear" los datos, de modo que todos los mapas neuronales respondan en el mismo rango y tengan media cero. Esto ayuda a entrenar cuando la siguiente capa no necesita aprender desplazamiento respecto a los datos de entrada, y también se centra en cómo combinar mejor estas características.

En diciembre de 2015, el equipo lanzó una nueva versión del módulo Inception y una arquitectura similar (véase el artículo: Repensando la arquitectura Inception para la visión por computador). El artículo explica mejor la arquitectura original de GoogLeNet, dando más detalles sobre las elecciones de diseño. La idea original es la siguiente:

Construyendo cuidadosamente la red, se equilibra la profundidad y el ancho para maximizar el flujo de información hacia la red. Antes de cada pooling, añade mapeo de características.
A medida que aumenta la profundidad, la profundidad o el número de características de la capa de red también aumenta sistemáticamente.
Utiliza cada aumento de profundidad de capa para aumentar la unión de las características antes de la siguiente capa.
Usando solo 3×3 convoluciones, un filtro 5×5 y 7×7 dado puede dividirse en múltiples 3×3 cuando sea posible. Mira la imagen de abajo


Como resultado, la nueva Inception se convirtió en:


También puedes separar el filtro aplanando la convolución en módulos más complejos:


Al realizar cálculos de inception, el módulo Inception también puede reducir el tamaño de los datos proporcionando pooling. Esto es básicamente similar a ejecutar una capa simple de pooling en paralelo al ejecutar una convolución:


Inception también utiliza una capa de pooling y softmax como clasificador final.

ResNet
Diciembre de 2015 se produjo un nuevo cambio, que coincidió con Inception V3. ResNet tiene una idea sencilla: alimentar la salida de dos capas convolucionales consecutivas y saltarse la entrada a la siguiente capa (véase el artículo: Deep Residual Learning for Image Recognition).


Esto es similar a algunas de las ideas antiguas anteriores. Pero en ResNet, dividen las dos capas y se aplican a mayor escala. Hacer trillado tras dos capas es una intuición clave porque dividirlas una capa no mejora más. Pasar por la capa 2 podría considerarse como un clasificador pequeño, o una red dentro de la red.

Es la primera vez que el número de capas de red supera las 100, e incluso se pueden entrenar 1000 capas.

ResNet, que cuenta con un gran número de capas de red, está empezando a utilizar una capa de red similar a la capa de cuello de botella de Inception:


Esta capa procesa un número menor de características primero enredando un número menor de características mediante un 1×1 con una salida menor (normalmente 1/4 de la entrada), luego usando una capa de 3×3 y después una capa de 1×1. Similar al módulo Inception, esto garantiza una baja intensidad computacional mientras proporciona combinaciones de características completas.

ResNet utiliza una capa inicial relativamente sencilla en las entradas: una capa base de 7×7 volúmenes con dos pools. Compáralo con los más complejos y menos intuitivos Inception V3 y V4.

ResNet también utiliza una capa de pooling más softmax como clasificador final.

Otras ideas sobre ResNet ocurren todos los días:

ResNet puede considerarse tanto paralelo como contiguo, tratando las entradas y salidas (entradas) como paralelas en muchos módulos, mientras que las salidas de cada módulo están conectadas de forma continua.
ResNet también puede considerarse como una combinación de módulos paralelos o continuos (véase el artículo: Las redes residuales son conjuntos exponenciales de redes relativamente superficiales).
Se ha comprobado que ResNet suele operar en paralelo en bloques de red en las capas 20-30. En lugar de fluir continuamente a lo largo de toda la red.
Cuando ResNet devuelve la salida a la entrada como un RNN, la red puede considerarse un modelo cortical de mejor confianza biológica (véase el artículo: Apuntando las brechas entre el aprendizaje residual, redes neuronales recurrentes y corteza visual).

Origen V4
Aquí tienes otra versión de Inception de Christian y su equipo, que es similar a Inception V3:


Inception V4 también combina el módulo Inception y el módulo ResNet:


Creo que la arquitectura no es muy concisa, pero también está llena de heurísticas menos transparentes. Es difícil entender las opciones que contiene, y para los autores es difícil de explicar.

Dada la simplicidad de la red, que puede entenderse y corregirse fácilmente, ResNet puede ser mejor.

SqueezeNet
SqueezeNet (véase el artículo: SqueezeNet: precisión a nivel AlexNet con 50 veces menos parámetros y tamaño de modelo <0,5MB) es una arquitectura publicada recientemente que reprocesa los conceptos de ResNet e Inception. Un modelo de red de mejor diseño arquitectónico es más pequeño, y los parámetros aún no requieren algoritmos de compresión complejos.

ENet
Nuestro equipo planea combinar todas las características de la arquitectura recientemente revelada para crear una red muy eficiente y de bajo peso que utilice menos parámetros y cálculos para lograr resultados de primer nivel. Esta arquitectura de red se llama ENet y fue diseñada por Adam Paszke. Ya lo hemos usado para marcado de un solo píxel y resolución de escenas.

Para más información sobre ENet, véase el artículo ENet: Una arquitectura profunda de redes neuronales para segmentación semántica en tiempo real. ENet es una red de codificación, suma y decodificación. El codificador es un diseño CNN normal para clasificar. El decodificador es una red de upsampling que propaga la clasificación hacia atrás a la imagen original para la segmentación. Esto solo utiliza redes neuronales y ningún otro algoritmo para la segmentación de imágenes.

ENet está diseñado para utilizar la cantidad mínima de recursos posible al principio. Por eso tiene un script tan pequeño, con una red combinada de codificadores y decodificadores que ocupan 0,7 MB con una precisión de 16 fp. Incluso con un modelo tan pequeño, ENet es similar o superior a otras soluciones de redes neuronales en precisión de segmentación.

Análisis de módulos
El análisis del módulo CNN, que se ha realizado en el artículo (Evaluación sistemática de los avances de CNN en ImageNet), es muy útil:

Usa ELU no linealidad sin batchnorm o ReLU con batchnorm.
Utiliza una transformación de espacio de color RGB aprendida.
Utiliza una estrategia lineal de disminución de la tasa de aprendizaje.
Utiliza la suma de las capas agrupadas promedio y mayor.
Utiliza un tamaño de mini lote de aproximadamente 128 a 256 personas. Si eso es demasiado grande para tu GPU, simplemente reduce la velocidad de aprendizaje a este tamaño.
Utiliza la capa totalmente conectada como convolución y promedia todas las predicciones para hacer la predicción final.
Cuando el estudio aumenta el tamaño del conjunto de entrenamiento, detecta si hay una meseta que no se alcanza
La limpieza de los datos es más importante que su tamaño.
Si no puedes aumentar el tamaño de la imagen de entrada, reduce el paso en las capas siguientes, así que tiene el mismo efecto.
Si tu red tiene una arquitectura compleja y altamente optimizada, como GoogLeNet, debes tener cuidado al modificarla.

Otras arquitecturas a las que merece la pena prestar atención
FractalNet (véase el artículo: FractalNet: Redes Neuronales Ultra-Profundas sin Residuos) utiliza una arquitectura recursiva, que no se prueba en ImageNet. Esta arquitectura es un derivado de ResNet o, más generalmente, de ResNet.

futuro
Creemos que crear una arquitectura de red neuronal es una prioridad máxima para el desarrollo del aprendizaje profundo. Nuestro equipo recomienda encarecidamente leer y comprender detenidamente los artículos mencionados en el artículo.

Pero uno podría preguntarse por qué dedicamos tanto tiempo a crear arquitecturas. ¿Por qué no nos dices qué usar con los datos? ¿Cómo combinas módulos? Estas preguntas son buenas, pero aún están en investigación, y hay un artículo al que referirse: Redes neuronales con estructura diferenciable.

Ten en cuenta que la mayoría de las arquitecturas de las que hemos hablado en este artículo tratan sobre visión por ordenador. Se han desarrollado arquitecturas de redes neuronales similares en otras áreas, y es muy interesante aprender sobre los cambios arquitectónicos en todas las demás tareas.

Si te interesa comparar la arquitectura de redes neuronales y el rendimiento computacional, consulta el artículo: Un análisis de modelos profundos de redes neuronales para aplicaciones prácticas.







Anterior:Varios métodos de cálculo en tiempo de ejecución en Python
Próximo:¡Antminer B3 te dice qué excavar!
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com