Redes Convolucionales

Rubén Rodríguez Abril

El reconocimiento de patrones visuales es una de los grandes logros de la inteligencia artificial moderna. Esto ha sido posible gracias a la aparición de las redes convolucionales y a los modelos de perceptrones basados en el funcionamiento de la retina biológica.

Redes Convolucionales

Las redes convolucionales son una clase de perceptrón multicapas, caracterizada por la existencia de un tipo de neurona que no tiene conexiones con todas las neuronas de la capa anterior, sino sólo con un subconjunto de ellas denominado campo excitatorio. Esto las distingue de las neuronas densamente conectadas, que sí tienen conexiones sinápticas con todas y cada una de las neuronas de la capa anterior.

Esquema de dos tipos de conexiones: densa o de campo excitatorio. Las redes convolucionales se caracterizan por neuronas con conexiones con campos.

Este tipo de redes son de amplia utilización en múltiples campos como el reconocimiento visual o los vehículos autónomos.

Características de las Redes Convolucionales

Las características básicas de las redes convolucionales son las siguientes:

-La red se estructura alternativamente en capas de convolución y capas de agrupación. A cada una de estas capas le corresponde un tipo de neurona diferente. Las primeras se encargan de extraer patrones dentro de los datos de entrada y las segundas de crear invariancia traslacional en estos patrones (lo explicaremos más adelante en detalle). Cada una de las capas se compone a su vez de un cierto número de mapas de características.

-Las neuronas de ambos tipos de capas tienen un campo excitatorio, que constituye un subconjunto de los datos de entrada. En los sistemas de reconocimiento visual, este campo excitatorio suele ser una región rectangular de n×m píxeles. El conjunto de células de cada mapa cubre el campo visual de la entrada al completo.

Matriz de muestreo

Una de las neuronas de un mapa de segmentación de 4×4 recibe su input de 9 neuronas pertenecientes a un campo excitatorio de 3×3 que es una sección de un mapa de segmentación de la capa previa.

-Todas las neuronas convolucionales de un mismo mapa de características poseen el mismo número de conexiones y el mismo conjunto de pesos sinápticos. Este conjunto común de pesos sinápticos recibe el nombre de kernel.

Arquitectura elemental de las Redes Convolucionales.

Es usual que, a medida que se incorporan capas, los mapas de características aumenten en número por cada capa, pero viendo reducida su resolución (tamaño en píxeles). Algo que es necesario puntualizar es que aunque no existe una conexión densa entre mapas -una neurona no recibe input de todas las neuronas de un mapa de la capa previa-, si existe una densidad a nivel de capa, pues cada neurona de un mapa de convolución recibe input de los campos excitatorios de todos los mapas de características de la capa previa.

La operación de convolución

Las neuronas artificiales convolucionales reciben este nombre porque su actividad se modeliza a partir de la operación matemática de convolución, utilizada ampliamente en la edición y procesamiento de imágenes. Ésta consiste en la aplicación de un filtro, denominado kernel, al conjunto de datos de entrada, obteniendo como resultado un mapa de características concreto. La operación se realiza a través de los siguientes pasos:

Selección del kernel

En primer lugar, se procede a la selección del filtro o kernel que corresponda a la tarea que queremos realizar. Matemáticamente, éste se compone de una pequeña retícula o matriz de n×m coeficientes. Por ejemplo, el filtro de nitidez (sharpen) viene constituido por la siguiente matriz:

Kernel o filtro de convolución
Ejemplo de la aplicación de un filtro de convolución sharpen.
Ejemplo de un filtro emborronado sobre una imagen.
Ejemplo de una imagen sin filtro alguno.
Ejemplo de un filtro sharpen sobre una imagen.

Imágenes producidas tras la aplicación de un filtro de nitidez (sharpen), que provoca que los bordes de las imágenes se agudicen.

Aplicación de la convolución

El filtro se superpone sobre una parcela de los datos de entrada, también de n×m dimensiones, de tal manera que a cada píxel le corresponda una casilla del filtro. El valor de cada píxel de entrada es entonces multiplicado por el coeficiente correspondiente del filtro. Después, todos los resultados de cada multiplicación se suman. Y la suma obtenida se almacena finalmente como el valor de un píxel de la imagen de salida. Esta operación de multiplicación y suma recibe el nombre de convolución. El filtro se va desplazando a través de toda la pantalla y la operación se va repitiendo así hasta cubrir todo el espacio de la pantalla de entrada.

