Blog
Curso en Redes Neuronales Convolucionales
- Publicado por: Rafael Fernandez
- Categoría: Deep Learning
-En esta lección descubrirá las redes neuronales convolucionales para el aprendizaje profundo, también llamadas ConvNets o CNNs.
-Los bloques de construcción utilizados en CNNs tales como capas convolucionales y capas de pooling.
-Cómo los bloques de construcción se ajustan junto con un ejemplo corto trabajado.
-Mejores prácticas para configurar CNNs en sus propias tareas de reconocimiento de objetos.
Las redes neuronales convolucionales son una poderosa técnica de redes neuronales artificiales. Estas redes preservan la estructura espacial del problema y fueron desarrolladas para el reconocimiento de objetos. Son populares porque están logrando resultados de última generación en tareas de visión por computador y procesamiento de lenguaje natural (PLN).
El caso de las redes neuronales convolucionales
Dado un conjunto de datos de imágenes en escala de grises con el tamaño estandarizado de 32 x 32 píxeles cada una, una la red neural de retroalimentación tradicional requeriría 1.024 pesos de entrada (más un sesgo). Este es bastante justo, pero el aplanamiento de la matriz de la imagen de píxeles a un vector largo de valores de píxeles pierde toda la estructura espacial de la imagen. A menos que todas las imágenes estén perfectamente redimensionadas la red neural tendrá una gran dicultad con este problema.
Las redes neuronales convolucionales esperan y preservan la relación espacial entre los píxeles aprendiendo representaciones de características internas usando pequeños cuadrados de datos de entrada. Las características son aprendidas y utilizadas a lo largo de toda la imagen, lo que permite desplazar los objetos de las imágenes. Esta es la razón por la que la red es tan útil para el reconocimiento de objetos en las fotografías, la selección de dígitos, caras, objetos y así sucesivamente con orientación variable. En resumen, a continuación se presentan algunos de los beneficios del uso de la neural convolucional redes:
- Utilizan menos parámetros (pesos) para aprender que una red totalmente conectada.
- Están diseñadas para ser invariables a la posición del objeto y a la distorsión en la escena.
- Automáticamente aprenden y generalizan características desde el dominio de entrada.
Fundamentos de las redes neuronales convolucionales
Hay tres tipos de capas en una Red Neural Convolucional:
1. Capas convolucionales.
2. Capas de pooling.
3. Capas completamente conectadas.
Capas convolucionales
Las capas convolucionales están compuestas por diltros y mapas de características.
Filtros
Los filtros son esencialmente las neuronas de la capa. Tienen entradas ponderadas y generan un valor de salida como una neurona. El tamaño de la entrada es un cuadrado fijo llamado parche o campo receptivo. Si la capa convolucional es una capa de entrada, entonces el parche de entrada será valores de píxeles. Si es más profunda la arquitectura de la red, entonces la capa convolucional tomará la entrada de un mapa de características de la capa anterior.
Mapas de características
El mapa de características es la salida de un filtro aplicado a la capa anterior. Un filtro dado es dibujado a través de toda la capa anterior y es movido un píxel a cada paso de tiempo. Cada posición resulta en la activación de la neurona y la salida se recoge en el mapa de características. Puede ver que si la opción del campo receptivo se mueve un píxel de activación a activación, entonces el campos se superpondrá con la activación anterior por (ancho del campo – 1) valores de entrada.
La distancia a la que el filtro se mueve a través de la entrada de la capa anterior es un paso para cada activación. Si el tamaño de la capa anterior no es claramente divisible por el tamaño del campo receptivo del filtro y el tamaño del paso entonces es posible que el campo receptivo intente leer el borde del mapa de características de entrada. En este caso, técnicas como el relleno de ceros pueden utilizarse para inventar entradas simuladas con valores cero para que el campo receptivo las lea.
Capas de pool
Las capas de pool reducen el muestreo de las capas anteriores en el mapa de características. Los capas de pooling siguen una secuencia de una o más capas convolucionales y están destinados a consolidar las características aprendidas y expresarlo en el mapa de características de la capa anterior. Como tal, la puesta en común puede considerarse una técnica para comprimir o generalizar las representaciones de las características y, en general, reducir la sobrecarga del datos de entrenamiento por modelo.
También tienen un campo receptivo, a menudo mucho más pequeño que la capa convolucional. Además, el paso o el número de entradas que el campo receptivo se mueve para cada activación es a menudo igual al tamaño del campo receptivo para evitar cualquier superposición. Las capas de pooling son a menudo muy simples, tomando la media o el máximo del valor de entrada para crear su propio mapa de características.
Capas completamente conectadas
Las capas completamente conectadas conectan cada neurona en una capa con cada neurona en otra capa. Es, en principio, la misma que la red neuronal de percepción multicapa tradicional (MLP). Estas capas pueden tienen una función de activación no lineal o una activación softmax para generar probabilidades de predicciones de clase. Las capas completamente conectadas se utilizan al final de la red después de la función de extracción y consolidación que ha sido realizada por las capas convolucionales y de pooling. Se utilizan para crear combinaciones no lineales de características y para hacer predicciones por la red.
Ejemplo trabajado
Ahora ya conoce las capas convolucionales, de pooling y las completamente conectadas. Hagamos esto más concreto trabajando en la forma en que estas tres capas pueden conectarse entre sí.
Datos de entrada de Imagen
Supongamos que tenemos un conjunto de datos de imágenes en escala de grises. Cada imagen tiene el mismo tamaño de 32 píxeles de ancho y 32 píxeles de alto, y los valores de píxeles están entre 0 y 255, por ejemplo, una matriz de 32 x 32 x 1 ó 1.024 píxeles. Los datos de entrada (imágenes) se expresan como una matriz tridimensional de anchura altura canales. Si usáramos imágenes en color en nuestro ejemplo, tendríamos 3 canales para los valores de píxeles rojo, verde y azul, p. ej. 32 x 32 x 3.
Capa Convolucional
Denotamos una capa convolucional con 10 filtros y un campo receptivo de 5 pixels de ancho y 5 pixels de ancho con un paso de 1. Debido a que cada filtro sólo puede obtener información de (por ejemplo, ver) 5 x 5 (25) píxeles a la vez, podemos calcular que cada uno requerirá 25 + 1 pesos de entrada (más 1 para el sesgo ). Arrastrando el 5 x 5 del campo receptivo a través de los datos de imagen de entrada con un ancho de paso de 1 resultará en un mapa de características de 28 x 28 valores de salida o 784 activaciones distintas por imagen.
Disponemos de 10 filtros, es decir, 10 diferentes 28 x 28 mapas de características o 7.840 salidas que permitirán para una imagen. Finalmente, sabemos que tenemos 26 entradas por filtro, 10 filtros y 28 x 28 para calcular por filtro, por lo tanto tenemos un total de 26 x 10 x 28 x 28 x 28 o 203,840 conexiones en nuestra capa convolucional, nosotros queremos expresarlo usando la nomenclatura tradicional de la red neuronal. Las capas convolucionales también hacen uso de una función de transferencia no lineal como parte de la activación y la función de activación de rectier es el valor predeterminado popular a utilizar.
Capa de Pool
Definimos una capa de pooling con un campo receptivo de un ancho de 2 entradas y una altura de 2 entradas. También utilizamos un paso de 2 para asegurarnos de que no haya solapamiento. Esto resulta en mapas de características que son la mitad del tamaño de los mapas de características de entrada. De 10 diferentes 28 x 28 mapas de características como entrada a 10 diferentes 14 x 14 mapas de características como salida. Utilizaremos una operación max() para cada campo receptivo de forma que la activación sea el valor máximo de entrada.
Capa completamente conectada
Finalmente, podemos aplanar los mapas de características cuadradas a una capa tradicional completamente conectada. Podemos definir la capa totalmente conectada con 200 neuronas ocultas, cada una con una entrada de 10 x 14 x 14, o 1,960 + 1 pesos por neurona. Es decir, un total de 392.200 conexiones y pesos para aprender en esta capa. Podemos usar una función de transferencia sigmoide o softmax para generar probabilidades de los valores de clase directamente.
Mejores prácticas para redes neuronales convolucionales
Ahora que sabemos sobre los bloques de construcción de una red neural convolucional y cómo las capas se juntas, podemos revisar algunas de las mejores prácticas a tener en cuenta al aplicar redes neuronales convolucionales:
- Introduzca las dimensiones del campo receptivo: El valor por defecto es 2D para las imágenes, pero podría ser 1D como para palabras en una oración o 3D para vídeo que añade una dimensión de tiempo.
- Tamaño del campo receptor: El parche debe ser lo más pequeño posible, pero lo suficientemente grande para ver características en los datos de entrada. Es común usar 3 x 3 en imágenes pequeñas y 5 x 5 o 7 x 7 y más en tamaños de imágenes más grandes.
- Ancho de paso: Utilice el paso predeterminado de 1. Es fácil de entender y no necesita relleno para manejar el campo receptivo que cae sobre el borde de sus imágenes. Esto podría ser aumentado a 2 o más para imágenes más grandes.
- Número de filtros: Los filtros son los detectores de características. Generalmente se utilizan menos filtros en la capa de entrada y cada vez más filtros en las capas más profundas.
- Relleno: Se pone a cero y se llama relleno de cero cuando se leen datos que no son de entrada. Esto es útil cuando no puede o no quiere estandarizar los tamaños de imagen de entrada o cuando quiere utilizar tamaños de paso y de paso receptivos que no dividen ordenadamente el tamaño de la imagen de entrada.
- Pooling: La agrupación es un proceso destructivo o de generalización para reducir la saturación. El tamaño del campo receptivo casi siempre se ajusta a 2 x 2 con un paso de 2 para descartar el 75% de las activaciones de la salida de la capa anterior.
- Preparación de datos: Considere la posibilidad de estandarizar los datos de entrada, tanto las dimensiones de las imágenes como los valores de los píxeles.
- Arquitectura de Patrones: Es común modelar las capas en la arquitectura de su red. Puede tratarse de una, dos o más capas convolucionales seguidas de una capa de pooling. Esta estructura puede repetirse una o más veces. Finalmente, las capas completamente conectadas a menudo sólo se utilizan en el extremo de salida y pueden apilarse a una, dos o más profundidades.
- Deserción: Las CNNs tienen el hábito de sobrepoblar, incluso con capas de pooling. La deserción debe ser entre capas completamente conectadas y tal vez después de la agrupación de capas.
Resumen del “Curso en Redes Neuronales Convolucionales”
En esta lección usted descubrió las redes neuronales convolucionales. Aprendiste:
- Por qué se necesitan las CNNs para preservar la estructura espacial de sus datos de entrada y de los beneficios que ellos proveen.
- Los bloques de construcción de CNN incluyen capas convolucionales, de agrupación y completamente conectadas.
- Cómo cuelgan las capas en una CNN.
- Las mejores prácticas al aplicar CNN a sus propios problemas.
➡ Aprende mucho mas en nuestro curso de Deep Learning
[…] CIFAR-10 podemos resolver una gran cantidad de problemas utilizando una red neuronal convolucional (CNN). Podemos empezar rápidamente importando todas las clases y funciones que necesitaremos en […]
[…] CIFAR-10 podemos resolver una gran cantidad de problemas utilizando una red neuronal convolucional (CNN). Podemos empezar rápidamente importando todas las clases y funciones que necesitaremos en […]