Redes Neuronales Convolucionales
Las Redes Neuronales Convolucionales (CNNs) son un tipo de red neuronal de aprendizaje profundo que es particularmente adecuada para tareas de reconocimiento de imágenes y visión por computador. Una red de apendizaje produndo (Deep Neural Network en inglés) es un tipo de red neuronal artificial (ANN) compuesta de múltiples capas de neuronas interconectadas. Cada capa procesa datos de manera jerárquica, con la salida de una capa sirviendo como entrada a la siguiente capa. Una Neurona Artificial, también conocida como perceptrón, es la unidad básica de cálculo en una ANN. Se define como una función matemática que toma una o más entradas y produce una única salida.
La estructura de las CNNs se puede dividir en dos partes claramente diferenciables: las capa convolucionales y las capas completamente conectadas (Fully Connected Layer en inglés). Como norma general en las capas convolucionales se extraén las características de las imágenes introducidas como entrada y en las capas completamente conectadas se combinan esas carácteristicas para obtener el resultado deseado. Este resultado podría ser la clase a la que pertenece dicha imagen en un problema de clasificación.
Redes Neuronales Profundas (DNN)
Perceptron o Neurona Artificial: La unidad básica de clasificación
En su forma más simple, una neurona artificial toma un conjunto de entradas (x), multiplica cada entrada por un peso correspondiente (w) y luego suma las entradas ponderados. Esta suma luego se pasa a través de una función de activación, que determina el valor de salida de la neurona (y).
La función de activación suele ser una función no lineal, como la función sigmoide o la función de unidad rectificada (ReLU), que permite incorporar no-linearidad a los modelos.
Como ejemplo vamos a imaginar que las únicas características que necesitamos para clasificar animales entre gatos y no-gatos son: su monería (cuteness) y la longitud de su cola (tail length). La función deseada tendría una forma silimilar a la siguiente imagen:
La representación de la neurona que utilizaríamos sería la siguiente:
Capas Neuronales
Las neuronas artificiales se organizan en capas, con cada neurona en una capa recibiendo entradas de las neuronas de la capa anterior. Las salidas de las neuronas en una capa sirven como las entradas para la capa siguiente, permitiendo que la red disgregue de manera más óptima los datos de entrada dependiendo de su salida esperada.
Combinando varias neuronas ...
Hay muchos tipos de capas en una DNN, cada una con un propósito diferente. Algunos tipos comunes de capas incluyen:
- Capas completamente conectadas: Formadas un conjunto de perceptrones que toman todos las mismas entradas y cuya salida está conectada a todos los perceptrones de la siguiente capa (si esta existe).
- Capa convolucional: Aplica un conjunto de filtros a los datos de entrada, extrayendo características como bordes y formas.
- Capa de agrupamiento: Reduce la dimensionalidad de los mapas de características producidos por la capa convolucional.
- Capa recurrente: Una capa que introduce conexiones de retroalimentación entre neuronas, permitiendo que la red modele secuencias de datos.
Combinando varias capas se obtiene un modelo que se ajusta de manera más adecuada a los datos. La estructura de las capas se suele dividir de la siguiente manera: capa de entrada (donde se introduce los parámetros cuteness y tail length), capas intermedias y capa de salida (donde obtenemos la etiqueta que nos indica si es un gato (cat?)).
Estructura de una DNN
Cuando una ANN tiene muchas capas intermedias es considerada profunda (en inglés deep).
Convolución
La convolución es una operación matemática entre dos funciones, que sirve para extraer patrones en imágenes. Las imágenes se representan en los computadores como matrices, que también sirven para representar funciones discretas. De esta manera los operandos son:
- La imagen
- Una matriz que representa el patrón a extraer
Deslizando el filtro sobre regiones cuadradas (denominadas ventanas) se aplica el operador convolución, extrayendo un mapa de características. Los valores altos en ese mapa se corresponden con las regiones que son más similares al patrón que extrae el filtro.
Por último mencionar que pueden ser utilizada para otros propositivos que no sean extraer patrones, como aplicar un filtro gaussiano o cualquier otro tipo de distorsión a la imagen.
Capas Convolucionales
En una capa convolucional, se aplican filtros o kernels al conjunto de datos de entrada. Cada filtro es una matriz de pesos que se desliza sobre los datos de entrada (se aplica a un subconjunto de valores de la matriz denominado ventana), realizando una operación matemática en cada paso y produciendo un nuevo mapa de características.
La salida de una capa convolucional es un conjunto de mapas de características que capturan diferentes aspectos de los datos de entrada, como bordes, texturas y formas. Estos mapas de características se aplanan transformandose en un vector y se introducen en una DNN.
Conclusión
Si tuviera que hacer una descripción a grosso modo diria que una Red Neuronal Convolucional representa: una función compuesta de combinaciones de combinaciones de características de las imágenes extraídas de manera automática.