Neuronas convolucionales

Las neuronas artificiales convolucionales operan de un modo similar al descrito para los filtros. En el caso de las neuronas, los valores del kernel se corresponderían con los pesos sinápticos de la célula, mientras que los datos de entrada entrada serían equivalentes a los estímulos recibidos a través de las sinapsis. Su función de activación sería el rectificador.

Operación de Convolución, base de todas las redes convolucionales.

Operación de convolución. Los valores de cada pixel toman valores de 0 a 256, de más oscuro a más claro. El campo de excitación es de 3×3 dimensiones, lo cual resulta en un mapa de tamaño 4×5.

Stride y Padding

Además del kernel, otros parámetros a tener en cuenta son el desplazamiento (stride) y el almohadillado (padding). El primero determina el tamaño del desplazamiento del kernel a través de los datos de entrada. El segundo dispone si existe o no un aumento en la resolución del mapas de segmentación de entrada. Normalmente este aumento se consigue añadiendo píxeles de valor nulo. Estos parámetros tienen un impacto en la resolución del nuevo mapa de segmentación.

El padding y el stride son parámetros que modifican el kernel en la operación de convolución.

El stride especifica el número de casillas o píxeles que avanza el campo excitatorio. El padding aumenta la resolución de la capa de entrada. Es claro por tanto, que un padding de un píxel (padding same) y un stride también de uno resulta en un mapa con la misma resolución que el de entrada.

La capa de agrupación en Redes Convolucionales

Cada capa de convolución es seguida por una capa de agrupación (subsampling, pooling), cuya principal misión es la de reducir la resolución de los datos de entrada. Como en la convolución, cada neurona de esta capa produce una única salida a partir de un campo excitatorio de la capa previa. En vez del producto escalar propio de la convolución, las capas de agrupación realizan otro tipo de operaciones. Los modelos de agrupación más utilizados son max-pooling, que atribuye a la salida el mismo valor que la entrada más alta, y average-pooling, en el que el valor de activación de la neurona es la media de todas sus entradas.

Subsampling pooling o capa de agrupación, con dos métodos: max-pooling y average-pooling, otra de las operaciones básicas de las redes convolucionales.

El Neocognitrón

El modelo de retina

El japonés Kunikiho Fukushima fue el primero que introdujo, en un trabajo suyo del año 1980, el concepto de neuronas convolucionales en el ámbito del aprendizaje profundo, apoyándose en los trabajos que habían realizado los biólogos Torsten Wiesel y David Hubel en los años 60 sobre las células de la corteza visual. Hubel y Wiesel postularon la existencia de dos tipos de neuronas, a las que llamaron células simples y células complejas. Las células simples cubrirían exclusivamente una porción limitada de la corteza visual, y se encargarían de detectar, a través de las pautas de excitación e inhibición de sus dendritas, la existencia de patrones geométricos como líneas, aristas o esquinas. Las células complejas recibirían sus aferencias de las células simples, y se excitarían cada vez que un patrón (por ejemplo una línea horizontal) es detectado en cualquier región del campo visual.

El primer perceptrón multicapas

Fukushima concibió un tipo de perceptrón multicapas, al que denominó Neocognitrón, en el que se alternaban capas de células-S (hoy en día, denominadas células de convolución) y de células-C (llamadas en la actualidad, células de agrupación). Las primeras realizarían labores análogas a las de las células simples mientras que las segundas ejercerían un papel similar al de las células complejas.

Cada capa convolucional se subdivide en planos (en la actualidad, mapas de características), y las células de cada uno de los planos (todas ellas con los mismos pesos sinápticos) se encargan de reconocer una determinada pauta visual, tal y como se muestra en la imagen:

Estructura del Neocognitrón

Ejemplo de redes convolucionales primitavas, el Neocognitrón de Fukushima.

Estructura del Neocognitrón. Conforme se avanza hacia la derecha las diferentes capas de neuronas se encargan de reconocer patrones de cada vez mayor complejidad geométrica. Las capas de células complejas (C) existentes entre las células simples realizan una suerte de pixelado de la salida de la capa anterior, reduciendo así su resolución. Esto permite que el Neocognitrón sea capaz de tolerar pequeñas deformaciones en la grafía de los dígitos.

