Una red Convolucional CNN o ConvNet (Convolutional neural network) se denomina así por el concepto matemático “convolución”, que es una transformación lineal de dos funciones en una tercera que puede representar la magnitud, de valor real, en la que se superponen las anteriores.
En 1.962 David Hunter Hubel y Torsten Nils Wiesel publican “Receptive fields, binocular interaction and functional architecture in the cat’s visual cortex.”, sugieren un nuevo modelo de cómo los mamíferos perciben el mundo visualmente. Mostraron que las cortezas visuales de gato y mono incluyen neuronas que responden exclusivamente a su ambiente directo. Es la inspiración de las redes convolucionales.
Computacionalmente se basan en el artículo publicado por Kunihiko Fukushima en 1.980, “Neocognitron: A Self-organizing Neural Network Model for a Mechanism of Pattern Recognition Unaffected by Shift in Position”. Una de las primeras redes de este tipo fue LeNet, desarrollada por Yann LeCun, León Bottou, Yoshua Bengio y Patrick Haffner.
Una CNN es una red multicapa diseñada inicialmente para reconocer patrones visuales, lo que permite mejorar ciertas propiedades respecto de otras arquitecturas, por ejemplo: la función de retrocesión es más eficiente de implementar y reduce enormemente la cantidad de parámetros en la red.
La red toma el concepto de capas con especialización, cada neurona de una capa no recibe conexiones entrantes de todas las neuronas de la capa anterior, sino de algunas. Esto hace que una neurona se especialice en un dominio de la capa anterior reduciendo así el número de operaciones. La reducción es la palabra mágica.
Otras redes son más eficientes para trabajar con matrices con pocas características, pero cuando esas matrices llegan a ser muy grandes su rendimiento cae, esto ocurre cuando trabajamos con imágenes. Para solventar este inconveniente, las primeras redes convolucionales extraían las peculiaridades más significativas y reducían así las matrices de características, para ello utilizaban una imagen de entrada de tamaño fijo, pero este es un requisito artificial y puede reducir la precisión al reconocer imágenes de un tamaño arbitrario. Los procedimientos que se realizaban para transformar las imágenes de entrada y ponerlas en el formato requerido eran: recortar la imagen (solo seleccionando una parte del tamaño correcto de la imagen) y deformarla (cambiando la proporción). Ambas técnicas tienen inconvenientes obvios y pueden cambiar la imagen de una manera que disminuirá la precisión de detección. Ponemos un ejemplo de otro de los mayores problemas de las redes convencionales:
En redes no CNN la mayoría de los diseños conectan completamente todas las unidades ocultas a todas las entradas. Suponiendo que entrenamos con:
- CIFAR-10, las imágenes son de 32 pixeles de ancho x 32 de alto x 3 canales de color (RGB), nos daría un resultado de 3.072 pesos, para una sola neurona totalmente conectada en una primera capa oculta.
- STL-10, las imágenes son de 96 x 96 x 3, nos daría un resultado de 27.648 pesos
Podríamos continuar probando con otros conjuntos de imágenes de mayor resolución y la problemática solo haría más que aumentar. El número de pesos y operaciones se dispararían y el coste computacional haría inviable su uso.
Las redes CNN solventan la necesidad de transformar las imágenes y reducen el nº de operaciones a realizar. La estructura general de una red convolucional se construye con 3 tipos de capas distintas:
- Una capa convolucional o varias.
- Una capa de agrupación/reducción (Pooling) entre capas convolucionales, reduce la cantidad de parámetros al quedarse con las características más comunes.
- Una capa final clasificadora completamente conectada.
Podemos ver un ejemplo de cómo actúa una CNN simple:
- Tenemos de entrada una imagen CIFAR-10 [32x32x3] pixeles.
- La capa convolucional calcula la salida de las neuronas que están conectadas al campo receptivo o regiones locales en la entrada, cada una calcula el producto entre sus pesos en una región pequeña a la que están conectados en la entrada. Esto genera un volumen de [32x32x12] pixeles, sí utiizamos 12 filtros (los pesos y sesgos compartidos definen un kernel o filtro).
- La capa Relu aplicará una función de activación con el umbral máximo (0, x) y umbral en 0, esto deja el tamaño del volumen sin cambios.
- La capa de reducción realiza una operación de reajuste de la muestra en las dimensiones ancho y alto, lo que generará un volumen de [16x16x12].
- La capa de clasificación (totalmente conectada) calculará los valores de clase, lo que resulta en un volumen de tamaño [1x1x10], donde cada uno de los 10 números corresponde a un valor de clase, como entre las 10 categorías de CIFAR-10.
De esta forma CNN transforma la imagen original capa por capa desde los valores de píxeles originales hasta los valores finales de clase. Tenga en cuenta que algunas capas contienen parámetros y otras no. En particular, las capas Conv / Clas realizan transformaciones que son una función no solo de las activaciones en el volumen de entrada, sino también de los parámetros (los pesos y sesgos de las neuronas). Por otro lado, las capas Relu / Pool implementarán una función fija. Los parámetros en las capas Conv / Clas se entrenarán con pendiente de gradiente para que los valores de clase que CNN calcula sean consistentes con las etiquetas, en el conjunto de entrenamiento para cada imagen.
Trabajos recientes han demostrado que las redes convolucionales pueden ser sustancialmente más profundas, más precisas y eficientes de entrenar si contienen conexiones más cortas entre las capas cercanas a la entrada y las cercanas a la salida. Realmente su trabajo estrella ha sido el reconocimiento de objetos en imágenes, este problema es más difícil porque el algoritmo debe encontrar los objetos en una imagen y sus ubicaciones exactas, para solventar este problema relacionamos algunos de estos algoritmos:
- CPMC (Constrained Parametric Min-Cut)
- MCG ( Multiscale Combinatorial Grouping)
- SCG (Single-scale Combinatorial Grouping)
- COB (Convolutional Oriented Boundaries)
- …
Nos hemos centrado en el procesado de imágenes, pero las CNN también tienen una aplicación importante en el procesamiento del lenguaje (NLP), en este caso la entrada son oraciones o documentos representados como una matriz, ver la capa convolucional ya que actúa de la misma forma.
Normalmente cada fila de la matriz es un vector que corresponde a un componente léxico / cadena de caracteres, generalmente una palabra que son entradas de palabras de GloVe, pero también podrían ser vectores únicos que indexan la palabra en un vocabulario. Aquí se utilizan filtros que se deslizan sobre filas completas de la matriz y su ancho suele ser el mismo que el ancho de la matriz de entrada. La altura o el tamaño de la región / campo receptivo pueden variar, pero el deslizamiento suele ser de 2 a 5 palabras por salto.
Al unir todo lo anterior, una Red Neural Convolucional para PNL puede verse en el siguiente gráfico (modificado del de Ye Zhang y C. Wallace):
Redes Convolucionales | |||
Fecha | Red | Autor | Comentario |
---|---|---|---|
1.998 | LeNet | Yann LeCun, León Bottou, Yoshua Bengio y Patrick Haffner | Fue aplicada en la banca para reconocer números escritos a mano en cheques digitalizados. La capacidad de procesar imágenes de mayor resolución requiere capas más grandes por lo que esta técnica se ve limitada por la capacidad de recursos de computación. |
2.012 | AlexNet | Alex Krizhevsky, Geoffrey E. Hinton e Ilya Sutskever | Su arquitectura es muy similar a LeNet, pero más profunda, con más filtros por capa y con capas convolucionales apiladas. Es una red pionera cuyo objetivo es clasificar las imágenes. La mayoría de las redes posteriores se basaron en alguna medida en su arquitectura. Cada capa convolucional aprende una representación más detallada de las imágenes (mapa de características) que la anterior. La arquitectura inicial tenía 5 capas de convolución, dos capas totalmente conectadas y una salida softmax. |
2.013 | ZFNet | Mattew Zeiler y Rober Fergus | Fue principalmente un logro al ajustar los hiperparámetros de AlexNet mientras se mantiene la misma arquitectura con elementos adicionales de aprendizaje profundo. |
2.014 | VGGNet | Karen Simonyan y Andrew Zisserman | Consta de 16 capas convolucionales, es similar a AlexNet. Ha sido la opción más utilizada para extraer características de imágenes. En realidad, las capas de convolución de Alexnet se representadan por dos o tres capas de convolución consecutivas. Otra diferencia es que cada capa de convolución tiene un núcleo de 3×3 a diferencia de las otras redes que tienen núcleos de diferentes tamaños para cada capa. |
2.014 | R-CNN | Ross Girshick, Jeff Donahue, Trevor Darrell y Jitendra Malik | Región con CNN. Fue la primera red en aplicar el aprendizaje profundo a la tarea de detección de objetos, tiene tres módulos: El primero genera propuestas de región independientes de la categoría que definen el conjunto de detecciones candidatas disponibles al detector El segundo módulo es un gran convolucional que extrae un vector de características de longitud fija de cada región. El tercer módulo es un conjunto de clases específicas de SVM lineales. |
2.014 | CharSCNN | Cícero Nogueira dos Santos y Maíra Gatti | Character to Sentence Convolutional Neural Network |
2.014 | SPP-NET | Kaiming He , Xiangyu Zhang , Shaoqing Ren y Jian Sun | SPP-net calcula los mapas de características de toda la imagen solo una vez y luego se agrupan las características en regiones arbitrarias (subimágenes) para generar representaciones de longitud fija para entrenar los detectores. Este método evita el cálculo repetido de las características convolucionales. |
2.014 | DCNN | Nal Kalchbrenner, Edward Grefenstette y Phil Blunsom | Dynamic Convolutional Neural Network Red neuronal convolucional dinámica con agrupación k-max. |
2.015 | ResNet | Kaiming He, Xiangyu Zhang, Shaoqing y Ren Jian Sun | Red Neuronal Residual, es una red más profunda que las utilizadas hasta esta fecha. Son más fáciles de optimizar y pueden ganar precisión cuanto mayor profundidad adopten. |
2.015 | Fast R-CNN | Ross Girshick | Fast R-CNN se basa en el trabajo previo (R-CNN y SPP-Net) para clasificar de manera eficiente propuestas de objetos. El principio es similar a SPP-Net : el mapa de convolución solo se computará una vez para toda la imagen y luego se proyectará cada propuesta de región antes de pasar a través de una capa de agrupación específica y totalmente conectada.Se implementa en Python y C ++ y es de código abierto. |
2.015 | BLSTM-CNN | Jason P.C. Chiu y Eric Nichols | Bi-directional LSTM recurrent network CNN. Tiene una arquitectura similar a una red bidireccional LSTM recurrente. |
2.015 | Bi-CNN-MI | Wenpeng Yin y Hinrich Schutze | Bi (doble CNN utilizada en un marco siamés) y MI para características de interacción multigranular. Se utiliza para el análisis de oraciones, utiliza regresión logística para la identificación de paráfrasis |
2.015 | MP-CNN | Múltiples | Multi-Perspective Convolutional Neural Networks.Cuando las redes CNN se combinan con MP (Max-Pooling) se convierten en MPCNN, del tipo Cresceptron o HMAX. Los MPCNN entrenados con BP se transforman en redes muy competitivas. |
2.015 | YOLO | Joseph Redmon, Santosh Divvala, Ross Girshick y Ali Farhadi | You Only Look Once. Procesa imágenes en tiempo real a 45 fotogramas por segundo y la versión Fast YOLO, procesa a 155 fotogramas. Supera a todos los demás métodos de detección, incluidos DPM y R-CNN. |
2.016 | Faster R-CNN | Shaoqing Ren, Kaiming He, Ross Girshick y Jian Sun | Tiene dos módulos. El primer módulo es una profunda red completamente convolucional que propone regiones y el segundo es el detector Fast R-CNN que usa las regiones propuestas. |
2.016 | CUImage | Wanli Ouyang, Junjie Yan, Xingyu Zeng, Hongsheng Li, Tong Xiao, Kun Wang, Xin Zhu, Yucong Zhou, Yu Liu, Buyu Li, Zhiwei Fang, Changbao Wang, Zhe Wang, Hui Zhou, Liping Zhang, Xingcheng Zhang, Zhizhong Li , Hongyang Li, Ruohui Wang, Shengen Yan, Dahua Lin y Xiaogang Wang | Utiliza la versión mejorada de CRAFT (una extensión de Faster R-CNN). Se ajusta a una red GBD con 269 capas en 200 clases de detección con la red bidireccional cerrada (GBD-Net), que transmite mensajes entre entidades de diferentes regiones de soporte durante el aprendizaje de características y la extracción de características. Las 200 clases están agrupadas. |
2.016 | DenseNet | Gao Huang, Zhuang Liu, Laurens van der Maaten y Kilian Q. Weinberger | Red Convolucional Densamente Conectada. Mejora el gradiente de fuga, refuerza la propagación de características, fomenta la reutilización de características y reduce sustancialmente el número de parámetros. |
2.016 | MGNC-CNN | Ye Zhang, Stephen Roller y Byron Wallace | Multi-Group Norm Constraint CNN. Es muy similar a MV-CNN, pero aborda algunos inconvenientes de esta, como la complejidad del modelo y el requisito para que la dimensión de las incrustaciones sea la misma. |
2.016 | SQUEEZENET | Forrest N. Iandola, Song Han, Matthew W. Moskewicz, Khalid Ashraf, William J. Dally y Kurt Keutzer1 |
Logra una precisión similar a AlexNet, en ImageNet, con 1/50 menos parámetros. Además, con técnicas de compresión, el modelo lo comprime 510 veces más que AlexNet. |
2.016 | MVCNN | Wenpeng Yin y Hinrich Schutze | Multichannel and Variable-size Convolutional Neural Network |
2.016 | GBD-Net | Xingyu Zeng, Wanli Ouyang, Junjie Yan, Hongsheng Li, Tong Xiao, Kun Wang, Yu Liu, Yucong Zhou, Bin Yang, Zhe Wang, Hui Zhou y Xiaogang Wang | Gated bi-directional CNN, se implementa bajo el marco de detección Fast R-CNN. |
2.017 | Mask R-CNN | Kaiming He, Georgia Gkioxari, Piotr Dollar y Ross Girshick | Amplía Faster R-CNN al nivel de segmentación de pixeles. Tiene dos etapas: La primera escanea la imagen y genera propuestas (áreas que probablemente contengan un objeto) y la segunda clasifica las propuestas y genera cuadros de delimitación y máscaras. |
2.018 | DNN- FC- CRF | Chengjiang Long, Roddy Collins, Eran Swears y Anthony Hoogs | Deep Neural Networks In Fully Connected CRF. Es un método de campo aleatorio condicional totalmente conectado (CRF), donde cada nodo es una imagen y consta de dos redes neuronales convolucionales (CNN) profundas y una red neuronal recurrente (RNR) que modelan el nodo textual e información de la imagen. |
2.018 | ABCNN | Wenpeng Yin, Hinrich Schütze, Bing Xiang y Bowen Zhou | Attention Based CNN. Basada en la atención general para modelar pares de oraciones. La representación de cada oración toma en consideración su contraparte. |
2.018 | RED-CNN | Hu Chen, Yi Zhang, Mannudeep K. Kalra, Feng Lin, Peixi Liao, Jiliu Zhou y Ge Wang | Residual encoder decoder CNN. Se apoya en el aprendizaje profundo combinado con los autoencoder y redes convolucionales. Lo aplican al análisis de radiografías. |