Cómo leer esta arquitectura de red neuronal convolucional

Este diagrama de arquitectura de red representa una red neuronal convolucional profunda jerárquica (CNN) para la clasificación de imágenes en color sin supervisión.

La forma de entender el diagrama es comenzar desde el lado derecho y trabajar hacia la izquierda (arriba de la jerarquía) y luego nuevamente hacia la derecha. El diagrama ilustra una fase de generación de izquierda a derecha, pero primero es más fácil comprender la fase de “discriminación” (reconocimiento de imagen) de derecha a izquierda, que utiliza la misma arquitectura de modelo.

Una imagen RGB de 64 × 64 píxeles ingresa a esta CNN jerárquica a la derecha en la matriz 3D etiquetada G. El “ancho” de esta capa, que se muestra como “3”, representa los 3 valores que forman un píxel de color: el rojo, el verde, y componentes azules. Entonces, el número total de valores en la imagen de entrada es 64x64x3 = 4096 píxeles o 12,288 valores.

Se aplica una operación de “convolución” de la red neuronal yendo un paso hacia la izquierda. Lo que se muestra es que un “parche de imagen” de 5 × 5 (región gris que contiene valores de 5x5x3) se asigna a un vector de 128 unidades de salida. Estos 75 valores (5x5x3) se introducen en la capa de red neuronal y se emiten 128 valores (1x1x128). Esto se repite para cada una de las ubicaciones de parche de imagen de 32 × 32, un algoritmo denominado “rectángulo de escaneo”, que da como resultado una imagen de salida de 32x32x128.

En una “red neuronal convolucional” normal, la transformación del parche de imagen se aplicaría a cada ubicación de píxel, por lo que una imagen de entrada de 64 × 64 produciría una “imagen” de salida de 64 × 64. Sin embargo, en esta red en particular, se omite cualquier otra ubicación de píxeles (llamada “zancada”), de modo que la “imagen” de salida es 32 × 32 “píxeles” donde cada píxel tiene 128 componentes (un vector de 128). El parche de imagen de entrada 5 × 5 en el diagrama parece tener 3 columnas grises para ilustrar el efecto de zancada. Los píxeles horizontales 1,2,3,4,5 se asignan a un parche, y los píxeles horizontales 3,4,5,6,7 se asignan al siguiente (desplazado sobre una zancada de dos píxeles). Por lo tanto, los píxeles 3 y 4 se introducen en dos “píxeles” de orden superior diferentes (la franja central gris oscuro).

Continuando a la izquierda, esta transformación se repite para 3 capas más, convirtiendo la representación de imagen de 128 × 32 píxeles de 128 componentes en una representación de 16 × 16 píxeles de 256 componentes, luego en una representación de 8 × 8 píxeles de 512 componentes, y finalmente en una representación de 4 × 4 píxeles de 1024 componentes. Cada capa de imagen muestra la salida de la capa anterior en verde y la entrada a la siguiente capa en gris.

En cada representación de orden superior, un área más grande de la imagen original está representada por un solo “píxel”. Por lo tanto, cada píxel en la imagen 4 × 4 representa al menos 16 píxeles en el original, pero debido al efecto de despliegue de los tamaños de parche de imagen 5 × 5, cada uno de los píxeles de mayor orden termina cubriendo casi toda la imagen.

Entonces, todo eso es para la fase de “discriminación” (reconocimiento).

Debido a que esta es una red “adversaria”, todo el proceso también se ejecuta en reversa de derecha a izquierda para generar imágenes RGB “imaginarias” a partir del ruido. Esta es la fase que realmente se representa en este diagrama. Algo de ruido aleatorio (el vector z de 100 componentes a la izquierda) se procesa a la derecha en pasos llamados “deconv” para “deconvolución” (pero en realidad son convoluciones) para generar una imagen aleatoria a la derecha.

La generación de imágenes aleatorias tiene dos propósitos.