El Neocognitrón fue capaz de reconocer eficientemente dígitos con una resolución de 19×19 píxeles. Sin embargo, los pesos de sus capas de convolución tenían que ser determinados a mano, y Kunikiho Fukushima no llegó a diseñar ningún algoritmo de aprendizaje para optimizar automáticamente los pesos sinápticos de la red.

Redes Convolucionales: LeNet-5

Por ese motivo, el informático francés Yann LeCun y su equipo de la Universidad de Toronto, desarrollando las ideas de Fukushima, presentaron en el año 1998 LeNet-5, un perceptrón multicapas capaz de reconocer dígitos manuscritos en envoltorios de correos, y que podía aprender a través del mecanismo de retropropagación. Aún hoy es considerado como el modelo estándar más simple de una red neuronal convolucional y es utilizado para introducir este modelo a los estudiantes de aprendizaje profundo.

Modelo de capas

LeNet-5 es una red compuesta de 7 capas internas diferentes: la primera, tercera y quinta capas son de convolución (kernel 5×5). La segunda y la cuarta, capas de agrupación (kernel 2×2). La sexta y séptima están densamente conectada con su capa anterior. Es una red jerárquica en la medida en que la complejidad de los patrones analizados por las capas convolucionales aumenta conforme nos acercamos a la salida. 

Estructura de LeNet-5

Ejemplo de un de las redes convolucionales: LeNet5

En este esquema de LeNet 5 las capas convolucionales aparecen de color gris oscuro, mientras que las de agrupación de color azul. A la izquierda de cada capa aparece la resolución de los mapas en cada mapa, mientras que a la derecha, en cursiva, el número de los mismos. Como se muestra en el ejemplo, para que la red identifique el número 6 manuscrito, debería dar una probabilidad mayor a una de las diez neuronas de la última capa, aquella que se haya dado probabilidades también altas en otros ensayos con el número 6.

Las capas de convolución se dividen en mapas, y cada mapa se encarga de reconocer un rasgo visual determinado. Cada neurona tiene un campo de excitación de 5×5 píxeles. Todas las neuronas convolucionales de cada mapa tienen exactamente los mismos pesos sinápticos, tal como habíamos señalado.

A medida que avanzamos hacia la salida, el número de mapas en cada capa convolucional aumenta, aunque disminuye paralelamente la resolución de los mismos. Finalmente, los 120 mapas de la quinta capa sólo tienen una resolución de 1×1. Ello se debe al hecho de que conforme la red va progresivamente extrayendo la información necesaria para reconocer al dígito, descarta paralelamente los datos gráficos superfluos. La salida está formada por diez neuronas, que representan a los diez dígitos, y a las que corresponde una función de activación softmax. La función de pérdida es la entropía cruzada.

En el taller de nuestra web ofrecemos un tutorial para  aprender a programar desde cero LeNet-5. Será el primer paso para comenzar el aprendizaje en el desarrollo de modelos de redes convolucionales.

Redes Convolucionales posteriores

El modelo que presentaron LeCun y sus compañeros fue desarrollado y perfeccionado por otros especialistas en años posteriores. Se añadieron bucles de retroalimentación que permitían que las capas anteriores recibieran estímulos de las capas posteriores, de un modo muy parecido a como sucede en el cerebro humano (se estima cerca del 90% de los estímulos que recibe una neurona provienen de otras partes del cerebro, e incluso el núcleo geminado lateral admite conexiones de retroalimentación de la corteza visual primaria). Los modelos de perceptrones multicapas, que hace 20 años eran ejecutados en CPUs, lo son en la actualidad en unidades de procesamiento gráfico (GPUs).
Las redes convolucionales, surgidas a partir las geniales ideas de Fukushima y LeCun, han encontrado aplicación en múltiples ámbitos tecnológicos como el reconocimiento de imágenes y videos, el procesado de lenguaje natural o incluso la predicción del tiempo meteorológico. En La Máquina Oráculo hemos dedicado una serie de artículos sobre la Inteligencia Artificial del tratamiento de imágenes, lo que se conoce como Visión Artificial, en la que juega un papel fundamental las redes convolucionales.

Lecturas Recomendadas

–  Fukushima, K., Miyake, S. y Takayuki, I. (1980). Neocognitron: a Neural Network Model for a Mechanism of Visual Pattern Recognition.

–  LeCun, Y., Bottou, L., Bengio, Y. y Haffner, P. (1998). Gradient-based Learning Applied to Document Recognition.