Durante el entrenamiento, una imagen es “reconocida” (de derecha a izquierda), luego se agrega ruido a la representación de orden superior, luego se regenera una versión “noisificada” de izquierda a derecha. Esta versión no ruidosa se vuelve a entrenar para hacer que la representación sea más robusta al ruido.

Después del entrenamiento, se puede ejecutar un ruido totalmente aleatorio a través de la red (de izquierda a derecha) para generar escenas completamente “imaginadas”.

Aquí hay un ejemplo de salida de esta red del documento después de entrenarla en imágenes de dormitorios y luego inyectar varios ejemplos de ruido aleatorio:

Tenga en cuenta que todas estas imágenes generadas aleatoriamente parecen dormitorios en una inspección informal. Pero si te acercas y miras de cerca, verás que no están del todo bien; Las habitaciones y las camas son estructuralmente incoherentes. Bastante raro.

Después de más entrenamiento, sus habitaciones imaginadas se vuelven más coherentes pero siguen siendo un poco extrañas en algunos lugares:

Básicamente, hay dos operaciones de tensor diferentes en esta arquitectura. La primera (proyecto y remodelación) puede verse como una capa totalmente conectada seguida de una operación de remodelación. En esta configuración particular, la capa completamente conectada tiene una dimensión de entrada de 100 y una dimensión de salida de 16384 (4 * 4 * 1024).

El resto de la red consiste en una secuencia de convoluciones fraccionadas estriadas. Creo que la terminología “deconvolución” es inadecuada ya que no describe lo que realmente sucede. La convolución transpuesta es una mejor terminología. Esta operación es realmente bastante simple: un muestreo ascendente seguido de una convolución. Entonces, cuando vea esas convoluciones transpuestas, imagínese que muestreó el tensor anterior y aplicó una convolución sobre él para obtener la salida. La siguiente animación puede dejarlo más claro:

En la imagen anterior, la parte inferior es la entrada y la parte superior es la salida. Las líneas discontinuas representan el resultado de la operación de muestreo ascendente.

Por lo tanto, puede ver este modelo como una capa totalmente conectada, seguida de una remodelación y una secuencia de convoluciones transpuestas. En cada capa, las salidas también pasan por una ReLU, superan la última, que pasa por una unidad [math] tanh [/ math].

More Interesting

¿Cómo se almacenan la mayoría de los conjuntos de datos para el aprendizaje automático a gran escala?

¿Cómo funciona el texto predictivo?

¿Cuál es el ejemplo de código más simple para redes neuronales recurrentes (RNN) en TensorFlow?

¿Cuáles son las principales áreas de la investigación bioinformática actual?

¿Qué significa la siguiente declaración: las redes neuronales son generalmente paramétricas y optimizadas para producir una estimación puntual?

¿Cuál es la diferencia entre el curso de aprendizaje automático de Andrew Ng en Coursera y el curso AZ ML en Python y R en Udemy?

Además del aprendizaje profundo, ¿qué otras herramientas de extracción de funciones están funcionando o son prometedoras para el aprendizaje automático?

¿Es posible entrenar a un RNN en una sola secuencia extremadamente larga?

¿Por qué debería usar TensorFlow sobre NumPy o scikit-learn para construir redes neuronales (excepto para CPU o GPU)?

¿Cuál es la diferencia entre el aprendizaje por refuerzo y la optimización de caja negra?

¿Cómo afectan las imágenes que se filtran con diferentes filtros de imagen al entrenamiento de las redes neuronales profundas?

¿Cuándo se utilizarían los bosques aleatorios sobre las máquinas potenciadas por gradiente (GBM)?

¿En qué áreas de la banca / finanzas se utiliza el aprendizaje automático?

¿Cuál es el punto de probar los datos en k-fold cross validation?

Dada una serie de datos de tiempo para la construcción de modelos, ¿cómo divido el conjunto de datos en muestras de capacitación y validación?